2. Artificial Intelligence/Stanford Univ. CS231n

[Stanford Univ: CS231n] Lecture 3. Loss Functions and Optimization

뉴하늘 2025. 4. 17. 18:13
728x90

본 포스팅은 Stanford University  School of Engineering의 CS231n: Convolutional Neural Networks for Visual Recognition을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.

https://youtu.be/h7iBpEHGVNc?si=kJoPIdD7yH-Yi-zk

 

 

https://github.com/cs231n/cs231n.github.io

 

GitHub - cs231n/cs231n.github.io: Public facing notes page

Public facing notes page. Contribute to cs231n/cs231n.github.io development by creating an account on GitHub.

github.com

 

1. Loss Function

 모델이 얼마나 잘 작동하는지를 수치로 측정하기 위해 손실 함수가 필요하다. 일반적으로 분류(classification) 문제에서 사용되며, 예측 결과가 정답과 다를수록 손실이 커진다.

 

SVM Loss

  • 정답 클래스 점수 s_yi가 다른 클래스 점수 s_j보다 일정 margin(보통 1)만큼 높아야 한다.
  • 각 잘못된 클래스에 대해 max⁡(0, s_j − s_yi + 1)의 손실을 부여한다.
  • 전체 손실은 모든 잘못된 클래스에 대한 합으로 계산된다.

Softmax Loss

 다른 대표적인 손실 함수는 Softmax Loss이다. 이 함수는 점수를 정규화된 확률로 변환한 뒤, 정답 클래스의 확률이 높아지도록 학습을 유도한다. Softmax Loss는 다음과 같이 정의되고, 이는 Cross-Entropy Loss와 동일하다.

  • 점수를 확률로 변환한 뒤, 정답 클래스의 확률을 최대화하도록 학습한다.
  • 확률은 softmax 함수를 통해 얻으며, 손실은 정답 클래스의 log 확률의 음수로 계산한다.
  • 이는 cross-entropy 손실 함수와 같다.

 Q: Suppose I take a datapoint and I jiggle a bit (changing its score slightly). What happens to the loss in both cases?

 

Ans: SVM loss는 오직 정답과 그 외 클래스의 margin이 얼마나 되는지에만 관심이 있기 때문에 다른 클래스의 score가 조금 바뀐다고 해서 loss 값이 바뀌지 않는다. 하지만 Softmax Loss는 언제나 정답 class에 해당하는 확률은 1로 만드려고 노력한다. 따라서 정답 score가 충분히 높고, 다른 클래스 score가 충분히 낮은 상태에서도 softmax는 최대한 정답 class에 확률을 몰아 넣으려고 할 것이고 정답 class는 무한대로, 그 외의 class는 음의 무한대로 보내려 하게 된다. 이것이 두 Loss Function 간의 흥미로운 차이점이다.

 

2. Regularization

 단순히 훈련 데이터에 대해 잘 작동하는 모델은 테스트 데이터에 과적합될 수 있다. 이를 방지하기 위해 Regularization Term을 Loss Function에 추가한다.

 

 가장 보편적인 것은 L2 Regularization(Weight Decay)이다. L2 Regularization의 주요 아이디어는 가중치 행렬 W의 euclidean norm에 패널티를 주는 것이다. 그리고 L1 regularization은 L1 norm으로 W에 패널티를 부과한다.

 

 L1 regularization과 L2 regularization을 사용하는데 이 둘의 차이를 기억하는 것이 중요하다. 

 

x는 4줄짜리 벡터이고, 여기에 두개의 서로 다른 W에 대해 생각해 보도록 하자. x = [1 1 1 1] 

W중 하나는 처음에만 1이 있고 나머지 세 원소는 0이다. w1 = [1 0 0 0]

다른 하나는 원소가 모두 0.25이다. w2 = [0.25 0.25 0.25 0.25]

 

 이걸 가지고 Linear classification을 할때 x와 w의 dot product를 구하게 된다. 그러면 Linear Classification의 관점에서 w1와 w2는 같다.(dot product 연산 값이 같기 때문에)  여기서 문제는 w1, w2중 L2 regression이 더 선호하는것은 어떤 것인지이다.

 

 정답은 L2 regression은 w2를 더 선호한다. 왜냐하면 L2 regression에서는 w2가 더 norm이 작기 때문이다. Linear classification에서 W가 의미하는 것은, "얼마나 x가 Output Class와 닮았는지" 이다. 그러니 L2 Regularization이 말하고자 하는것은 x의 모든 요소가 영향을 줬으면 하는 것이다

 

 반면 L1 Regularization의 경우에는 정반대이다. L1 Regularization을 쓰게 되면 w2보다는 w1을 더 선호하게 된다. L1 Regularization은 가중치 W에 0의 갯수에 따라 모델의 복잡도를 다루기 때문이다. 그러니 "복잡도" 을 어떻게 정의하느냐, 그리고  L2 Regularization은 "복잡도"을 어떻게 측정하느냐는 어떤 문제를 가지고 있으냐에 따라 다르다.

 

 따라서 어떤 문제와 모델이 있고 데이터가 있을 때 이 문제에서 "복잡하다"는 것을 어떻게 정의할 지를 반드시 고민해야 한다.

