분류 문제에서의 cross-entropy function

반디·2023년 3월 20일
0

ML/DL

목록 보기
4/5

정보이론에서는 사건이 발생할 확률이 낮을수록 더 많은 정보를 가지고 있다고 생각합니다. 따라서 확률을 가지고 정보량을 측정하고자 합니다.

사건 xx가 있고, xx가 발생할 확률을 p(x)p(x)라 하면, 사건 xx가 발생했을 때 얻을 수 있는 정보량 h(x)h(x) 는 다음과 같이 정의합니다.

h(x)=log(p(x))h(x) = -log(p(x))

entropy H(x)H(x)

엔트로피(entropy) H(x)H(x)란 어떤 사건이 발생했을 때 발생하는 정보를 전송하는 데 필요한 bit 수로, 다음과 같이 정의됩니다.

H(X)=xXp(x)log(p(x))=xXp(x)h(x)H(X) = -\sum_{x \in X} p(x)log(p(x)) = \sum_{x \in X} p(x)h(x)

entropy in balanced probability distribution vs skewed probability distribution
balanced probability distribution의 경우, 모든 사건이 일어날 확률이 동일하므로 어떤 사건이 발생할지 예측하기 어렵습니다. 따라서, 어떤 사건이 발생하였을 때 얻을 수 있는 정보량이 높다고 볼 수 있습니다. 반면에, skewed probability distribution의 경우에는 특정 사건이 타 사건에 비해 일어날 확률이 높으므로, 사건이 발생했을 때 얻을 수 있는 정보량이 적다고 볼 수 있습니다.

\therefore

  • skewed probability distribution: low entropy
  • balanced probability distribution: high entropy

cross-entropy function H(x)H(x)

머신 러닝은 어떤 현상이 발생할 확률분포를 예측하는 것으로도 볼 수 있습니다. 실제 target의 확률분포인 P가 있고, P의 예측모델인 확률분포 Q가 있다고 해보겠습니다. 일반적으로, 사건 xx가 발생했을 때 실제 확률분포 P 하에서 계산되는 엔트로피와 확률분포 Q 하에서 계산되는 엔트로피는 다를 것입니다. (같다면 아주 좋은 예측 모델을 찾은 경우일 것입니다.) 이 엔트로피 차이를 알아내기 위해 크로스 엔트로피 함수가 등장했습니다.

다른 두 확률분포 P와 Q가 주어졌을 때 크로스 엔트로피 H(P,Q)H(P, Q)는 다음과 같습니다.

H(P,Q)=xXp(x)log(q(x)),H(P, Q) = -\sum_{x \in X} p(x)log(q(x)),

- p(x)p(x): 확률분포 P 하에서 xx가 발생할 확률
- q(x)q(x): 확률분포 Q 하에서 xx가 발생할 확률

분류 문제에서의 cross-entropy loss

cross-entropy loss(혹은 log loss)는 분류 문제에서 loss function으로 자주 사용되는 함수입니다. 크로스 엔트로피를 이용해서

  • 이진 분류에서의 cross-entropy loss
    (ylog(p(x))+(1y)log(1p(x))-(ylog(p(x)) + (1-y)log(1-p(x))
  • MM개의 class로 분류하는 다중 분류문제에서의 cross-entropy loss
    i=1Nj=1Myi,jlog(pi,j(x))-\sum_{i=1}^N\sum_{j=1}^M y_{i,j}log(p_{i,j}(x))
    • y_{i,j}: 예측결과 = 실제 class이면 1, 아니라면 0
    • p_{i,j}: i번째 data를 class j로 예측할 확률

Note

y=log(x)y = -log(x) 함수는 위와 같이 xx값이 1에 가까울수록 함수값은 0에 가까워집니다.

cross-entropy에서 예측결과 = 실제 class 인 경우만 term이 살아남아 더해지는 것을 관찰할 수 있습니다. 또한, log(pi,j(x))-log(p_{i,j}(x)) 값은 1에 가까울수록 작은 값을 가지기 때문에 결국 실제 class로 분류될 확률이 높을수록 loss가 작아지게 됩니다.

Example
이미지를 강아지, 고양이, 펭귄으로 분류하는 상황을 가정해보겠습니다.

-이미지 1이미지 2이미지 3
실제 class강아지고양이펭귄
probability vector(0.7, 0.2, 0.1)(0.3, 0.4, 0.3)(0.1, 0.5, 0.4)

예측 class와 실제 class가 다르다면 yi,j=0y_{i,j} = 0 이므로, cross-entropy loss = log(0.7)+log(0.4)+log(0.4)-log(0.7) + -log(0.4) + -log(0.4) 입니다.

참고문헌

profile
꾸준히!

0개의 댓글