본문 바로가기
IT 기록/머신러닝

[머신러닝]06-2.Softmax Classifier의 cost 함수

by Lazy Quant 2018. 8. 7.
반응형

※본 포스팅은 직접 강의하는 내용이 아닌, 김성훈 교수님의 머신러닝 강의를 정리하기 위한 포스팅입니다.

김성훈 교수님의 강의는 모두를 위한 머신러닝/딥러닝(http://hunkim.github.io/ml)에서 들을 수 있습니다.


Sigmoid 함수 적용

 우리는 지난 시간 여러 값으로 분류하는 예측모델(ex.공부 시간출석에 따른 학점 예측)을 식으로 나타내는 것까지 공부했다. 그림(그래프)으로 표현 했던 것을 세 개의 독립적인 Binary Classification 수식으로 나타내면 아래와 같았다. 그리고 연산을 통해 2.0, 1.0, 0.1이라는예측 값을 얻을 수 있다.



예측 값 중 2.0이 가장 큰 값이기 때문에, 결과 값은 A라고 예측 할 수 있다하지만 우리가 원하는 것은 Sigmoid 함수를 사용하여 0~1 사이의 값으로 얻는 것이다.



Softmax 함수를 사용 하여 우리는 예측 값을 다음과 같이 변환할 수 있다.

  1. 01사이의 값

  2. 모든값을 더했을 때 1이 되는 값


모든 값을 했을  1이 되기 때문에 각각을 확률(Probabilities)이라고 볼 수 있다그림과 같이 Softmax를 구현하는 공식이 따로 있지만텐서플로우에서 함수를 호출해 구현할 수 있기 때문에 여기서는 자세한 부분을 생략하도록 한다.



Y hat(예측 )을 구한  'one-hot encoding'을 통해 가장 큰 값을 1, 나머지 값을 0으로 바꾸어 준다. 이를 통해 어떤 값을 선택해야 하는지 명확하게 구분한다. one-hot encoding에서 수행는 로직이 간단하기 때문에 직접 코드로 구현해도 되지만, 텐서플로우에서 argmax 라는 함수를 제공한다.



여기까지 가설(Hypothesis)은 완성되었고, 다음 단계는 예측 값과 실제 값을 비교하는 Cost function을 설계하는것이다.



Cross-Entropy

Cross-Entropy의 용어에 대한 설명 : http://blog.naver.com/PostView.nhn?blogId=gyrbsdl18&logNo=221013188633


S : 예측 값

L : 실제 값


수식으로 나타내면 아래와 같다.


Cost function이 제대로 작동하는지 확인 해보자. 실제 값이 B인 경우를가정할, 두 가지로 예측할 수 있다.

1.실제 값이 B인데, B를 예측(맞는 예측)

2.실제 값이 B인데, A를 예측(틀린 예측)

 

Cost function이 궁극적으로 하고 싶은 것이 무엇일까? 맞았을 때 Cost function이 작은 값, 틀렸을 때 Cost function이 큰 값을 가져서 시스템에  or 벌을 주는 형식이라고 생각하면 된다. 아래와 같이 요소별 연산(element-wise) 연산(벡터의element들끼리 곱한다는 말)을 진행해 예시를 검증한다.


예측이 맞았을 때,



예측이 틀렸을 때,


맞았을 때 Cost function(Loss)이 작고, 틀렸을 때 Cost function이 크다. 우리가 원하는 형태로 결과가 나타났다. Cost function이 제대로 작동하고 있다고 있다.


Logistic cost VS Cross entropy

위 두 식이 실제로는 같은 것을 의미한다. 왜 같은지는 한 번 생각해보시길 바란다.



여러개일 경우에는 전체의 거리(Distance)를 더하고 그 수로 나누어 평균의 Distance를 알아내면 된다. 그것이 전체의 Loss, Cost function이다.


Gradient descent

Loss가 밥그릇 모양으로 생겼다고 가정(실제로도 그렇다)하고 미분을 해서 최소값을 찾아낸다(경사하강법). 식 자체가 많이 복잡해졌기 때문에 실제로 미분하는 과정은 다루지 않는다. 하지만 직관적으로 미분을 해서 최소값을 찾는다는 것만 알면 된다. 실제 계산은 어차피 컴퓨터가 할 것이다.

반응형

댓글