아래 내용은 cs231n 유튜브 강의를 기초로 하여 작성되었습니다.
유튜브 링크 : https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv
자료출처 : http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture3.pdf
1. Loss function
-
손실함수(Loss function) : 학습을 통해 얻은 데이터의 추정치가 실제 데이터와 얼마나 차이나는지 평가하는 지표로 쓰입니다. 좋은 가중치 값을 찾기 위한 함수로 loss 값이 낮을 수록 좋은 분류기라고 합니다. 비용 함수(cost function), 목적 함수(object function)라고 부르기도 합니다.
-
질문 : loss function과 negative loss function 차이는 무엇인가?
negative loss function = reward function, profit function, utility function, fitness function, etc
-
Multiclass SVM loss(힌지 로스)
-
Sj : 정답이 아닌 클래스 score 값, Syi : 정답 클래스 score 값
-
정답 클래스의 스코어값이 다른 스코어 값+1보다 크면 0, 그렇지 않으면 Sj-Syi+1 값을 갖는다.
-
SVM loss 식을 기준으로 개구리의 loss를 구해보자
-
max(0, 2.2-(-3.1)+1)+max(0, 2.5-(-3.1)+1) = 12.9로 loss값이 크다는 것을 알 수 있다.
-
-
위처럼 모든 클래스에서의 loss값을 구해서 평균을 구해주면 아래와 같이 나오게 된다.
-
Q&A
-
질문 1 : what happens to loss if car scores change a bit?
답변 : loss값은 변경되지 않을 것이다. svm은 데이터에 민감하지 않다는 것을 알 수 있음. 무조건, 정답이 제일 높은지가 중요함.
-
질문 2 : what is the min/max possible loss?
답변 : min - 0 , max - inf
-
질문 3 : At initialization W is small so all s = 0. What is the loss?
답변 : loss는 class-1, 이건 디버그 용으로 많이 활용합니다(sanity check)
-
질문 4 : What if the sum was over all classes ? (include j = yi)
답변 : loss값이 1씩 증가하게 됨.
-
질문 5 : What if we used mean instead of sum ?
답변 : 별 상관 없다.
-
질문 6 : 제곱을 하면 어떻게 될 것인가?
답변 : 결과는 다르다. 이걸 squared hinge loss라고 부른다.
-
-
Regularization
-
파란색 원은 Train data, 초록 네모는 새로운 데이터라고 쳤을 때, 파란색 선은 train data에 overfitting되어 있다고 볼 수 있다. 새로운 데이터는 파란색 선에 의해 예측되지 않습니다. 그래서 초록색 선이 파란색 선보다 더 train과 새로운 데이터를 대표한다고 볼 수 있습니다.
-
Regularization 종류
-
L2 regularization (일반적으로 사용)
-
L1 regularization
-
Elastic net (L1+L2)
-
Max norm regularization
-
Dropout
-
Fancier : Batch normalization, stochastic depth
-
-
Regularization을 사용하면 Train 예측값은 떨어질 수 있지만 Test 예측값의 성능은 끌어올릴 수 있다.
- L2는 w2를 선호하게 됨, 모든 input feature들을 고려하려고 합니다.
-
Softmax Classifier(Multinomial Logistic Regression)
-
모든 스코어를 지수 exp를 취하고 그걸 다 더한 다음에 원하는 클래스의 점수를 exp 취해서 나눕니다(확률값).
-
최종적인 목표는 정답 class에 대한 log 확률을 최대화하는 것입니다.
-
결국 -log의 확률이 최소화되는 것을 찾고자 하는 것이 목표입니다.
-
log를 취하는 것은 수학적으로 좀 더 편리하기 때문에 사용하게 됩니다.
-
Q&A
-
질문 1 : What is the min/max possible loss Li ?
답변 : min - 0, max - inf (-log 그래프를 그려보면 알 수 있음)
-
질문 2 : Usually at initialization W is small so all s = 0. What is the loss ?
답변 : log(클래스개수) - 마찬가지로 디버그 용도로 사용(sanity check)
-
-
SVM vs Softmax
-
SVM : 점수 포인트에 크게 영향이 없음(둔감), safety margin으로 인해 큰 영향을 받지 않습니다.
Softmax : 확률로 계산되기 때문에 민감하게 영향을 받습니다.
2. Optimization
- 주의할 점은 Regularization의 loss는 데이터에 상관없이 weight에만 영향을 받습니다.
-
Optimization은 산에서 골짜기를 따라 내려가는 것과 같습니다. loss값이 Global minima에 가는 것이 목적이다.
-
Random Search
-
이것은 랜덤하게 포인트를 찾아내는 방법입니다. 절대 사용해서는 안됩니다.
-
Gradient Descent 방법
-
보통 경사 하강법(gradient descent)라고 부르는 방법입니다. 경사를 따라 내려가는 것을 의미합니다.
-
gradient에 대한 추가 내용
-
쉽게 말하자면 산에 있을 때 가장 가파른 방향이 그레디언트의 방향이라고 볼 수 있습니다.
-
gradient는 주어진 함수 f(x,y)에 대해서 x 방향으로의 편미분 값과 y 방향으로의 편미분 값을 원소로하는 벡터를 출력합니다.
-
예를 들어, f(x,y) = x^2+y^2+xy 라고 해보자. 이 때, 각 x, y에 대한 편미분을 해보면 fx = 2x+y, fy = x+2y 라는 값을 얻게 됩니다. 여기서 얻어진 fx와 fy는 각각의 단위벡터와 곱해서 더해주면 (2x+y, x+2y)라는 값을 얻게 되는데 해당위치인 x,y를 넣어주면 해당 점에서의 gradient 벡터를 구할 수 있습니다.
-
-
우측의 방식(Numerical gradient)으로 각 점에서의 기울기를 구한다. 하지만 하나씩 구하기가 힘들다.
-
정확한 값이 아닌 근사치를 얻게 되고 평가를 하는 것이 느립니다. N이 엄청 커지면 각각의 gradient 구하는 것은 실질적으로 어렵습니다.
-
미분적분학을 이용해서 계산하는 analytic gradient를 사용하면 편하게 구할 수 있다.
-
Numerical gradient는 정확하지 않고 느리지만 코드로 작성하기는 쉽다.
-
Analytic gradient는 정확하고 빠르지만 코드에서 에러가 나올 가능성이 높다.
-
항상 analytic gradient 방법을 사용하며, 디버깅을 할 때는 numerical gradient를 사용하기도 합니다.
-
N이 너무 크게 되면 비용이 많이 들기 때문에 minibatch로 update하는 방식을 stochastic Gradient Descent라고 합니다. 여기서 step_size는 learning rate(알파)를 뜻합니다.
-
CNN 이전에 이미지에서 Feature 찾는 방법
-
Image들의 Feature들을 HoG, Color Histogram을 할용한 뒤 선형 회귀방식에 적용시켰습니다.
-
좌측에 있는 것은 선형으로 분류가 되지 않습니다. 그래서 극 좌표계를 활용하니 직선으로 구분할 수 있게 되었습니다.
-
그런 방식으로 추출하는 방법 중 하나가 color histogram입니다. 해당 색깔이 어디서 많이 발생하는 지 확인할 수 있습니다.
-
이 방법은 사진에서의 방향값을 표현하는 그림입니다. 어떤 각도가 많은지 확인할 수 있습니다.
-
bag of words : 이미지를 잘라낸 뒤 비지도학습을 이용해서 사전화 합니다. 새로운 이미지가 들어오면 사전과 비교해 어떤 특징이 있는지 비교하는 방법(k-means)입니다.
-
위에서 언급한 방법을 사용하지 않고 우리는 컴퓨터 스스로가 학습하고 특징을 뽑아낼 수 있는 방법을 알고 있습니다. 그것은 바로 CNN입니다.