-
5. Sotfmax, Cross EntropyAI/딥러닝 2019. 7. 11. 21:54
지난번엔 Binary Classification 모델인 Logistic Regression을 다뤘습니다. https://godute.tistory.com/42?category=792250
4. 로지스틱 회귀(Logistic Regression)
이전 Linear Regression에서 다룬 성적 데이터를 Pass/Non-Pass처럼 Binary Classfication(이진 분류)로 변경해 보겠습니다. 성적 점수보단, 통과 혹은 불통 자체에 관심이 생겼습니다. 그래서 이를 분류해 보려고..
godute.tistory.com
이번엔, 레이블이 3개 이상인 Multi Class Classification을 다뤄보겠습니다.
이진 분류에선 Pass / Non-Pass로 분류했는데, 이제 A, B, C등급으로 분류할 겁니다.
등급
중간고사(x1)
기말고사(x2)
과제(x3)
A
90
95
93
B
84
79
89
C
50
90
80
F
40
30
30
여기 성적과 과제에 따른 등급을 분류했습니다. 여러분의 등급은 어디인가요? 이것을 행렬로 표현해보겠습니다.
등급 A에 대해 계산한 결과가 나올 것입니다. 첫 번째 학생은 A에 대한 logistic을 하면 높게 나오겠지요,
마찬가지로 등급 B, C, D, F까지 모두 위와 같은 연산을 진행합니다. 전체 행렬식을 볼까요,
모든 등급(A, B, C, D, F 총 5가지)마다 weight를 3개 가지고 있습니다. 학생들의 데이터를 입력하면, 5x4형태의 행렬이 나옵니다. 5 x 4 행렬 결과물에 이제 각각 sigmoid를 취하면 등급을 구할 수는 있습니다만, Softmax를 사용해 더 편리하게 구할 수 있습니다.
Softmax
5 x 4 행렬에 위 그림처럼 Y (2.0, 1.0, 0.1)과 같은 결과 값이 그려지고, 해당 값들이 Softmax를 거칩니다.
총 4명의 학생에 대한 결과입니다.
y11, y21, y31, y41, y51이 바로 학생 1에 대한 가설 결과입니다.
Softmax를 적용하면,
Prop(학생 1이 A일 확률) = ey11 / (ey11 + ey21 + ey31 + ey41 + ey51)
나머지 B, C, D, F일 확률도 동일하게 적용하면 구할 수 있습니다.
보면 알듯이, 학생 1에 대해 나온 5가지 확률을 모두 더하면 1이 됩니다.
즉 Softmax는 각 레이블별로 합쳐서 1이 되는 확률 값으로 변환시켜줍니다.
그렇다면 이제 학생 1의 점수를 Softmax까지 거쳤을 때 상황을 가정해 보겠습니다.
(0.9, 0.05, 0.03, 0.01, 0.01) -> 이와 같은 결과가 나왔습니다. 모두 더하면 1이 됩니다. 보면 A가 가장 높게 나왔군요,
one-hot encoding
이제 이 값들을 one-hot encoding을 적용하면 원하는 예측 레이블을 얻을 수 있습니다. 말 그대로 한 곳만 뜨겁게, 제일 높은 곳을 1로 두고 나머지는 0으로 처리하는 방식입니다. 학생 1은 one-hot을 적용해 (1, 0, 0, 0, 0)의 결과를 얻었습니다. 제일 첫 번째 레이블인 A등급이 뜨거우니, 학생 1은 A등급으로 예측됩니다.
Cost Function(Cross Entropy)
이번에도 Linear, Logistic Regression과 마찬가지로, Cost function을 구해야 합니다. 우리는 손실을 최대한 줄이고 확실히 자동화를 이뤄내야 하니까요. Logistic의 Cost function과 매우 유사합니다. 2개의 레이블일 땐 아예 동일하고요.
우리 학생 1의 경우엔, S(y)는 (0.9, 0.05, 0.03, 0.01, 0.01)입니다. 저 식을 그대로 적용해보면,
-( 1.0 * log(0.9) + 0.0 * log(0.05) + 0.0 * log(0.03) + 0.0 * log(0.01) + 0.0 * log(0.01))이 됩니다.
1.0 * log(0.9)를 제외하면 모두 0을 곱해 사라집니다. 즉 정답 레이블을 제외한 항은 모두 소거됩니다. 최종적으로 -log0.9라는 cost가 발생합니다. log1 = 0이므로, 정확히 예측할수록 0에 수렴하는 모습을 보이네요. 그러면 반대로 틀린 예측을 했다고 가정해봅시다. 정답은 A등급이지만, 우리의 Softmax가 A에 0.05, B에 0.9를 부여했습니다.
cost = - ( 1.0 * log(0.05))가 됩니다. log 0이 -무한대에 수렴하니, 이번 손실은 매우 크게 발생하겠군요.
이렇게 Multi classification까지 완수했습니다. 다음엔 최초의 Neural Network인 퍼셉트론(Perceptron)으로 뵐까 합니다.
반응형'AI > 딥러닝' 카테고리의 다른 글
7. 역전파(Back propagation) (0) 2019.07.14 6. 퍼셉트론(Perceptron) (2) 2019.07.12 4. 로지스틱 회귀(Logistic Regression) (0) 2019.07.11 3. 다변량 선형 회귀(Multivariate Linear Regression) (0) 2019.07.11 2. 경사 하강법(Gradient Descent), Tensorflow 선형 회귀 구현 (0) 2019.07.09