Loss Functions and Optimization
Lecture 3의 강의목차는 다음과 같다.
1) Loss Function
2) Optimization
Loss Function
이미지 분류 시 어떤 수식에 의해 출력된 score에 대해 불만족하는 정도를 정량화 시킴
손실함수는 W 가 좋은지 나쁜지 알아보는 척도가 된다. 따라서 Loss가 0 일수록 분류를 잘 하는 것이라 할 수 있다.
SVM
Support Vector Machine 즉 SVM 은 2,3차원 이상의 고차원인 초평면에서 결정경계를 기준으로 데이터를 분류한다.
SVM은 허용 가능한 오류 범위 내에서 가능한 최대 마진을 만들어야 한다. 이러한 SVM은 다항 분류에서도 사용하는데 이를 multiclsss SVM이라고 하며, 여기서 사용되는 loss funtion이 hige loss이다.
Multi-class SVM
해당 모델은 이미지 분류에 매우 적합하다.
- 정답 카테고리의 점수가 올라갈수록 Loss가 선형적으로 줄어드는 것을 알 수 있다.
- 정답 스코어는 safety margin을 두고 다른 스코어들 보다 훨씬 더 높아야 한다.
- "얼마나 분류기가 이 이미지를 구리게 분류하는지" 에 대한 정량적 척도가 된다.
- 따라서 Loss가 0이 됐다는 건 클래스를 잘 분류했다는 뜻!
우리가 관심있어 하는건 오로지 정답 스코어가 다른 스코어에 비해 얼마나 더 큰 스코어를 가지고 있는지이다.
(따라서 safety margin=1 인 것에 큰 의미부여 X)
이해를 돕기 위한 퀴즈!
1. car 스코어가 조금 변하면 Loss에는 무슨일이 일어날까? : Loss는 안바뀐다.
2. SVM Loss가 가질 수 있는 최대, 최소값은? : 최소 0, 최대 무한대
3. 모든 스코어 S가 0과 가깝고, 값이 서로 거의 비슷하다면 Loss는 어떻게 될까? : 비슷하니 그 차가 마진을 넘지 못하기에 마진값에 가까운 스코어를 얻게 됨. 이경우에서는 결국 (클래스의 수-1)
- 디버깅 전략으로 많이 사용한다. 트레이닝을 처음 시작할 때 Loss가 C-1이 아니면 버그가 있는 것
4. SVM Loss의 경우 정답인 클래스는 제외하고 더했다. 정답인 것도 같이 계산에 포함시킨다면 어떻게 될까? : Loss 가 1 증가
- 우리가 정답 클래스만 빼고 계산하는 이유는, 일반적으로 Loss가 0이 되야지만 아무것도 잃는게 없다! 고 쉽게 해석이 가능
5. Loss에서 전체 합이 아닌 평균을 쓴다면? : 영향없다. 단지 스케일만 변할 뿐.
6. 손실함수를 제곱항으로 바꾼다면? : 비 선형적으로 바뀜. 손실함수의 계산이 달라져 결과가 달라진다. 이를 squared hinge loss라 한다.
- 손실함수의 종류는 많다. 오차를 어떤식으로 해석할지는 우리의 몫.
- 가령 squared hinge loss는 큰 loss를 더 크게, 아주 작은 loss는 더 작게 해주며 어떤 에러를 trade-off 할지 생각하여 손실함수를 정하게 된다. 둘 중 어떤 loss를 선택하느냐는 우리가 에러에 대해 얼마나 신경쓰고 있고, 그것을 어떻게 정량화 할 것인지에 달려있다.
정규화
일반적인 Loss function의 형태 ⇒ “Data Loss” + “Regularization Loss”
따라서 모델과 데이터의 특성에 따라 Regularization loss를 잘 설계하는 것이 중요하다.
- 정규화(Regularization)의 두가지 역할
1. 모델이 더 복잡해지지 않도록 하는 것
2. 모델에 soft penalty를 추가하는 것 (training dataset에 완벽히 fit 하지 못하도록)
-
- (→ 만약 너가 복잡한 모델을 계속 쓰고 싶으면, 이 penalty를 감수해야 할 거야!)
- loss가 작으면 작을수록, 즉 0이 되면 가장 좋은거다! 라고 생각하였는데, 사실 좋지 않다.
- w가 0이라는 것은 트레이닝 데이터에 완벽한 w라는 것인데, train set이 아닌, test 데이터의 성능이 더 중요하니까요!!
Regularization 의 종류는 아래와 같이 다양하다.
(예제)
Linear Classification (f = wx) 의 관점에서 두 w는 같은 스코어, 즉 ‘Data Loss’는 같다.
- w1 → L1 정규화 선호
sparse 한 것을 고름
‘0’이 많으면 좋다고 판단
- w2 → L2 정규화(=Weight decay) 선호
w2가 norm이 작기 때문
coarse 한 것을 고름 (값이 매끄러운 것)
모든 요소가 골고루 영향을 미치길 바람
ex) parameter vector, Gaussian prior, MAP inference
따라서 분류기의 복잡도, 즉 "복잡하다"는 것을 어떻게 정의할 지에 대한 고민이 반드시 필요하다.
Softmax (Multi-nomial logistic regression)
해당 모델은 딥러닝에서 많이 쓰인다. 앞서 Multi-class SVM loss에서는 스코어 자체에 대한 해석보다는 정답 클래스와 정답이 아닌 클래스들을 비교하는 형식으로 이루어졌다. 하지만 Multi nomial logistic regression의 경우, 스코어 자체에 추가적인 의미를 부여한다.
(예제)
<STEP>
- 스코어 자체를 loss로 쓰는 것이 아닌, 지수화 시킴 (양수화)
- 그 지수들의 합으로 정규화 진행
- -log 씌움
⇒ softmax 함수를 거치게 되면 우리는 결국 확률 분포를 얻을 수 있고, 그것은 바로 해당 클래스일 확률이 되는 것이다.
이해를 돕기 위한 퀴즈!
- softmax loss의 최대 최소는? : 최소 0, 최대 무한대
- Loss가 0이 되려면 실제 스코어는 어떤 값이어야 하는가? : 정답 스코어는 극단적으로 높아야 한다. 지수화 정규화를 거치기 때문에 확률 1을 얻어 loss가 0이 되려면, 정답 클래스의 스코어는 +무한대가 되어야 하고, 나머지는 -무한대가 되어야 한다. 하지만 컴퓨터는 무한대 계산을 잘 못하기 때문에 loss가 0인 경우는 절대 없을 것이다. 유한 정밀도를 가지고는 최대 최소에 도달할 수 없다.
- s가 모두 0 근처에 모여있는 작은 수 일때의 loss는? : log C. 마찬가지로 디버깅 전략
- 그래서 SVM과 softmax의 차이? : SVM의 경우에는 margin을 넘으면 성능 개선에 신경쓰지 않으나, softmax의 경우 1의 확률을 얻으려 할 것이다. 실제 딥러닝에서 성능 차이가 크진 않다.
SVM에서는 정답 스코어와 정답이 아닌 스코어 간의 마진(margins)을 신경썼다. 반면 softmax (crossentropy) 는 확률을 구해서 -log(정답클래스) 에 신경을 쓴다!
우리의 최종 목적지 : 최종 손실함수가 ‘최소’가 되게 하는 W를 구하는 것
How do we find the best W?
💡 Optimization!!!
'전공과목 스터디 > 인공지능' 카테고리의 다른 글
[CS231n] Lecture 4 (0) | 2024.01.27 |
---|---|
[CS231n] Lecture 2 (0) | 2024.01.27 |
[CS231n] Lecture 1 (0) | 2024.01.24 |
[총정리] CS231n (0) | 2024.01.24 |