Story of CowHacker

딥러닝 2.5 신경망 본문

공부/딥러닝

딥러닝 2.5 신경망

Cow_Hacker 2020. 8. 4. 22:17
728x90

머신러닝은 분류와 회귀로 나뉜다.

 

분류 : 데이터가 어느 클래스에 속하는지를 뜻한다. ex) 사진 속 사람의 성별을 분류하는 작업이 있다.

 

회귀 : 입력 데이터에서 수치를 예측하는 것을 뜻한다. ex) 사진 속 사람의 몸무게가 대략 몇 kg 할 것이다와 같이 예측에 해당한다.

 

여기에서 어느 문제를 쓸 것인지에 따라 신경망의 출력층에서 사용하는 활성화 함수가 달라진다.

분류를 사용 시 소프트맥스 함수, 회귀를 사용 시 항등 함수를 사용한다.

 

 

 

 

 

소프트맥스 함수 식

그림1

그림1은 소프트맥스 함수를 식으로 나타낸 것이다.

exp ( x )는 e^x을 뜻하는 지수 함수다 ( e는 자연상수 ). n은 출력층의 뉴런 수다.

yk는 그중 k번째 출력임을 뜻한다.

소프트맥스 함수의 분자는 입력 신호 ak의 지수 함수, 분모는 모든 입력 신호의 지수 함수의 합으로 구성돼있다.

 

 

 

 

 

소프트맥스 함수 그림

 

그림2

그림2 는 소프트맥스 함수를 그림으로 표현한 것이다.

 

 

 

 

이제 파이썬으로 소프트맥스 함수를 구현해볼 것이다.

 

 

 

 

import numpy as num

 

a = num.array ( [ 1, 2, 3 ] )

 

exp_a = num.exp ( a ) # 지수 함수다. ( 분자 )

print ( exp_a )

 

sum_exp_a = num.sum ( exp_a ) # 지수 함수의 합이다. ( 분모 )

print ( sum_exp_a )

 

y = exp_a / sum_exp_a

print ( y )

 

위 식을 나중에 쉽게 쓰기 위해 함수로 만들어 볼 것이다.

 

 

 

 

 

def softmax ( a ):

    exp_a = num.exp ( a )

    sum_exp_a = num.sum ( exp_a )

    y = exp_a / sum_exp_a

 

    return y

 

 

 

 

 

항등 함수 그림

그림3

항등 함수는 입력을 그대로 출력한다. 입출력이 항상 같다는 뜻의 항등이다.

 

 

이 까지 머신러닝에서의 분류와 회귀에 대해

소프트맥스 함수와 항등 함수를 알아보았다.

항등 함수는 소프트맥스 함수와는 달리 간단해서 따로 식을 찾아볼 수 없었다.

 

그리고 지금 까지 한 소프트맥스 함수는 오버플로우에 취약점을 가지고 있다.

다음에는 오버플로우 취약점을 보완한 소프트맥스 함수를 알아볼 것이다.

728x90

'공부 > 딥러닝' 카테고리의 다른 글

딥러닝 2.7 신경망  (0) 2020.08.06
딥러닝 2.6 신경망  (0) 2020.08.05
딥러닝 2.4 신경망  (0) 2020.08.03
딥러닝 2.3 신경망  (0) 2020.08.03
딥러닝 2.2 신경망  (0) 2020.07.26
Comments