Review of Lecture 3_1
Lecture 3_1 : https://takesummer.tistory.com/7?category=886048
- 1. Softmax - Cross Entropy Loss Li(첫번째 빨간색 줄)
- 2. SVM - Hinge Loss Li (두번째 빨간색 줄)
- 3. L (full lose) = Softmax + SVM
저번 시간에는 위처럼 Loss function들에 대하여 알아보았습니다.
이번 포스팅에서는 이어서 loss function과 관련된 optimization에 대하여 알아보겠습니다.
2. Optimization
optimization을 쉽게 생각하면 loss를 minimization해주는 weight를 찾아가는 과정입니다. loss는 실제값과 예측값의 차이를 정량화한 값이니까 loss가 줄어들수록 test data의 결과는 좋아지겠죠?
optimization을 해나가는 과정을 산 속에서 목적지를 찾는 과정으로 비유해봅시다.
여기에는 몇가지의 strategy들을 제시합니다.
# 1. A first very bad idea solution: Random search
만약 random search의 방법을 사용한다면 경사진 비탈길을 따라서 천천히 목적지로 가는 것이 아니라 텔레포트를 통해 랜덤하게 목적지는 찾는 방법일 것입니다. 이것은 최적의 loss값을 찾는데 아주 최악의 방법이 될 것입니다.
실제로 accuracy의 값도 안좋게 나옵니다.
#2: Follow the slope
두번째 전략은 경사를 따라가는 것입니다. 1차원인 경우의 아래의 식처럼 미분을 합니다.
다차원의 경우는 gradient가 vector의 형태로 나타냅니다.
이러한 형태를 numerical gradient (수치적으로 경사를 구한다는 의미) 이라고 합니다.
위의 numerical gradient로 아래의 식을 계산해 보자면,
첫번째 차원을 보면 (1.25322 - 1.25347 ) / 0.0001 = -2.5가 되고 이 경우에는 아랫쪽으로 경사가 기울어집니다. 이와 같은 방법으로 두번째 차원을 계산해보면 (1.25353 - 1.25347) / 0.0001 = 0.5이 되어 위쪽으로 경사가 기울어집니다.
이러한 방법은 실제로 미분을 하나씩 하여 loss 최적화에 대한 근사치를 알게 됩니다. 이것을 일일히 계산하는 것은 상당히 시간낭비입니다 (느립니다). 그래서 실제로 사용되는 방법은 아닙니다.
우리가 실제로 사용하는 방법은 Analytic gradient입니다.
Loss는 weight의 function이기 때문에 미분만 알면 쉽게 접할 수 있어 하나하나 numerical gradient 식의 계산을 할 이유가 없습니다.
그래서 위의 요약은 Numerical gradient와 Analytic gradient의 차이점입니다. 실생활에서는 analytic gradient를 사용하지만 numerical gradient로 실행을 체크하는데 이것을 gradient check라고 부릅니다.
이 그림을 한번 보시면 original w부분에서 음의 미분 방향으로 계속 이동을 하면서 최적화를 해나가는 것이 gradient descent입니다. 빨간색 부분은 우리가 목표하고자 하는 곳이고 파란색, 보란색으로 갈수록 우리가 피해야 할 곳입니다.
기존의 Image Features 추출 방법
1. feature를 추출합니다. 이미지 내의 각각의 빈에 해당하는 픽셀들 계산
2. 추출한 여러개의 feature들을 concatenate를 합니다.
3. linear classifier
Example 1
--> 얼마나 많은 색깔들이 bin에 들어가있는지 계산
Example 2
--> 엣지들의 방향을 총 9가지로 구분하여 9가지 빈에 총 몇 개의 픽셀들이 있는지 계산
Example 3
--> 이 방법은 RNN에 영감을 주었습니다. 이미지의 여러 지점들을 보고 작은 로컬 패치들인 빈도수 또는 색깔 등을모아 벡터로 클러스터링 해줍니다. 테스트할 벡터와 유사한 값들을 이 모음집에서 K means 방식으로 찾아줍니다. 이후 이들을 concatenation해준 후 linear classifier 해주는 방식입니다.
ConvNets 방법
1. 이미지를 classifier에 넣어주고 학습을 시켜주면 분류된 값을 확률로 얻을 수 있습니다. 이전에 방식에 비해 복잡해보이지만 획기적으로 분류를 할 수 있는 방법인 듯 합니다. 무엇보다 사용자가 인위적으로 특징들을 추출하는 방법이 아닙니다.
다음 시간에는 Neural Networks 와 Backpropagation에 대하여 포스팅하겠습니다.
'CS231n' 카테고리의 다른 글
[CS231n] Lecture3_1 - Loss functions (0) | 2020.05.12 |
---|
댓글