-
cs231n 3강 정리cs231n 강의 2022. 4. 16. 18:24
▶ 초심공룡을 아는가, 그 모임엔 막내가 정말 치명적이다.
3강의 주제는 Loss function, Optimization 이다.
2강에서 다뤘던 Score function과 Linear Classifier 에 대해 어느 정도 알아야 이해하기 쉽다
1. Loss function
- Score에 대한 불만족하는 수치를 정량화하여 보여주는 함수이다
- 가중치 W가 얼마나 나쁜지를 보여주는 함수이다
- 그 수치가 Loss 값이다
- Loss 값이 작을 때 그 Classifier는 이미지를 잘 분류한거다
- 종류가 2가지 이당
- SVM을 이용한 Hinge loss
- Softmax을 이용한 Cross entropy loss
1) SVM
- 이건 글로 설명이 어렵다
- 예시를 보면서 어떻게 작동하는지 이해하는게 더 쉽다
- 아래의 식이 SVM의 식이다
SVM 식 S_j 는 잘못된 레이블 스코어
S_y_i 는 바른 레이블 스코어1 은 Safety Margin
- Max 괄호 안에 0 과 S_j - S_y_i + 1 중에 더 큰값이 Loss 값이 된다- 이 식을 어떻게 사용하는지 보자
SVM 예시 - 위의 이미지에서 파란 글씨를 따라 보자
- cat 이미지를 기준으로 SVM을 사용하여 Hinge Loss 를 구하면
- S_j = 5.1 또는 -1.7 / S_y_i = 3.2 가 된다
- 이유는 cat 이미지에 옳은 레이블 (S_y_i) 은 cat 레이블이고
- car, frog 레이블은 잘못된 것 (S_j) 이기 때문이다
- 식을 이용해 값을 구하면 Loss(또는 Hinge Loss)는 2.9 이다
- 이런식으로 SVM을 활용한다
Q. 그렇다면 Loss = 0 이 되면 그 Score function에 쓰인 W(가중치)는 특별한가?
A. 응. 아니야~
1-1} Regularization
- 예측 모델(W)이 training data에 완전히 fit하지(overfitting) 못하게 모델 복잡도에 패널티를 부여하는 것이다
- loss function에 Regularization이 들어가면 training error는 더 커지지만 우리의 목적인 test data의 결과는 좋아진다
- data loss는 training data에 맞는 를 찾고
- Regularization은 test data를 잘 설명할 수 있는 일반화된 를 찾으려고 한다.
- data loss와 Regularization은 서로 경쟁을 하면서 data loss와 Regularization에 최적화된 를 찾는다
빨간박스 가 Regularization - 빨간 박스가 Regularization 을 나타낸다
- 일반적으로 L2 regularization을 많이 사용한다
2) Softmax
- 이것도 글로 설명이 어렵다
- 예시를 통해 이해하는게 낫다
- 아래의 식이 Softmax의 식이다
정확히 얘기 하면 괄호안 식이 Softmax function이고
거기에 -Log를 씌운것이 Cross entropy loss 값이다
- 이것도 어떻게 사용하는지 보면
Softmax Classifier 예시 - 파란글씨와 파란박스 는 Softmax function 를 사용하기 전 Score 값들이다
- 빨간글씨와 빨간박스 는 Score를 지수화 한 값들이고
- 초록글씨와 초록박스 는 지수화 한 값들을 또 정규화한 값들이다
- 보라글씨 는 정규화한 값에 -log 를 씌워 구한 Loss (또는 Cross entropy loss) 값이다
3) 정리
- 아래 사진을 보라
결국엔.. - 결국 Loss function은 Score function이 잘 기능하는데 필요한 최적의 W(가중치) 값을 구하기 위해 존재한다
- 위의 이미지를 글로 정리하면
- 로부터 스코어 를 얻기 위해 Linear Classifier를 사용한다
- Loss function을 이용해 모델의 예측값(Score)이 정답값(Label)에 비해 "얼마나 다른지" 를 측정한다
- 모델의 "복잡함"과 "단순함"을 통제하기 위해 Loss function 에 Regularization Term을 추가한다
2. Optimization
- loss값을 최소화 시킬 수 있는 Weight를 찾는 방법이다
- 2가지 전략이 있다
- Random search
- Follow the slope
- Random search는 매우 나쁜 방법으로 사용 안한다
- Follow the slope 방법은 Gradient Descent를 활용한다
- Gradient Descent는 Gradient(기울기)를 따라 내려가면서 Weight를 찾는 것이다
- 그럴려면 Gradient 를 알아야 한다
1) Gradient
- 미분을 사용한다
- 2가지가 있다
- Numerical gradient
- Analytic gradient
-
Numerical gradient :
근사치이고 느리다, 코드로 작성하기 쉽다
- Analytic gradient : 정확하고 빠르다, 코드로 작성하면 에러가 날 가능성이 크다
- Gradient check : Analytic gradient 로 Gradient를 구하고 계산이 정확한지 Numerical gradient 로 확인하는 것이다
2) Gradient Descent
- 반복적으로 Gradient를 평가하고 parameter update를 수행하는 것이다
- 즉, 기울기 하강을 통하여 가장 적절한 W값을 찾아내는 것이다
- 아래그림을 보자
Gradient Descent 예시 - 그림과 같이 Original W 에서 시작하여 흰색 실점(기울기)을 따라 적절한 W값을 찾는다
- 이런식으로 W값을 찾아갈때 도움을 주는 Hyperparameter 가 있다- 그걸 Step_size 라고 한다.
- Step_size는 Loss function에서 Regulation과 같은 역할을 한다.
- 대표적인 모델로는 Stochastic Gradient Descent (SGD) 가 있다
Stochastic Gradient Descent (SGD) 3. Image Classification 의 기존 방식 & 새로운 방식
- CNN이 나오기전 Image classification 파이프 라인이 어떻게 되었는지 보면
- 이미지에 특징들을 추출
- 추출한 특징들을 하나로 이어 줌(Concatenation)
- 거기에 Linear Classifier를 적용
- 결과값 얻음
- 분류 끝
- 기존의 일반적인 방법이었다
- 그 방법들에는 아래와 같이 있다
- Color (Hue) Histogram
- Hog/Sift features
- Bag of Words
- 우리가 접근하는 딥러닝에서는 이미지를 주면 함수가 알아서 결과값 만든다
- 이게 새로운 방식, CNN 이다
- 아래 이미지를 봐라
Image Classification의 기존방식 & 새로운 방식 3강 정리 끝.
'cs231n 강의' 카테고리의 다른 글
cs231n 4강 정리 (0) 2022.04.23 Learning rate(Step size), Back propagation, Activation function딥러닝 네트워크 구조, Weight, Bias (0) 2022.04.23 머신 러닝, 딥 러닝, 지도 학습(분류, 회귀), 비지도 학습, 강화 학습 (0) 2022.04.14 cs231n 2강 정리 (0) 2022.04.09 CNN과 Feature extraction(feat. Padding, Pooling) (0) 2022.04.07