Deeper Learning

CS231n - Lecture 1 ~ 4 본문

AI/Deep Learning

CS231n - Lecture 1 ~ 4

Dlaiml 2021. 8. 21. 17:19

그룹 스터디로 복습 중, 간단하게 잊어버렸던 내용만 정리.

Hinge loss

Hinge loss

식은 위와 같다. true label에 대한 logits이 각 label에 대한 logits보다 1이상 클 경우 0의 loss를 가진다.

+1은 arbitrary choice로 W의 scale에 따라 달라질 수 있는 값. 전체 모델에는 큰 영향이 없다.

크게 엇나가지 않은 값에 대해 loss를 주지 않아 기존에 잘 학습하고 있던 class의 예측값에 대한 변동에 robust하다.

 

Q. W가 매우 작아 s값이 거의 0에 수렴하면 loss의 값은?

-log(num of classes - 1)

 

Q. true label을 굳이 빼고 식이 구성되는 이유?

자신 클래스가 포함되면 loss에 +1이 포함됨. zero로 minimun loss를 맞추기 위해

 

Q. mean대신 sum사용하면 안되는 이유?

scale이 달라짐. 사용해도 결과는 동일 loss의 절대값 자체는 중요하지 않다.

하지만 square hinge loss 같이 distance가 동일한 비가 아니게 되는 경우 결과가 달라짐

 

Q. loss가 0이 되게만드는 W가 유니크한가?

W가 loss를 0으로 만들면, cW ( c in R^1 ) 또한 loss를 0으로 만들 수 있다.

 

L1 , L2 regularization

Regularization은 결국 Overfitting을 해결하기 위해 모델의 complexity를 낮추는 것.

Complexity를 측정하는 방식은 L1, L2에서 다르다.

 

w1, w2에서 L1 regularization의 term은 1로 동일하다.

L2에서 w1은 1, w2는 0.5의 값을 가진다.

 

따라서 Lasso는 중요치 않은 feature를 drop하지만 Ridge는 낮은 weight를 유지하려한다.

 

Softmax

 

W가 매우 작아 대부분 output이 0이 나온다면 softmax값은 -log(Num_of_classes)

→ 학습 초기 값은 -log (num_of_classes)가 나오는지로 디버깅가능

 

Bag of words

이전에는 codebook 형식으로 patches를 랜덤하게 추출하고 그것들의 출현 빈도를 통해 이미지를 인코딩하였다.

현재 방식은 모델이 patches를 골라주는 방식.

 

Template

Linear Classifier에서는 weight가 W1 하나로 각 클래스마다 그 클래스를 가장 잘 나타낼 수 있는 템플릿이 학습을 통해 완성된다. 2층으로 NN을 구성하면 3072개의 pixel인 input이 100개의 feature로 인코딩되며 다시 10개의 class로 판별된다. 

위에 템플릿의 관점으로 보면 first hidden layer에서는 100개의 템플릿(가중치)이 3072개의 픽셀을 보고 각각 그 템플릿에 얼마나 맞는지 값을 출력한다. 그 값은 final hidden layer에서 100개의 템플릿의 output을 보고 각각 학습된 가중치를 통해 각 class 별로 확률을 계산한다.

 

naive한 예시를 들면 잘 학습된 모델에서 비행기 이미지가 input으로 들어오면 100개의 template ( 파란색, 날개 모양 edge, 등등 )은 3042개의 픽셀에서 각각 template에 해당하는 내용이 얼마나 많이 나타나는지 (dot 연산) 보고 그 값을 다음 layer로 전달한다.

다음 output layer의 비행기에 해당하는 node는 배경부분의 파랑색, 날개 모양 edge 등에 해당하는 template에 큰 가중치를 주도록 학습되었을테고 따라서 그 특성이 많이 보이는 이미지에 큰 점수를 준다.

 

Reference

[1] cs231n 2017, https://cs231n.github.io/

 

Comments