#2 - 활성함수
활성함수(Activation Function)
- 활성함수는 각 노드에서 연산된 값을 압축하여 다음 레이어로 얼마나 보낼지 결정하게 해준다.
- 각 Layer에 연산 결과를 다음 Layer로 출력하기 위해서 비선형적 형태의 함수를 사용하여 다음 레이어로 전달한다.
- 활성함수를 사용하지 않은 상태에서는 선형적인 예측만 가능하게 되지만 활성함수를 사용하게 되면 비 선형적인 예측도 가능하게 해준다.
- 다음 레이어로 신호를 얼마나 전달할지 결정하는 특징 때문에 종종 전달함수(transfer function)라고도 불린다.
- 마지막 노드(Output Layer)에서는 활성함수를 사용하지 않아도 된다.
- 위 사진처럼 활성함수가 없으면 Hidden Layer는 아무의미 없어지며, Hidden Layer가 없다면 딥러닝이라고 하기 어렵다.
- 활성함수를 사용하면 더 많은 Hidden Layer를 쌓을 수 있고, 더 복잡한 예측이 가능하게 된다.
주요 활성함수
- Step Function
- 0을 기준으로 0보다 작으면 데이터를 보내지 않고, 0보다 크거나 같으면 데이터를 보낸다.
- 실제로 사용할 일은 잘 없다.
-
Sigmoid Function
- 입력이 0일때 0.5가 출력되고 값이 작아질수록 0, 값이 커질수록 1에 가까워진다.
- 0부터 1사이의 값이 출력되어야 한다면 사용을 고려하자.
- 최근에는 기울기 소멸 문제(Vanishing Gradient problem) 문제 때문에 사용이 꺼려지는 추세라고 한다.
- 미분된 Sigmoid Function을 살펴보면 입력이 크면 클수록 0에 가까워 지는 것을 알 수 있다.
- x가 커지면 다음 Layer로 출력이 전달 되어야 하는데, 기울기가 0인 상태가 반복되면 가중치가 변하기 어렵다.
- 기울기 소멸 문제 - 위키백과
-
Hyperbolic Tangent
- 입력이 0일때 0이 출력되고, 값이 작아질수록 1, 값이 작아질수록 -1에 가까워진다.
- Sigmoid Function과 유사하지만, 값이 더 급격하게 변화함
- Sigmoid Fucntion과 동일하게 기울기 소멸 문제가 있음
-
Rectified Linear Unit(ReLU)
- 입력이 0보다 작으면 출력이 0, 입력이 0보다 크면 기울기가 1인 에 따라 출력이 나온다.
- 학습시간이 상대적으로 빠르고, 연산 비용이나 구현이 유리하다.
- 0보다 작은 입력에 대하여 기울기가 0인 출력이 나오기 때문에 해당 노드가 사용되지 않을 가능성이 있다.
- 입력이 커져도 미분값이 0으로 수렴하지 않기 때문에 가장 자주 쓰인다.
-
Leaky Rectifide Linear Unit (Leaky ReLU)
- 일반적인 ReLU에서 0보다 작은 입력값에 대한 기울기 문제를 해결한 활성함수이다.
- 보통 ReLU를 먼저 사용해보고, 문제가 있다면 차선책으로 Leaky ReLU를 사용한다.
- 이 외에도 다양한 활성함수가 있다.
- SoftMax : 입력이 여러개일 때의 Sigamoid Function을 일반화한 함수
- ELU, SeLU : ReLU함수에서 0보다 작은 입력 부분을 부드럽게 만들었다.
- PReLU : ReLU함수에서 0보다 작은 입력에서 발생하는 편향을 제거하기 위해 고안된
- Softplus : ReLU함수를 부드럽게 만들었다. 미분하면 Sigmoid Function이 된다.
- Softsign : Hyperbolid Tangent 함수를 개선한 형태이다.
- Swish : 구글이 고안한 ReLU를 대체할 활성함수이다. 깊은 레이어를 학습할때 더 높은 효과를 보인다.
- 종류별로정리된글
- 다음글에서는 적절한 가중치를 찾아내는 방법에 대하여 알아보겠습니다.
😺 오타나 논리적 오류 지적은 언제든지 환영합니다!😺
항상 읽어주셔서 감사합니다~ 🙏
Leave a comment