CS231n | Lecture 3

yeonk·2021년 10월 10일
1

ai

목록 보기
7/9
post-thumbnail

20210927

Lecture 3 | Loss Functions and Optimization



1. Linear classifier


  • x: 이미지 입력, w = 가중치(weight), y 는 라벨(카테고리)

  • wx 가 곱해지면 x가 선형 변환이 된다 → 다른 공간

  • 어떠한 이미지의 score가 높으면 해당 분류기는 들어온 x를 그 이미지로 인식하는 것

  • 하나의 분류기만을 사용하면 이미지 분류가 잘 되지 않는다.

  • 두 벡터의 내적이 1에 가깝다 → 쎄타가 0에 가깝다

  • w의 각 행과 x데이터가 곱해지는 것을 내적으로 볼 수 있다 → 내적은 유사도를 계산하는 것이기 때문에 점수로서 나타낼 수 있다.






2. Loss Function


  • W에 대한 평가가 필요 → 정량화 가 필요

    • loss function: w 가 얼마나 안 좋은지 알려준다.

    • 이 과정을 통해 좋은w를 찾게 되는데 이 과정을 optimization 이라고 한다.

    • optimization : 행렬 w가 될 수 있는 모든 경우의 수에 대해 최적의 w 가 무엇인지 찾는 것






  • Loss : 데이터 셋에서 각 N개의 샘플들의 loss 평균
    L=1NiLi(f(xi,W),yi)L = {1 \over N}\sum_iL_i(f(x_i,W),y_i)






2-2. Multi-class SVM loss


  • hinge loss 라고도 불림

  • SVM: Support Vector Machine

  • 여러 클래스를 다루기 위한 이진 SVM의 일반화된 형태

  • 데이터에 민감하지 않다 (score에 큰 영향을 받지 않으며, 일정 기준에 도달하면 그 이후로 상향 하지는 않는다)

  • loss 최솟값: 0, 최댓값: 무한대






SVM loss 구하기



Li=jyimax(0,sjsyi+1)L_i = \sum_{j\neq y_i}max(0, s_j - s_{y_i}+1)



  • sjs_j : 정답이 아닌 클래스 score

  • syis_{y_i} : 정답 클래스 score

  • if syis_{y_i} > sjs_j + safety margin :

    • loss = 0
  • if syis_{y_i} < sjs_j + safety margin :

    • loss = sjs_j - syis_{y_i} + safety margin
  • max(0,) 인 이유는 max가 괄호 내 두 값 중 큰 값을 뱉기 때문에 음수가 들어가는 경우에 0을 뱉도록 하기 위함이다 (loss의 최저 값은 0)






QnA

No.Content
Q만약 w가 매우 작아져 Score가 0에 근사해진다면?
Aloss = C-1 → 디버그용으로 많이 사용 (sanity check)
Q정답 클래스 값을 제외하고 값을 구하는 이유는?
A최종 loss 값이 0이 되는 것이 좋으므로 정답 클래스를 빼고 보는 것이다.
정답 클래스가 포함되면 1이 가장 좋은 값이 되므로 혼란을 줄 수 있음
QLiL_i를 구할 때 Sum 대신 평균을 이용한다면?
A큰 문제가 되진 않지만, 평균 값을 사용하기 때문에 Scale이 작아지는 변화가 있을 수는 있다.
(하지만 제곱승을 하게되면 Nonlinear해짐)
Qw는 unique 한가?
A유니크 하지 않다. w는 여러개 존재할 수 있다.
그렇기 때문에 loss가 적은 w를 찾아 train set에 맞춰도 test set에 맞는 w라고 할 수는 없다.






3. Regularization


