여러가지 활성화함수(activation function)

1. sigmoid(logistic function)

 

함수가 [0,1]에서 값을 가지며

 

큰 x>0와 작은 x<0에서 미분값이 0에 가까워서 gradient vanishing이 발생할 가능성이 높다.

 

--------------------------------------------------------------------------------------------------------------------

함숫값 중심이 0이 아닌 1/2이어서 학습이 느리다.

 

왜 학습이 느려질까?

 

모든 $X$가 양수라고 가정해보고 단층신경망에서 backpropagation을 생각해보자.

 

그림1. backpropagation 대략적인 수식

 

그러면 parameter $W$에 대한 loss의 미분 \[\frac{\partial L}{\partial W} = \frac{\partial L}{\partial Z}X\]

 

모든 $X$의 부호가 같으면 $\frac{\partial L}{\partial Z}$ 부호가 parameter의 gradient인 $\frac{\partial L}{\partial W}$의 부호를 결정시킨다.

 

그래서 하나의 노드 $Z$에 대해서는 gradient의 부호가 모두 같을 가능성이 높아지고 같은 방향으로만 update되어 학습이 느려지게 되는 원인이 된다.

 

--------------------------------------------------------------------------------------------------------------------

 

\[\sigma (x) = \frac{1}{1+e^{-x}}\]

 

미분하면 \[\sigma^{'} (x) = \sigma (x) (1-\sigma (x))\]

 

그림2. sigmoid 그래프와 미분한 그래프

 

2. tanh(x)

 

sigmoid가 함수 중심값이 0이 아니어서 학습이 느리다는 단점에 입각하여

 

sigmoid 함수를 적절히 transformation하여 

 

함수 중심값을 0으로 만들어서 학습 과정이 느려지는 문제를 해결

 

실제로 sigmoid와 다음과 같은 관계식이 있다.

 

\[tanh(x) = 2\sigma(2x) - 1\]

 

\[tanh(x) = \frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}\]

 

그림3. tanh(x)와 미분한 함수 그래프

 

그러나 여전히 큰 x>0와 작은 x<0에서 gradient vanishing 현상이 발생할 가능성이 높다

 

 

3. ReLU

 

활성화함수의 가장 대표적인 함수로 최근 가장 많이 사용하는 활성화함수중 하나

 

$$f(x)=max(0,x)$$

 

그림4. ReLU 함수 그래프

 

x>0에서 gradient vanishing 문제를 해결했다

 

exp 함수를 사용한 sigmoid, tanh함수와는 다르게 구현이 간단하며 연산비용도 적고

 

학습속도도 훨씬 빠르다

 

그러나 x<0에서 기울기가 0이어서 뉴런이 소실되는 문제가 발생

 

 

4. PReLU

 

$$f(x)=max(\alpha x, x)$$

 

ReLU에 대해 x<0에서 학습할 수 있도록 개선하였다.

 

 

5. Leakly ReLU

 

$$f(x) = max(0.01x, x)$$

 

PReLU에서 $\alpha = 0.01$을 사용한 ReLU함수로 x<0에서 기울기를 학습할 수 있도록 개선하였다.

 

 

6. Exponential Linear Unit(ELU)

 

$x>0$이면 $$f(x)=x$$

 

$x \leq 0$이면 $$f(x)=\alpha(e^{x} -1)$$

 

ReLU의 장점을 가지면서도 x<0에서 기울기를 학습할 수 있도록 개선

 

함수값은 거의 0을 중심으로 나타난다.

 

반면 ReLU와는 다르게 exponential 함수를 계산해야하는 비용이 발생

 

 

7. Maxout

 

$$f(x)=max(w_{1}^{T}x+b_{1} , w_{2}^{T}x+b_{2})$$

 

ReLU의 장점을 가지고 x<0에서 기울기를 학습할수 있도록 개선하지만 계산비용이 복잡하다

 

 

8. 어떤 활성화함수를 사용해야할까?

 

이외에도 여러가지 활성화함수들이 개발되고 있으며

 

뭐가 제일 좋다라고 단정짓기는 어렵다.

 

그래도 sigmoid나 tanh외에 ReLU를 거의 기본적으로 사용하고

 

상황에 맞춰 다양한 활성화함수를 시도한다.

 

9. 참고

 

https://reniew.github.io/12/

 

 

딥러닝에서 사용하는 활성화함수

An Ed edition

reniew.github.io

 

TAGS.

Comments