Cross Entropy

서석민·2022년 9월 21일
0

참조 링크 : https://3months.tistory.com/436

Cross-entropy


Cross entropy는 아래와 같은 식으로 계산된다.

1ni=1nc=1CLiclog(Pic)- \frac{1}{n} \sum_{i=1}^{n} \sum_{c=1}^{C} L_{ic}log(P_{ic})

  • n = 데이터 갯수
  • C = 범주 갯수
  • L = 실제 값 (주로 0 또는 1)
  • P = 실제 값에 대한 확률 값 (0~1)

이 식은 실제 분포와 모델이 예측한 분포의 차이가 얼마나 되는지 계산한 것이다.
이해를 위해서 entropy에 대해서 알아보자

Entropy


엔트로피는 무질서도 라고도 하며, 불확실한 정도를 나타내는 말이다.
완전히 정돈된, 불확실하지 않은 상태를 엔트로피가 0이라고 하며, 불확실한 정도가 증가할 수록 엔트로피는 증가하게된다.
식으로 나타내면 아래와 같다.

H(q)=c=1Cq(yc)log(q(yc))H(q) = -\sum_{c=1}^{C} q(y_c)log(q(y_c))

주머니에 빨간공만 10개 있으면 불확실도가 낮은 상태이고, -1*log(1)=0 이 된다. 즉 entropy가 0이다.

주머니에 빨간 공 5개, 파란 공 5개가 있으면, -(0.5log(0.5) + 0.5log(0.5))=0.69 가 된다.
빨간 공 9개, 파란 공 1개가 있으면, -(0.9log(0.9) + 0.1(log(0.1)))=0.33 이 된다.
즉, 빨간 공만 있을 때 보다, 파랑공 비율이 증가하면서 엔트로피도 증가하게된다.

Cross-entropy


cross entropy는 실제 q 분포를 예측한 p분포 간의 차이를 계산하기위해 사용된다.
식으로는 아래와 같이 나타낸다.

Hp(q)=c=1Cq(yc)log(p(yc))H_p(q) = -\sum_{c=1}^{C} q(y_c)log(p(y_c))

가방에 0.8/0.1/0.1 의 비율로, 빨간/녹색/노랑 공이 들어가 있다고 하자, 하지만 직감에는 0.2/0.2/0.6의 비율로 들어가 있을 것 같다. 이때 entropy와 cross entropy는 아래처럼 계산된다.

H(q)=[0.8log(0.8)+0.1log(0.1)+0.1log(0.1)]=0.63H(q) = -[0.8log(0.8) + 0.1log(0.1) + 0.1log(0.1)] = 0.63
Hp(q)=[0.8log(0.2)+0.1log(0.2)+0.1log(0.6)]=1.50H_p(q) = -[0.8log(0.2) + 0.1log(0.2) + 0.1log(0.6)] = 1.50

Cross-entropy >= entropy 이다. 실제 분포를 정확히 예측했을때 두 값은 같게 된다.

Kullback-Leibler Divergence


서로 다른 두 분포의 차이 (dissimilarity) 를 측정하는데 쓰이는 measure이다.

DKL(qp)=c=1Cq(yc)[log(p(yc))log(q(yc))]=Hp(q)H(q)D_{KL}(q||p) = -\sum_{c=1}^{C} q(y_c) [log(p(y_c)) - log(q(y_c))] = H_p(q) - H(q)

Cross-entropy >= entropy 이기 때문에 이 값은 항상 >=0 이다.

Cross-entropy 를 통한 loss function 


모델 학습에서 이미지를 보고 실제 분포를 예측하게 한다. 하지만 실제 분포는 정답이 있기 때문에 [0, 1, 0] 이런식으로 불확실도가 0으로 두고 계산한다. [개, 고양이, 물고기] 중에 정답은 고양이 1개로 정해지기 때문이다.
즉 정답 분포의 엔트로피는 0이되고, cross entropy를 계산하는 것이, Kullback-Leibler Divergence를 계산하는 것과 같아진다.
그래서 결국은 크로스엔트로피를 구하여 정답 분포와 예측 분포의 차이를 계산하는 것이다.

profile
서석

0개의 댓글