Multinomial Logistic Regression - [Softmax 함수, Cross Entropy ]

Hesoyam·2021년 3월 19일
0

Multinomial Logistic Regression


다항 로지스틱 회귀(Multinomial Logistic Regression)는 종속변수가 범주 형이면서 3개 이상의 범주를 가질때, 적용할 수 있는 Logistic Regression 모델입니다.


이러한 Multinomial Logistic Regression의 예시로는 다음과 같습니다.

  • 대학교로 진학할 때 어떤 전공이 인기가 많은지
  • 사람들이 어떤 혈액형을 가지고 있는지

이러한 예시는 모두 통계적인 분류에 속하며, 예시에서 가지는 변수들은 모두 의미있게 정렬되지 않는 제한된 항목 집합 중에서 예측할 종속 변수 하나와 나머지인 독립 변수 집합을 공통적으로 가지고 있습니다.

독립변수 : 실험에서 실험자가 조작하는 변수를 말하며, 해당 실험 범위의 다른 변수에 의존하지 않는 변수를 말합니다.


종속변수 : 종속 변수는 실험에서 그 값이 어떤 법칙이나 규칙(수학의 함수)에 의해 다른 변수의 값에 의존하는 변수를 말합니다.

  • 독립변수에 영향을 받아서 변화하는 변수가 종속변수 이다.

Softmax 함수


Linear Regression에서 2개의 범주를 분류하는 함수로 Sigmoid를 사용했다면, 3개 이상의 여러 범주를 분류할때 사용하는 함수가 바로 Softmax함수이다.

  • Softmax 함수는 2개의 범주가 아닌 여러 범주를 분류하는 함수입니다.

Multi class classification에 적합한 함수라고 볼 수 있으며, Softmax function의 정의는 다음과 같습니다.

softmax(x)=eixj=0kexj(i=0,1,k)softmax(x) = \frac{e^x_i}{\sum_{j=0}^{k}e^{x_j}}(i=0,1,… k)

함수식을 자세히 보면 각 범주의 확률값이 0에서 1 사이의 값이고, 또 하나의 큰 특징은 모든 범주에 해당하는 softmax의 값을 전부 더했을 때 그 합이 1이 된다는 것입니다.

위 내용을 수식으로 표현하면 다음과 같습니다.

[A1, A2, A3][A_1, \ A_2, \ A_3]의 범주를 softmax 함수로 분류했을때 나오는 각 범주의 확률값이 다음과 같이 나왔다면, [Prediction_A1, Prediction_A2, Prediction_A3][Prediction\_{A_1}, \ Prediction\_{A_2}, \ Prediction\_{A_3}]

softmax 함수를 풀어보았을 때는 다음과 같습니다.

softmax(x)=[ex0j=03exj ex1j=03exj ex2j=03exj] =[Prediction_A1, Prediction_A2, Prediction_A3]softmax(x)=[\frac{e^{x_{0}}}{\sum_{j=0}^{3} e^{x_{j}}}\ \frac{e^{x_{1}}}{\sum_{j=0}^{3} e^{x_{j}}}\ \frac{e^{x_{2}}}{\sum_{j=0}^{3} e^{x_{j}}}] \\ \ \\ = [Prediction\_{A_1}, \ Prediction\_{A_2}, \ Prediction\_{A_3}]

위 수식에서 간단한 숫자를 대입하면 왜 합이 1이 확실히 보이게 됩니다.

  • 숫자는 간단하게 표현하기 위해 임의의 수를 넣겠습니다

ex0,ex1,ex2e^{x_0}, e^{x_1}, e^{x_2}를 순서대로 1,2,31, 2, 3이라고 한다면, 함수식은 다음과 같아집니다.

[1 1+2+3 ,2 1+2+3 ,3 1+2+3 ][\frac{1}{ \ 1+2+3 \ } ,\frac{2}{ \ 1+2+3 \ } , \frac{3}{ \ 1+2+3 \ } ]

