활성화 함수 (Activation Function)
입력된 데이터의 weight 합을 출력 신호로 변환하는 함수이다. ANN에서 이전 layer에 대한 weight 합의 크기에 따라 activation 여부가 결정된다. 신경망의 목적에 따라 또는 layer의 역할에 따라 선택적으로 적용한다.
Sigmoid
시그모이드 (sigmoid)는 S자 형태라는 의미로, sigmoid 함수는 S자형 곡선의 함수를 의미한다. 정의역은 실수 전체이지만, 유한한 구간(a,b) 사이의 한정된 값을 반환한다. a와 b는 주로 0과 1을 사용한다. sigmoid 함수에서 정의역의 절댓값이 커질수록 미분 값은 0으로 수렴한다. weight가 업데이트되지 않고 소실되는 Gradient vanishing이 발생할 수 있다.
Vanishing gradient
sigmoid로 여러 layer를 쌓았다고 가정하면 출력층에서 멀어질수록 기울기가 거의 0인 몇몇 노드에 의해 점점 역전파해갈수록, 즉 입력층 쪽으로갈수록 대부분의 node에서 기울기가 0이되어 결국 gradient가 거의 사라진다. 결국 입력층쪽 node들은 기울기가 사라지므로 학습이 되지 않게 된다. 대부분의 경우에서 sigmoid 함수는 좋지 않기 때문에 사용하지 않는다. 그러나 유일한 예외가 있는데 binary classification 경우 출력층 node가 1개이므로 이 node에서 0 ~ 1 사이의 값을 가져야 마지막에 cast를 통해 (EX. 0.5이상이면 1, 미만이면 0) 0 혹은 1값을 output으로 받을 수 있다. 이때는 sigmoid를 사용한다.
Tanh
sigmoid 함수와 거의 유사하다. 차이는 -1 ~ 1값을 가지고 데이터의 평균이 0이라는 점이다. 대부분의 경우에서 sigmoid보다 Tanh가 성능이 더 좋다. sigmoid와 마찬가지로 Vanishing gradient라는 단점이 있다.
ReLU
ReLU(Rectified Linear Unit)은 입력값이 0보다 작으면 0을, 0보다 크면 입력 값 그대로인 선형 함수를 출력하는 함수이다. sigmoid의 단점인 Gradient vanishing 현상을 해결하며, 단순하지만 성능이 좋아 자주 사용된다. 그러나 weight 합이 음수인 node들은 다시 활성화되지 않는 dying Relu (dead neuron) 현상이 발생하기도 한다. 이를 보완하기 위하여 0 이하의 값에서도 기울기를 가지는 함수(leakyReLU, PReLU)가 등장했다.
Leaky ReLU
ReLU와 유일한 차이점은 max(0, z)가 아닌 max(0.01z, z)라는 점이다. 즉, input값인 z가 음수일 경우 기울기가 0이 아닌 0.01값을 갖게 된다. leaky ReLU를 일반적으로 많이 쓰진 않지만 ReLU보다 학습이 잘 된다.
ELU (Exponential Linear Unit)
ELU (Exponential Linear Unit)은 ReLU와 그 형태가 유사하나, 입력 값이 0인 지점이 첨점 (sharp point)이 아니다. ReLU와 거의 비슷한 형태를 갖는다. 지수 함수를 이용하여 입력이 0 이하일 경우 부드럽게 깎아준다. 미분 함수가 끊어지지 않고 이어져있는 형태를 보인다. 별도의 알파 값을 파라미터로 받는데 일반적으로 1로 설정된다. 그 밖의 값을 가지게 될 경우 SeLU (scaled exponential linear unit)이라 부른다.
0에서도 미분할 수 있으며, 0 이하 입력의 모든 출력이 0이 아니라 0으로 수렴하는 형태의 함수이다. 따라서 dying ReLU 현상을 해결하였지만 ReLU의 장점은 모두 가져 DL에서 자주 사용한다. 그러나 선형 함수로 구성된 ReLU에 비해 exponential function을 계산해야 하는 비용이 든다.
'Learning-driven Methodology > DL (Deep Learning)' 카테고리의 다른 글
[Deep Learning] 척도 (Metrics) (0) | 2022.01.03 |
---|---|
[Deep Learning] 활성화 함수 (Activation Function) (2) (0) | 2022.01.03 |
[Deep Learning] 손실 함수 (Loss function) (0) | 2022.01.03 |
[Deep Learning] 비용 함수 (Cost Function) (0) | 2021.12.30 |
[Deep Learning] 목적 함수 (Objective Function) (0) | 2021.12.30 |