<활성화 함수의 종류들>
- Sigmoid (시그모이드 함수)
- Tanh (Hyperbolic Tangent)
- ReLU (Rectified Linear Unit)
- Leaky ReLU
- PReLU (Parametric ReLU)
- ELU (Exponential Linear Unit)
- Maxout
▶ Sigmoid (시그모이드 함수)
● 모든 수에 대해서 함수 값은 (0, 1) 사이의 모든 실수 값으로 출력 => 정교한 수 전달 가능
● 매우 큰 양의 값일 경우 1에 가까운 값을, 매우 작은 음수 값일 경우 0에 가까운 값을 갖습니다.
● 단점 :
- 기울기 소멸(Gradient Vanishing) 문제가 발생합니다. 입력 값이 무한대로 커져도 미분값이 거의 0에 수렴하게 됩니다. 그렇게 되면 1보다 작은 값들이 계속이 곱해지기 때문에 앞쪽의 레이어들은 0에 아주 가까운 값만 받게 되고, 결국에는 기울이가 0이 되어버려 학습이 이루어지지 않게됩니다.
- 또한 함수의 중심값이 0이 아닙니다. 그렇기 때문에 입력으로 들어오는 데이터가 항상 양수인 경우 기울기는 모두 양수이거나 모두 음수가 됩니다. 이는 기울기 업데이트 중 지그재그로 변동하는 문제점이 발생하며 학습 효율성을 감소시키게 됩니다. (최적화가 느려지게 됩니다.)
=> 이러한 단점들 때문에 초기에는 자주 사용하였지만 최근에는 자주 사용하지 않게 되었습니다.
▶ Tanh(Hyperbolic Tangent)
● 시그모이드 함수의 단점을 보완하고자 등장한 함수입니다.
● 모든 수에 대해서 함수 값은 (-1, 1) 사이의 모든 실수 값으로 출력합니다.
● 함수의 중심값을 0으로 옮겨 시그모이가 갖는 단점을 해결하였습니다.
● 단점 :
- 미분 함수에 대해 일정 값 이상으로 커지면 기울기 값이 소멸되는 기울기 소멸 문제가 여전히 남아있게 됩니다.
▶ ReLU (Rectified Linear Unit)
● 최근 가장 많이 사용되는 활성화 함수입니다.
● 0 이상이면 입력을 그대로 출력하고 0미만이면 0을 출력합니다.
● 0이하의 정보는 무시합니다. 이는 장점이 되기도 하고 단점이 되기도 합니다.
- 장점 : 시그모이드, tanh 함수와 비교했을 때 학습이 훨씬 빨라집니다. 또한 계산 비용도 크지 않고 구현이 매우 간단합니다.
- 단점 : 입력으로 0보다 작은 값들이 들어오면 기울기는 무조건 0이기 때문에 뉴런이 죽을 수 있는 단점이 존재합니다. 즉, 이 입력 값들도 나름의 의미가 있을 수 있는데 적절한 대응을 하지 못하는 것입니다.
▶ Leaky ReLU
● ReLU의 단점을 보완한 함수입니다.
● 0 이상이면 입력을 그대로 출력하고 0미만이면 0.01x를 출력합니다. ReLU와 다르게 음수일 때도 값을 살려서 적절하게 대응할 수 있게 해줍니다.
▶ PReLU (Parametric ReLU)
● Leaky ReLU와 유사하지만 새로운 파라미터 α를 추가하여 x가 0보다 작을 때 기울기를 학습할 수 있게 한 것이 특징입니다.
▶ ELU (Exponential Linear Unit)
● 가장 최근에 나온 함수입니다.
● ReLU의 모든 장점을 포함하고, 문제점까지 해결하였습니다.
● 단점
- exp를 포함하기 때문에 계산 비용이 발생합니다.
▶ Maxout 함수
● ReLU의 모든 장점을 가지며, 문제점까지 해결하였습니다.
● 입력으로 들어온 값들 중 큰 값을 사용합니다.
● 성능은 제일 좋다고 알려져 있으나, 계산 비용이 든다는 단점이 있습니다.
▶ 활성화함수 한눈에 보기!
이렇게 많은 함수 중 어떤 함수를 사용하는게 가장 좋을까요? 정답은 없지만 결론을 내려보자면 아래와 같습니다.
- 가장 많이 사용되는 함수는 ReLu : 간단하고, 사용이 쉽기 때문!
- ReLU로 성능이 괜찮았다면 Leaky ReLU나 ReLU계열의 다른 함수들도 사용해봅니다.
- Sigmoid는 본문에 설명한 이유등으로 사용하지 않는것이 좋습니다.
- 여러 연구 결과 Tanh 함수도 큰 성능은 나오지 않는다고 합니다.
'AI Research > Deep Learning' 카테고리의 다른 글
[딥러닝 기본지식] 경사 하강법(Gradient Descent)의 이해 - 정의 (0) | 2023.03.03 |
---|---|
[딥러닝 기본지식] 손실 함수(Loss Function)의 이해 - 손실 함수의 정의와 다양한 종류들 (0) | 2023.03.03 |
[딥러닝 기본지식] 활성화 함수(Activation Function)의 이해 - 활성화 함수란? (0) | 2023.03.03 |
[Pytorch-기초강의] 경쟁하며 학습하는 GAN (0) | 2023.03.03 |
[Pytorch-기초강의] 딥러닝을 해킹하는 적대적 공격 (0) | 2023.03.03 |