출력층의 활성화 함수
- 신경망은 분류와 회귀 모두에 이용할 수 있다.
- 일반적으로 회귀 문제에는 항등 함수를, 분류 문제에는 소프트맥스 함수를 사용한다.
항등 함수 (Identity Function)
- 입력을 그대로 출력한다.
- 회귀 문제에 사용된다.
- 회귀 문제의 특성상 데이터 간의 연속적인 관계가 있어야하기 때문에 다른 활성화 함수가 필요 없다.
소프트맥스 함수 (Softmax Function)
- 0과 1사이의 실수를 출력한다. 이때 출력값들의 합은 1이다.
- 분류 문제에서 사용된다. (2종류로 분류하는 문제에는 시그모이드 함수가 사용된다.)
- 활성화되기 전의 출력값들을 전체와의 비율(확률)로 나타내주는 활성화 함수
- 소프트맥스 함수를 적용해도 각 원소의 대소 관계는 변하지 않는다.
- 위의 식 1 대로 사용하면 지수 함수 때문에 오버플로가 생길 수 있다.
- 오버플로를 막기위해 수정된 식이 아래의 식 2 이다.
- 현업에서는 지수 함수 계산에 드는 자원 낭비를 줄이고자 출력층의 소프트맥스 함수를 생략하기도 한다.
(학습할땐 사용 / 추론할땐 미사용)
출력층 함수 구현하기
항등 함수 | def identity(arg): return arg |
|
소프트맥스 함수 | def softmax(arg): exp_a = np.exp(arg) sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y |
|
수정된 소프트맥스 함수 |
def softmax(arg): c = np.max(arg) exp_a = np.exp(arg - c) # 오버플로 대책 sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y |
반응형
'인공지능 > 딥러닝' 카테고리의 다른 글
데이터 학습 과정 정리 (2) | 2020.04.27 |
---|---|
손실 함수(Loss Function)와 최적화(Optimizer) (0) | 2020.04.27 |
활성화 함수 (0) | 2020.04.20 |
인공지능 / 머신러닝과 딥러닝의 차이점 (0) | 2020.04.19 |
신경망 (0) | 2020.04.13 |