[모두의 딥러닝] Softmax classification 기본개념 & Cost
📗강의노트/모두의 딥러닝

[모두의 딥러닝] Softmax classification 기본개념 & Cost

728x90
반응형

Sung Kim 님의 "모두의 딥러닝" 강의노트입니다

좋은 강의 감사드립니다!

https://www.youtube.com/watch?v=mQGwjrStQgg&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=5


여러개의 클래스가 있을 때 그것을 예측하는 Multinomial classification, 그중에서도 자주 쓰이는 Softmax classification을 알아보자


기본 출발은 linear에서 출발했으나 return값이 실수로 나오기 때문에 binary에는 적합하지는 않았다.

그래서 생각한 방법이 이를 Z로 놓고 g(Z)라는 함수에 넣어 큰 값을 압축을 하여 0 또는 1 사이 의 값으로 냈으면 좋겠다고 생각했다. 

그래서 알아낸 것이 Sigmoid(logistic)을 만들어 냈다.




X를 W라는 유닛을 통해 Z값을 도출하고, sigmoid함수에 넣어 값을 0,1 사이의 값으로 나타낸다.
이 때 나오는 값을 Y-hat이라고 한다. Y = real / Y-hat = prediction



A,B,C 총 세가지의 종류가 있다.
binary만을 가지고도 mulinomial 구현이 가능하다

  1. C이거나 / C가 아니거나로 판단함 ( C or not )
  2. B이거나 / 아니거나 ( B or not )
  3. A이거나 / 아니거나 ( A or not )

이렇게 독립적으로 계산하기에는 복잡함


쭉 늘여서 위와 같이 만듬  이는 Matrix multiplication으로 계산한다.
이 값들이 바로 원하는 Y-hat들이다 Ha,b,c(X)값이 되는 것 이다.

값이 실수가 나오기 때문에 각각에 Sigmoid함수를 적용하면 된다. 

최종값이 0,1로 나오기를 바람

P가 0~1의 값이길 바람. 다 더하면 1이 되면 표현을 하면 어떨까라고 생각
-> 이것이 바로 Softmax 방법이다.

위의 박스가 Softmax방법이다 
  1. 0~1사이의 값이고
  2. Sum = 1이다. 확률의 개념으로 보는 것 

'One-Hot-Encoding’ 이라는 것을 통해 하나만 1을 만들어준다.



hypothesis는 됐고 이제 cost function을 보자

Cross-Entropy라는 것을 씀 L이 실제값/  S(Y) = Y-hat(predicted) 임

Li 와 -log(y-hat)은 매트릭스 곱이 아니라 element 곱이다.
오른쪽 그래프가 -log(y-hat) 그래프이다.  값이 0 일때는 무한대로 가고 값이 1일때는 0이되는 함수이다. 

실제 정답의 Label이 [A,B] = [0,1] 이어서 실제값이 B일 때
Y-hat [0,1]은 B를 맞춘 것이고 -> 작은 값이 되고
Y-hat[1,0]은 A를 골라 틀린 것이다 -> 큰 값이 되어 모델에 벌을 준다.


Element 곱을 동그라미속 동그라미로 표현한다. -log를 통해 0은 무한대로, 1은 0의 값으로 나왔다. 계산하면 이를 통해 [0,0]이 나와 cost값이 0이 나오게 됨 따라서 cost 함수가 0이 됨

실제로는 logistic과 cross entropy는 같은 것 
왜냐하면 


y를 p1, H(x)를 q1, y-1을 p2, 1-H(x)를 q2로 치환하면 위와 같은 식이 도출된다.


다시 이렇게 변형이 가능하다
이를 일반화 하면

이렇게 나오는데 이것이 바로 Cross-Entropy식이다.

수식해설 출처: http://mazdah.tistory.com/791 [꿈을 위한 단상]




비용함수 도출 후 미분하여 알파만큼 step by step으로 cost를 minimize한다.




728x90
반응형