본문 바로가기
머신러닝과 딥러닝/기초 이론

Softmax Regression 기본 개념

by Bentist 2020. 2. 14.

Linear regression은 실수의 값이 100, 200, -10이라고 했을 때, 직선의 회귀식으로 0이나 1의 binary 분류를 하기에는 적합하지 않은 모형이었다. 그래서 Logistic regression 개념의 sigmoid함수를 사용하여 문제를 해결했었다. X에 가중치를 부여해서 나온 z값을 sigmoid함수에 통과시켜서 1이나 0에 수렴하도록 만든다.

Logistic regression이 하는 일을 생각해보면, train데이터로 두 가지로 구분되도록 학습시키는 이진 분류였다.

그럼 이제 A, B, C 세 개를 분류하는 문제가 있다고 생각해보자.

Logistic classification으로는 1) A인지 아닌지, 2) B인지 아닌지, 3) C인지 아닌지 3개의 선으로 구분이 가능하다.

이를 행렬의 형태로 표현하면 다음과 같다.

X가 A Logistic classification를 통해 분류될 때,
1. A classification에 의해 세워진 회귀식 Y(H(X)) = WX + b 에 대입한다.
2. 위의 Y를 Sigmoid function에 적용하면 0~1사이의 값(Z)이 나온다.
3. Z값이 1에 가까울 수록, A에 속할 확률이 높은 것으로 해석할 수 있다.
위의 과정을 B, C 분류기로도 반복한다.

 

세 가지 독립적인 Binary Classification는 복잡하기 때문에 이를 하나의 행렬로 합쳐줄 수 있다.

4) 위 식에서 나온 Z의 값을 Softmax 함수동시에 통과시켜준다.

그러면 A인지 아닌지만 판별했던 것이, A/B/C 중에서 A인 확률을 구할 수 있게 된다.
- 이 결과로 나온 값은 각각 확률을 나타낸다.

즉,  n개의 예측값(Z)을 softmax 함수에 넣게 되면 0과 1사이의 값을 뱉어내고,

이 n개의 함수값들을 더하게 되면 합이 1이 되어 확률의 형태가 된다.

ex) A가 나올 확률 0.7 / B가 나올 확률 0.2 / C가 나올 확률은 0.1 ▶ 확률이기 때문에 세 개를 더하면 1이 된다. 

만약 이 값들 중에 제일 큰 값 한 가지만 도출해 내고 싶다면 원-핫 encoding기법을 사용하면 된다. ex) A: 1 / B: 0 / C: 0

one-hot encoding은 텐서플로우에서는 argmax 함수라는 이름으로 제공하고 있다.

새로운 Cost Function 설계

그럼 이제 예측 모델은 완성되었고, 예측한 확률값과 실제값이 얼마나 차이가 나는지 Cost function을 설계해야 한다.

궁극적으로는 Cost function을 최소화하면서 학습을 완성하는 것이 목표다.

 

entorypy 보충 필기 출처: https://pythonkim.tistory.com/20

 

entropy는 열역학에서 사용하는 전문 용어로 복잡도 내지는 무질서량을 의미한다. 엔트로피가 크다는 것은 복잡하다는 뜻이다. cross-entropy는 통계학 용어로, 두 확률 분포 p와 q 사이에 존재하는 정보량을 계산하는 방법을 말한다. 다행스럽게 cross-entropy라는 용어에 엄청나게 심오한 이론이 숨어있는 것 같지는 않다.

S(Y)는 softmax가 예측한 값이고, L(Y)는 실제 Y의 값으로 L은 label을 의미한다. cost 함수는 예측한 값과 실제 값의 거리(distance, D)를 계산하는 함수로, 이 값이 줄어드는 방향으로, 즉 entropy가 감소하는 방향으로 진행하다 보면 최저점을 만나게 된다.

 

댓글