인공지능/딥러닝

신경망의 출력층

해피밀세트 2020. 4. 21. 00:13

 

 

출력층의 활성화 함수

  • 신경망은 분류와 회귀 모두에 이용할 수 있다.
  • 일반적으로 회귀 문제에는 항등 함수를, 분류 문제에는 소프트맥스 함수를 사용한다.

 

항등 함수 (Identity Function)

 

  • 입력을 그대로 출력한다.
  • 회귀 문제에 사용된다.
  • 회귀 문제의 특성상 데이터 간의 연속적인 관계가 있어야하기 때문에 다른 활성화 함수가 필요 없다.

 

 

소프트맥스 함수 (Softmax Function)

식 1 소프트맥스 함수

 

  • 0과 1사이의 실수를 출력한다. 이때 출력값들의 합은 1이다.
  • 분류 문제에서 사용된다. (2종류로 분류하는 문제에는 시그모이드 함수가 사용된다.)
  • 활성화되기 전의 출력값들을 전체와의 비율(확률)로 나타내주는 활성화 함수
  • 소프트맥스 함수를 적용해도 각 원소의 대소 관계는 변하지 않는다.
  • 위의 식 1 대로 사용하면 지수 함수 때문에 오버플로가 생길 수 있다.
  • 오버플로를 막기위해 수정된 식이 아래의 식 2 이다.
  • 현업에서는 지수 함수 계산에 드는 자원 낭비를 줄이고자 출력층의 소프트맥스 함수를 생략하기도 한다.
    (학습할땐 사용 / 추론할땐 미사용)

 

식 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