data loss에 따라 train 에 잘 맞도록 학습하고자 할 때 regularization을 통해 패널티를 받는다.
이를 통해 최적의 w를 찾는 과정이 진행된다.

  • 다항식의 차수를 줄인다(고차원보다 저 차원을 선호)

    • 모델 훈련을 깊게 할수록 특성이 깊어진다.

    • 해당 차수의 값을 줄여 복잡하지 않도록 방지한다.


  • L1 Regularization

    • 통상적으로 값을 빼준다.

    • 작은 가중치는 0으로 수렴

      • 중요한 가중치만 남게 된다.
      • 의미 있는 값을 원한다면 L1이 좋다.
      • R(W)를 미분했을 때 L1의 값들은 0에 수렴한다.

  • L2 Regularization

    • 가중치를 0에 가깝게 유도

    • 데이터를 spread 하도록 바라본다.

    • 모든 데이터 값을 고려

    • 일반적으로 많이 사용

    • R(W)를 미분했을 때 L2의 값들은 제곱 값들이기 때문에 희소한 값들의 연속으로 나타낼 수 있다.


  • λ(람다) 값

    • 규제의 강도

    • 높으면 모델이 단순해진다: uderfitting 위험 존재

    • 낮으면 모델이 복잡해진다: overfitting 위험 존재


일반적으로 L1보다 L2를 많이 사용한다.

→ L1은 내가 원하는 특성이 제거되고, L2는 모든 것을 고려하기 때문이다.






4. Softmax Classifier(Multinomial Logistic Regression)


cross entropy 라고도 불림.

P(Y=kX=Xi)=eskjesjP(Y = k|X = X_i) = \cfrac{e^s k}{\sum_j e^{s_j} }

  • 원하는 정답 클래스에 -log를 취하여 loss를 구한다.

  • exp: 전체 score에 exp를 취한다.

  • normalize: 그 값들을 모두 더한 총 합으로 각 값을 나눈다(확률).

  • 정답 클래스에 -log 값을 취하여 loss 값을 구함

  • loss 최솟값: 0, 최댓값: 무한대

  • 만약 w가 매우 작아져서 score가 0에 근사해지면?

    • loss = -log(1/C)

    • 디버그 용으로 많이 사용, sanity check






Q. SVM vs Softmax

  • SVM: 데이터에 둔감하다.

  • softmax: 데이터에 민감함. 확률로 계산되기 때문에 조금만 데이터가 바뀌어도 확률에 영향을 미침






5. Optimization(최적화)


loss가 0인 지점을 찾는 것

Strategy1: Random search (권장하지 않음. 사용 X)

  • 랜덤하게 포인트를 찾는 것(랜덤한 W위치 값 결정)

  • 정확도 15.5%, 최고 95% 를 나타냄 → gap이 크기 때문에 사용하지 않는게 좋겠다.






Strategy2: Follow the slope

  • gradient descent(경사하강법)

    • 기울기가 0인 지점으로 가는 것이 목표

    • 만약 음의 기울기\값이면 기울기가 0인 지점으로 가려면 +방향으로 가야한다.

    • 양의 기울기/면 기울기가 0인 지점으로 가려면 - 방향으로 가야하기 때문에 반대 방향으로 가기 위해 -를 붙여준다.

    • 가짜 goal에 도달할 수 있다.

  • numerical gradient: 정확하지 않고 느리지만 간편하다 (오류가 적음) → 조금씩 이동해서 구하는 것

  • analytic gradient: 정확하고 빠르지만 에러가 많이 나올 가능성이 있음 → 미분 가능한 형태일 때 사용

  • 일반적으로는 analytic gradient를 사용하고, 디버깅 및 점검 시에는 numerical gradient를 사용 (gradient check)






SGD(Stochastic gradient descent)

minibatch를 두어 데이터 개수를 잘라서 사용하는 것

N수가 많아지면 계산이 비효율적이고 느려진다.
그래서 SGD를 사용한다(나눠서 W를 업데이터 함)






Histogram of Oriented Gradients (HoG)

방향값을 히스토그램으로 표현
이미지를 잘라 해당 값에 어떤 각도가 많은지 히스토그램으로 나타내어 특징 추출






오늘의 수식🤨


모르면 외우자 !!!
모르면 다시 보자 !!!
까먹으면 또 보자 !!!


Softmax:Li=log(esyijesj)Softmax : L_i= -log(\cfrac{e^s{y_i}}{\sum_j e^{s_j} })

SVM:Li=jyimax(0,sjsyi+1)SVM : L_i = \sum_{j\neq y_i}max(0, s_j - s_{y_i}+1)

Fullloss:L=1Ni=1NLi+R(W)Fullloss : L = \frac{1}{N}\sum_{i=1}^N L_i + R(W)

0개의 댓글