Activation Functions (활성화 함수)
활성화 함수는 수많은 특징(feature)들로 예측할 타겟을 정의하고 이 값들을 학습하고 분류하는 것을 만들기 위해 데이터를 연산하다 보면 이상치라 불리우는 튀는 데이터가 있을 수도 있고 특징들을 구분짓는 값들도 있으며 결과에 필요없는 데이터가 존재 하기도 한다. 이러한 데이터들을 연산 하기 위해서 전처리를 통해 미리 조절하기도 하지만 완벽히 처리 할 수 없기 때문에 활성화 함수를 통해서 데이터의 폭을 어느정도 정의하여 연산 값을 내보내기 위한 함수.
Sigmoid Function
0~1사이의 값을 가지며, 0을 기준으로 양수를 가지면, 0.5보다 커지고 음수를 가지면 0.5보다 작아진다.
threshold 0.5를 기준으로 binary classifier 함수로 자주 쓰인다
단점
- 기울기 소실 Gradient Vanishing
: Input 쪽으로 weight를 업데이트 해나갈 때, 활성화 함수희 미분값이 계속해서 곱해지게된다. 하지만 시그모이드 함수의 미분값은 최대값이 0.25 그리고 x 값이 0에서 멀어질수록 0에 매우 근접한다. 따라서 이 값을 계속 곱해줄수록 Weight의 변화량은 매우 작아지는 현상이 발생하기 때문에, Input 으로 가까워질수록 Weight들이 잘 업데이트 되지 않는다.) - 학습이 느리다
: 함수값의 중간이 0이 아니기 때문.
Tanh Function (Hyperbolic tangent)
기본적으로 Sigmoid(0~1)와 동일한 성질을 가지지만 값의 중심이 0이며 -1과 1사이의 값으로 계산한다.
sigmoid 함수의 단점중 하나인 학습 속도를 개선시킨 함수, 하지만 여전히 Gradient Vanishing는 존재한다.
Tanh 함수는 실제로 y 치수에서 sigmoid 함수를 2로 스케일링하고 모든 값에서 1을 빼면 생성된다. 개념으로는 sigmoid 함수가 0에서 멀어질 때 바로 그렇게 평평해지지 않고 중간에 조금 더 뾰족해진다(0에 가까울수록 가중치가 극단으로 조금 더 빠르게 이동)는 것이 기본적인 Tanh 기능.
단점:
Gradient Vanishing
ReLU Function
딥러닝의 역사를 시작하게 한 함수
ReLU함수는 x가 음의 값을 가지면 0을 출력하고, 양의 값을 가지면 x를 그대로 출력.
f(x) = max(0, x) 로 계산이 간단해서 학습의 속도가 매우 빠르다.
기울기가 1로 데이터를 0과 1사이로 꾸겨넣지 않기 때문에 (Sigmoid와 tanh에서 발생하는)Gradient Vanishing 문제를 해결.
단점: Dying ReLU 현상
음의 값을 가지면 전부 0을 출력하기 때문에, 몇몇 Weight들이 업데이트 되지 않는 문제가 발생.
Leaky ReLU & Parametric ReLU
기존의 ReLU 함수에서 음수 값을 가질 때 0이 아닌 0.01(Leaky ReLU)이나 a(Parametric ReLU)의 기울기를 가지도록 하는 함수
일부 규격에서는 누출되는 좌측의 기울기를 모델의 하이퍼 파라미터로 실험 할 수 있다.
leakyReLU는 ReLU의 Dying ReLU(뉴런이 0을 출력하여 더이상 학습이 안되는 문제)와 같은 문제를 해결하기 위해 고안된 대안책으로 ReLU보다 무조건 성능이 좋다는 것은 아니며, 모든 function들은 장단점들이 있으며 프로젝트 상황에 따라 적절한 함수를 써보는것이 좋다.
Softmax Function
Sigmoid 함수와 유사하지만 다중 클래스 분류 문제에 더 유용.
그래프가 존재 하지 않으며, Softmax 함수는 모든 입력 집합을 취하여 최대 1까지 합한 확률로 변환할 수 있다.
이것은 우리가 마지막 결과가 분류를 해야되는것을 의미하며, 그것은 확률로 변환할 것이고, 이것은 다중 클래스 분류 문제에 매우 유용하다.
Maxout Function
f(x)=max(wT1x+b1,wT2x+b2)
ReLU의 장점을 전부 가지고 있으면서, Dying ReLU 현상을 완전히 회복한 함수.
단점
계산량이 복잡하다.
ref.
https://analysisbugs.tistory.com/55