Regularization loss
이전 강의에서, linear classification에서의 결과를 보면 아래와 같다.
: 여기서, SVM - Hinge Loss, Softmax - cross Entropy Loss를 알아보자.
SVM Loss (hinge loss)
: x_i is image, x_i is label
: ( correct label score -1 ) 보다 큰 incorrect label score가 있으면, loss 발생
: ( correct lable score ) 가 다른 incorrect label score보다 1이상 크면 loss는 0
: cat의 경우 3.2보다 socre가 큰 car가 존재하므로 loss가 0보다 큰 값, (5.1 - 3.2 +1) = 2.9
: car의 경우 car의 4.9보다 1이상 score가 큰 값이 없으므로 loss 0
: flog의 경우 frog -3.1보다 score가 1이상 큰 값들이 많아서 loss가 크게 12.9가 된다.
: SVM loss에서는 j는 y_j가 아니다, 가 없으면 1이 더해질 것이다.
: 따라서 평균 최종 loss가 1만큼 증가하고, 0이라는 loss는 볼 수 없다.
: 추가적으로, loss에 sum을 하는 형태가 아니라 mean이라도 loss를 최소화하는 것이 목적이기에, 큰 차이가 없다.
: 초기에 wieght가 매우 작아서 s가 0에 수렴할텐데, 그럼 SVM Loss는? class-1과 근접할 것이다.
: 이를 통해, 지금 학습의 시작이 제대로 됨을 확인 가능 (sanity check)
def SVM_loss(x,y,W) :
score = W.dot(x)
margins = np.maximum(0,score-score[y]+1)
margins[y] = 0
loss = np.sum(margins)
return loss
: 여기서 loss값을 0으로 하는 weight값은 unique하냐? -> 아니다. loss가 0이 되는 값 *n을 하면 모두 0이다.
: unique한 weight 값을 결정해주기 위해 Regularization 도입 (lambda는 hyperparameter)
: training data에 대한 loss는 높아지지만, test에 대한 performace는 향상될 것이다.
softmax loss (cross-entropy loss)
: e^(score)들을 계산하고, 확률으로 변환
: 해당 확률을 기반으로 -log(score 확률)을 계산함으로써 loss 계산
: -log(x)이므로 당연히, 최소값은 x=1인 0, 최대값은 x=0에 가까운 무한대에 수렴
: 즉, classifier를 잘 수행할 수록 확률이 1에 가까워지므로 최종 loss는 0에 가까워진다.
Optimization
: loss를 minimize하는 weight를 찾아가는 과정
: 아래의 regularization loss를 다시 확인해보면, data들은 상관없이, weight에만 영향받는다.
Gradient Descent
: gradient에 따른 weight 변화
: 아래와 같이 미분값이 0에 근접하게 변화시키는것
: learning rate를 조절하면서 어느정도씩 움직이게 할 지 (local minimum에 빠지지않도록 하는게 관건)
momentum으로 예시를 들자면
: 현재 미분값이 positive인지, negative인지에 따라 weight를 update하는 방식(아래는 weight가 1개인 예시이며, weight가 많을 수록 고차원으로 표현이 되겠다)
Conv Net이 나오기 전에, image classifier pipline은
전통적으로는 original image에 바로 적용하는게 아닌,
1. feature engineering으로 feature extraction을 하고
2. extraction된 feature 기반으로 concat하여 linear classifier에 적용
'Study > cs251n' 카테고리의 다른 글
CS231n : lecture10_Recurrent Neural Networks, Image Captioning, LSTM (1) | 2024.12.09 |
---|---|
CS231n : lecture6,7_Training Neaural Networks (0) | 2024.12.09 |
CS231n : lecture5_Convolutional Neural Networks (0) | 2024.12.07 |
CS231n : lecture4_Introduction to Neural Networks (0) | 2024.12.04 |
CS231n : lecture2_Image Classification pipline (1) | 2024.12.04 |