[EECS 498-007/ 598-005 / cs231n] Lecture 10. Training Neural Networks I
0. Activation Function이란
Activation Function의 종류들을 알아보기에 앞서 Activation Function이 무엇인지 알아보겠다.
$ \sum_{i}^{}w_i x_i + b $ 라는 linear function을 $f$라는 activation fuction의 입력으로 집어넣음으로써, neural netwrok에서 multiple layer로 동작할 수 있게끔 도와준다.
activation function이 없이 linear function만으로 multiple layer로 쌓은 것은 하나의 linear function으로 표현할 수 있기 때문에 multiple layer의 기능을 하지 못한다.
1. Activation function의 종류
Activation function에는 다양한 종류가 있는데 먼저 sigmoid 함수부터 알아보자
1-1. Sigmoid
$$ \sigma (x) = 1/(1+{e^{-x}}) $$
장점
- [0,1]의 범위로 나타낸다.
- 역사적으로 가장 오랫동안 사용되어 왔다.
- 뉴런의 saturating(어느 한 값으로 수렴) 상태인 firing rate를 가장 잘 나타낸다고 한다.
하지만 sigmoid에는 3가지 단점이 존재한다.
① saturated 뉴런은 gradient를 죽인다.
② sigmoid 함수의 output은 zero-centered가 아니다.
③ exp()계산에는 비용이 많이 든다.
단점들에 대해서 더 자세히 알아보자.
① saturated 뉴런은 gradient를 죽인다.
뉴런의 결과값이 매우 크거나 작을 떄, 시그모이드의 결과값은 0에 수렴한다.
오른쪽 그림에서 x가 10 혹은 -10이면 $ \frac{\vartheta \sigma }{\vartheta x} $ 즉 local gradient는 0에 가까운 것을 볼 수 있다.
local gradient가 0에 가깝다는 것은 down stream gradient인 $ \frac{\vartheta L }{\vartheta x} $ 또한 0에 가깝다는 것을 의미한다. 이런 역전파가 계속 되면 결국 gradient는 0에 수렴하게 될 것이다.
② sigmoid 함수의 output은 zero-centered가 아니다.
뉴런의 input이 항상 positive일 때 $w_i$에 대한 local gradient는 모두 positive가 된다.
오른쪽 사진에 대입해 보면 $ x_1, x_2, x_3$이 모두 positive일 때 $w_i$에 대한 local gradient가 모두 positive라는 의미이다.
우리는 학습을 하면서 W를 개선하고 싶지만, 모든 W의 gradient가 positive or negative이기 때문에 down stram gradient 또한 모두 positive or negative가 된다. (upstream X local = down stream)
위와 같은 2차원 상에서 모든 gradient의 방향은 plus 혹은 minus 방향 밖에 존재하지 않게 된다.
만약 파란색 선이 optimal한 vector라고 가정을 하면, 학습을 할 때 지그재그로 이동하게 된다.
이는 고차원상에서는 더욱 큰 제약이 되지만, mini batch를 사용하면 해결이 된다.
③ exp()계산에는 비용이 많이 든다.
계산을 최대한 효율적으로 하지만, exp는 계산적으로 비용이 많이 드는 수식이다.
하지만 이는 엄청 큰 제약은 아니며, 일반적으로는 ①번 단점이 가장 큰 제약으로 여겨진다.
1-2. Tanh
sigmoid 함수의 zero centered 문제를 해소하기 위한 함수이다.
장점
- [-1,1]의 범위로 나타낸다.
- zero centered 문제가 해소되었다.
단점
- saturated 뉴런은 gradient를 죽인다.
1-3. ReLU
$$ f(x) = max(0,x) $$
장점
- +영역에서 saturate 되지 않는다.
- 효율적인 계산이 가능하다.
- sigmoid/tanh 와 비교해서 6배 가량 빠른 속도가 나온다.
단점
- output이 zero-centered가 아니다.
- dead ReLU
$x <0$일 때 gradient가 0이 된다.
이는 뉴런에 영향이 안미칠정도로 극소값도 계산을 해야하는 상황이 존재할 때, 그 output을 0으로 만들어 계산을 무시한다는 점에서 장점으로 볼 수 있지만, dead ReLU를 만든다는 데 있어서 단점으로도 볼 수 있다.
dead ReLU란 모든 data가 특정 ReLU의 negative 위치에 있을 때를 의미한다.
이 때 이 노드는 더이상 activate, update 되지 않아 학습이 되지 않는 문제를 일으킨다.
가끔 ReLU 초기화 시에 아주 작은 값의 bias를 줌으로써 학습이 계속되도록 하기도 한다.
1-4. Leaky ReLU
$$ f(x) = max(0.01x, x) $$
장점
- saturate 되지 않는다.
- 효율적인 계산이 가능하다.
- sigmoid/tanh 와 비교해서 6배 가량 빠른 속도가 나온다.
- dead ReLU가 되지 않는다.
단점
- 식에 존재하는 0.01또한 일종의 hyper paremeter로 학습을 통해 구해야 한다.
$ f(x) = max(\alpha x, x)$ , 역전파를 하면서 $\alpha$를 learnable parameter로 학습해야한다.
1-5. Exponetial Linear Unit (ELU)
ReLU, Leaky ReLU 모두 0에서 미분 불가능하다. 수학적으로 계산가능하도록 하기 위해 ELU가 나왔으며, defalut alpha 값은 1이다.
장점
- ReLU의 장점을 모두 가지고 있다.
- zero mean에 좀더 가까운 결과를 낸다.
- ReLU와 비교해서 noise에 robust함.
단점
- exp를 계산해야한다.
1-6. Scaled Exponetial Linear Unit (SELU)
장점
- ELU의 scaled 버전으로 , deep network에서 더 잘 동작한다.
- Batch Norm이 없는 경우에도, deep SELU network를 수행하면 자동적으로 self normalization이 되는 효과가 있다고 한다.
-> 이를 입증하기 위한 91페이지 짜리 논문이 있다고 한다..
단점
- exp를 계산해야한다.
2. CIFAR10에서의 정확도 비교 및 결론
- ReLU를 쓰자.
- 0.1 %라도 올리고 싶으면 ReLU, ELU, SELU, GELU 등을 적용해보면서 적절한 activation function을 찾아 사용하자.
- sigmoid나 tanh는 사용하지 말자.
3. Data Preprocessing
X라는 데이터가 [NxD]일 때 이를 2차원으로 가정하면 표현하면 위 그림과 같다.
original data에서 mean을 구한 후 mean으로 shift를 하면 zero-centered date라고 한다.
zero-centered data에서 각 축마다 표준편차가 1이 되도록 scale을 한것을 nomalized data라 한다.
앞 1-1에서 input이 모두 positive일 때 gradient $w$는 항상 positive하거나 negative하다 했었다.
이때문에 zero-mean data가 필요하다.
그렇기 때문에 위와 같은 data preprocessing이라는 절차를 거치는 게 좋다고 한다.
실제로는 데이터에 PCA, Whitening을 함으로써 수행한다고 한다.
original data에서는 x값이 무엇이면 y 값이 무엇인지 특정 축에 의해 relation으로 알 수 있다.
하지만 PCA(Principal Component Analysis)를 활용해 만든 decorrelated data에서는 x값이 어떤 값이든 y값이 어떤값인지 알 수 없다.
이 후 decorrelated data에서 whitenint을 하여 whitened data를 만들 수 있다.
이렇게 data preprocessing을 하는 이유는 뭘까?
데이터 전처리를 하면 변화에 덜 민감하고, optimize하기 쉬워지기 때문이다.
왼쪽 그림에서는 기울기가 약간만 바껴도 classify된 결과가 달라지기 때문에 sensitive하다고 볼 수 있지만,
오른쪽 그림을 덜 그렇기 때문에 less sensitive하다고 볼 수 있다.
이미지에 대해서 data preprocessing을 수행한 예제로는 다음과 같이 존재한다고 한다.