CS231n-3강
To do list
- Define Loss function
- Optimiztion - finding parameters that minimize the loss function
Loss
- Hinge loss(SVM)
- Cross entropy loss(Softmax)
SVM(Hinge loss)
Ex) 고양이 이미지 데이터를 input이라고 하면
Sj( a라고 하겠습니다)는 잘못된 라벨에 대한 점수(차,개구리 라벨에 대한 점수)
Syi( b라고 하겠습니다)는 제대로 된 라벨에 대한 점수(고양이 라벨에 대한 점수)
1은 safety margin
loss 값은 결국
고양이, 강이지, 차를 분류하는 예로 들면
고양이의 loss 값은
강아지와 차의 loss값의 합입니다.
Regularization
Loss 값이 최소면 좋을까(X)
Loss값이 최소로 하는 weight값이 uniqe해야 한다.
강의에서는 밑에와 같이 표현한다.
Trading off trainging loss and genrealization loss on test set
training 데이터에 정확도는 낮아질테지만 test 데이터에 대한 performance는 나아질 것
Softmax Classifier(Multinomial Logistic Regression)
정확한 클래스의 -log클래스 최소화 하는게 목표
log값 취하는 이유는 수학적으로 나이스하기때문
Softmax loss(cross entropy) 값 구하는 순서
- 정규화하지 않은 인풋에 대한 P값
- 이를 exp로 시키고
- 정규화 후
- -log를 취한다
Tip)
W의 초기 값을 0과 값은 값으로
-> score가 0에 가까울 것
->exp(0)= 1로 다 같고 확률로 나타내면 1/3
-> - log(1/3) (단, 클래스가 3일 때 n이면 -log(1/n))
-> 학습전 sanity check로 이용
SVM vs Softmax
SVM : 데이터에 민감하지 않고 둔감함
Softmax : 모든 데이터들을 고려하므로 민감함
Optimization
각각의 loss 값이 있을 때 로스 값은 data와는 상관 없이 W만의 함수
1) random search : 절대 하면 안된다.
2) numerical gradient : 수식을 통해 미분 값을 계산, 기울기를 구해 최적화 - 너무 느리다
3) analytic gradient : 실제로 많이 쓰이는 것, 빠르고 정확/ 중간에 numerical gradient을 통해 check
mini batch
- training 셋 일부만 이용
- gradient 계산, parameter 업데이트 후 다른 미니 베치 이용해 반복
- 32,64,128개 사이즈 gpu 상태에 따라 분배에서 사용