activation function
hidden layer에서 hidden node들은 앞선 노드들의 가중합을 input으로 받아 activation function을 거친 output을 내놓게 된다. 우선, activation function을 왜 써야 하는지에 대해 알아보자. 앞서 multilayer perceptron에서 설명했듯이 multilayer perceptron에 층을 계속 쌓아나가는 심층신경망 즉, 딥러닝에서 가중합을 그대로 선형함수 $f(x)=\delta x$ 를 거쳐 output을 내놓게 된다면, 층을 쌓는 의미가 없어진다. 즉 가중합 연산만 반복하게 되는 의미없는 작업의 반복을 하게 된다. 그렇기 때문에 activation function을 사용하여 hidden layer를 쌓는 의미를 갖게 된다. 아래의 그림을 통해서 설명하면 $u$는 $\sigma$ 함수를 거쳐 $h$로 매핑이 되는 과정이 가중합 연산 반복에 의미를 더해주는 것이다. 이진분류에서 가중합의 임계치가 양수냐 음수냐에 따라 0또는 1로(예측에 관여를 할지 안할지) output을 내는 step function은 하나의 hidden layer를 거치면서 각 가중합들에 대해 새롭게 의미를 부여하는 것이 예가 된다.
그리고 activation function은 대부분 상한치와 하한치를 주는 방식으로 되어 있기 때문에 가중합을 상한치와 하한치 사이로 normalization하는 역할도 수행하여 복잡한 계산을 단순화시켜준다.
activation function 같은 경우는 아래의 그림과 같이 다양하게 존재한다. 각 function 마다 장단점이 있고 어디에 사용되는지 살펴보자.
여러 non linear activation function에 대한 설명에 앞서 binary step activation function과 linear activation function의 한계점을 짚어 위 그림의 non linear activation function 의 가치를 상기시켜본다. 바로 아래의 그림은 이진분류 활성화함수이다. 앞선 singlelayer perceptron에서 가중합이 양수이면 1, 음수이면 0을 주는 즉, threshold value(임계치)가 0인 아래의 그래프인 step function을 사용한 바 있다. 장점이라하면 단순한 매트릭이라 할 수 있겠지만, 다중 분류를 하는 문제에 사용할 수 없다는 치명적인 단점이 존재한다. 오직 0 또는 1로만 예측을 해야하기 때문이다. 또한 optimization을 해야하는데 미분을 해야하는데 미분을 할 수 없는 단점도 존재한다.
아래의 그래프는$a$가 1인, $f(x) = ax$ 그래프이다. 이 함수는 그래프를 보고 알 수 있듯이 출력값에 상수값을 곱한 값이 출력이 되게 된다. 그렇기 때문에 첫번째, 딥러닝 모델 학습시 사용하는 backpropagation에서 거꾸로 미분을 해나가는 과정에서 미분값이 항상 같은 상수값으로 나오게되어 backpropagation이 불가능하다. 두번째, 상한치와 하한치가 없어 normalization을 수행하는 activation function의 역할을 수행할 수 없다는 단점이 존재한다.
위의 두 activation function이 가진 단점을 커버할 수 있는 non linear activation function(비선형 활성화 함수)에 대해서 하나씩 살펴보자.
1. Sigmoid Function
Sigmoid Function는 우선, 로지스틱 회귀에서의 이진 분류문제에 출력값을 최종적으로 0 또는 1로 결정할 수 있게 해주어 선형회귀에서 비효율적인 classification문제를 풀 수 있는 것으로 잘 알려진 함수이다. 위의 함수 $\sigma(x)$에 input을 넣으면 output이 0 또는 1로 출력이 되도록 구성된 함수이다. $x$값이 커지면 커질수록 자연상수$e$의 지수인 $-x$ 값이 커지게 되고, $e^{-x}$ 값은 분모 값이 커지게 되어 0에 수렴하여 결과값이 1에 가까워지게 된다. 반대로 $x$값이 작으면 작을수록 $\sigma(x)$ 식의 분모 부분이 무한대로 발산하여 결과값이 0에 가까워지게 된다. 줄여 말하면, $x$값이 클수록 1에 가까워지고, $x$값이 작을수록 0에 가까워지게 만드는 함수이다. 위의 그래프를 보면 이 시그모이드 함수의 임계치가 0.5인 것을 알 수 있다. 이제 이 함수의 장점과 단점, 활용예시를 살펴보자.
우선 장점은 입력값에 따라 출력값이 요동치지 않고, 다소 안정적이게 출력을 할 수 있다는 점이 있다. 그리고 상한치와 하한치가 0,1로 정해져 있기 때문에 regularization 작업중 gradient가 exploding하는 문제를 피할 수 있다.
단점은 학습 과정에서 gradient vanishing(이전 레이어로 전파되는 gradient가 0에 가까워지는 현상.)문제가 발생한다. 또한 활성화 함수의 결과값의 중간값이 0.5라는 점과 지수함수 계산 특성상 계산이 복잡한 것이 있다. gradient vanishing(그래디언트 소실)문제는 아래의 그래프를 통해 알 수 있는데, 양극단에 미분값이 0에 가까워 지기 때문에 backpropagation중 그래디언트가 0으로 곱하니 소실이 되게 되어 weight, bias를 학습할 수 없게 된다.
시그모이드 함수에서 $x$값이 0.5일 때 기울기가 최대라는 것을 볼 수 있는데, 이때의 미분값이 1/4이다. 즉 가장 최대인 기울기의 값이 1/4 이라는 작은 값이기 때문에 층이 여러개 겹겹이 쌓게 되면 금방 gradient가 소실되는 현상이 일어나게 된다.
아래의 식은 backpropagation을 통해 파라미터를 학습시키는 연산인데, Chain Rule로 미분을 통해 gradient 계산하는 과정에서 점점 gradient가 소실되어 사라지게 되는 것을 알 수 있다. Chain Rule과정에서 미분값이 1보다 크게 나오게 되면 그 값들을 곱해나가게 되면 gradient exploding 문제가, 1보다 작게 나오면 그 값들을 계속 곱해나가다 보면 gradient vanishing 문제가 생기게 되는 것이다.
아래의 그림은 시그모이드 함수가 파라미터 학습을 하며 업데이트를 하는 과정을 나타낸다. backpropagation은 최종 output으로부터 시작해 델타를 역전파시켜서 활성함수의 미분값을 곱해 델타를 또 구해나가는데, 이 때, 시그모이드 특성상 활성함수를 거치면 반드시 음수이거나 양수인 값이 출력이되고 이것이 의미하는 것은 곧 가중치를 업데이트할 때, 처음에 결정된 부호가 입력층까지 가면서 업데이트를 하게 된다는 것이다. 즉, 중간중간에 업데이트를 더하고 빼거나 둘 다 할 수 없고, 더하기만하면서 업데이트하거나 빼기만 하면서 업데이트를 하기 때문에 optimization 과정에서 그 속도가 상대적으로 현저히 느리게 된다는 말이다.
2. Tahn Function(tangent hyperbolic function)
Singmoid function의 한계점들을 해결할 수 있는 Tanh Function 이 등장하였다. 이 함수는 기존의 시그모이드 함수를 유도한 것으로써 결과값의 중심이 0.5였던 것이 0으로 바뀌게 되고, 결과값으로 항상 0이상의 값을 출력했던 것에서 -1 ~ 1사이의 값을 출력할 수 있게 되었다. 하지만 시그모이드 함수 그래프와 비교해보면 알 수 있듯이 gradient vanishing 문제는 여전히 해결하지 못한다. $x=0$에서 미분값은 1로 여전히 낮은 값을 갖는다.
sigmoid , Tahn activation function 모두 미분은 변형식으로 간단히 표현할 수 있다.
3. ReLU(Rectified Linear Unit)
현재 가장 인기 있다고 알려진 ReLu activation Function 이다. 아래의 그래프 처럼 $x$가 양수이면 선형식을 따라 출력값을 가지게 되고, 0이하인 경우 0의 값을 출력한다. 앞선 시그모이드, 탄젠트 하이퍼볼릭 함수와는 다르게 기울기가 0 또는 1로 구해지는 것을 알 수 있다. 이로써 gradient가 사라지거나 발산해버리는 gradient vanishing, gradient exploding문제를 해결할 수 있게 된다.
또한 앞선 비선형함수들의 지수함수 식에서 처럼 복잡한 연산이 없어져 계산속도도 월등히 높다고 한다. 또한 $x$가 0보다 큰 부분에서 선형식이 있기 때문에 saturated했던 앞의 비선형 함수들에 비해 SGD의 수렴속도도 앞선다.
$x$가 0보다 큰 경우 선형 값을 출력하게 되어 앞선 linear activation function 에서와 같이 연산량만 증가하는 동일한 문제가 있을 것 같지만, 비선형 함수이기 때문에 그러한 문제도 자연스럽게 해결된다고 할 수 있다.
단점은 $x$가 0보다 작은 경우, 기울기가 0이기 때문에 학습시 뉴런이 죽는 경우가 발생하게 되어 그 값은 더이상 없데이트가 되지 않는 단점이 존재한다. 또한 결과값의 중심이 0이 아닌(not zero-centered) 문제로 마이너한 문제가 발생한다.
4. Leaky ReLU
앞선 ReLU의 큰 단점이였던 $x$가 0 이하인 구간에 기울기가 0이어서 학습 과정 중 뉴런이 죽어 해당 뉴런에 대한 학습을 할 수 없었던 문제를 해결하기 위해 등장한 함수이다.
이 함수는 $x$가 0보다 작은 구간에 함수 $f(x) = 0.01x$ 의 식을 적용하여 결과값을 출력한다. 나머지는 ReLU함수와 동일하다. 여전히 계산이 효율적이고 빠르며, saturated되지 않는 특징을 계속 지니고 있다.
Leaky ReLU에서 $\alpha$ 값을 0.01로 두고 있는데, 이 $\alpha$ 값도 backpropagation에 의해 학습되도록 한 함수 PReLU(Parametric ReLU)가 있는데, 대규모 이미지 데이터 셋에서 성능이 더 좋았지만, 소규모에서는 오버피팅 될 가능성이 있다고 한다.
5. Maxout "Neuron"
ReLU와 Leaky ReLU를 일반화한 함수로써 ReLU가 가진 장점을 모두 가졌지만, 각 노드별로 학습을 시켜야할 파라미터 weight, bias를 추가해주기 때문에 연산량이 두 배 이상 증가하게 되는 치명적인 단점이 존재한다. 그래서 성능 대비 인기가 없는 활성화 함수이다.
6. ELU
기존의 ReLU와 장점을 공유하며 하이퍼파라미터 $\alpha$는 $x$가 음수일 때 수렴하는 값을 정의해주는 차이가 있다. 보통 1로 설정한다고 한다. Leaky ReLU처럼 죽은 뉴런을 만들지 않게 되는 장점이 있고, $\alpha$가 1일 때, ELU는 $x$가 0에서 급격하게 변하지 않고 매끄럽게 변하기 때문에 gradient descent 에서 수렴속도가 빠르다. 앞선 LU 패밀리가 zero-mean 출력 값을 갖지 못하는 것에 비해 상당한 이점을 가지고 있다.
ELU → LeakyReLU → ReLU → tanh → sigmoid
softmax function
ref)
'딥러닝' 카테고리의 다른 글
pytorch 기초 문법(tensor, backpropagation, data load) (0) | 2021.04.12 |
---|---|
RNN (0) | 2021.04.10 |
multi-layer perceptron (0) | 2020.08.27 |
Single Layer Perceptron (0) | 2020.08.06 |
Convolution and Pooling (1) | 2020.06.27 |
댓글