CS231n - Lecture(3)

­이승환·2021년 7월 18일
0

Computer Vision

목록 보기
3/3

CS231n 3강요약

Totay's Goal


  • Loss function 이란?
  • Regularization 이란?
  • SoftMax 와 SVM
  • Optimization 이란?

1. Loss Function

Loss Function 을 번역하면 손실함수 이다. 2강에서 다루었던 Hyperparameters에 대해서 손실함수는 실제 결과와 얼마나 차이가 나는지 평가하는 척도라고 생각하면 이해하기 쉽다.

손실함수에는 여러가지 종류가 있는데 강좌에서 처음으로 소개하는 것은 Multi Class SVM Loss 이다. (이하 SVM)

SVM은 각 클래스에 대해 점수를 매긴다면 그 점수가 정답과 얼마나 차이가 나는지에 초점을 둔 함수이다.

아래 그림을 보자.

테이블에서 행은 분류 타겟(라벨) 이고, 필드는 데이터(사진) 이라고 생각하자. 각 값은 Score(점수) 로서, 가장 높은 값을 가지는 타겟으로 분류하는 것이라고 이해하면 된다. 결과적으로 차를 제외한 나머지는 다 틀린 결과 테이블이라고 이해하면 된다.

그렇다면 우리가 구한 하이퍼파라미터(분류기) 가 얼마나 잘 작동하는지 SVM을 이용하여 수치화해보면 어떤 결과가 나올까?

결과를 알아보기에 앞서서 SVM 공식에 대해서 살펴보자.

여기서 어떤 L_i 를 쓰느냐에 따라서 또 L값이 달라질 것이다. SVM 공식은 아래와 같다.

위 공식이 의미하는 바는 정답에 대한 스코어가 높을 수록 Loss Function 은 0 에 가까워지게 되고, 그 반대일 수록 Loss Function 은 Infinite 한 결과를 같게된다. 는 것이다.

예제를 한번 확인해 보자.

여기서 몇가지 생각해볼 것이 있다. 정답과 함께 비교해보겠다.

Q1. Car Score 값이 변하게 된다면 Loss Value 는 어떻게 될까?

score 간에 상대적인 차이가 중요하므로(max) 큰 영향은 없다.

Q2. Loss 값의 최솟값과 최댓값을 구하면 어떻게 될까?

(0, Inf)

Q3. 초기 W가 0에 가까우면 모든 score값은 0과 비슷해진다. 이때 loss 를 구해보면?

class - 1이 된다. 이는 (0 - 0 + 1) * (numLabel - 1) 이기 때문

Q4.L_i 값을 구하는데 합을 구할때 j를 포함한 모든 값을 다 더하게 되면?

(1, Inf) 가 된다.

Q5.Loss 를 계산하는데, 합 대신 평균을 사용하게 되면?

큰 상관이 없다.

Q6. 손실함수를 제곱을 취하게 되면?

값이 완전히 달라진다. 이를 활용한 다양한 로스 함수가 존재하기도 한다.

Q7. W 는 정답이 1개 뿐일까?

답은 Nope!, 따라서 분류기(w)는 test data에 적용했을 때, 가장 잘 성능이 측정되는 것을 고르면 된다.


2. Regularization 이란?

training set 에 model 이 완전하게 fit 하지 못하도록 복잡도를 계선하거나 차수를 낮추는 것을 말한다. 아래 그래프를 보고 확인해보자.

위 그래프에서 각 사각형과 동그라미가 데이터라고 가정해보자(동그라미가 train set, 사각형이 test set) 초록색 선의 경우 차수도 낮고, 그만큼 연산에 모델 복잡도가 줄어들게 되고 정답과 근사한 1차함수 형태의 분류기가 될 수 있다. 파란색 선의 경우 train set에 정확하게 학습되었을 지라도 test set 측정에는 문제가 될 수도 있다는 것을 단번에 이해할 수 있다.

위를 위해서 정규화를 사용한다고 할 수 있고, 수식은 아래와 같다.

정규화에는 종류가 많다.

1. L1 Regularization
2. L2 Regularization
3. Max norm Regularization
4. Dropout
5. Batch Normalization...

위 종류들은 향후 수업에서 종종 마주치게 될 것이다.


3. Softmax 함수

