일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- deep learning
- feature scaling
- 주피터노트북 커널 제거
- random forest
- deeplearning
- lol api
- 주피터 노트북 테마
- 회귀분석
- Linear Regression
- 경사하강법
- Udacity
- 주피터노트북
- 데이터분석
- ubuntu
- 한빛미디어
- 나는리뷰어다2021
- Git
- overfitting
- regression
- GitHub
- 딥러닝
- 주피터노트북 커널 목록
- MySQL
- 주피터노트북 커널 추가
- Python
- 주피터테마
- Machine Learning
- pandas
- jupytertheme
- 모두를 위한 딥러닝
- Today
- Total
유승훈
lec06 - Softmax Regression, Classifer의 Cost function 본문
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 도출하기
'강의정리 > 모두를 위한 딥러닝 시즌 2' 카테고리의 다른 글
lec08 - Basic Deep Learning (0) | 2021.02.20 |
---|---|
lec07 - Application and Tips (0) | 2021.02.16 |
lec05 - Logistic Regression (0) | 2021.02.11 |
lec04 - Multi variable linear regression (0) | 2021.02.10 |
lec03 - Liner Regression and How to minimize cost(Gradient Descent) (0) | 2021.02.08 |