Lecture 3 | Loss Functions and Optimization
Lecture 3 | Loss Functions and Optimization
Loss fuction
loss function을 설명하기 위해 몇 가지 가정을 두었다.
가정 : 3개의 training 이미지가 있고 f(x,W) = Wx라는 분류기에 넣어 3개의 class로 분류하여 3개의 score를 계산하였다.

주어진 데이터의 수식은 다음과 같다.

여기서 x_i는 입력 데이터 (여기서는 3장의 이미지), y_i는 정답 라벨 (여기서는 고양이, 차, 개구리)를 나타낸다.
일반적인 최종loss를 구하는 수식은 다음과 같다.

loss는 각각의 이미지에 score값, 정답라벨을 가지고 loss fuction을 구한 뒤 그것들의 합을 구하고 전체 N개로 나눈 것이다.
Multiclass SVM loss
loss function에는 여러가지가 존재 한다. 그 중 Multiclass SVM loss를 살펴보자.
SVM Formula

Multiclass SVM loss를 계산하는 과정은 다음과 같다.
- 정답 이미지를 제외한 모든 이미지들의 score에서 정답 이미지의 score를 뺀다.
- 그 후 safty margin이라는 기준치를 더 한 후 0과 크기 비교를 한다.
- 0보다 크면 그 값을 그대로 내보내고 0보다 작거나 같으면 0을 내보낸다.
- 각 이미지들의 내보내진 값들을 모두 더한다.
SVM Graph
Multiclass SVM loss의 그래프는 다음과 같다.

Multiclass SVM loss에서 x축은 실제 정답 이미지의 score, y축은 loss를 나타낸다. 이러한 그래프의 모양 때문에 Multiclass SVM loss는 ‘Hinge loss’라고 불리기도 한다.
SVM Example
그럼 Multiclass SVM loss의 실제 계산과정을 살펴보자.

위의 식은 고양이 이미지의 loss를 구한것이다. 먼저 car의 score(5.1)과 정답 이미지의 score(고양이:3.2)를 빼고 safty margin(1)을 더해 0과 비교한다. 또한 다른 이미지인 frog의 score에도 똑같이 적용한다. 이렇게 구한 2.9와 0을 최종적으로 더한다. 이러한 과정을 입력 이미지들마다 수행한다. 수행결과는 다음과 같다.
이미지별 loss
- cat: 2.9
- car: 0
- frog: 12.9
이렇게 각각의 loss를 구한뒤 최종적으로 모두 더한 후 N으로 나눠 평균을 구한다.

최종적으로 우리가 만든 분류기의 성능은 5.27만큼 나쁘다는 것을 보여준다.
SVM Q&A
Q. what happen to loss if car scores change a bit?
A. SVM loss에서는 정답 스코어와 그 외의 스코어들과의 차이를 고려하였다. 따라서 loss는 변하지 않는다.
Q. what is the min/max possible loss?
A. min: 0, max: inf (최솟값은 loss fuction의 값은 최소 0이기 때문에)
Q. At initialization W is small so all s≈0. what is the loss?
A. (class의 개수) x (-1), 위에 경우에는 -3
Q. what if the sum was over all classes?
A. 최종 loss에 1이 더해지게 된다. (정확히는 safty margin)
Q. what if we used mean instead of sum?
A. 각 class들의 loss들은 변하지만 전체 class관점에서 보면 scale의 변화만 준 것이다.
Q. what if we used this?

A. 결과가 바뀐다. (잘 이해가 안됨)
SVM Code

SVM을 구현한 코드는 다음과 같다. 4행을 보면 margins[y] = 0이라는 트릭을 주어 간단하게 정답 이미지를 제외한 나머지의 합을 구하였다.
만약 Loss = 0인 W(가중치)를 찾았을 때 Loss = 0을 만족하는 다른 W도 존재 할까?
정답은 존재한다이다. 그 이유는 앞에서 말했듯이 W는 scale 변화를 하기 때문이다. 예를 들어 살펴보자.

car 이미지의 loss를 구할 때를 살펴보자. Before을 보면 car 이미지의 loss는 0인 것을 확인 할 수 있다. 또한 아래를 보면 기존 W보다 2배를 한 W를 사용하였지만 loss는 똑같이 0이라는 값을 얻는 것을 볼 수 있다.
Overfitting
💡 오버피팅이란?
오버피팅이란 모델이 train data에 적응하게되어 test data에서는 성능을 발휘하지 못하는 상태
위와 같이 loss가 0인 W를 선택하는 것은 모순적인 일이다. 다음과 같은 예시를 보자.



