[Chapter 5] 인공 신경망, 그 한계는 어디까지인가?
1. Universal Approximation Theorem
- 복습하자면 딥러닝이란 입력과 출력 간의 관계, 즉 함수를 알아내는 것
- 이때 함수로는 인공 신경망, 특히 Fully Connected Layer로 이루어진 MLP를 주로 사용
- MLP (Multi Layer Perceptron)는 `weight 행렬 곱하고 bias 벡터와 함께 더하고 activation`을 여러 번 반복하는 함수
- 입력과 출력을 연결하는 함수를 찾는 것이 목표인데, 왜 다항함수나 삼각함수 등 다른 함수는 고려하지 않고 인공신경망을 사용할까? 수많은 함수 중에서 MLP를 선택한 특별한 이유가 있을까?
- MLP는 Hidden Layer가 단 한 층만 있어도 제한된 범위 안의 어떤 연속 함수든 나타낼 수 있기 때문에 MLP를 선택
- 쉽게 말해, f(xW1 + b1) * W2와 같은 인공 신경망으로 제한된 범위 안의 2차 함수, 3차 함수, cos(x) 등 모든 연속 함수를 표현할 수 있고 해당 함수는 출력층에 bias 및 activation이 없는 히든 레이어 하나짜리 MLP를 나타냄
- 즉, Hidden Layer 한 층짜리 인공 신경망으로도 Loss를 0에 가깝게 만들 수 있음
- 단, MLP가 강력한 능력을 펼치기 위해서는 두 가지 조건이 필요
- Hidden Layer는 충분한 수의 노드를 가져야 하고
- 활성화 함수는 다항 함수가 아니어야 함
- MLP의 강력함은 ChatGPT와 같은 복잡한 시스템에도 마찬가지로 적용됨
- ChatGPT는 사용자의 입력 텍스트를 받아 적절한 출력 텍스트를 생성
- ChatGPT를 학습시키는 과정 또한 입력과 출력 사이의 복잡한 함수를 찾는 것으로 볼 수 있음
- 이론적으로는 이런 복잡한 관계도 Hidden Layer 한 층을 가진 MLP로 표현 가능하지만 이 경우 필요한 Hidden Layer의 노드 수는 무한에 가까울 것
2. Universal Approximation Theorem 증명
간단한 예시로 이 정리를 설명하겠지만, 이는 직관적 이해를 돕기 위한 것이며 엄밀한 수학적 증명은 아닙니다.
- 시그모이드 함수 σ(x)는 x -> - ∞ 에서 0에 가깝고, x -> ∞에서 1에 가까워지는 형태를 가짐
- 이 함수를 여러 개 선형 결합(가중치와 편향) 형태로 쌓으면, `국소적으로 볼록/오목`한 조각 함수의 합을 구성 가능
- 충분히 많은 뉴런을 두어 다양한 스케일과 위치에서 시그모이드를 조합하면, 임의의 연속함수에 가깝게 매끄럽게 이어 붙일 수 있음
위 내용을 좀 더 엄밀하게 다루면, Stone-Weierstrass 정리나 mollifier 함수 등을 활용한 증명이 가능하나, 여기서는 “시그모이드를 쌓아 곡선을 여러 조각으로 나누어 근사한다” 정도로 이해할 수 있습니다.
실제로 단층 신경망(Input Layer - Hidden Layer - Output Layer)이 sin(x) 함수를 학습하는 과정을 보여주면서 `점점 더 sin(x)에 가까워지는지`를 코드로 작성해 보겠습니다.
- 손실 함수: 평균 제곱 오차(MSE)
- 최적화: 간단히 SGD나 batch gradient descent
- 모델 구조
- Input Layer (차원: 1)
- Hidden Layer (차원: 10, 활성화 함수: 시그모이드)
- Output Layer (차원: 1, 활성화 함수 없음)
결과 해석
- 코드를 실행해 보면, 처음에는 sin(x)와 전혀 다른 곡선을 그리다가, 학습이 진행될수록 점차 sin(x) 형태에 가까워지는 모습을 확인 가능
- 이는 `단층 신경망이라도 충분한 뉴런(이 예제에서는 10개)과 적절한 학습 횟수를 통해 sin(x) 함수를 근사할 수 있다`는 것을 보여줌
- 앞서 말했다시피 핵심은 `단층 신경망도(은닉층 1개) 비선형 활성화를 갖추고 충분히 많은 뉴런이 있으면 임의의 연속함수를 근사할 수 있다`는 점
이처럼 이론적으로 Hidden Layer 한 층으로 충분히 연속 함수를 근사할 수 있는데 `왜 깊은 신경망을 사용할까?`라는 의문이 생기는데 이유는 다음과 같습니다.
- 이론적으로 Hidden Layer 한 층으로 충분하지만 이 방식을 따르기 위해서는 무한히 많은 노드가 필요
- 그렇기 때문에 실제로는 효율성을 위해 노드 수를 줄이는 대신 층 수를 늘리는 방식인 깊은 신경망을 선택
* 실제 증명은 다음 링크를 참고하시면 됩니다.
http://neuralnetworksanddeeplearning.com/chap4.html
Neural networks and deep learning
One of the most striking facts about neural networks is that they can compute any function at all. That is, suppose someone hands you some complicated, wiggly function, $f(x)$: No matter what the function, there is guaranteed to be a neural network so that
neuralnetworksanddeeplearning.com
3. Universal Approximation Theorem 오해와 진실
Universal Approximation Theorem에 대해 흔히 있을 수 있는 두 가지 오해는 다음과 같습니다.
- Universal Approximation Theorem은 AI의 학습 방식을 설명하는 정리가 아님
- Universal Approximation Theorem이 있으니 Fully-Connected 레이어만 사용해도 되는 것은 아님
3.1 Universal Approximation Theorem은 AI의 학습 방식을 설명하는 정리가 아님
- 뉴럴 네트워크가 `이론적으로` 어떤 함수든 근사할 수 있다는 사실을 말해줄 뿐, 실제로 해당 함수를 찾으려면 별도의 학습 알고리즘과 적절한 초기화, 하이퍼파라미터 설정 등이 필요
- 즉, 정리의 존재 자체가 `어떤 초기값에서 시작해도 네트워크가 항상 우리가 원하는 함수를 잘 찾아갈 것`을 보장해주지 않음
- 정리하면 Universal Approximation Theorem은 뉴럴 네트워크가 갖는 표현 능력에 대한 이론적 보장이지, `어떻게 학습해서 그 함수를 찾아내는가` 또는 `항상 잘 학습된다`를 설명하는 정리가 아님
3.2 Universal Approximation Theorem이 있으니 Fully-Connected 레이어만 사용해도 되는 것은 아님
- 이 정리가 Hidden Layer 한 층을 가진 MLP로 어떤 함수든 표현할 수 있다는 것을 보여주긴 하지만 이 것이 MLP나 Fully-Connected 레이어가 가장 효율적인 구조라는 의미는 아님
- ex) [a, b]와 [c, d]를 입력으로 받아 이 둘의 내적 ac + bd를 출력하는 함수를 MLP로 만들 수 있지만 내적 연산이 필요할 경우 그냥 내적 하는 레이어를 중간에 추가하는 것이 MLP를 학습시켜 내적을 수행하도록 유도하는 것보다 훨씬 더 효율적
- 주의해야 할 점은 인공 신경망에 아무 레이어나 추가할 수 있는 것은 아님
- 역전파가 가능해야 하므로 새롭게 도입되는 레이어는 반드시 미분 가능한 연산으로 이루어져야 함
결론적으로 Universal Approximation Theorem은 인공 신경망의 강력한 표현력을 보여주는 중요한 정리이지만 해당 정리가 실제 학습 과정이나 최적의 모델 설계 방법을 직접적으로 제시하는 것은 아님을 유의해야 합니다.
효율적이고 성능 좋은 모델을 만들기 위해서는 문제의 특성에 맞는 다양한 구조와 기법을 적절히 활용해야 합니다.
참고
혁펜하임의 Easy! 딥러닝