[WEEK01-DAY4] 이진 교차 엔트로피

2024. 8. 14. 00:18Machine Learning/[TIL] Naver Boost Camp

이진 교차 엔트로피(Binary Cross Entropy)

이진 교차 엔트로피는 두 클래스를 가진 이진 분류 문제에 특화된 손실 함수다. 이는 실제 레이블과 모델이 예측한 두 클래스가 속할 확률 사이의 불일치를 측정한다. 특히, 모델이 확신을 가지고 잘못된 예측을 할 때, 큰 패널티를 부여한다.

 

이진 교차 엔트로피의 함수식은 아래와 같다.

시그모이드 함수에 의해서 0과 1사이로 계산된 값 y

실제레이블 $t_i$ = 0 or 1

$$ E(w, b) = -\sum_{i=1}^{n} \{t_i \log y_i + (1 - t_i) \log (1 - y_i)\} $$

 

이진 교차 엔트로피는 모델의 예측 확률이 실제 레이블과 얼마나 잘 일치하는지를 측정하여 모델 성능을 평가하는데 중요한 지표다. 예를 들어, 스팸인지 아닌지, 신용카드 거래가 사기인지 아닌지, 또는 이미지에 특정 객체가 포함되어 있는지를 예측하는 모델을 훈련시킬 때 널리 사용된다.

신경망에서 이진 교차 엔트로피 손실 함수와 시그모이드 활성화 함수의 조합은 이진 분류 문제를 효과적으로 처리하는데 강력한 조합이다. 시그모이드 함수는 실수를 0과 1 사이의 확률 값으로 변환하는데, 이는 이진 교차 엔트로피 함수가 작동하는 예측 확률과 완벽하게 일치한다. [wikidocs]Binary Cross Entropy

최대 가능도 추정(MLE)

= Maximum Likelihood Estimation (최대우도법, 최우도법, 최대우도추정)

모수적인 데이터 밀도 추정 방법으로써 파라미터 $θ=(θ1,⋯,θm)$으로 구성된 어떤 확률밀도함수 $P(x|θ)$에서 관측된 표본 데이터 집합을 $x=(x1,x2,⋯,xn)$이라 할 때, 이 표본들에서 파라미터 $θ=(θ1,⋯,θm)$를 추정하는 방법이다.

 

Likelihood Function

주황색 후보 분포에 대해 각 데이터들의 likelihood 기여도를 점선의 높이로 나타냈다. 각 데이터 샘플에서 후보 분포에 대한 높이를 계산해서 모두 곱한 것으로 가능도를 계산할 수 있다. 계산된 높이를 더하지 않고 곱하는 것은 모든 데이터들의 추출이 독립적으로 연달아 일어나는 사건이기 때문이다.

$$ P(x|\theta) = \prod_{k=1}^{n} P(x_k|\theta) $$

 

전체 표본 집합의 결합확률밀도 함수를 likelihood function이라고 한다.

보통은 자연로그를 이용해 log-likelihood function $L(θ|x)$를 이용한다.

$$ L(\theta|x) = \log P(x|\theta) = \sum_{i=1}^{n} \log P(x_i|\theta) $$

 

likelihood function의 최댓값을 찾는 방법을 Maximum Likelihood Estimation이라고 할 수 있다. 찾고자하는 파라미터 θ에 대하여 다음과 같이 편미분하고 그 값이 0이 되도록 하는 θ를 찾는 과정을 통해 likelihood 함수를 최대화 시켜줄 수 있는 θ를 찾을 수 있다.

$$ \frac{\partial}{\partial \theta} L(\theta|x) = \frac{\partial}{\partial \theta} \log P(x|\theta) = 0 $$

[github.io] 최대우도법

이진 교차 엔트로피 유도

입력 값 x에 대하여 출력 값이 1일 확률을 y로 나타낼 수 있다.

$$ P(T = 1|x) = y = \text{sigmoid}(Wx + b) $$

입력 값 x에 대하여 출력 값이 0일 확률을 1-y로 나타낼 수 있다.

$$ P(T = 0|x) = 1-P(T = 1|x) = 1- y $$

두 수식을 통합하여 아래와 같이 표현할 수 있다.

$$ P(T = t|x) = y^t (1 - y)^{1 - t} $$

주어진 데이터가 여러 개일 경우, 아래와 같이 표현할 수 있다.(확률은 독립적이므로.)

$$ \prod_{i=1}^{n} P(T = t_i|x_i) = \prod_{i=1}^{n} y_i^{t_i} (1 - y_i)^{1 - t_i} $$

로그를 통해 복잡한 곱셈 연산을 덧셈 연산으로 변환한다. ‘-’ 부호로 최대화 문제를 최소화 문제로 바꿔준다.

$$ E(W, b) = -\log \left( \prod_{i=1}^{n} P(T = t_i | x_i) \right) = -\sum_{i=1}^{n} \{t_i \log y_i + (1 - t_i) \log (1 - y_i)\} $$

손실 함수인 이진 교차 엔트로피의 코드 표현은 아래와 같다.

loss_function = nn.BCELoss()