본문 바로가기

AI

cs231n Deep Learning for Computer Vision 3.Loss Functions and Optimization

지난시간에 Linear classifier에 대해 살펴보았다.

 

이제 해야될 것은

  1. Define a loss function that quantifies our unhappiness with the scores across the training data.
  2. Come up with a way of efficiently finding the parameters that minimize the loss function. (optimization)

 

 

1. Loss Function이란?

: A loss function tells how good our current classifier is.

 

Multiclass SVM loss와 Softmax classifier를 한개씩 살펴보자

 

 

 

1.1 SVM Loss

아래와 같이 3개의 카테고리로 분류하는 예시를 들어보자.

각 사진에 대해 3개의 카테고리별 score가 다음과 같이 나왔다고 가정하자.

고양이 사진에 대해서는 cat의 점수가 높게 나와야 좋은것이다.

 

따라서 cat score가 다른 score에 비해 높게 나와야 한다.

즉 다른 카테고리 score 보다 cat score가 클수록 좋다. => 다른 카테고리 score - cat score가 작을수록 좋음.

여기에 +1 더하는건 크게 신경 안써도 된다.

 

이렇게 다 구해서 평균내면 아래와 같이 5.27로 나온다.

 

 

car 이미지의 경우에는 score가 4.9로 가장 높게 예측했기에 loss가 0이다.

즉 맞는 분류 했을 경우에는 다른 카테고리의 score 값과의 차이는 여기서 무의미해진다.(즉 맞추면 무시하게 된다)

하지만 근사한 차이로 score win해서 맞출 경우에는 구별이 안될 수 있기에 softmax를 보자.

 

1.2 Softmax classifier

 소프트맥스의 경우에는 exponential한 값을 normalize하여서 확률분포 형태로 나타낸다.

따라서 앞서 살펴본 multiclass svm loss와는 차이가 있다.

 

 

 

 

 

 

그렇다면 loss funciton을 통해 나오는 loss를 어떻게 최소화 할 수 있을까?

=> Optimization

2. Optimization 

2.1 random search : => 성능은 그닥 좋지 않음.

2.2 Follow the slope : 내가 서 있는 위치의 경사를 알면 그쪽 방향으로 가면 된다.

 여기서 2가지 접근법 : numerical 방법으로 (예: 0.0001등을 더하여 loss가 바뀌는 것을) 직접 계산해서 구하는 방법. 또는 analytic gradient를 통해(미분)

 

즉, Numerical gradient는 approximate, slow, easy to write. 그리고 Analytic gradient는 exact, fast, error-prone(발생하기 쉬운 오류)

따라서 In practice: Always use analytic gradient, but check implementation with numerical gradient. (This is called a gradient check)

 

 

 

 

 

느낀점 : 사전에 다른 강의를 들어서 대략은 알고 있던 내용이었지만, 3강부터 조금 난이도가 있는 느낌. 그리고 중간중간 학생들의 질문들은 도움이 많이 된다. 그리고 2017년 버전의 강의는 말이 정말 빠른듯하다..ㅎㅎ  (+ 과제가 생각보다 디테일하고 쉽지 않다. 따라서 도움은 많이 된다. KNN하나 하는데 한 3시간 걸린듯.. 답은 다 찾을 순 있으나 역시 직접 해봐야...👍)

 

 

Lecture 3 | Loss Functions and Optimization - YouTube