일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 모션매칭
- ue5.4
- 언리얼엔진
- 딥러닝
- Stat110
- UE5
- inductive bias
- 생성모델
- animation retargeting
- CNN
- WinAPI
- Unreal Engine
- GAN
- dl
- deep learning
- userwidget
- multimodal
- NLP
- 디퓨전모델
- 폰트생성
- Font Generation
- ddpm
- Few-shot generation
- Generative Model
- RNN
- Diffusion
- WBP
- cv
- motion matching
- BERT
- Today
- Total
Deeper Learning
Universal Approximation Theorem 본문
Universal Approximation Theroem
one hidden layer로 모든 함수를 근사할 수 있다는 이론.
신경망은 함수를 근사하는데 매우 뛰어난 method로 여러 신경망 층을 쌓은 딥러닝이 비정형 데이터에서 최고의 성능을 보이고 있다.
하지만 one hidden layer만 사용하여도 존재하는 모든 연속함수를 근사할 수 있다.
that a feed-forward network with a single hidden layer containing a finite number of neurons can approximate continuous functions on compact subsets of R
위 그림과 같이 연속함수들은 수많은 아래와 같은 함수들을 사용하면 근사가 가능하다.
오른쪽 사진에서 볼 수 있듯이 구간을 짧게 하면 더 정확하게 함수를 근사하는 것을 볼 수 있다.
위와 같이 x축에서 범위가 겹치지 않는 bar function 을 만들 수 있으면 이들을 활용하여 근사가 가능하다.
이제 위 방식을 one hidden layer neural net에 적용시켜보겠다.
위 아키텍쳐의 output layer의 값은 hidden layer의 output인 4개의 함수의 가중합이다.
즉, hidden layer의 수가 많으면 많을수록 정확하게 함수의 근사가 가능한 것이다.
bar shape function을 만드는 방법은 아래와 같다.
f(x) - g(x)는 x가 0보다 같거나 크고 0.1보다 작을 때 1의 값을 가지고 나머지 정의역에서는 0의 값을 가지는 bar 형태의 함수가 된다.
g(x)는 f(x-0.1)과 같다. 근사하려는 target function이 x=0에서 3의 값을 가지면 x가 0일 때 3의 값을 가지는 bar가 필요하다.
3 * (f(x) - f(x-0.1))는 x가 0 ~ 0.1일 때 3의 값을 가지는 bar function이 된다.
위와 같은 방식으로 x가 0.1 ~ 0.3일 때 7의 값을 가지면 7 * (f(x-0.1) - f(x-0.3)) 과 같이 step function f(x)를 활용하여 모두 표현이 가능하다.
위처럼 weight, bias를 사용하여 식을 표현할 수 있다.
전체 정의역을 커버할 수 있도록 hidden layer에서 매우 많은 node를 사용하면 bar의 width는 0에 수렴하게 되며 더 적은 오차로 근사가 가능해진다.
활성화 함수로 시그모이드 함수를 사용하면 아래와 같은 모양으로 시그모이드 함수에 변형이 필요하다.
sigmoid(ax) 식에서 a가 매우 큰 값이면 x가 0보다 조금만 커져도 y의 값이 1이 되며 위 그림의 첫 번째 그래프와 비슷한 모양이 된다.
따라서 지금까지 사용한 step function f(x)는 sigmoid(ax)가 된다.
a가 100일 때, y = 3 * (sigmoid(100*x) - sigmoid(100*(x-0.1)) + 7 * (sigmoid(100*(x-0.1)) - sigmoid(100*(x-0.3))
input인 x에 100의 값이 모두 곱해져 있기 때문에 이전 예시와 다르게 첫 번째 layer의 weight는 모두 1이 아닌 100이 된다.
Tanh의 경우도 비슷하며 ReLU는 bar shape function을 만들기 위해 한 단계를 더 거쳐야 한다.
이론적으로 하나의 hidden layer만 사용한 신경망 모델로 모든 함수의 근사가 가능하지만 실제로는 여러층을 deep 하게 쌓은 deep-learning을 사용한다.
그 이유는 하나의 hidden layer만 사용하면 node 하나하나가 선형적으로 모델의 representation power를 증가시키는데 이 경우 매우 많은 node가 필요하며 수렴이 무조건 보장되는 것도 아니기 때문이다.
결론은 이론적으로 하나의 hidden layer와 비선형의 연속적인 활성화 함수를 사용하면 어떠한 연속함수라도 근사가 가능하다는 것이다.
Reference
[1] https://towardsdatascience.com/can-neural-networks-really-learn-any-function-65e106617fc6
[2] https://en.wikipedia.org/wiki/Universal_approximation_theorem
[3] https://www.youtube.com/watch?v=vnkGn4r62Q8&list=PL_iJu012NOxdDZEygsVG4jS8srnSdIgdn&index=22
'AI > Deep Learning' 카테고리의 다른 글
ELMo (Embeddings from Language Model) (0) | 2021.10.08 |
---|---|
Full Stack Deep Learning - Lecture 1 ~ 3 (0) | 2021.10.07 |
DG-Font: Deformable Generative Networks for Unsupervised Font Generation (0) | 2021.09.25 |
Deformable Convolutional Networks (0) | 2021.09.25 |
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks (0) | 2021.09.20 |