머신러닝&딥러닝/모두를 위한 딥러닝

[머신러닝 이론] Softmax Regression(소프트맥스 회귀)

Chaerry._o 2023. 9. 22. 01:59
반응형

이 글은 모두를 위한 딥러닝 시즌1을 기반으로 작성한 글입니다.

 

 

[머신러닝 이론] Logistic Regression(로지스틱 회귀)

이 글은 모두를 위한 딥러닝 시즌1을 기반으로 작성한 글입니다. [머신러닝 이론] Multiple Linear Regression(다중 선형 회귀) 이 글은 모두를 위한 딥러닝 시즌1을 기반으로 작성한 글입니다. [머신러닝

chaerrylog.tistory.com

이전 글에서는 Binary Classification를 수행하는 로지스틱 회귀에 대해서 설명했다.

이번 글에서는 Multi-class Classification을 수행하는 소프트맥스 회귀에 대해서 설명하겠다.


Softmax Function

소프트맥스 함수는 출력값의 범위를 [0, 1]로 바꿔주는 함수이고, 소프트맥스 함수를 통해 나온 출력값의 총합은 1이 된다. 따라서 소프트맥스 함수는 확률로 표현이 된다.

https://vitalflux.com/what-softmax-function-why-needed-machine-learning/

 

소프트맥스 함수는 아래 식으로 표현된다. 이 식에서 i = 1, 2, ... , k이다.

$$ p_{i} = \frac{e^{z_{i}}}{\sum_{j=1}^{k}e^{z_{j}}} $$

 

조금 더 이해하기 쉽도록 class가 3개일 때를 예시로 들어보면, 밑에 수식으로 소프트맥스 함수를 구할 수 있고, p1+p2+p3 = 1이다.

$$ softmax(z) = \begin{bmatrix}
\frac{e^{z_{1}}}{\sum_{j=1}^{3}e^{z_{j}}} & \frac{e^{z_{2}}}{\sum_{j=1}^{3}e^{z_{j}}} & \frac{e^{z_{3}}}{\sum_{j=1}^{3}e^{z_{j}}} \\
\end{bmatrix}=[p_{1}, p_{2}, p_{3}] $$

 

Loss Function

소프트맥스 회귀의 Loss Function은 Cross Entropy 함수이다. 이 함수는 Softmax Function의 입력값과 출력값의 차이를 나타내는 함수이다. 또한 Binary Cross Entropy와 마찬가지로 log 함수의 모양을 갖는 함수이다. 

$$ cost = D(y, p) = -\sum_{j=1}^{k}y_{j}log(p_{j}) $$

 

앞에 수식은 하나의 데이터에 대한 Loss를 구한 것이다. 여러 개의 데이터가 있는 데이터셋에서의 Loss에 대한 수식은 아래와 같다.

$$ cost = -\frac{1}{n}\sum_{i=1}^{n}D(y, p) = \frac{1}{n}\sum_{i=1}^{n}\sum_{j=1}^{k}y_{j}^{(i)}log(p_{j}^{(i)}) $$

 

BCE VS CE

저번 글에서 설명한 BCE의 수식은 아래와 같다.

$$ cost(W) = -\frac{1}{m}\sum ylog(H(x))+(1-y)log(1-H(x)) $$

 

이 수식과 오늘 배운 CE의 수식을 비교해보면 달라보이지만, 실제로는 BCE와 CE는 같다.

 

Weight

Loss를 최소로 해주는 W를 구하는 방법은 선형 회귀, 로지스틱 회귀와 마찬가지로 Gradient descent 알고리즘을 사용한다.

 

<Reference>

1. https://www.youtube.com/watch?v=jMU9G5WEtBc&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=15&t=193s 

2. https://wikidocs.net/35476

반응형