# 활성화 함수 vs 출력층 함수
1) 활성화 함수 :
- 출력층에서도 사용할수 있긴 하지만, 주된 목적은 아니다.
- 보통, 여러 겹의 layer들 사이에서 사용되는 것.
ex) 시그모이드, ReLU, Tanh 등
2) 출력층 함수 :
- 출력층에 있는 함수
(각 layer들 사이에 있는건 출력층 함수라고 안 부른다. 그건 활성화함수)
- 적절하게 출력하도록 유도해서, Y 데이터셋과 잘 비교할 수 있도록 해준다
- 활성화 함수들 중에서도 출력층 함수로 쓰이는 경우가 간혹 있다 (ex. 시그모이드)
ex) 시그모이드, 소프트맥스, 항등함수 등
# 목적에 따른 출력층 함수 :
1) "값"을 출력해야 하는 함수 : 항등함수 (=출력층 함수 필요 없음)
ex) 유동 인구 수 예측 - 항등함수를 사용해야 한다 (즉, 출력층 함수가 따로 필요가 없음)
2) 2가지 분류 (binary classification) : 시그모이드 함수
> 출력 값이 0~1 사이의 확률 값이 되도록 함
> 특정 hinge 를 넘으면 Yes, 못 넘으면 No 로 분류
2) N가지 분류 (muti classification)
> 출력 값이 0~1 사이의 확률 값이 되도록 하되, N 개의 값들을 모두 합하면 1 이 되도록 한다
> N 개의 값들 중에서, 가장 확률값이 큰 것으로 분류해준다
# 활성화 함수 도입 의의
- 핵심 의의 : "비선형성" 을 추가하기 위함
- 활성화 함수가 없다면 : 여러 개의 layer들을 쌓아도, 결국 "하나의" 선형 결합 함수와 다를 게 없다
WHY? 선형성 때문. 선형 함수의 독특한 성질이다.
> h(x) = h(h(h(x'))) 가 되어버림
- 우리의 목표 : 여러 겹의 layer 를 추가할수록, 그에 비례하게 성능을 높이고 싶다!
> "비선형성"을 추가해줘야 한다!
>> 그러기 위해서, "매 layer" 마다 활성화 함수를 추가해주자!!
# 활성화 함수 종류
1) 시그모이드 :
- 다른 이름 : 로지스틱 함수 (Logistic Function)
- 장점 : 딱히 없다 (지금은 거의 안 씀)
- 단점 :
1) Gradient Vanishing :
- 출력 층으로부터 멀리 있는 Layer일수록, Back Propagation 을 할때 0 에 가까운 변화율을 받는다
WHY? 연쇄 곱을 이용해서 Back Propagation 을 하는데,
시그모이드 함수의 경우 너무 좁은 범위에서만 유의미한 y 값을 지니지,
그 이외의 부분에서는 대부분 0에 거의 근접한 값들을 지니기 때문에
곱을 하면 할수록 0에 수렴하는 값이 Back Propagation 으로 오게 된다.
2) 함숫값(y값) 이 항상 양수 :
- Back Propagation 을 할때, 다양한 방향으로 학습이 불가능
> "모든" weight 값들이 "똑같은" 방향으로 학습이 되어야 함
3) exp 연산이 무거움
2) Tanh 함수 :
- 장점 : 함숫값이 [-1~1] 이라서, 시그모이드의 단점 일부 해결 가능
> weight 학습 방향이 아주 다양해짐
- 단점 : Gradient Vanishing, exp 연산
3) ReLU 함수 :
- 장점 :
1) 미분이 편함 (=계산 빠름)
2) Gradient Vanishing "일부" 완화 : x 값이 양수이기만 하면, 함숫값은 항상 양수
- 단점 :
0) 여전히 해결하지 못한 Gradient Vanishing :
x 값이 음수이면, 빠꾸 없이 아예 0 이 되어버림 -> 노드 자체가 죽어버린다
4) Leaky ReLU 함수 : ReLU 의 유일한 단점을 해결하기 위한 보완책
'기계학습 > 자연어 처리 머신러닝' 카테고리의 다른 글
Generative 모델 & Discriminative 모델 (0) | 2020.04.25 |
---|---|
합성곱 신경망 - 딥러닝을 이용한 자연어처리 입문 (0) | 2020.02.21 |
유동 인구 예측 - 실전 프로젝트 (0) | 2020.02.20 |
글자 단위 RNN - N:1 모델 LSTM (0) | 2020.02.18 |
글자단위 예측 모델 - N:N 모델 LSTM (0) | 2020.02.18 |