AI & BigData/모두를 위한 딥러닝(정리)

머신러닝(ML) #8_ Softmax classifier 의 cost 함수

Tigercow.Door 2018. 3. 21. 14:50
728x90


안녕하세요. 

이번 포스팅에서는 지난 포스팅에 이어 Softmax classifier의 cost 함수에 대해서 알아보도록 하겠습니다.


* 해당 포스트의 모든 내용은 김성훈 교수님의 '모두를 위한 딥러닝'을 바탕으로 제작되었습니다.

관련한 상세 내용은 아래 링크를 참고해주세요.

https://hunkim.github.io/ml/



1. Softmax classifier



우리가 지난 포스팅에서 학습한바와 같이, 위의 사진에서 오른쪽에 x 표가 되어있는 것보다는 제일좌측에 있는 하나의 행렬을 곱함으로써 하나의 벡터로써 결과가 나오게 됩니다.



즉 위와 같이 간단하게 생각해볼 수 있고, 빨간색 글씨 처럼 위에서 부터 a, b, c가 될 확률로 볼 수 있습니다.

그런데 빨간색으로 나와있는 숫자보다, 우측 알파벳 옆에 쓰인 검정색 글씨 처럼 각각이 0과 1사이의 값을 갖고 세개의 합이 1이되게 한다면, 우리는 각각의 값을 확률처럼 이용할 수 있게 됩니다.

확률처럼 이용할 수 있다는 것은 추후 우리가 분류를 할때 더 편하게 사용할 수 있기 때문에 우리는 각각의 값이 0~1사이의 값을 가지고 그들의 합이 1이 되도록 하려고 합니다.

그리고 그러한 것을 해주는 것이 바로 Softmax 입니다.



위와 같은 구조를 같는 Softmax 함수를 통해 각각의 값을 확률로써 볼 수 있습니다.



그리고 위의 사진처럼, 각각의 확률 값을 보면서 제일 큰 값을 1로 만들고 나머지를 0으로 만드는 One-Hot Encoding을 이용합니다. 이는 텐서플로우에서 max 등의 함수를 이용하면 쉽게 구현할 수 있습니다.


이렇게 해서 Hypothesis를 완성했으면 이제 Cost 함수를 만들어야 합니다.

그리고 그 후에 cost 값을 최소화 하면 됩니다.

먼저, Cost 함수를 살펴보겠습니다.



그림에서와 같이, 좌측에 있는 값이 Y hat으로써 우리가 Hypothesis를 통해 얻은 값이며 오른쪽의 값이 실제 Y의 값입니다.

그럼 왜 위와 같은 Cost함수가 나오는지 살펴보겠습니다.



위와 같이, 실제 값 L 이 [ 0 1 ]로 존재할때, 우리가 Y hat 값으로 [ 0 1 ]과 [ 1 0 ]일 때 위에서 세운 Cost 함수로 cost를 계산해보면 올바르게 예측한 [ 0 1 ] 에서는 cost 값이 0이 나오고 틀리게 예측한 [ 1 0 ] 에서는 cost 값이 무한대가 되게 됩니다.

따라서 우리가 세운 Cost 함수가 올바른 것을 알 수 있습니다.



그런데 이러한 Cost 함수는 우리가 지난 포스팅에서 알아보았던 Logistic cost 함수와 동일합니다.

식을 보았을 때는 매우 다르게 보이는데 어떻게 같은건지, 다음 포스팅에서 확인해보도록 하겠습니다.



그럼 마지막으로 cost를 최소화 하기위한 작업을 해야합니다.



지난 포스팅들에서 했던 것처럼 Gradient descent 를 이용하면 됩니다.

직접적으로 우리가 미분을 다루지는 않지만 미분을 통해 기울기를 구해서 그것을 통해 그래프상에서 내려가며 cost를 최소화 한다고 생각하시면 됩니다.