3. Optimization

 

 딥러닝의 Train 목표는 모델의 가중치인 를 조정하여 손실 함수를 최소화하는 것이다. 일반적으로 Gradient 기반의 최적화 방법(gradient-based optimization)이 사용된다. 

 

 가장 안좋은 방법은 Random search이다. 임의의 가중치를 고르고 이를 통해 loss를 구한 뒤 현재까지 구한 loss보다 더 작으면 현재 loss를 저장하는 방식이다. 

 두 번째 방법은 수치적 기울기(Numerical Gradient) 방법이다. 기울기를 직접 계산하는 것이 아니라 근사적으로 구하는 방법이다. 이 방법은 계산 비용이 매우 크고 정확하지 않을 수 있다.

 세 번째 방법은 해석적으로 푸는 방법(Analytic Gradient)이다. gradient를 나타내는 식이 무엇인지만 먼저 찾아내고 그걸 수식으로 내타내서 한번에 gradient dW를 계산해 버리는 것이다. 

 

4. Gradient Descent

 

 Gradient Descent는 기울기를 사용해 Loss을 줄이는 방향으로 parameter W를 업데이트하는 방법이다. 하지만 현실적으로 전체 데이터를 대상으로 Gradient Descent를 하게 되면 시간과 비용이 많이 들기 때문에 Mini-batch를 활용한 Stochastic Gradient Descent(SGD)를 많이 활용한다. SGD는 전체 데이터를 나누어 Mini-batch단위로 학습하여 parameter를 업데이트하는 최적화 알고리즘이다. 

 

 

 CNN이 발전하기 전에는 Image로부터 Feature를 추출해 계산하는 방법을 사용하였다. Image Features와 관련된 주요 개념인으로는 Motivation, Color Histogram, Histogram of Oriented Gradients (HOG), Bag of Words (BoW)이 있다.

 

 Image Features란 이미지에서 의미 있는 정보를 추출해내는 값 또는 벡터를 말한다. 이미지는 단순히 픽셀들의 배열이지만, 이를 컴퓨터가 이해할 수 있도록 형태, 색상, 질감, 방향성 등 특징을 벡터로 표현한다.

아래 그림은 특징 변환 중 하나의 경우로 데이터의 좌표계를 변환한 것이다. Linear Classifier로 분리할 수 없던 원래 데이터가 변환을 진행한 후 선형으로 분리가 가능하게 바뀐것을 알 수 있다.

 

 이미지에는 극좌표계가 존재하지는 않지만 극좌표계로 변환하는 것이 일종의 특징 변환이라 생각해볼 수 있다. 이것은 실제로 Classifier에 Raw 이미지를 넣는것 보다 성능이 더 좋아질 수도 있다.

 Color Histogram은 이미지의 색 분포를 통계적으로 나타낸 것이다. 이미지의 각 픽셀의 색상값(RGB 또는 HSV 등)을 일정한 구간(bin)으로 나누고, 각 구간에 속하는 픽셀의 수를 세어 히스토그램 형태로 나타낸다.

 Histogram of Oriented Gradients(HoG) 경계선(edge) 방향의 분포를 히스토그램으로 표현한 특징이다. 이미지의 각 위치에서 gradient를 계산하고, 이들의 방향을 구간별로 나누어 히스토그램으로 표현한다. 

 Bag of Words는 NLP에서 나온 개념이다. Text에서 단어의 빈도만 고려하여 문장을 벡터로 표현하는 방식이다. 이를 이미지에 적용한 것이 Bag of Visual Words 또는 Bag of Features라고 부른다. 이미지에서 local features를 추출하고 이들을 모아 Clustering을 진행한다. 이후 각 이미지에 대해 visual word들의 등장 빈도를 세어 Histogram vector로 표현한다.

728x90