관리 메뉴

Data Analysis for Investment & Control

Softmax 함수 본문

MachineLearning

Softmax 함수

Jeongseob.Kim 2018.09.15 09:49


Softmax 함수 


요약: 0이 아닌 자연수 N개의 값으로부터 n∈{1,2,3,…,N}일 경우 n 번째 값의 중요도를 exp(x_n)을 통해 지수적으로 증가시켜 각 값 사이의 편차를 늘린 다음 normalization하는 함수.

 

N개의 값이 존재할 때, 각각의 값의 편차를 확대시켜 큰 값은 상대적으로 더 크게, 작은 값은 상대적으로 더 작게 만든 다음 Normalization 시키는 함수이다. 수식은 다음과 같다.

 

 

 

 

이 함수가 의미하는 바는 N개의 원소로 이루어지는 값의 집합에서 특정 인덱스 n의 원소의 값의 중요도를 구하는 것이다. 즉, N개의 원소의 합이 1(=100%)일 때, n번째 원소의 값이 몇 %의 비중을 갖는지를 알려고 할 때 사용된다. 이는 확률적으로 가장 높은 비중을 가지는 원소를 결정할 때 자주 사용된다.

 

예를 들어, Machine Learning에서 다음 State 혹은 값을 예측하고자 할 때, N개의 후보군에서 가장 유력한 State 혹은 값을 선택할 수 있게 도와준다.



Machine Learning에서 분류기로써의 역할


Machine Learning에서 Classification 문제를 생각할 때, 어떤 입력 데이터에 대한 특정 클래스로 볼 수 있는 확률을 구하는 조건부 확률에 대한 값 계산에 있어서 분류기(Classifier)로 사용된다. 


위에서 정의한 softmax 함수를 다시 써보자.



N개의 클래스 중에 어느 하나로 분류하고자 할 때, j번째 클래스로 분류하기 위한 스코어는 위와 같이 쓸 수 있다.


분류기로써 사용하게되는 배경에는 Bayes Theorem에서 X를 입력 데이터 Y를 클래스라고 할 때 X가 주어졌을 때 Y라고 볼 조건부 확률인 P(Y|X)의 값을 구하려는데 있다.


이에 대한 내용은 다음의 외부 글에 자세히 설명히 되어있다. 


>> Bayes Theorem과 Sigmoid와 Softmax사이의 관계


결국 확률적 접근을 통해 데이터 X가 클래스 Y가 될 확률을 Gaussian으로 놓고 보는 것이 이점이 많기 때문에 Softmax 함수의 형태와 같이 Exponential 기반의 식으로 변환하여 계산하는 것이다. 이 과정에서 로그의 성질(단조 증가 함수로서 극점을 변화시키지 않는)을 이용하는 것이고.. 



Softmax와 Cross-Entropy


앞서 분류기로서의 softmax는 분류하려는 클래스가 N개일 때 이상적으로 주어진 입력 데이터를 N개 중 어느 하나는 1이 나오고 나머지는 0이 되는 형태의 출력이어야 한다(예를 들면, p = [0, 0, ... , 1, 0, ...0]으로 j번째 위치의 스코어는 1이고 나머지는 0인 분포). 그래야지만 정확하게 분류가 되는 것이다(현실적으로 그렇게 나오지는 않겠지만). 이 때의 클래스 Y의 분포를 'true' 분포라고 하며 p로 정의하고, Deep Neural Network에서 학습 중인 클래스 스코어의 분포를 q로 정의할 때 이 둘 사이의 cross entropy는 아래와 같다.


Cross entropy에 대한 설명은 여기를 참조.




cross entropy의 목적은 '학습을 통해' 예측하는 분포 q가 '정답'인 분포 p와 같아지도록 하는데 있다.



 

 

 (내용이 마음에 드셨다면 아래의 '공감' 버튼을 눌러주세요^^)

      
0 Comments
댓글쓰기 폼