AI Deep Dive Note

Chapter 6 - 01. Universal Approximization Theorem (왜 하필 인공신경망인가)

필기 내용
  • Universal Approximization Theorem
    • 한계가 없다는 것을 이론적으로 보여줌
    • MLP: 행렬 곱하고 벡터 더하고 activation, … 이런 함수다
    • \(f(f(xW_1 + b_1)W_2+b_2))\). (1차 함수에 대하여 activation)
    • 굳이 이런 형태로 함수를 표현해야 하는 이유? x^Tx = x^2 이런 건 왜 안쓰나? 히든 레이어 딱 한층만 있어도 어떤 연속 함수든 나타낼 수 있기 때문. 즉, loss를 딱 0으로 만들어 버릴 수 있다.
    • ** 시각적 증명을 활용할 것 ** 그림 첨부
    • 이 증명 덕에, 인공 신경망에 한계는 없구나 확신이 든다
    • 그럼 왜 DNN을 쓰는가? 대체로 hidden layer를 늘리면 node를 좀 적게 써도 된다.
    • 주의: 이렇게 훈련된다는 게 아니라, loss 0으로 approximation 가능하다는 것을 보인 것
    • 주의2: FC layer는 사실 굉장히 비효율적 (softmax 한 층으로 표현? 쉽지 않다)
      • a, b, c, d 입력, ac+bd(내적)를 출력하는 함수를 MLP로 표현? 쉽지 않다
        • 내적은 닮은 정도. 이것이 훗날 굉장한 정보로 이용 됨
        • 미분만 가능하면 여러분들만의 layer를 만들 수 있어요
          • 미분 가능하면 backpropagation할 수 있음.
        • 내적을 표현하는 layer가 따로 있다. transformer가 이를 활용 함.
    • 다른 activation 함수에 대해서는 증명이 될까?
      • nonlinear activation이기만 하면됨. 최종 출력에서는 linear activation을 쓰면 됨.
      • unit step function은 설명에서는 간편하게 보여줄 수 있어서 사용했지만, 미분이 안되므로, sigmoid로 하는 게 마음이 편안
  • 입력 변수가 1개이면, unit step function 처럼 만들면되고, 입력 변수가 2개이면, 3차원 플롯으로 생각해서, 네모 기둥(tower function)을 만들면 됨.
필기 내용 재해석

Universal Approximation Theorem (UAT)

UAT는 인공 신경망의 능력을 이론적으로 보여주는 중요한 이론입니다. 이를 통해 우리는 신경망이 복잡한 함수를 근사화할 수 있는 능력을 이해할 수 있습니다.

  1. 기본 개념:
    • UAT는 특정 조건 하에서, 다층 퍼셉트론 (MLP)이 어떤 연속 함수든 근사할 수 있다는 것을 보여줍니다.
    • 예를 들어, 함수 \(f(f(xW_1 + b_1)W_2+b_2))\).는 1차 함수에 활성화 함수를 적용한 형태입니다.
  2. 왜 이런 형태로 함수를 표현하는가?
    • 히든 레이어가 하나만 있어도 어떤 연속 함수든 근사할 수 있기 때문입니다. 이는 loss를 0으로 만들 수 있다는 것을 의미합니다.
  3. 시각적 증명:
    • 이론을 더 잘 이해하기 위해서는 그림이나 시각적 증명을 참조하는 것이 좋습니다. (아래)
  4. DNN의 필요성:
    • 히든 레이어를 늘리면 노드의 수를 줄일 수 있습니다. 이는 계산 효율성을 높이는 데 도움이 됩니다.
  5. 주의 사항:
    • UAT는 신경망이 훈련될 수 있다는 것을 보여주는 것이 아니라, 근사화가 가능하다는 것을 보여줍니다.
    • 완전 연결 레이어는 비효율적일 수 있습니다. 예를 들어, 내적을 출력하는 함수를 MLP로 표현하는 것은 쉽지 않습니다. 하지만 내적은 중요한 정보를 제공하므로, 이를 활용하는 레이어가 필요합니다.
  6. 다른 활성화 함수에 대한 증명:
    • 비선형 활성화 함수만 사용된다면 UAT는 성립합니다. 최종 출력에서는 선형 활성화 함수를 사용하면 됩니다.
    • 단위 계단 함수는 설명하기는 간편하지만, 미분이 불가능하므로 실제로는 시그모이드 함수와 같은 미분 가능한 함수를 사용하는 것이 좋습니다.

