image classification 작업하기 좋은 몇가지 손실함수를 이용해서 모델의 예측값이 정답값에 비해 얼마나 별론지 측정한다. 그리고 통제하기 위해 regularization항을 추가, 최종 손실함수가 최소화가 되게 하는 W를 구하기 위한 Optimization까지 배울 수 있다.
1. Loss Function
최적의 W 구하는 방법
⇒ 최적의 알고리즘과 최적의 W를 결정하기 위해서는 만든 W가 좋은지 나쁜지를 정량화 할 방법이 필요하다.
손실함수 = W를 입력받아서 각 score 확인하고 이 W가 지금 얼마나 나쁜지 정량적으로 말해주 는 것
▪ 손실함수 L_i 정의 :
예측함수 f와 정답 값 Y를 입력으로 받아서 train 샘플을 얼마나 나쁘게 예측하는지를 정량화 시킨 값을 제공 최종 손실(Loss)인 L은 전체 데이터 셋의 N개 샘플들의 각각에 대한 Loss 평균이 됨.
⇒ W 공간을 검색하여 train 데이터의 Loss를 최소화하는 W를 찾음.
2. SVM loss
: 여러 클래스를 다루기 위한 이진 SVM의 일반화된 형태 (Multi Class SVM Loss)
[Loss L_i 구하는 방법]
① 정답 카테고리 Y_i 제외한 나머지 카테고리 Y의 합을 구함
② 정답 카테고리의 score와 나머지 카테고리의 score를 각각 비교
- sj : 정답이 아닌 클래스 score (나머지)
- syi : 정답 클래스 score
③ 만약 정답 카테고리의 score > 나머지 카테고리의 score 면서,
그 격차가 safety margin 이상이라면,
Loss = 0 (정답 카테고리 score가 다른 카테고리들보다 훨씬 크다는 것 의미)
④ 이런 식으로 나머지 카테고리의 score값들을 모두 합치면
그것이 바로 한 이미지의 최종 Loss가 되는 것
⑤ 그리고 전체 train 데이터 셋에서 Loss들의 평균을 구함 (=Average Loss)
max(0,s_j - s_yj + 1)
s_yj : 정답 카테고리의 score
s_j : 나머지 카테고리의 score
1 : safety margin
"Hinge Loss" (그래프 모양 때문에)
x축은 s_yj (실제 정답 카테고리 score), y축은 Loss 값
⇒ 정답 카테고리의 점수가 올라갈수록⬆ Loss가 선형적으로 줄어든다.
이 Loss는 0이 된 이후에도 safety margin을 넘어설 때까지 줄어든다.⬇
Loss = 0 : 클래스가 잘 분류됐다 뜻
∴ 정답 카테고리 score가 나머지 카테고리 score보다 높으면 좋다 !
정답 score는 safety margin을 두고 다른 스코어들 보다 훨씬 더 높아야 함
(충분히 높지 않다면, Loss가 높아지게 됨)
각각 이미지에 대해 Loss값 구하고
전체 train set에서 그 Loss값들의 평균을 구하면
(2.9 + 0 + 12.9)/3 = 5.27 : 전체 traini set의 최종 Loss
→ 우리의 분류기가 5.3만큼 이 train set에서 나쁘게 분류하고 있다. (”정량적 지표")
※ safety margin = 1 설정, 1이라는 사실 별로 중요하지 X
우리가 궁금한 것은 여러 스코어 간의 상대적인 차이이므로,
오로지 정답 스코어가 다른 스코어에 비해
얼마나 더 큰 스코어를 갖고 있는지에 대해 집중해야한다.
Q : 만약 Score가 0에 근사해지고 값이 서로 거의 비슷하다면 Loss는 어떻게 ?
A. Loss = C(Class의 수) - 1 값을 얻을 것이다.
Q : Loss의 최대, 최소값 ?
A. Loss의 최솟값은 0이고, 최댓값은 무한대이다.
Q. sum 말고 mean을 사용한다면?
A. 큰 문제가 되진 않지만, 평균 값을 사용하기 때문에 Scale이 작아지는 변화가 있을 수는 있다.
Q. Loss 함수를 제곱항으로 바꾼다면?
A. 결과 달라질 것이다.
좋은 것과 나쁜 것 사이의 trade-off를 비선형적인 방식으로 바꿔주는 것이므로
그렇게 된다면 손실함수의 계산 자체가 바뀌게 된다.
하지만 결과가 좋지 않은 것들은 더 좋지 않게 나와서 구분하기가 좋다.
hinge loss는 조금 잘못된 것과 많이 잘못된 것 간의 차이가 별로 나타나지 않을 것이다.
⭐ Q. Loss가 0이 되게 하는 W는 unique한 것인가?
A. 유니크 하지 않다. W는 여러개 존재 가능
2W 같이 W의 스케일이 변해도 Loss는 똑같기 때문이다. (0이 됨)
⇒ train 데이터에 집중적으로 맞추려다보면 Overfitting되는 결과를 초래
(train 데이터에 대한 성능 관심 x, test 데이터에 적용했을 때의 성능에 관심 ㅇ)
3. Regularization
Loss함수에 Regularization 항을 추가 → 모델이 더 단순한 W를 선택하도록 도와줌
(예측 성능이 더 좋기 때문)
Data Loss : 분류기가 training data 핏하게 함
일반적으로 Regularization은 L2를 사용 = Weight decay
▪ 가중치 행렬 W에 대한 Euclidean Norm
L2 Regularization
- L2는 분류기의 복잡도를 상대적으로 w1, w2 중 어떤 값이 더 매끄러운지 측정 (결과적으로 w2를 선호)
- x의 특정 요소에 의존하기보다는 x의 모든 요소가 골고루 영향을 미치길 원하면 L2 Regularization을 통해 더욱 단단
- W가 어느 쪽에 치중되어 있을 때 = → 복잡, W의 요소가 퍼져있을 때 → 단순
↕ (정반대)
L1 Regularization
- L1 분류기는 가중치 w의 0의 갯수에 따라 모델의 복잡도를 다룸 (w1을 선호)
- W에 0이 아닌 요소 많음 → 복잡 , W에 0이 많음 → 단순
4. Softmax
=(Multinomial Logistic Regression)
Multinomial Logistic Regression의 손실함수는(Softmax) 스코어 자체에 추가적인 의미를 부여함.
(스코어를 가지고 클래스별 확률 분포 계산)
softmax 함수는 스코어를 전부 이용하는데, 스코어들에 지수를 취해서 양수로 만들고
그 지수들의 합으로 다시 정규화 시킴
softmax 함수를 거치게 되면 확률분포를 얻을 수 있음
⇒ 그것은 바로 해당 클래스일 확률이 됨 (확률이므로 0~1의 값이고 전체합은 1)
Softmax의 Loss = Cross-entropy Loss " - log (정답클래스확률) "
softmax의 최소값 : 0
softmax의 최대값 : 무한대
(정답 클래스에 대한 Log 확률.. Log(1)=0, -Log(1)=0)
⇒ Loss를 0으로 만드려면 입력값 즉, 정답 스코어 값은 극단적으로 높아야한다. (무한대 가깝 게)
<두 손실함수 비교>
Softmax vs SVM
Softmax | SVM |
- 확률값으로 구해서 정답클래스(-log)에 신경 - cross-entropy loss는 연속적으로 변화 (P=1 될때까지 학습 계속) |
- 정답 스코어와 나머지 스코어간의 margin를 신경 - 일정 선(=margin)을 넘기만 하면 더 이 상 성능개선에 신경 X |
어떻게 실제 Loss를 최소화하는 W를 찾을 수 있을까?
5. Optimization
: 최적화
(산과 계곡이 있는 골짜기 거닌, 엄청 큰 계곡 걷고 있는 것과 같음
산, 계곡 = 파라미터 W, 우리가 있는 곳 (높이) = Loss,
Loss는 W에 따라 변하게 되고, 우리는 W를 찾아야 한다.
= 골짜기의 밑바닥을 찾아내는 것 )
① 임의 탐색(random search) ⇒ 매우 안좋은 방법
임의로 샘플링한 W들을 많이 모아놓고 Loss를 계산해서
어떤 W가 좋은지를 살펴보는 것이다.
② 경사하강법 (Gradient Descent)
- slope(기울기) : 1차원 공간에서 어떤 함수에 대한 미분 값
- gradient : 벡터 x의 각 요소의 편도함수들의 집합
(gradient의 각 요소가 알려주는 것은 우리가 그쪽으로 갈 때 함수 f의 경사가 어떤지
즉, 우리가 특정 방향으로 조금 이동했을 때 Loss가 어떻게 변하는지 )
⇒ 유한 차분법으로 계산이 가능 → 이런 식으로 계산 x
(매우 느림, 하나의 gradient를 얻기 위 해 수천개의 함수값들을 일일이 다 계산 필요)
∴ Loss를 미분하여 gradient를 구함
Stochastic Gradient Descent(SGD)
데이터가 너무 크면 Loss 구하기에 수백만번의 계산이 필요 → 매우느리므로 SGD 사용
전체 데이터 셋의 gradient와 loss를 계산하기 보다는
Minibatch라는 작은 train 샘플 집합으로 나눠서 학습
(Minibatch는 보통 2의 제곱수 사용)
→ Loss의 전체 합의 "추정치", 실제 gradient의 "추정치"를 계산
6. 이미지 특징
이미지가 있으면 여러가지 특징 표현을 계산, 이런 특징 표현은 이미지의 모양새와 관련
즉, 특징 표현들을 연결시켜 하나의 특징 벡터로 만들고 그 특정벡터를 입력값으로 씀
데이터의 좌표계를 바꿈으로써 선형으로 분리가능, 이런 기법들은 문제를 풀 수 있도록 하려면 어떤 특징 변환이 필요한가를 알아내는 것
(특징변환의 예 : 컬러 히스토그램)
이미지에서 Hue 값만 뽑아 해당하는 픽셀들을 양동이에 넣고, 양동이들로 이미지의 색을 유추 가능
'Study > CS231n' 카테고리의 다른 글
[CS231n-Lecture 2] Image Classification (0) | 2023.05.18 |
---|---|
[CS231n-Lecture 1] Introduction to Convolutional Neural Networks for Visual Recognition (1) | 2022.05.13 |
댓글