본문 바로가기

자연어 처리 과정

Softmax function and cross-entropy loss

개요

multi-class classification 상황에서는 예측값을 구할 때

보통 sigmoid function을 사용하지 않고

Softmax function을 사용한다고 한다.

 

그리고 이 softmax function을 사용하기 위해서는

cost function으로 cross-entropy loss function을 사용한다고 한다.

 

이에 대해 알아보자.

 

Sigmoid function 복기

binary classification에서 사용했던 sigmoid function에는 1개의 feature값만 넣어서 확률을 계산할 수 있었다.

즉, y = 1일 때 sigmoid function에 feature값을 넣어 y=1일 때에 feature도 1일 상대적 확률을 나타냈다.

 

우리는 x 대신 z로 정의했고, z가 바로 ax + b 꼴의 수식이었다.

즉, 우리는 sigmoid를 g(z) 형태로 이해했다.

선형결합의 형태로 이해한 것이다!

 

이러한 sigmoid function은 yes or no에 대한 task를 해결할 때 적당해보인다.

그렇다면 target variable이 3개 이상인 multi-class classification의 상황에서는 어떤 함수를 적용할 수 있을까?

 

Softmax function

이 softmax function은 함수에 모든 feature를 넣어 확률을 계산한다.

 

아래를 보면 softmax function이 어떻게 진행되는지 바로 이해할 수 있다.

(가정: class1의 z = 12, class 2의 z = 6, class 3의 z = 0)

 

이렇게 모든 class에서의 확률값을 더한 값을 분모로 하고

분자로는 한 개의 class가 positive일 확률을 둔다.

 

 

Sigmoid function의 원래 형태는 아래와 같다.

 

 

Cost function for softmax function

한 가지 알아둬야 할 점은 softmax function을 쓸 때에는 cost function으로서

Cross-entropy loss를 사용한다고 한다.

(P: 실제 데이터, Q: 예측값)

 

오른쪽에 있는 식은 y=1일 때의 logistic regresstion에서 사용했던 cost function과 일치함을 확인할 수 있다.

 

아래는 이 cross-entropy loss를 활용하여 cost를 연산하는 과정이다.

실제값이 벡터 (0,1)일 때,

class 1은 (0,1)을 예측했고

class 2는 (1,0)을 예측했다.

 

class 1의 cost는 0으로 수렴했고

class 2의 cost는 무한으로 발산함을 확인할 수 있다.

 

Logistic regression의 cost function 그리고 cross-entropy loss의 차이

결과적으로는 같다.

'자연어 처리 과정' 카테고리의 다른 글

Batch normalization  (0) 2022.12.13
Overfitting과 underfitting 그리고 regularization  (0) 2022.12.01
Cost function for Logistic regression  (1) 2022.11.30
Feature scaling에 대해  (0) 2022.11.29
경사하강법  (0) 2022.11.28