[CS 231n] Linear Classification Softmax 과제(Assignment)
포스팅을 시작하기에 앞서 수준 높은 강의와 강의 자료를 무료로 배포해주신 Stanford University CS231n 교수진께 감사의 말씀을 드립니다.
온라인 강의: https://www.youtube.com/watch?v=vT1JzLTH4G4&list=PLC1qU-LWwrF64f4QKQT-Vg5Wr4qEE1Zxk
강의 자료: https://cs231n.github.io
* 블로그 작성자 github 주소: https://github.com/withAnewWorld/JamesHanamura
이번 과제는 기본적으로 전에 포스팅한 SVM 과제와 유사하므로 코드 작성부분에 대해서만 올리겠습니다.
Softmax_loss_naive
1. loss
2) scores -= max(scores)
(Softmax는 x.dot(W)의 결과가 지수로 올라가므로 컴퓨터가 처리하기에 너무 큰 수입니다. 이를 해결하기 위해 가장 큰 수를 빼주는 작업이 필요합니다.)
3) exp(scores)
4) loss += -log( scores[y[i]] / sum(scores) )
5) loss /= num_train
loss += reg*sum(W^2)
2. dW
2) scores의 각 행 중 최대값을 행 별로 뺀다.
3) exp(scores)
4) 분자: 각 행에 따른 scores y[i]열
분모: np.sum(scores, axis=1)
5) 4)의 결과 sum
loss /= num_train
loss += reg*sum(W^2)
2. dW
Cross validation
SVM과 동일하게 코드를 작성하면 됩니다.