이론적으로, UAT는 인공 신경망이 복잡한 함수를 근사할 수 있는 능력을 보여줍니다. 이를 통해 신경망의 능력과 한계를 이해하는 데 도움이 됩니다.

참고, layer의 갯수는 어떻게 결정?

주어진 문제의 특성, 사용 가능한 데이터의 양, 학습 시간, 계산 리소스 등 여러 요인에 따라 달라집니다. 그러나 레이어 수를 결정하는 데 도움이 될 수 있는 몇 가지 일반적인 지침과 접근 방식은 다음과 같습니다:

  1. 시작은 간단하게: 초기에는 적은 수의 레이어와 뉴런으로 시작하여 모델의 성능을 평가합니다. 이를 기반으로 레이어나 뉴런을 점진적으로 추가하면서 성능 향상을 관찰합니다.
  2. 과대적합과 과소적합의 관찰: 너무 많은 레이어와 뉴런은 과대적합의 위험을 증가시킬 수 있습니다. 반면, 너무 적은 레이어와 뉴런은 모델이 데이터의 복잡한 패턴을 학습하는 데 어려움을 겪을 수 있습니다. 검증 데이터셋의 성능을 주기적으로 확인하여 이러한 문제를 감지하고 조정합니다.
  3. 문제의 복잡성 고려: 복잡한 문제나 큰 데이터셋의 경우 더 깊은 신경망이 필요할 수 있습니다. 반면, 간단한 문제나 작은 데이터셋의 경우 더 얕은 신경망이 적합할 수 있습니다.
  4. 비교 연구 참조: 유사한 문제나 데이터셋에 대한 기존 연구나 논문을 참조하여 최적의 네트워크 구조를 찾을 수 있습니다.
  5. 실험: 다양한 네트워크 구조를 실험해보고, 교차 검증을 사용하여 최적의 구조를 선택합니다.
  6. 정규화와 드롭아웃: 레이어 수나 뉴런 수를 늘리면서 과대적합을 방지하기 위해 정규화 기법이나 드롭아웃을 사용할 수 있습니다.
  7. 전이 학습: 사전에 학습된 모델의 일부 레이어를 재사용하여 레이어 수를 줄이고 학습 시간을 단축시킬 수 있습니다.

마지막으로, 신경망의 구조와 관련된 결정은 대부분 경험과 실험에 기반합니다. 따라서 다양한 구조와 기법을 시도하고, 결과를 반복적으로 평가하여 최적의 구조를 찾는 것이 중요합니다.

General Guideline

신경망의 레이어 수와 뉴런 수를 결정하는 데 있어 일반적인 가이드라인이나 휴리스틱(heuristics)은 있습니다. 그러나 이러한 가이드라인은 시작점으로만 사용되어야 하며, 실제 문제와 데이터에 따라 조정이 필요합니다. 다음은 몇 가지 일반적인 가이드라인입니다:

  1. 입력과 출력 레이어:
    • 입력 레이어의 뉴런 수는 주어진 데이터의 특성 수와 일치해야 합니다.
    • 출력 레이어의 뉴런 수는 예측하려는 클래스 수나 출력 값의 수와 일치해야 합니다. 분류 문제의 경우, 클래스 수와 일치하게 됩니다.
  2. 은닉 레이어의 수와 뉴런의 수:
    • 초기에는 1~2개의 은닉 레이어로 시작하는 것이 일반적입니다.
    • 첫 번째 은닉 레이어의 뉴런 수는 입력 레이어의 뉴런 수와 비슷하게 설정하거나, 그 사이의 값으로 설정하는 것이 흔히 사용되는 휴리스틱입니다.
    • 추가적인 은닉 레이어를 추가할 때마다 뉴런의 수를 줄여나갈 수 있습니다.
  3. 과대적합과 과소적합:
    • 너무 많은 레이어와 뉴런은 과대적합을 초래할 수 있습니다. 이를 방지하기 위해 교차 검증을 사용하여 모델의 성능을 평가하고, 필요한 경우 레이어나 뉴런의 수를 줄입니다.
    • 너무 적은 레이어와 뉴런은 과소적합을 초래할 수 있습니다. 이 경우, 레이어나 뉴런의 수를 증가시켜 복잡도를 높입니다.
  4. 문제의 복잡성:
    • 복잡한 문제나 큰 데이터셋은 더 깊고 넓은 신경망을 필요로 할 수 있습니다.
    • 간단한 문제나 작은 데이터셋은 더 얕은 신경망이 적합할 수 있습니다.
  5. 다른 연구 참조:
    • 유사한 문제나 데이터셋에 대한 기존 연구나 논문을 참조하여 네트워크 구조의 통찰력을 얻을 수 있습니다.

