딥러닝을 공부하다 보면 활성화 함수가 나오게 됩니다. 그런데 왜 활성화 함수가 신경망에서 필요한 것일까요? 이번 글에서는 활성화 함수의 필요성 및 종류에 대해 알아보도록 하겠습니다.
왜 활성화 함수가 필요한가?
활성화 함수가 필요한 이유는 이전 층(layer)의 결괏값을 변환하여 다른 층의 뉴런으로 신호를 전달하기 위해서입니다. 활성화 함수를 비선형 함수를 사용하는데요. 그 이유는 선형은 아무리 깊어지더라도 f(ax+by)=af(x) + bf(y)의 성질 때문에 결국 하나의 layer로 깊은 layer를 구현할 수 있게 됩니다. 결론적으로 linear 한 연산을 갖는 layer를 수십 개 쌓아도 결국 이는 하나의 linear 연산으로 표현됩니다. 선형은 Layer를 쌓을 수 없다는 이야기죠. 깊은 Layer를 쌓아서 특성을 추출하기 위해서는 비선형 함수가 적합니다.
활성화 함수의 종류
Binary Step 함수
- 임계값(이항하면 bias로 인식)을 경계로 출력이 바뀌는 계단함수
- Step 함수는 퍼셉트론의 활성화 함수로 사용
- Binary step function는 다중 값 출력을 할 수 없어 다중 클래스 분류 문제에 사용할 수 없음
- Binary step function의 기울기가 '0'이기 때문에 역전파 과정에서 문제가 있음
Sigmoid 함수
- Sigmoid 또는 Logistic 함수는 확률을 출력으로 예측 모델에 일반적으로 사용(확률은 0과 1 사이에만 존재)
- 대부분 활성함수로 사용하지 않지만 유일하게 binary classification의 출력층 노드에서 0~1 사이 값을 만들고 싶을 때 사용
- 장점
- 미분 가능하고 부드러운 기울기를 제공
- 출력값의 범위가 (0, 1)로 제한하기에 정규화 관점에서 exploding gradient 문제를 방지
- 단점
- Vanishing gradient 문제를 발생
- Sigmoid 함수의 출력은 0을 중심으로 대칭이 아니기에 모든 뉴런의 출력은 동일한 부호(모두 양수 또는 모두 음수의 형태)가 되므로 비용 및 효율면에서 좋지 못함
Tanh 함수(Hyperbolic tangent)
- Tanh 함수는 Sigmoid 함수와 동일한 S자 모양을 갖고 있지만 출력 범위가 -1에서 1까지 범위를 가지는 활성함수
- 장점
- tanh 활성화 함수의 출력은 0 중심이므로 출력 값을 강한 음수, 중립 또는 강한 양수로 쉽게 매핑할 수 있음
- 데이터를 중앙에 배치하는데 도움이 되며, 다음 계층에 대한 학습이 훨씬 쉬워져 Sigmoid 비해 학습 성능이 좋음
- 단점
- Sigmoid 활성화 함수와 유사한 Vanishing gradient 문제가 있으며Sigmoid 함수에 비해 훨씬 더 가파름
ReLU 함수 (Rectified Linear Unit function)
- 선형 함수의 모양을 띄지만 ReLU는 미분 함수를 가지고 있으며 역전파를 허용하는 동시에 계산 효율을 좋음
- ReLU 함수가 모든 뉴런을 활성화하지 않는데, 선형 변환의 출력이 0보다 작은 경우에만 뉴런이 비활성화
- 장점
- 특정 수의 뉴런만 활성화되기 때문에 ReLU 함수는 sigmoid 및 tanh 함수와 비교할 때 훨씬 더 학습속도가 빠름
- 모양 자체는 선형같지만, 이 함수는 비선형 함수이다. 따라서 도함수를 가지며, backpropagtion(역전파)을 허용
- 단점
- Dying ReLU 문제를 가지고 있음
- ReLU 함수는 입력값이 0 또는 음수일 때, gradient값은 0이 됨
- 즉, 모든 음수 입력 값은 즉시 0이 되어 데이터를 적절하게 맞추거나 훈련하는 모델의 기능이 감소함
- 이러한 이유로 역전파 과정에서 일부 뉴런의 가중치와 편향은 업데이트되지 않기 때문에 제대로 된 학습을 하지 못한다는 문제가 발생(데이터 축소 문제)
Leaky ReLU 함수
- Leaky는 '새는, 구멍이 난'이라는 뜻을 가지고 있다. ReLU에서 발생하는 Dying ReLU 문제를 해결하기 위해 만든 함수
- 입력값이 0보다 작으면 출력값은 ax가 되고, 입력값이 0보다 크면 출력값은 1이 됨(일반적으로 a = 0.01)
- 장점
- Dying ReLU 문제를 방지하며 ReLU보다 균형적인 값을 반환하고, 이로 인해 학습이 조금 더 빨라짐
- 입력값이 0보다 작을 때 기울기(gradient)가 0이 되는 ReLU 함수와 달리 leaky ReLU 함수에서는 입력값이 0보다 작을 때 기울기(gradient)가 0이 되지 않기 때문
- 단점
- ReLU보다 항상 나은 성능을 내는 것은 아님
ELU 함수 (Exponential Linear Unit function)
- ELU 함수는 Exponential Linear Unit을 의미
- 음수일 때 exp를 활용하여 표현
- 출력값의 중심이 거의 0에 가까움(zero-centered)
- 장점
- Dying ReLU 문제를 해결했으며, ReLU의 모든 장점을 포함하는 함수
- 단점
- ReLU와 달리 exp 함수를 사용하여 연산 비용이 추가적으로 발생하여 연산비용 큼
- 큰 음수값에 대해 쉽게 포화됨
어떤 활성화 함수를 사용해야 할까?
이렇게 활성화 함수가 많은데 어떤 활성화 함수를 사용해야 할지 난감합니다. 그럴 때는 일반적으로 ReLU를 많이 사용하면 됩니다. 그리고 다른 활성화 함수를 시도해 보면서 학습 효율이 더 좋은 방법을 찾으면 됩니다.
'딥러닝' 카테고리의 다른 글
딥러닝에서 손실함수를 사용하는 이유 (0) | 2024.01.17 |
---|---|
소프트맥스 함수를 사용하는 이유? (0) | 2024.01.16 |
신경망 연산: 딥러닝 가중치 계산 방법 (0) | 2024.01.12 |
신경망 모델 표기법 및 출력층 설계 (1) | 2024.01.11 |
신경망 구조 설계: 딥러닝 아키텍처, Layer(층) 수 (0) | 2024.01.10 |