개요
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 |