본문 바로가기

강의/cs231n

CS231n - Lecture3

안녕하세요. 이번 시간에는 CS231n Lecture3를 보도록 하겠습니다.

* 지난 번에 올린 자료를 보니 영상은 2017년인데 강의 slide는 2020년으로 되어 있어 이번 글부터 2017년으로 바꾸었습니다.

 

참고 자료는 다음과 같습니다.

 

강의 동영상

www.youtube.com/watch?v=h7iBpEHGVNc

 

강의 노트 (Lecture 3)

cs231n.stanford.edu/slides/2017/cs231n_2017_lecture3.pdf

 

이번 강의에서는 Linear Classification과 Optimization에 대해 배웁니다. 우선 Linear Classifcation은 KNN과 달리 Linear Classification은 Parametric Approach가중치 값 W가 있습니다.

위의 그림을 보면 f(x,W)에서 x가 input image가 되고 W는 output을 만들기 위해 사용되는 가중치 값입니다. 즉, W와 x를 내적곱하고 bias인 b를 더하여 어떤 그림인지 score를 매겨서 제일 높은 점수가 나온 것으로 판정하게 됩니다. 여기서는 Dog score가 제일 높으므로 기계는 'Dog'라고 이 사진을 분류합니다. 이는 잘못 분류된 것으로 어떻게 수정할 수 있을까요?

 

위의 슬라이드를 보면 loss function을 정의하고 loss function을 최소화하는 parameter를 찾아야 한다고 합니다. 여기서 optimization은 loss function을 최소화하는 parameter를 찾는 것을 말합니다. loss function은 우리가 모델 결과에 대해 주는 점수로 W를 평가하는데 사용되기도 합니다. loss이기 때문에 모델이 잘못 예측할 수록 더 큰 값을 주게 될 것입니다(물론 정의에 따라서 달라질 수 있습니다.)  이를 기반으로 우리는 W값을 수정하게 됩니다. 따라서 적절한 loss function을 잡아야 W를 올바르게 수정하게 됩니다.

 

위의 슬라이드는 Multiclass SVM loss입니다. hinge loss가 적용되며, 이는 정답인 클래스의 score가 오답은 클래스인 경우의 score보다 몇 점 이상 높은 경우 전부 0으로 loss를 처리하는 것입니다. 즉, 정답인 class 쪽으로 점수를 높게 나오게 하되, 차이가 어느 정도 난다면 그 이상으로 학습을 시키지 않는 것인데, 이는 margin을 만드는 것이라 할 수 있습니다.

 

위의 슬라이드를 예시로 참고하시면 될 것 같습니다.

추가적으로 강의에서 loss를 대략적으로 짐작할 수 있어야 한다고 합니다. 이는 결과값 추정이 가능하기 때문에 debugging에 유용하기 때문입니다. 예를 들어, w가 작아질 때 위의 loss에서 loss는 class 개수 -1로 될 것인데 이는 모든 class의 score가 0에 가까워지기 때문입니다. 

그리고 loss는 과제, 목표에 따라 달라져야 하기 때문에 어떤 task에서는 Multiclass SVM loss보다 다른 것을 쓰는 것이 더 나을 수 있습니다.

 

다음은 Regularization에 대한 설명입니다. 이는 W를 좀 더 단순하게 만드는 것입니다. L2는 여러 W에 값을 분산시켜서 W값을 줄이며, L1는 특정 W값만 작동하도록 하여 W의 sparsity를 만듭니다. Elastic net은 L1, L2를 융합한 형태입니다. 영상에서는 L2의 경우 feature 기능을 잘 모를 때, L1의 경우 feature와 종속변수의 관계가 명확할 때 사용하면 좋다고 합니다. 가령, 직원의 봉급을 종속변수로 할 때 feature로 직급, 근속년수 등의 변수가 온다면 종속변수와 feature의 관계가 명확하기 때문에 L1을 사용해도 될 것입니다.

 

W를 단순하게 만드는 것은 아래 그림을 보면서 설명하도록 하겠습니다.

위의 그림을 보면 초록선은 약 6차원의 선으로 구성되있는 반면 빨간색은 1차원의 직선으로 구성되어있습니다. 점들이  train 데이터라고 할 때 초록선이 빨간선에 비해 train 데이터를 잘 설명하고 있습니다. 하지만 test 데이터의 분포는 train과 다를 것이기 때문에 초록선은 train에 overfitting 된 것으로 이를 방지하기 위해 regularization으로 W를 단순화하여 초록선을 빨간선으로 만드는 것이라고 생각하면 되겠습니다.

 

다음은 Optimization에 대한 설명입니다. Optimization은 loss를 최소화하는 W를 찾는 과정입니다. numerical과 analytic 방식이 있는데, numerical의 경우 W 원소 각각에 대해 기울기값을 계산하는 방법입니다. 이렇게 각 원소들에 대해 모두  기울기를 계산하여 다차원으로 만들게 되면 이를 gradient라고 합니다. 여기서 gradient는 function이 가진 가장 가파른 경사의 방향은 알려주지만 얼마나 가야할지는 알려주지 않습니다. 여기서 얼마나 가는지는 learning rate로 결정하게 됩니다. 그리고 gradient의 negative 방향으로 W를 update를 하는데 이는 loss를 줄이려 하기 때문입니다.

 

 

하지만 이렇게 하나하나 하게되면 시간이 굉장히 오래 걸리기 때문에 numerical 방식을 사용하게 됩니다.

물론 실제로는 analytic gradient를 계산하고 numerical gradient로 체크하는 과정을 거친다고 합니다.

 

그리고 deep learning 모델을 학습시킬 때 몇 가지 tip이 있다고 합니다.

1. 맨 처음에 모델을 학습시킬 때 learning rate를 제일 먼저 찾고 그 다음 parameter 찾기

2. stocastic Gradient Descent에서 mini-batch는 일반적으로 32, 64, 128 등으로 잡음

 

여기까지가 CS231n Lecture 3이었습니다. 잘못된 부분이나 궁금하신 사항 있으시면 말씀해주세요!

'강의 > cs231n' 카테고리의 다른 글

CS231n - Lecture4  (0) 2021.02.21
CS231n - Lecture2  (0) 2021.02.11