딥러닝에서 여러가지 활성함수를 사용하게 되는데 그에 따라 활성함수를 정리하고자 한다.
Linear
선형 활성함수이다. 특징으로 두 가지 문제점을 갖는다.
첫 번째로는 보이는것과 같이 선형의 구조를 가지기 때문에 미분 값은 항상 같은 상수 값이다. 그래서 활성함수의 미분하는 과정을 통해 손실을 줄이는 역전파(backpropagation)를 할 수 없다.
두 번째로는 Hidden Layer를 무시한다. 다시 말해 Layer를 Deep하게 쌓아도 결국 Weigt * X + Bias 로 치환된다.
example) ((ax +b)*c+ d)*e + f ... = W * X + B
Sigmoid
Sigmoid는 output을 0과 1사이로 만들어 준다. 데이터는 평균 0.5를 갖게 된다. 식은 다음과 같다.
장점으로는,
첫 번째로 그래프와 같이 유연한 미분 값을 가진다. 입력에 따라 값이 급격하게 변하지 않는다.
두 번째로는 출력 값이 0과 1 사이로 제한됨으로써 정규화 중 기울기 폭주(exploding gradient) 문제를 방지한다.
단점으로는,
첫 째로, 기울기 소실(Gradient Vanishing) 문제가 발생한다. Deep한 Neural Network를 학습하다보면 역전파 과정에서 입력층으로 갈수록 기울기(gradient)가 점차적으로 작아지는 현상이 발생한다. 입력층에 가까운 weight들이 업데이트가 제대로 되지 않으면 결국 최적의 모델을 찾을 수 없게 된다.
두 번째로는 출력의 중심이 0이 아니다. 뉴런으로 들어오는 데이터가 항상 양수인 경우 기울기(gradient)는 모두 양수 또는 음수가 된다. 이는 업데이트 중 지그재그로 변동하는 학습 효울성을 감소시킬 수 있습니다.
실제에서 sigmoid는 많이 사용되지 않는다. 간혹 사용되는 경우로는 binary classification의 경우 출력층 노두가 1개 이므로 이 노드에서 0~1사이의 값을 가져야 마지막에 cast를 통해 0 또는 1 값을 (0.5를 기준으로) output으로 받을 수 있다. 이럴 때 sigmoid를 사용한다.
* 기울기 소실(Gradient Vanishing)
기울기 소실을 발생시키는 원인 중 하나인 Sigmoid를 예로 설명하면 다음과 같다.
경사하강법에서는 미분값만큼 변화가 일어나서 학습이 되는데 미분값이 0이라는 것은 양 끝단으로 갈 수록 학습이 이루어지지 않는다. 그래서 너무 크거나 작은 값들을 강제로 출력하는 영역에서는 학습이 잘 이루어지지 않게된다.
Tanh
Sigmoid 함수와 거의 유사하다. 차이로는 결과 값을 -1 ~ 1 값을 가지고 데이터 평균은 0이다. 하지만 대부분의 경우에서 Sigmoid보다 Tanh가 성능이 더 좋다. 그러나 Sigmoid와 마찬가지로 기울기 소실(Gradient Vanishing) 현상이 발생한다.
ReLU
많이 사용되는 ReLU에 대해 알아보자. 대부분의 input 값에 대해 기울기가 0이 아니기 때문에 학습이 빠르게 진행된다. 학습을 느리게 하는 원인이 gradient가 0이 되는 것인데 이를 대부분의 경우에서 막아주기 때문에 Sigmoid나 Tanh보다 학습이 빠르다. (hidden layer에서 대부분 노드의 z값은 0보다 크기 때문에 기울기가 0이 되는 경우가 많지 않다.)
간혹 hidden layer의 대부분 노드의 z가 0보다 작은 경우를 위해 음수에서 기울기가 0.01인 Leaky ReLU를 사용하면 ReLU보다 성능을 보인다.
출처 :
https://ganghee-lee.tistory.com/32
https://m.blog.naver.com/qbxlvnf11/221901564016
'Deep Learning' 카테고리의 다른 글
[Keras] VGG-net (0) | 2022.09.01 |
---|---|
CNN(Convolutional Neural Network) 합성곱 신경망 (0) | 2022.08.23 |
RNN(Recurrent Neural Network) 순환 신경망 (0) | 2022.08.19 |
[Deep Learning] 앙상블 학습(Ensemble Learning) (0) | 2021.07.29 |
[Deep Learning] 배치 정규화(Batch Normalization) [작성중] (0) | 2021.07.29 |
댓글