이번 강의에서 다룰 것들 : Score 에 대해 불만족하는 정도를 정량화하는 Loss functions , Loss functions 을 최소화하는 Parameter 값을 찾는 과정인 Optimization에 대해서 다룰것이다.
SVM : Hinge Loss
Sj = 잘못된 label의 score
Sy(i) = 제대로 된 label의 score
질문 : SVM loss 구하는데 있어서 j=y_i 는 계산을 하지 않고 있다 . 만약 모든 class에 대해서 계산한다면 어떤 결과가 나올것인가 ?
답 : 각각의 Loss 에 1을 더하게 된다 .
질문 : sum 대신 score들의 mean값을 사용하게 되면 어떤 차이가 있는가 ?
답 : loss 를 minimize하는 parameter를 구하는 것이 목적이기 때문에 별 차이 없다.
질문 :
답 : 제곱을 하게 되면 non-linear 하게 된다.
질문 : SVM이 가질 수 있는 최저값과 최대값은 ?
답 : min : 0 , max : 무한대
질문 : 일반적으로 weight 를 매우 작은수로 초기화한다. 따라서 처음에 score는 0에 가까운 값이 나타날 것이다.
이 때 loss 는 어떻게 되는가 ?
답 : loss 는 2가 나오게 된다. ( class 수가 3개 ) class 의 개수 -1 = 초기 loss 값 , 학습이 시작할 때 loss 값이 classnum-1 로 나오는지 check -> sanity check
x : image single column vector
y : Label 을 나타내는 integer 값
w : weight matrix
답 : Loss 0으로 만드는 weight 는 unique 하지 않다.
따라서 unique 한 weight 를 만들기 위해서 Regularization 을 사용한다.
weight 가 얼마나 괜찮은가를 정도를 측정하기 위해 사용한다.
L = data loss - regularization loss(test set) -> data에도 가장 fit 하고 그중에서도 가장 최적화된 weight 값 추출
( A way of traiding off training loss and generalization loss on test set )
traning data set 에 대해 정확도는 안좋아지지만 결과적으로 test set 에 대한 성능은 좋아진다.
Regulariztion 의 목표 loss 를 0으로 , data loss 는 weight 는 0이 될 수 없다. ( 분류하기 위해 )
따라서 양쪽이 trading off 하면서 testset 에 대해 일반화된 결과를 낼 수 있다.
값은 똑같지만 L2 regularization 은 w2 를 선호 한다. 왜냐하면 w2 는 모든 원소를 염두하기 때문이다.
weight 를 최대한 spread out 하여 모든 input feature를 고려하기 원한다.
( diffuse over everything)
Softmax (Multinomial Logistic Regression ) : Cross entropy loss
scores = unnormalized log probabilities fo the classes .
-log 확률을 최소화
log 를 사용하는 이유 : 수학적으로 더 좋고 조금 더 편리하다.
실제 계산 예시
질문 : Soft max 의 최대값 최소값은 ?
답 :
0과 1사이 이기 때문에 최소값 0 최대값은 무한 ( SVM 과 같은 최대값 , 최고값 )
1에 가까워지면 Loss : 0
0에 가까워지면 Loss : 무한대
질문 : Weight 의 초기값은 0에 가깝다. loss 는 어떻게 되겠는가 ?
답 : probabilities는 (1 / class_num ) 이 되기 때문에 L_i = - log (1 / class_num ) -> sanity check
SVM , Softmax 차이 :
실제로 Softmax 가 더 많이 사용된다.
질문 : score 를 변형하게 되면 softmax 와 svm 의 loss 는 어떻게 변화 ?
답 : svm : safety margin( 1 ) 이 있기 때문에 robustness 하다 .따라서 loss 값 불변
softmax : 모든 인자를 고려하기 때문에 변화한다.
따라서 svm 둔감하다. 값들이 변해도 변하지 않는다. softmax 는 민감하다.
Optimization : Loss 를 minimize하게 만드는 weight를 찾아가는 과정
첫번째 방법 : Random search
Optimization 하는 방법은 산속에서 눈을 가리고 찾아가는 과정
첫번째방법은 random하게 찍어서 가는 방법이다.
두번째 방법
일차원 : numerical gradient : 수치적으로 경사를 구한다.
다차원 : gradient 는 vector의 형태로 표현
gradient 음수 : 내려가는 방향으로 기울기가 되어있다.
계산을 하여 미분하게 되면 근사치를 얻는것일뿐이다. 또한 평가를 할때 매우 느리다.
loss 는 weight 의 function 이다. 따라서 우리가 구하고자 하는것은 weight 가 변할때 loss 가 얼마만큼 변하는가? 이다.
미분만 알면 쉽게 구할 수 있다.
미분을 통해 gradient 를 구하는 방식을 analytic gradient 라고 한다.
Numerical gradient : 근사치 , 느리다 , 코드 작성 쉽다.
Analytic gradeint : 정확, 빠르다 , 코드 작성 어렵다.
실제론 Analytic gradient 를 사용한다. 계산이 정확하게 이루어지는지 검토를 위해 Numerical gradient 사용 (gradient check )
Full batch Gradient : Training set 전체 활용
하지만 현실에선
Mini batch Gradient Descent : Training set 일부만을 활용하여 효율적으로 Gradient 개선 , 파라미터 업데이트 반복
주로 32/64/128 개 활용 -> 컴퓨터 환경에 따라 값 설정
Learning rate 에따른 loss변화
high learning rate : global minimum 이 아니라 local minimum 에 빠진다.
Mini batch Gradient 의 대표적인 예 : Stochastic Gradient Descent ( SGD )
파라미터를 업데이트 하는 방법 : 모멘텀(loss가 줄어드는 속도고려 , 빠르다 ) , Adagrad , RMSProp , Adam
Image Classification Pipeline : Linear Classifier 사용
Original image 에 적용한 것이 아니라 Feature 을 추출한 다음 Linear Classifier 활용 , 여러개의 feature들을 하나의 거대한 column vector로 만든 후 Linear Classifier 에 적용
'딥러닝 공부' 카테고리의 다른 글
[cs231n 강의 정리] Lecture 7 : CNN (0) | 2021.06.20 |
---|---|
[cs231n 강의 정리] Lecture 6 : Training NN part 2 (0) | 2021.05.19 |
[cs231n 강의 정리] Lecture 5 : Training NN part 1 (0) | 2021.05.17 |
[cs231n 강의 정리] Lecture 4 : Backpropagation and Neural Networks part 1 (0) | 2021.05.16 |
[cs231n 강의 정리] Lecture 2 : Image classification (0) | 2021.05.15 |