이러한 가이드라인은 신경망 구조를 초기에 설정하는 데 도움을 줄 수 있지만, 최적의 구조를 찾기 위해서는 여러 구조를 실험해보고 결과를 반복적으로 평가하는 것이 필요합니다.

시각적 증명 웹사이트

추가 조사

  • Universal Approximation Theorem

    • Universal Approximation Theorem (UAT)은 인공 신경망의 강력한 특성 중 하나를 설명하는 중요한 이론이다. 이 이론은 특정 조건 하에서 단일 은닉층을 가진 인공 신경망이 임의의 연속 함수를 근사할 수 있음을 의미한다. 주어진 충분한 수의 뉴런과 적절한 활성화 함수를 사용하면, 신경망은 복잡한 함수도 모델링할 수 있다.

      UAT의 주요 내용은 다음과 같다:

      1. 한 개의 은닉층: 신경망이 단 하나의 은닉층만 가지고 있어도, 주어진 충분한 수의 뉴런과 적절한 활성화 함수를 사용하면 임의의 연속 함수를 근사할 수 있다.
      2. 활성화 함수: 이론은 특정 활성화 함수, 예를 들어 시그모이드 함수나 ReLU와 같은 비선형 활성화 함수를 사용할 때 성립한다. 선형 활성화 함수만 사용하는 경우에는 이 이론이 성립하지 않는다.
      3. 근사의 정밀도: 신경망의 뉴런 수가 늘어날수록 근사의 정밀도가 향상된다. 더 많은 뉴런을 사용하면 더 정확한 근사를 얻을 수 있다.
      4. 실제 구현: 이론적으로는 한 개의 은닉층만으로도 임의의 함수를 근사할 수 있지만, 실제로는 깊은 신경망 (여러 은닉층을 가진 신경망)이 훨씬 더 효과적인 경우가 많다. 이는 깊은 신경망이 동일한 근사 정도를 달성하기 위해 필요한 뉴런 수가 훨씬 적기 때문이다.

      UAT는 인공 신경망의 능력을 이론적으로 증명하는 것이지만, 실제 문제에서 최적의 신경망 구조나 학습 알고리즘을 찾는 것은 별개의 문제다. UAT는 신경망이 임의의 함수를 근사할 수 있는 능력을 보여주지만, 실제로 그러한 함수를 학습하는 것은 다양한 요인에 따라 달라질 수 있다.

수학적 증명, 개요

Theorem: 활성화 함수 σ (예: 시그모이드 함수)를 가진 단일 은닉층을 가진 피드포워드 신경망은 임의의 연속 함수 f를 근사할 수 있다. 즉, 모든 x에 대해, 충분한 은닉층 뉴런 수 N와 적절한 가중치와 편향을 가진 신경망 F(x)가 존재하여 ∣F(x)−f(x)∣<ϵ (여기서 ϵ은 아주 작은 양의 값)이 성립한다.

