여러 개의 class가 있을 때 그것을 예측하면 Multinomial classification 그중에서도 가장 많이 쓰이는 softmax classification에 대해 알아볼 것이다. 지난 시간에 logistic regression에 대해 공부해보았는데 H(X)=Wx의 단점은 리턴 값이 어떤 실수의 값이 되기 때문에 두 개 중에 하나를 고르는 즉, 0이냐 1이냐 적합하지 않았다. 그래서 생각한 방법이 이것을 z라 놓고 g(z)라는 함수가 큰 값을 압축을 해서 0이나 1로 또는 그 사이 값으로 나오는 것이다. 그때 연구해서 나온 것이 바로 sigmoid이다. 다른 말로는 logistic이라고도 부른다. 그러면 마지막 H(x) = g(H(x))가 된다.
이것을 그림으로 표현하면 아래 처럼된다. 여기서 y hat은 예측값이고 그냥 y는 real, 실제 데이터이다.
위 사진은 x가 2개의 데이터를 가지고 있고 우리가 분류해야 될 데이터가 x표시와 네모 표시라 하면 저 사이 두 데이터를 구분하는 선을 찾는 것이다. 이것을 Multinomial classification에 적용할 수 있다.
binary classification을 가지고도 Multinomial classification을 만들수있다. 위를 보면 C or not 인 선과 A or not 인 선, B or not인 선을 구현할 수 있다. 그러면 x가 주어졌을 때 yhat을 예측하는 3개의 독립된 classfile들을 가지고 구현이 가능하다. 실제로 이것을 구현할 때는 행렬로 구현한다. 원래 3개의 행렬이 나오는데 우리가 배운 matrix연산을 활용하여 구현하면 된다.
이 값들이 바로 우리가 원하는 hypothesis이다. yhatA는 Ha(x)의 값이고 yhatb는 Hb(x)의 값이고 yhatc는 Hc(x)가 된다.
이렇게 하나의 벡터로 처리하게 되면 한 번의 계산을 할 수 있다. 그리고 독립된 classification처럼 사용된다. 그리고 sigmoid를 각각의 값들에게 적용하면 된다.
'머신러닝 > 모두를 위한 딥러닝' 카테고리의 다른 글
TensorFlow로 Logistic Classification의 구현하기 (0) | 2019.05.23 |
---|---|
Logistic Regression의 cost 함수 설명 (0) | 2019.05.21 |
Logistic Classification의 가설 함수 정의 (0) | 2019.05.19 |
TensorFlow로 파일에서 data읽어오기 (0) | 2019.05.18 |
multi-variable linear regression을 TensorFlow에서 구현하기 (0) | 2019.05.16 |