유승훈

lec06 - Softmax Regression, Classifer의 Cost function 본문

강의정리/모두를 위한 딥러닝 시즌 2

lec06 - Softmax Regression, Classifer의 Cost function

seunghuni96 2021. 2. 15. 00:10

우리는 지난번에 Logistic Regression에 대해서 배웠습니다. 간단하게 이야기하면, 모델을 학습하는 것이 두 Class를 가장 잘 구분하는 선을 찾는 것이었습니다. 여기서는 두개의 Class, 즉 이진분류였습니다. 그런데 이것을 Multinomial, 다중분류에도 활용하면 어떻게 될까요? 

 

각 Classifier는 표현하자면 담당하는 Class가 아닌 나머지는 모두 같은 Class로 생각한다고 볼 수 있습니다. 각각의 Class인지 아닌지만을 구분하는 Classifier인 것입니다.

 

이러한 형태의 Classifier가 3개 있다면 계산이 복잡할 수 있습니다. Class가 늘어날수록 계산이 더 복잡해집니다. 

 

그래서 분리되어 있는 Weight Vector들을 하나의 Matrix로 만든다고 생각하면, 여러개의 Classifier를 한번에 계산할 수 있습니다. Matrix * Vector의 연산으로 계산은 한번이지만, 사실상 3개의 방정식이고 3개의 Classifier인 것입니다.

 

Logistic Regression은 이렇게 계산된 실수값에 Sigmoid를 적용시킵니다. 이 3개의 Classifier에 Sigmoid를 각각 적용시킬수도 있지만, 더 효율적인 방법이 존재합니다.

 

우리가 원하는 것은, 실수값이 아니라 각 Class일 확률입니다. Class별로 0~1 사이의 확률값을 갖고, 그 확률들의 총합은 1이 되어야 하는 것입니다.

 

그걸 해주는 것이 Softmax 함수입니다.

 

위와 같은 형태로, 실수값들을 집어넣으면 우리가 원하는 형태의 값을 얻을 수 있습니다. 이렇게 우리의 Hypothesis, 모델이 완성됩니다.

 

모델은 완성이 되었는데, 예측한 값과 실제 값의 차이를 나타내는 Cost Function을 설정해야 합니다. 이 Cost Function을 최소화하는 방향으로 학습을 완성해나가는 것입니다.

 

우리가 Softmax로 계산한 확률값과 실제 Label간의 차이는 위와 같이 Cross-Entroypy함수로 계산합니다.

 

그렇다면 많은 함수들 중에 왜 Cross-Entropy를 사용할까요?

 

식을 정리하면, Label을 안으로 넣어서 각 Element의 Label과 Logistic Function을 곱한 총합으로 만들 수 있습니다. 우리가 예측한 Class와 실제 Class의 차이를 통해서 Cost를 계산할 수 있습니다. 계산과정이나 식 자체에 대한 이해는 위의 필기를 참고하시면 될 것 같습니다.

 

결론적으로 정확한 예측을 한 Case A에 대해서는 Cost가 0이고, 완전히 틀린 예측을 한 Case B에 대해서는 무한대의 Cost가 부여되는 것을 볼 수 있습니다. 

 

앞서 했던 Logistic Regression에서의 Cost Function과 Cross Entropy는 사실 같은 식입니다. 치환을 통해서 간단하게 정리되는 것을 볼 수 있습니다.

 

이를 개별 Data가 아니라 전체 데이터셋에 적용하면, Loss Function을 다음과 같이 활용할 수 있습니다.

우리는 이 Loss를 최소화하는 W 벡터를 Gradient Descent를 통해 찾습니다. Regression에서와 똑같이 Learning Rate * 기울기로 Step을 밟아나가며 업데이트를 통해 최적의 W를 찾는 과정입니다.

 

Reference

mazdah.tistory.com/791 - 로지스틱 회귀 비용함수로부터 Cross Entropy 도출하기

 

 

Comments