softmax 함수를 직관적으로 이해하고 싶습니다.

소개



최근 딥 러닝이 고조되고 있네요. 그 중에서도 딥 러닝을 비롯한 기계 학습에 나오는 책을 읽고 있으면 잘 나오는 softmax 함수
y_i = \frac{e^{x_i}}{\sum_{j=1}^N e^{x_j}}

있습니다. 최근 책을 읽고 있으면 이 녀석이 등장해, 이제 제대로 이해하려고 생각했으므로 그 고찰을 공유합니다.

주제



결론에서 말하면, softmax 함수를 3D 그래프에 플롯하면 이렇게 됩니다.
(실제, 이 결과가 보고 싶어서 구그였지만 좀처럼 히트하지 않고)



이것은 $x_1, x_2$의 값이 모두 $[-5, 5]$인 상황에서 $i=2$에 대한 softmax 함수
y_2 = \frac{e^{x_2}}{e^{x_1} + e^{x_2}}

의 거동을 플롯한 것이 됩니다. 이 그래프를 관찰하면 알 수 있는 두 가지가 있습니다. 앞으로 개별적으로 살펴보겠습니다.

값 영역(함수의 가능한 값)이 0과 1 사이입니다.





이것은 종종 softmax 함수의 장점으로 언급됩니다. 물론 수학적으로 표시하는 것도 가능합니다. 이 점에서는 sigmoid 함수와 친척 관계인 것을 말할 수 있습니다.
(실제로, sigmoid 함수의 다중 클래스 확장이라는 표현이 있습니다.)
이 특징 덕분에 진위의 판단을 확률적인 모호성을 남긴 상태로 취급하고 싶을 때 매우 유효합니다.

max와 같은 거동을 하고 있다





이것도 중요한 성질입니다만, $x_1$에 비해 상대적으로 $x_2$의 값이 클 때에 큰 값을 취하게 되어 있습니다.
$x_1=-5$일 때, 즉 다른 값이 $x_2$에 비해 작을 때, $y_2$는 큰 값을 취하기 쉬워집니다. 반대로, $x_1=+5$일 때, 즉 다른 값이 $x_2$에 비해 큰 경우, $y_2$는 큰 값을 취하기 어렵게 됩니다.
즉, "자신 $x_j$가 다른 요소 $x_{k(\ne j)}$보다 눈에 띄는 확률"과 같은 감각으로 파악할 수 있습니다.

이 현상을 비교하기 쉽도록 각 $x_1$의 값별로 플롯해 봅니다.



덧붙여서 사족이지만, $x_1 = 0$일 때는
y_2 = \frac{e^{x_2}}{1 + e^{x_2}}

보다
y_2 = \frac{1}{1 + e^{-x_2}}

그리고 sigmoid 함수를 얻을 수 있습니다.

이 이해를 직관적으로 다차원으로 확장한다면 "softmax 함수는 많은 차원으로 구성된 입력 중 자신의 값이 다른 값들에 비해 첫 번째로 서 있다면 그 값이 $1 $에 접근하는 함수이다.

끝에



어땠어?
요점은이 함수가 다른 입력 값에 상대적으로 반응한다는 것입니까?
이 기사가 조금이라도 softmax 함수의 직관적 인 이해로 이어지기를 바랍니다.

※여유가 있으면 다차원의 경우에서의 가시화에 대해서도 해 봅니다.

ipython notebook - my Gist

좋은 웹페이지 즐겨찾기