1번 그래프를 보면 train image에 만든 분류기가 완벽히 적응한 것을 볼 수 있다. 하지만 2번, 3번 그림을 보면 test image에서는 많은 loss가 발생하게 된다.
따라서 우리는 train data에서의 성능보다 test data에서의 성능이 좋은 모델을 만드는 것을 목표로 해야한다. 또한 모델은 train data에 적응하지 못하도록 단순해야하며, test data에서도 좋은 성능을 보여야한다.
Regularization
위와 같이 모델이 train data에 적응하지 못하도록 하는 방법중 하나는 Regularization 방법이다. Regularization은 모델을 더 복잡해지게 못하게 하고 모델에 soft penalty를 부여한다.
Regularization의 수식은 다음과 같다.

일반적으로 ℷR(W)는 다음과 같은 것들을 활용한다.

L2 Regularization example

위의 예시는 score값이 같은 가중치 2개의 L2 Regularization을 적용한 예시이다. 여기서 L2는 norm값이 더 작은 w2를 선호하는데 이는 모든 x의 골고루 영향을 미치기 원한다면 L2를 통해 robost하게 될 수 있다는것을 의미한다.
Softmax Classifier (Multinomial Logistic Regression)
Softmax Classifier는 위에서 살펴본 Multiclass SVM loss와 같은 loss function중 하나이다.
Softmax Classifier Formula

전반적인 구조를 봤을 때 Softmax Classifier는 softmax함수에 -log를 취한 것이다.
- Softmax & -Log소프트맥스함수를 사용하면 확률분포를 알 수있다.-log 함수는 단조감소 그래프이므로 증가그래프인 softmax함수를 넣으면 loss의 확률적인 분포를 정규화하여 나타낸다.
Softmax Classifier Example
Softmax Classifier의 과정은 다음과 같다.

- SVM과 마찬가지로 각각의 이미지별로 score값을 구한다.
- softmax함수에 score값을 넣어 확률분포를 만든다.
- 마지막으로 -log함수에 넣어 정규화 시킨다.
Softmax Classifier Q&A
Q. what is the min/max possible loss L_i?
A. min: 0, max: inf (max가 왜 무한대인지 이해가 잘 안됨)
Q. usually at initialization W is small so all s≈0. what is the loss?
A. log(class의 개수)
SVM vs Softmax
지금까지 배운 2개의 loss function을 비교해보자.

두 개의 loss function은 공통적으로 각각의 이미지의 score를 구한다. 큰 차이점이라고 하면 SVM은 정답 score와 정답이 아닌 score의 margin에 집중하고 Softmax는 score들의 확률분포에 더 집중한다.
💡 궁금한 점
cross-entropy loss, softmax, 로지스틱 회귀 용어 정리
Q. Suppose I take a datapoint and I jiggle a bit (chaging its score slightly). what happens to the loss in both cases?
A. SVM의 경우는 일정 선(margin)을 넘기기만 하면 더 이상 성능개선을 하지 않고 Softmax의 경우는 더 좋게 성능을 높이려 할 것이다.
Loss funtion Recap

Optimization
지금까지 loss function을 통해 모델의 loss를 구하는 방법을 배웠다. 우리가 loss를 구하는 이유는 모델이 얼마나 성능이 나쁜지 확인하기 위한 작업이었다. 이제 우리는 모델이 얼마나 나쁜지 알았으니 개선시켜 성능을 올려야한다. 이러한 일은 optimization이라고 한다.
Gradient
optimization은 보통 미분값을 이용한다. 미분 공식은 아래와 같다.

이러한 미분 공식은 손실함수에서 아래와 같이 적용된다.

Gradient Descent
Gradient Descent과정은 다음과 같다.

- W를 임의의 값으로 초기화한다.
- Loss와 gradient를 구한다.
- 가중치를 gradient 반대방향으로 업데이트한다.
Gradient Descent의 code는 다음과 같다.

Stochastic Gradient Decent (SGD)
SGD의 수식은 다음과 같다

SGD는 일반적인 GD에서 minibatch라는 것을 추가한 방법이다.
SGD code

batch
Aside: Image Feature

일반적으로 이미지의 픽셀을 그대로 입력으로 넣는 것은 좋지않다. 따라서 특징벡터를 추출하여 그것을 입력으로 넣는 것을 권장한다.
Feature vector를 사용하는 이유는 아래 그림과 같은 예시를 들수 있다.

좌측에 좌표평면에서는 빨간색 점들과 파란색 점들을 linear classifier를 가지고 구분하기 어렵다. 하지만 좌측의 좌표들을 극좌표계로 옮기면 linear classifier를 가지고 쉽게 구분할 수 있다.
Feature vector example



Syllabus
Youtube
'Deep Learning > cs231n' 카테고리의 다른 글
| Lecture 6 | Training Neural Networks I (0) | 2022.02.05 |
|---|---|
| Lecture 5 | Convolutional Neural Networks (0) | 2022.01.28 |
| Lecture 4 | Introduction to Neural Networks (0) | 2022.01.21 |
| Lecture 2 | Image Classification (0) | 2022.01.14 |
| Lecture 0 | CS321n (0) | 2022.01.14 |





