•
Linear Classifier의 결과가 해석이 어렵기 때문에 그것을 해석이 쉽게 0-1 사이의 값이 나오도록 (확률 표현) Softmax 함수를 씌움
•
W는 랜덤으로 시작해서 예측값과 정답의 차이를 이용해서 W를 업데이트하는 과정을 반복해서 최종적으로 정답과 예측이 같도록 함.
◦
이때 예측값과 정답의 차이를 비교하는 것이 loss 함수이고, loss를 이용해서 W를 업데이트하는게 Optimization
•
Loss 함수는 정답과 모델의 예측값을 비교하는 것.
◦
예측이 정답에 비슷하면 조금만 업데이트하고, 크게 벗어났으면 많이 업데이트한다.
•
Loss 함수의 Discriminative Setting 정답이 이진형태라서 둘 중 하나를 맞추는 경우.
•
정답이 (-1, +1)이 경우에는 정답과 예측값을 곱하는 Margin-based Loss를 사용한다.
◦
예측이 정답과 같으면 둘을 곱하면 같은 부호가 나옴.
•
수평선의 극단으로 갈 수록 예측을 자신있게 한 것이고, Loss의 오른쪽에 있으면 정답을 맞춘거고, 왼쪽에 있으면 틀린 것.
◦
고로 정답일 때는 loss를 적게 주고, 틀렸을 때는 loss를 크게 줘서 업데이트 하게 한다.
•
Margin-based loss는 0/1 loss를 준다.
◦
맞으면 0, 틀리면 1의 loss를 준다.
•
다만 이 경우 미분이 안되는 점이 있어서 문제가 됨.
•
미분이 안 되는 부분을 개선하기 위해 Log를 씌운 Log loss를 사용할 수 있음.
◦
더불어 자신감도 반영해서 loss를 줄 수 있다.
•
Log loss 보다 loss를 더 강하게 주는
•
정답 부분에서 margin을 두고, 선형으로 loss를 주는게 Hinge Loss
•
exponential loss는 loss를 강하게 주기 때문에 outlier에 취약함. noise에 취약함
•
그래서 많이 쓰는게 Hinge loss(SVM이 대표적)와 log loss(Logistic Regression이 대표적)
◦
Hinge Loss계산이 효율적이고 log loss는 해석하기 좋다.
•
정답이 -1, +1이었던 Discriminative Setting과 달리 정답이 0과 1인 경우.
◦
예측 결과를 합하면 0과 1이 되므로 확률적으로 표현할 수 있음.
•
K가 2개 이상인 경우 처리하기 쉽다.
◦
one-hot vector로 표현할 수 있음.
•
예측 확률 분포와 정답 확률 분포를 비교하는 loss 함수를 사용할 수 있음.
•
가장 많이 쓰이는 확률 분포에 대한 loss 함수가 cross entropy
◦
위의 식은 일반화 시킨 경우이고 이진 분류 문제인 경우에는 아래와 같이 사용할 수 있음.
•
cross entropy 식을 전개하면 오른쪽과 같이 되는데 —정답만 1이고 나머지는 0이므로 안쪽 sum은 날아감— 그렇게 남은 식을 그래프로 그리면 오른쪽 아래의 박스쳐진 부분과 같아짐
◦
이렇게 되면 정답에 가까울 수록 0에 가까운 값이 나오고, 정답에서 멀어질수록 큰 값이 나옴. 그래서 이 값을 loss 값으로 사용
•
KL 다이버전스는 두 개의 확률 분포의 차이를 계산함. 두 분포가 완전히 같으면 0이고 분포의 차이가 클 수록 큰 값이 나옴.
◦
식의 정의상 D(P||Q)와 D(Q||P)는 값이 다름. 따라서 거리라고 해석하지만 실제 거리값은 아님.
◦
또한 A→B→C 가 A→C 보다 항상 길지 않음 (triangle inequality를 만족시키지 못함)
•
Optimization은 최적값을 찾는 것
•
여러 방법이 있지만 가장 널리 쓰는 것은 gradient descent를 이용한 방법
◦
기울기를 구해서 낮은 방향으로 내려가는 것. 이래서 loss 함수에 대해 미분이 가능해야 함.
•
기울기를 구한 후, 이전 값에서 빼는 식으로 업데이트 함.
◦
이때 기울기 값에 적절한 alpha를 곱해서 강도를 조절함.
•
다만 그냥 기울기만 구해서 값을 업데이트 하면 지역 최적점에 빠질 수 있음.
•
미분 가능한 경우만 사용하다는 것도 약점.
•
모든 데이터셋에 대해 loss를 계산하면 가장 정확하지만 매우 느림
•
위의 문제를 개선하기 위한 방법이 Stochastic Gradient Descent
◦
모든 샘플에 대해 gradient를 계산하지 않고, 적정한 수준의 mini batch에 대해서만 gradient 계산
•
현실의 예
◦
튀는 구간도 나오고, 어느 시점에 멈춰야 할지를 정하는 것도 애매함
•
학습의 목적은 데이터셋에 대한 일반화에 있다.
◦
때문에 테스트를 위한 데이터셋은 별도로 빼 놔야 함. 학습 과정에 들어가면 안 됨.
◦
보통은 랜덤하게 뽑거나, 날짜 기준으로 나누거나 함.
•
테스트 셋을 분리하는 것 외에 학습에 필요한 하이퍼파라미터를 튜닝하기 위해 validation set을 사용
◦
여러 training set을 돌려 놓고 validation set에서 결과가 잘 나오는 하이퍼파라미터를 사용한다.
◦
test set과 마찬가지로 validation set도 역전파를 하지 않음.
•
training set, validation set, test set을 나눈 후에 훈련과 테스트하는 과정. 이것을 cross validation이라고 한다.
◦
training set으로 학습하고
◦
validation 으로 가장 성능 좋은 모델을 선택하고, 하이퍼 파라미터 튜닝하고
◦
training set과 validation set을 합쳐서 다시 학습하고
◦
최종적으로 test set으로 검증한 후 결과 제출
•
training set과 validation set을 아예 교차 시키는 것아 K-fold cross validation
•
실제 예시