증명의 개요:

  1. Basis Function: 활성화 함수 σ를 사용하여 “기저 함수”를 구성할 수 있다. 이 기저 함수는 입력 공간의 임의의 부분을 “포착”할 수 있다. 이를 통해 신경망이 임의의 함수를 근사하는 데 필요한 “블록”을 형성할 수 있다.
  2. Combination of Basis Functions: 이러한 기저 함수들을 조합하여 복잡한 함수를 형성할 수 있다. 가중치와 편향을 조절하여 이 기저 함수들의 합을 통해 원하는 함수를 근사할 수 있다.
  3. Arbitrarily Close Approximation: 충분한 수의 은닉층 뉴런을 사용하면, 신경망의 출력은 원하는 함수에 아주 가깝게 근사될 수 있다. 이는 각 뉴런이 특정 부분을 근사하고, 이러한 부분들이 합쳐져 전체 함수를 근사하기 때문이다.

직관적인 증명

  • https://hanlue.tistory.com/12

  • UAT의 기본 아이디어는 간단한 함수들의 조합으로 복잡한 함수를 근사화하는 것입니다. 예를 들어, sigmoid 함수는 다음과 같이 정의됩니다:

    \[\sigma(x) = \frac{1}{1+exp(-(wx-b))}\]

    수식에서 b 를 적절하게 셋팅하여 sigmoid function 의 중심 (y 값이 0이 되는 부분) 을 이동시키고 w 를 크게 셋팅하면 위와 같이 가파른 sigmoid function 을 만들 수 있다.

    sigmoid 함수는 0과 1 사이의 값을 가집니다. 여러 sigmoid 함수를 조합하면 다양한 형태의 함수를 생성할 수 있습니다. 예를 들어, 두 개의 sigmoid 함수를 뺄셈 연산으로 조합하면 “step” 함수와 유사한 형태를 만들 수 있습니다.

    neural network 를 이용하여 sigmoid function 의 뺄셈 연산을 어떻게 만들어낼지? w 와 b 가 적절히 셋팅되면 가파른 모양의 sigmoid function 이 나오는 것을 확인하였다.

    마지막 layer 에, 위와 같은 sigmoid function 값을 이용하여 뺄셈을 할 수 있는 weight를 설정해 준다면 사각형 모양의 simple function 을 만들 수 있다.

  • 강의에서는, x축(노드의 입력값)을 scaling함으로써 unit step function처럼 사용하는 것을 가이드.

용어

  • Feed-forward neural networks

  • 튜링완전성(Turing completeness)

  • 튜링기계(Turing machine)

    • 튜링 기계(Turing machine)는 1936년에 앨런 튜링(Alan Turing)에 의해 제안된 이론적인 계산 모델입니다. 튜링 기계는 모든 알고리즘을 시뮬레이션할 수 있는 능력을 가진다고 여겨지며, 따라서 현대 컴퓨터 과학의 기초를 이루는 중요한 개념입니다.

      튜링 기계의 주요 구성 요소는 다음과 같습니다:

      1. 무한한 길이의 테이프(Tape): 각각의 칸에는 하나의 기호가 쓰여질 수 있으며, 초기에는 모든 칸이 특정 기호(보통 ‘빈칸’을 의미하는 기호)로 채워져 있습니다.
      2. 테이프 헤드(Head): 테이프의 특정 위치를 가리키며, 현재 위치의 기호를 읽거나 쓸 수 있습니다.
      3. 상태 기계(State machine): 현재 상태를 나타내며, 테이프 헤드가 읽은 기호와 현재 상태에 따라 다음 상태를 결정하고, 테이프에 쓸 기호를 결정하며, 테이프 헤드의 이동 방향을 결정합니다.

      튜링 기계는 주어진 입력에 대해 계산을 수행하며, 계산이 완료되면 특정 상태(보통 ‘정지 상태’라고 함)에 도달합니다. 튜링 기계의 능력은 매우 강력하여, 튜링 기계로 표현 가능한 모든 알고리즘은 실제 컴퓨터로도 구현 가능하다고 여겨집니다.

      이러한 튜링 기계의 개념은 “튜링 완전성(Turing completeness)”이라는 중요한 개념의 기초가 되며, 어떤 시스템이 튜링 완전하다는 것은 그 시스템이 튜링 기계와 동일한 계산 능력을 가지고 있음을 의미합니다.

실험