강의 링크
https://www.youtube.com/watch?v=qcSEP17uKKY&list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r&index=3
강의 슬라이드
https://web.eecs.umich.edu/~justincj/slides/eecs498/498_FA2019_lecture03.pdf
이번에 배울 Linear Classifier는 단순한 구조이지만 Neural Network의 기초를 이루는 매우 중요한 요소이다.
Linear Classifier는 Parametric Approach의 한 갈래로
이전의 K-Nearest Neighbor에서는 input Image만 분류 과정에서 활용하였다면, Linear Classifier에서는
Input Image 'x'와 함께 learnable parameter(weight) W도 활용된다.
이러한 Parametric Approach를 함수 f(x, W)로 표현할 수 있고, 이 함수의 출력 값은 분류하고 싶은 대상의 가짓수만큼
나오게 된다. 예를 들어 CIFAR10의 경우라면 10개의 class score가 출력으로 나오게 된다.
Linear Classifier에서는 f(x, W) = Wx + b이며, 여기서 b(bias)는 offset을 뜻하며 생략 가능하다.
Wx는 2차원 Parameter 행렬 W와 이미지를 변환하여 만든 1차원 벡터 x 사이의 행렬곱을 나타내며
여기서 1차원 벡터 x는 이미지의 spatial structure는 변환 과정에서 잃어버린 상태이다.
Linear Classifier를 이해하는 관점으로는 몇 가지가 있는데
그중 하나가 바로 Algebric Viewpoint라고 부르는 것이다.
이 관점에서는 Linear Classifier를 단순히 행렬과 벡터의 곱에 offset 벡터를 더한 것으로 본다.
이렇게 바라보면 몇 가지 이점을 얻게 되는데
첫 번째가 바로 Bias Trick이다.
Bias Trick은 bias를 weight의 마지막 열로 추가시키고, data vector의 마지막 원소로 1을 추가한다.
이렇게 하면 추가로 offset을 더 할 필요 없이 단순히 곱하기만 하면 간단히 계산할 수 있다.
이 방식은 Linear Classifier와 같은 1차원 벡터를 사용하는 경우에는 유용하지만 ConvNet 등에는 사용하기 힘들다. 또한 때로 weight과 bias를 서로 다른 방식으로 initialize 하거나 regularize 하는 경우에도 적용이 어렵다.
또 다른 이점은 Linear Classifier의 결과가 이름대로 결과도 Linear 하다는 것을 한눈에 알 수 있다.
그리고 이러한 Linearity 때문에 분류 결과가 달라질 수도 있는데, 이는 적절한 loss function을 선택하는 등의 방식으로 어느 정도 대처 가능하다.
Algebric Viewpoint 말고도 Weight의 각 행을 input image의 크기로 변환하고 각각 image와 내적을 하고 weight의 각 행에 대응하는 bias를 더해주는 관점이 있는데
이를 Visual Viewpoint라고 하며 템플릿 매칭이라고도 한다.
왜냐하면 classifier가 wieght을 학습하는 것을 카테고리 당 하나의 이미지 템플릿을 학습한다고 볼 수 있기 때문이다.
이러한 관점으로 Linear Classifier를 이해하면 Linear Classifier가 Context Cue에 많은 영향을 받는 것을
쉽게 확인할 수 있다.
예를 들어 숲 속에 차가 있는 이미지의 경우 배경인 숲의 영향을 받아 배경이 숲인 템플릿 이미지를 가진 사슴으로
분류하기 쉽다.
또한 Linear Classifier의 Mode Splitting 문제도 쉽게 이해할 수 있다. Linear Classifier는 카테고리 당 1개의 템플릿만
학습 가능하지만 이미지 속의 물체는 항상 같은 방향, 같은 자세, 같은 색상 등으로 존재하지 않는다.
그래서 위 슬라이드에서 말의 템플릿 이미지에서 머리가 2개가 나타난 것을 볼 수 있다.
마지막 관점은 Geometric Viewpoint이다.
이 관점에서는 Linear Classifier에서 이미지는 고차원의 유클리드 공간에서 존재하며, 각 카테고리는 각각 1개의 초평면이 존재하며 이 초평면이 이미지를 2 등분한다고 본다.
이러한 관점에서 보면 고차원 공간에서의 Linear Classifier를 3차원인 우리가 완전히 이해하기 어려울 수 있지만,
적어도 Linear Classifier가 어떤 것은 할 수 있고, 어떤 것은 할 수 없는지 그 한계를 이해하는 것에 도움이 된다.
위 슬라이드의 3가지 케이스 모두 1개의 직선으로 두 클래스를 제대로 분리할 수 없고, 그렇기에 Linear Classifier에서
두 클래스를 분류하는 것은 불가능하다는 것을 알 수 있다.
이 관점은 역사적으로도 유용했는데, 초기 머신러닝 알고리즘인 Perceptron에서 XOR과 같은 연산은
제대로 수행하지 못하였다. Perceptron이 Linear Classifier의 일종인 것을 생각해보면 XOR을 못하는 것은
Geometric Viewpoint에서는 당연하다.
Linear Classifier에서는 W를 이용해서 class score를 구한다. 지금부터는 Linear Classifier의 핵심이라 할 수 있는
W를 어떻게 선택하는지 알아볼 것이다.
먼저 W가 얼마나 좋은지 알려주는 측도인 Loss Function에 대해 알아본 후, 이 Loss function을 최소화하는 방법인
Optimization에 대해 알아볼 것이다.
Loss Function은 현재의 Classifier가 얼마나 좋은지 알려주는 측도로 Loss Function의 출력 값을 loss라 하며,
loss와 classifier는 반비례한다.
때때로 Loss와 Classifier의 성능이 비례하는 경우에는 Loss에 마이너스를 붙여 사용한다. (loss는 항상 작아지는
방향으로 W가 학습되기 때문)
Loss Function으로 여러 가지가 사용되는데, 그중에 이 강의에서 첫 번째로 다룰 Loss Function은
Multiclass SVM Loss이다.
SVM Loss에서는 Loss는 다른 클래스의 class score와 해당 클래스의 class score의 차가 일정한 'Margin'보다 크면
0, 아니면 차이 + Margin이다.
SVM Loss는 위와 같이 계산할 수 있으며, SVM Loss의 특징이 몇 가지 있는데
우선 SVM Loss에서 Margin이 충분히 크다면, class score가 바뀌더라도 이미 Loss가 0이라면
계속 0이 된다는 것이다.
그리고 max 연산을 사용하는 관계로 Loss의 최솟값은 0이며, 최댓값은 무한하다.
또한 score가 랜덤하게 나오는데 가우시안 분포를 따른다면 각 score의 차의 총합은 0에 근접할 것이다. 따라서
이 경우 Loss는 (C - 1) * Margin일 것이다. 여기서 C = class의 수를 뜻한다.
SVM Loss의 이 특성은 언뜻 보기에 무의미해 보일 수 있지만, 새로운 머신러닝 알고리즘을 만들었을 때, 랜덤 하게
W를 초기화했을 때의 결과와 (C - 1) * Margin과 비교했을 때 상당한 격차를 보인다면, 무언가 잘못되었음을
이를 통해 알 수 있다.
더해서 SVM Loss에서 총합 대신 mean을 사용해도 loss는 달라도 결과는 동일하지만 max value에 제곱을 취한다면
이전과 달리 선형성을 잃어버리게 되어 결과도 달라진다.
Loss Function에서의 특정한 값의 Loss를 만들어내는 W는 항상 유일한 것이 아니라 여러 개 존재할 수 있다.
그래서 여러 개의 W 중에서 W를 선택하기 위한 다른 메커니즘이 필요하다.
이제부터 알아볼 Regularization은 주로 모델이 학습 데이터에 지나치게 치우치는 것을 방지하기 위해 사용되는데
Linear Classifier에서 Regularization을 사용할 때에는 Loss Function의 Data loss항 외에 추가로 Regularization 항을
더해서 사용한다.
그리고 이때 regularization 정도를 정해주는 hyperparameter Lambda가 regularization 항에 곱해진다.
그리고 Regularization 기법들에는 여러 가지가 있는데, Linear Classifier에서는 L2 regularization, L1 regularization, Elastic net 등이 사용되며, 신경망 모델에서는 추가로 Dropout, Batch normalization 등이 사용된다.
위는 Regularizatoin을 사용하는 목적으로 학습 데이터에 과적합을 피하기 위해 주로 사용되기는 하지만,
이것 외에도 다른 효과들도 있다.
Regularizatoin은 feature들에 대한 선호를 나타내기 위해서도 사용되는데, 개개의 feature들에 노이즈가 있거나
모든 feature들이 서로 연관되어 있어 어느 feature 하나만 선택하기 어려운 경우 L2 regularization을 선택하면 weight이 모든 feature들에 균등하게 적용되며, L1 regularization을 선택하면 weight이 하나의 feature에 집중된다.
위 슬라이드에서는 w1은 L1을 선택했을 때, w2는 L2를 선택했을 때의 weight이다.
L1과 L2를 선택했을 때 모두 결과는 같지만 weight이 feature들에 적용되는 정도는 다른 것을 알 수 있다.
Regularization의 주목적이 학습 데이터에 대한 과적합 방지라는 것에 의문을 가질 수도 있다.
왜 학습 데이터에 적합한 모델을 만들면 안 될까?
위 f1은 학습 데이터인 파란색 데이터에 완전히 적합하게 만든 모델이며, f2는 파란색 데이터에 비교적 덜 적합하게
만든 모델이다. 여기서 이전에 학습하지 않은 데이터인 회색 데이터가 들어왔을 때, f2가 f1에 비해 훨씬
잘 맞는 것을 알 수 있다.
일반적으로 사용되는 머신러닝 모델에서는 학습 데이터의 수는 모델을 사용해서 예측할 데이터에 비하면 결코 많다고 할 수 없다. 그래서 학습 데이터에 적합한 모델이 아니라 모든 데이터에 대해 유용하게 사용될 수 있는 일반화된
모델이 필요하고, 그래서 regularization이 이를 위해 사용된다.
SVM Loss 말고도 Cross Entropy Loss (Multinomial logistic Regression)이라는 Loss가 있다.
Cross Entropy Loss는 raw classifier score를 확률로 해석하기 위해 사용된다.
그리고 여기서 확률을 구할 때에 Softmax Function을 사용한다고 되어있는데, 이 함수의 이름이 Softmax인 것은
일반적인 Max 함수는 최댓값은 1 아니면 0으로 만드는 One-Hot 방식이지만, Softmax는 Max처럼 최댓값이면 1 아니면
0으로 바꾸는 식으로 극단적이지는 않아서 Softmax라고 이름이 붙었다고 한다.
raw classifier score에서 확률을 구하는 과정은 위와 같으며, 이 확률과 기대 확률과 비교를 Kullback-Leibler divergence
라는 것을 통해 한다는데 이 부분은 자세히 안 다루고 그냥 이런 것이 있다고만 하고 넘어갔다.
어쨌든 이름에 Cross-Entropy가 붙는 것은 위 두 가지 확률을 비교하기 때문이라고 한다.
SVM Loss와 마찬가지로 Cross-Entropy Loss도 몇 가지 특징을 말해주는데
우선 Min Loss는 0, Max Loss는 +infinity라고 한다. 하지만 여기서 Min Loss는 이론적으로는 0이지만 실질적으로
도달할 수는 없다고 한다.
그리고 모든 score가 가우시안 분포를 따르는 random value일 때 log(C)라고 한다.
(솔직히 이 부분이 log(C)가 맞는지는 모르겠다. 강의에서는 minus 1 over log C라고 하고 슬라이드는
오류라고 했는데, 흠 강의 내용만 보면 -1/log(C)인데 나중에 설명 들어보면 CIFAR10에서 초기 기대 Loss가 2.3인 거 보면
log(C)이라고 해야 했던 거 같은데... 일단 여기서는 log (C)라고 했다.)
이제는 Cross-Entropy와 SVM Loss를 비교하는데
위 슬라이드의 상황에서 SVM Loss는 score가 다른 것들과 비교해서 Margin 1이상이므로 0이고,
Cross-Entorpy는 0보다 크다.
다시 위 상황에서 score에 약간의 변동이 있는 경우,, SVM Loss는 Margin과 score의 차이가 충분해서 변화가 없지만,
Cross-entropy는 변할 것이라고 한다.
그리고 corrrect class의 스코어가 두배로 되면 Cross-entropy는 감소할 것이지만 SVM은 Margin과의 score의 차이가
더 커지기에 여전히 0일 것이라고 한다.
=========================================================================
이번 강의는 새해도 껴있고, 중간에 일부 날아가기도 해서...... 좀 많이 늦었다.
2월까지 강의 끝내려면 좀 부지런히 해야겠다.
'Deep Learning for Computer Vision' 카테고리의 다른 글
EECS 498-007 / 598-005 Lecture 5 : Neural Networks (0) | 2021.01.14 |
---|---|
EECS 498-007 / 598-005 Lecture 4 : Optimization (0) | 2021.01.11 |
EECS 498-007 / 598-005 Assignment #1 (0) | 2020.12.31 |
EECS 498-007 / 598-005 Lecture 2 : Image Classification (0) | 2020.12.30 |
EECS 498-007 / 598-005 Lecture 1 : Deep Learning for Computer Vision (0) | 2020.12.27 |