따라서, softmax의 값을 전부 더하면 위의 경우와 같이 1이 나오게 됩니다.

또한 softmax 함수는 큰 log-odds와 작은 log-odds의 차이를 극대화시켜줍니다. 그렇기 때문에 마지막에 softmax 함수에 모든 범주의 log-odds를 통과시키면 해당 데이터가 어떤 범주로 분류되는지 확실히 알 수 있게 되는데, 가장 큰 값을 1, 그 외 나머지 값들을 0으로 인코딩하는 one-hot encoding을 통해 표현하게 됩니다.

odds : 사건이 발생할 확률을 사건이 발생하지 않을 확률로 나눈 비율이다.
['0'에 대한 1'의 비율을 말합니다.]

odds에는 2가지의 한계가 있습니다.

  • 0 < odds < \infin의 범위에 속하기 때문에, 범위에 제약이 없습니다.
  • 확률값과 odds 값은 비대칭성을 보입니다.

logit : odds의 한계를 극복하기 위해 로그를 씌운 함수입니다.
[±\pm \infin 범위를 가지며, 어떤 클래스에 속할 확률을 결장하는 함수 입니다.]

  • <log(odds)<{-\infin} < {log(odds)} < {\infin}의 범위를 가집니다.
  • 성공 확률이 0.5를 기준으로 양수와 음수를 가지며, 대칭성을 가집니다.

log-odds : 변환 모델(선형)의 종속변수로 이 값을통해확률을 구합니다.

Cross Entropy


cross entropy 함수는 위에서 살펴보았던 softmax 함수의 손실함수로 쓰입니다. 식은 다음과 같습니다.

H(p,q)=xXp(x)logq(x){\displaystyle H(p,q)=-\sum _{x\in {{X}}}p(x)\,\log q(x)}

그리고 손실함수이기 때문에 가중치가 최적화될수록 H(p,q)의 값이 감소하게 되는 방향으로 가중치 학습이 됩니다. 그리고 p(x)는 실제 데이터의 범주 값, q(x)는 softmax의 결과값을 대입하게 됩니다

그렇다면 다중 로지스틱 회귀(Multinomial Logistic Regression)에서 손실함수로 Cross entropy 함수가 선택된 이유는 무엇일까요?

선형 회귀(Linear Regression)와 비교해서 설명하겠습니다.

선형회귀에서의 손실함수는 잔차(residual)의 제곱의 합입니다.

i=1nresiduals2[Cost function]{\sum_{i=1}^{n}}residuals^2 \\ {\text [Cost\ function]}

잔차의 제곱은 L2 distance와는 다르지만, 회귀 모델의 추정치와 실제 값의 종속변수 좌표축 방향으로의 차이, 즉 실제와 추정치 값 간의 거리를 측정하기에 적절한 형태를 가지고 있습니다.

그런데 로지스틱 회귀에서는 종속변수 방향이 바로 확률변수 방향입니다. 그렇다면 이 손실함수를 선형회귀와 같이 잔차의 제곱 형태로 측정하는 것이 타당할까요?
만약 타당하다고 생각한다면, 확률 0.4와 0.6 사이의 거리는 과연 0.8과 1.0 사이의 거리와 같다고 할수 있을까요? 아니라면 어떤 방법으로 해야 할까요.

이 부분에 대한 설명은 정보이론(Information Theory)을 빌린 설명으로 얘기하겟습니다.
개념적으로 말하자면 Cross Entropy는 로지스틱 회귀모델이 추론한 확률 분포 q(x)q(x) 와 실제 데이터의 분포 p(x)p(x)의 차이를 계산한 것입니다.

이 차이가 적을수록 Cross entropy가 작아지게 되는 것입니다.
이 부분에 대한 추가적인 설명은 아래 링크의 설명을 참고해 주시면 되겠습니다.


References

profile
거북이가 되고 싶은 자라

0개의 댓글