위 SVM이 아닌 다른 Loss function 으로는 Softmax 함수가 있다.

두 함수의 가장 큰 차이점은 Multi Class SVM 의 경우는 정답 score와 측정 score의 차이(Gap)에만 관심이 있었다면, Softmax의 경우는 그 차이를 모두 수치화 하여 해석을 했다는 점이다.

Softmax 를 구하는 방법은 아래와 같다.

  1. 먼저 각 클래스에 score 를 계산한다.
  2. 모든 클래스의 score 를 계산하고, 각 클래스마다 확률식으로 변경한다.
  3. 정규화를 통해 score 를 0 ~ 1 의 값으로 변경해준다.

식은 아래와 같다.

* s_j 는 분류기를 통해 예측한 클래스별 점수
* s_y_i 는 해당 클래스의 정답 점수
* 지수형을 쓴 이유는 양수로 바꾸어 주기 위해서

위에서 Softmax 는 결과를 해석 한다고 했다. - Log 를 취함으로써 단조 감소함수 형태로 바꾸어 0 ~ 1 사이로 나온 Probabilities 를 해석하여 가능도가 작을 수록, 분류기의 성능이 떨어짐을 측정해준다는 것을 확인할 수 있다.


4. Optimization

최적의 W를 찾는 방법은 무엇일까? Random 한 W 값을 토대로 찾아 갈 수 있겠지만 이는 굉장히 오랜 시간이 걸릴것이다.. 특히 이미지학습과 같이 데이터가 많다면.. 너무 끔찍하다.

여기서 Gradient Descent 방식에 대해서 소개할 수 있다.

gradient descent 방법은 steepest descent 방법이라고도 불리는데, 함수 값이 낮아지는 방향으로 독립 변수 값을 변형시켜가면서 최종적으로는 최소 함수 값을 갖도록 하는 독립 변수 값을 찾는 방법이다.

gradient descent는 함수의 최소값을 찾는 문제에서 활용된다.

함수의 최소, 최댓값을 찾으려면 “미분계수가 0인 지점을 찾으면 되지 않느냐?”라고 물을 수 있는데,

미분계수가 0인 지점을 찾는 방식이 아닌 gradient descent를 이용해 함수의 최소값을 찾는 주된 이유는

우리가 주로 실제 분석에서 맞딱드리게 되는 함수들은 닫힌 형태(closed form)가 아니거나 함수의 형태가 복잡해 (가령, 비선형함수) 미분계수와 그 근을 계산하기 어려운 경우가 많고,
실제 미분계수를 계산하는 과정을 컴퓨터로 구현하는 것에 비해 gradient descent는 컴퓨터로 비교적 쉽게 구현할 수 있기 때문이다.
추가적으로,

데이터 양이 매우 큰 경우 gradient descent와 같은 iterative한 방법을 통해 해를 구하면 계산량 측면에서 더 효율적으로 해를 구할 수 있다.

좀 더 생각해보자. 모든 Data에 대해서 모든 W 를 일일이 작업하기에는 또 시간이 오래걸린다. 따라서 우리는 묶음(Mini Batch)를 활용해 Gradient Descent 방식을 사용하는데 이를 Stochastic Gradient Descent 라고 부른다.

보통 2^n 를 사용한다.


5. Image Features & ConvNets

최근 Image Classification 에 대한 연구는 두 가지 방향으로 이루어진다.

  1. 특징 표현을 계산하고 미리 찾은다음 Linear Classification 입력에 넣어주는 방법
  2. 입력 이미지 차제를 Neural Networks 에 대입하는 방법

두 가지 방법의 차이점은 Feature Extractor를 고정할 것인가, 아닌가 이다.

특징을 추출하는데 자주 사용되는 방법은

1. Color Histogram
2. Histogram of Oriented Gradients(HOG)
3. 좌표계 변경

과 같다고 한다. 이에 대해서는 추후 강좌에서 소개될 예정이다.

실제 제조업 현장에서 사용하는 여러가지 MLDL 패턴을 확인해본 결과 의외로 1. 에 해당하는 방법이 많은 것 같다. HoG 또한 깃허브 Line Departure 와 같이 차선 인식에 굉장히 유용하게 사용된 알고리즘인 것으로 알고있다. (경험해봤다)

profile
Mechanical & Computer Science

0개의 댓글