1. 활성화 함수
- activation function = Transfer function
- 노드에 입력으로 들어오는 값이 어떤 '임계치'를 넘어가면 "활성화(activated)"되고, 넘어가지 않으면 "비활성화(deactivated)"되게끔 코딩이 되어 있는 것
- 활성화 함수를 쓰는 이유 : 표현력 향상(representation capacity 또는 expressivity를 향상)
1) 퍼셉트론
- 퍼셉트론 = 하나의 노드
- 단층 퍼셉트론을 쌓으면 다층 퍼셉트론 ⇨ 딥러닝 모델은 다양한 구조의 퍼셉트론이 쌓인 것
2. 종류
1) 이진 계단 함수(Binary step function)
- 입력이 특정 임계점을 넘으면 1(True), 아니면 0(False) ⇨ 즉, 치역(range)가 0, 1
- 단층 퍼셉트론(single layer perceptrons) 초기의 신경망에서 자주 사용
- 선형적으로 구분 가능한(linearly separable) 문제를 구현
- 한계
- XOR gate는 단층 퍼셉트론으로 구현 불가 ⇨ 다층 퍼셉트론(multi-layer perceptron, MLP)으로 가능
- 역전파 알고리즘(backpropagation algorithm)을 사용하지 못함
- 다중 출력 불가
2) 선형 활성화 함수(Linear activation function)
-
이진 계단 함수의 한계점을 해결
- 다중 출력/다중 분류 가능
- 미분 가능 ⇨ 역전파 알고리즘 사용 가능
-
단점 :
- 모델의 표현력이 떨어짐
- 노드의 개수를 아무리 많이 붙여도 결국 하나의 노드를 사용하는 것과 차이가 없음
- 비선형적 특성을 지닌 데이터를 예측하지 못 함
선형(Linear) 변환 : 선형'이라는 규칙을 지키며 V 공간상의 벡터를 W 공간상의 벡터로 바꿔주는 역할
3) 비선형 활성화 함수(Non-linear activation function)
- 비선형(Non-Linear) : 선형이 아닌 함수
- 이전의 활성화 함수들의 문제점을 해결
- 역전파 알고리즘을 사용 가능
- 다중 출력 가능
- 비선형적 특성의 데이터 예측 가능
- 딥러닝에서 비선형 활성화 함수를 주로 쓰는 이유 ⇨ 딥러닝 모델의 표현력 향상을 위해
① 시그모이드(sigmoid 혹은 로지스틱 logistic) 활성화 함수
/sigma(x)=/frac11+e−x
- 이진 분류(Binary Classification) Task에서 확률 예측에 자주 사용
- 치역 : (0, 1) ⇨ 0 < $/sigma(x) < 1
- 시그모이드 함수의 미분 : /fracd/sigma(x)dx=/sigma(x)(1−/sigma(x)
수치 미분 : h의 값을 최대한 0에 가까운 값으로 잡아서 실제 미분값에 근사하게 만들어주는 것
- 단점
- 0 또는 1에서 포화(saturate)됨
- 포화가 발생하면 gradient가 0과 가까워짐을 의미함
- 0에 가까운 gradient와 역전파 값이 곱해지면서 모든 역전파 값들이 0에 근접
⇨ 가중치 업데이터가 일어나지 않음( = kill the gradient)
- 시그모이드 함수의 출력은 0이 중심(zero-centered)이 아님
⇨ 즉, 훈련의 시간이 오래걸리게 된다는 것
② Softmax
- 다중 분류(multy classification) Task에 사용
- ex) CIFAR-10 이미지 분류
- 10가지, 100가지 class 등 class의 수에 제한 없이 "각 class의 확률"을 구할 때 쓰임
- 특징 : 확률의 성질인 모든 경우의 수(=모든 class)의 확률을 더하면 1이 됨
③ tanh(Hyperbolic tangent)
tanh(x)/fracex−e−1ex+e−1
- 치역 : (-1, 1) ⇨ $ -1 < /sigma(x) < 1 $
- 미분 : /fracdtanh(x)dx=1=tanh2(x)
- 시그모이드 함수와는 다르게 0을 중심으로 함
- 단점 : -1 또는 1에서 포화(saturate)
④ ReLU(rectified linear unit)
f(x)=max(0,x)
- 최근 가장 많이 사용되고 있는 활성화 함수
- 치역 : `[0, /infinit)$
- x=0에서 미분이 되지 않는 이유 ⇨ 함수의 우미분과 좌미분이 다르기 때문
x=a에 대해 함수 f의 미분이 존재한다 ⇨ 함수의 우미분과 좌미분값이 같다는 것
- ReLU로 f(x)=x2 같은 함수 표현도 가능함
- 단점 :
- 출력값이 0이 중심이 아님
- Dying ReLU : 모델에서 ReLU를 사용한 노드가 비활성화되며 출력을 0으로만 되는 것
⇨ 즉, 노드가 죽어버림
- 학습률(learning rate)을 크게 잡을 때 자주 발생
- 학습률을 줄여준다면 이 문제는 적게 발생
⑤ ReLU의 단점을 극복한 함수
- Leaky ReLU함수 : ReLU 함수의 'Dying ReLU'를 해결
- 0을 출력하던 부분을 아주 작은 음수값을 출력
- PReLU(parametric ReLU) : 새로운 파라미터를 추가하여 0 미만일 때의 '기울기'가 훈련됨
- ELU(exponential linear unit) : 단점 두가지(0이 중심점이 아님, 'Dying ReLU'문제) 해결
- 단점 : exponential 연산이 들어가서 계산 비용이 높아