[Tensorflow] 7. Softmax Regression

Multinomial Classification
앞서 배웠던 Logistic Regrssion이란
위 그림처럼 기준이 되는 데이터 x1, x2가 있고 이에 따라 데이터를 분류할 수 있는 선을 찾아내는 것이다. 이 개념을 그대로 가져와 더 많은 가짓수의 데이터로 분류하는 것이 Multinomical Classification 이다. 쉬운 예를 들어 study hour (x1), attendance (x2) 두가지 변수를 고려해 학생들에게 성적 A / B / C 중 하나를 부여한다고 생각해보자


 학생들의 성적 데이터를 분류하기 위해서 아래와 같은 분류 선들이 필요하다.
각 선들은 A에 대해 A이거나 A가 아니거나, 같은 방식으로 B이거나 아니거나 C 이거나 아니거나 로 구분되고 있다. 각각은 X에 대해 어떠한 과정을 거쳐 최종적으로 sigmoid함수를 통한 후 분류값 Y hat을 가진다. 


X에 변수가 3개인 경우 각각은 다른 가중치를 가진다. 이때 각 A,B,C에 대한 계산을 따로 하게되면 번거로워진다. 따라서 과정을 수월하게 하는 Matrix 연산을 하게된다. 

 여기서 끝이아니다. 특정한 값이 나오지만 우리가 원하는 것은 sigmoid를 통해 0과 1 사이의 값이 나오게 함이다. 아래 그림을 보면 각 P를 더했을 때 총 합이 1이 나오게 된다. 각 P는 해당 y일 확률을 나타낸다고 볼 수 있다.
이것을 위해 도입된 sigmoid가 Softmax 함수이다.
확률 계산이 끝난 후 에는 'One-Hot Encoding'을 통해 가장 큰 확률값을 가지는 y만 1의 값을 가지도록 해 최종 예측값을 구할 수 있다. Softmax는 보통 multi classes를 가지는 분류에 많이 활용되는데 각 항목에 대한 score를 매겨 이에따라 총합 1을 갖는 확률값을 반환해준다.

예측값을 구한 후에는 실제값과의 오차를 구해 Cost Function을 설계해야한다.
여기서는 Cross Entropy라는 함수가 동작한다. 우리가 원하는 것은 예측이 맞을때는 cost가 0이 나오고 예측이 틀렸을 때는 큰 cost 값을 반환하여 오차를 최대한 줄인 모델을 찾는 것이다.
log 함수에 - 를 붙인 위의 그래프를 참고하여 계산을 해보자. L은 실제 데이터로, 즉 A로 분류되는 경우가 맞는 예측이다. 초록색이 맞는 예측이고 보라색은 B로 잘못 예측한 경우이다. 우리가 얻고자했던 결과를 그대로 반환시켜주는 cost function 임이 보인다. 예측을 맞게 한 경우 cost가 0 이 되었고 틀린 예측을 한 경우 cost가 무한대 값으로 매우 크게 나왔다.
Cross Entropy가 새로운 개념 같지만 사실 Logistic Regression 에서 사용했던 Cost Function과 같은 개념이다.
두 Cost Function의 가장 큰 장점은 식에 영향을 미치는 값이 target과 hypothesis 뿐이라는 것이다. L은 one-hot encoding을 거쳐 hypothesis를 제외한 값들은 0을 가진다. y는 1일 때 1-y는 0을 의미하기 때문에 두 식은 결국 같은 식이라고 볼 수 있다. 
cost fuction을 정의한 후에는 Gradient descent 알고리즘을 이용해 볼록한 (convex) cost 함수를 가지는 경우에 가질 수 있는 최저 gradient 값을 찾기 위해 앞의 과정들을 반복한다.

No comments:

Powered by Blogger.