Softmax Regression
-
용어 정의
y-hat : sigmod 함수의 결과 값
- Multinomial classification
이전 시간에는 예측할 결과가 단지 0, 1, 즉 바이너리 였다.
하지만 이제는 예측할 결과가 A, B, C 또는 그 이상의 개수가 될수 있는 Multinomial에 대해 알아볼 것이다.
이전에 학습한 Binary Classification을 이용할 것이다.
만일 실제 결과가 3가지 A, B, C가 주어졌다면 아래와 같이 할 수 있다.- C인지 아닌지 여부를 예측하는 Binary classification 모델을 구한다.
- B인지 아닌지 여부를 예측하는 Binary classification 모델을 구한다.
- A인지 아닌지 여부를 예측하는 Binary classification 모델을 구한다.
이 세개의 각기 다른 Binary Classification을 이용하여 구현할 수 있고 아래와 같이 표현할 수 있다.
- x -> A의 Binary 모델 -> sigmode -> Y-hat - x -> B의 Binary 모델 -> sigmode -> Y-hat - x -> C의 Binary 모델 -> sigmode -> Y-hat
이 세개의 독립된 matrix에 대해 계산을 하면된다. 다만 이럴 경우 계산이 복잡해지므로 아래와 같이 하나의 행렬로 표현한다.
[wA1, wA2, wA3] [x1] [wB1, wB2, wB3] . [x2] = 값 [wC1, wC2, wC3] [x3]
위의 행렬 계산의 결과 에서는 아직 바이너리 결과가 나오지 않았기에 sigmoid를 적용해주어야 한다.
- soft max 함수
sigmoid 함수는 결과가 N개가 나오므로 이 대신에 새로운 함수를 사용할 것이다.
softmax 함수는 결과값들이 전체 합계가 1이되며 값은 0~1사이에 존재한다.
즉 확률로 취급할 수 있다는 것이다.
따라서 나온 결과값중 가 장 큰 값에 대해서만 1(True)로 취급하고 나머지는 모두 0(False)로 취급한 결과를 얻게 된다.
이는 one-hot encoding을 이용하여 이중 가장 큰 값만 1로 처리하고 나머지는 모두 0으로 처리가 가능해지는 것이다.
softmax 통해 나온 결과들에 대해 한가지 결과를 고를 수 있다.
즉 multi에 대한 예측 값을 구할 수 있다.
Cost function
- Cross entropy
Cost function은 cross entropy를 이용할 것이다.
Cross entropy는 다음과 같이 정의될 수 있다.
sigma(L * -logY-hat)
L : 실제의 결과값을 의미하는 레이블(정답, 이전의 Y)
S(y) : 우리가 예측한 값. softmax를 통해 얻은 y-hat
L, S(y) 이 둘 사이의 차이를 D(S,L)로 표현하고 이것을 cross-entropy 함수로 구한다.
-log[0]
[1] 의 그래프틑 x축이 0에 가까울떄 무한대가 되고 1일때 0이 된다.
L과 -logY-hat에 대해 element wise 곱을 해준 후 모두 더하면 cost를 구할 수 있다.
-logY-hat 은 값이 맞으면 0이고 아니면 무한대이므로 값이 틀릴수록 코스트가 무한정 커진다.
이제 가장 작은 cost를 위해 역시 gradient descent alg를 사용하여 최소 코스트를 구하면 된다.
element-wise연산은 같은 크기의 matrix에 대해 같은 위치의 요소끼리 연산을 해주는 것을 말한다.
References
- http://pythonkim.tistory.com/20
- https://datascienceschool.net/view-notebook/3f44cfdda2874080a9aa6b034c71d5ec/