Machine Learning with Tensorflow) 5. Softmax: Multinomial Classification


그렇다면 이진 분류가 아닌 다진 분류에서는 어떠한 기법을 써야할까?

우리는 이진 분류를 통해서 어떤 input data X가 주어졌을 때

이 X값이 분류 A에 속해있는지 아닌지를 linear regression을 통해 수치화하였다.

이를 통해서 분류 집합 Y = {A, B, C, ...}에 대하여 각각 분류에 속해있는지 아닌지를 수치화한다음 이에 대해 확률 값으로 정리하면 다진 분류가 가능할 것이다!

이러한 방법을 Softmax Regression이라 한다. 왜 Regression이라고 불리는지는 솔직히 나도 잘 모르겠다.

그림을 한 번 살펴보자.

그림을 살펴보면 데이터 x = (x1, x2)에 대하여 y를 분류하는 것을 볼 수 있다.
여기서 예시는 수업 시수, 출석 횟수에 따라 grade를 매기는 것이다.
이러한 데이터를 통해 우리는 x 데이터에 대해 학습시킬 것이다.

오른쪽 그림을 살펴보면 아까 언급했다시피, 이진분류법(Logistic Classification)을 이용하여 A인지 아닌지, C인지 아닌지, B인지 아닌지에 대한 일종의 선을 학습시킬 수 있다.


위 그림에서 W matrix를 살펴보자. Wa1은 x data(x1,x2,x3)가 a로 분류되는 데에 있어 끼치는 x1의 영향 상수라고 볼 수 있다. 즉 각각의 component들은 분류 집합 (A, B, C) 등 분류되는 데에 있어 input data component의 영향 상수라고 볼 수 있는 것이다.
이를 토대로 값을 구하면 어떠한 score가 나온다. 이들을 probability로 바꾸는 작업을 거치면 데이터가 분류 A나 B나 C에 해당할 확률이 나오는 것이다.


Softmax Regression에서 Cost function은 Cross Entropy를 사용한다. 만약 예측된 probability가 0.7이고, 실제 Label이 1이라면 이 확률이 최대가 되기 위해 모델들은 component value를 update할 것이다.


아래는 softmax regression을 구현한 tensorflow 코드다.





댓글

가장 많이 본 글