교차엔트로피

Rapsby·2020년 12월 11일
0

인공지능 수학

목록 보기
16/19

자기정보(Self-information):i(A)i(A)
AA : 사건
i(A)=logb(1P(A))=logbP(A)i(A) = log_b(\frac{1}{P(A)}) = -log_bP(A)
특성
i(AB)=logb(1P(A)P(B))=logb(1P(A))+logb(1P(B))=i(A)+i(B)i(AB) = log_b(\frac{1}{P(A)P(B)}) = log_b(\frac{1}{P(A)})+log_b(\frac{1}{P(B)}) = i(A)+i(B)

엔트로피(entropy)
자기정보의 평균
H(X)=jP(Aj)i(Aj)=jP(Aj)log2P(Aj)H(X) = \sum_jP(A_j)i(A_j) = -\sum_jP(A_j)log_2P(A_j)
특성
0H(X)log2K,K:0 \leq H(X) \leq log_2K, K : 사건의 수

엔트로피 활용
-평균비트수를 표현
-데이터 압축에 사용가능

i(X)i(X) 활용

X P(X) i(X) code
A 1/2 1 0
B 1/4 2 10
C 1/8 3 110
D 1/8 3 111

평균비트수
1×12+2×14+3×18+3×18=148=741 \times \frac{1}{2} + 2 \times \frac{1}{4} + 3\times \frac{1}{8} + 3\times \frac{1}{8} = \frac{14}{8} = \frac{7}{4}비트

확률분포 PPQQ
S=AjS = {A_j}
P(Aj)P(A_j) : 확률분포 PP에서 사건 AjA_j가 발생할 확률
Q(Aj)Q(A_j) : 확률분포 QQ에서 사건 AjA_j가 발생할 확률
i(Aj)i(A_j) : 확률분포 QQ에서 사건 AjA_j의 자기정보
-i(Aj)=log2Q(Aj)i(A_j) = -log_2Q(A_j)
-자기정보는 AjA_j를 표현하는 비트수
-잘못된 확률분포 QQ를 사용하게 되면, 실제 최적의 비트수를 사용하지 못하게 됨

H(P,Q)H(P,Q)
집합 SS상에서 확률분포 PP에 대한 확률분포 QQ의 교차 엔트로피
확률분포 PP에서 i(Aj)i(A_j)의 평균
H(P,Q)=jP(Aj)i(Aj)=jP(Aj)log2Q(Aj)=xXP(x)log2Q(x)H(P,Q) = \sum_jP(A_j)i(A_j) = -\sum_jP(A_j)log_2Q(A_j) = -\sum_{x\in X}P(x)log_2Q(x)
이 값은 정확한 확률분포 PP를 사용했을 때의 비트수보다 크게 됨
H(P,Q)=xXP(x)log2Q(x)jP(x)log2P(x)=H(P)H(P,Q) = -\sum_{x\in X}P(x)log_2Q(x) \geq -\sum_jP(x)log_2P(x) =H(P)
따라서 이 값은 PPQQ가 얼마나 비슷한지를 표현
같으면 H(P,Q)=H(P)H(P,Q) = H(P)
다르면 H(P,Q)>H(P)H(P,Q) > H(P)
H(P,Q):H(P,Q):

Q(X)Q(X)를 가정하고 코드 부여

X P(X) i(X) Q(X) i(X) code
A 1/2 1 1/8 3 000
B 1/4 2 1/8 3 001
C 1/8 3 1/4 2 01
D 1/8 3 1/2 1 1

평균비트수
3×12+3×14+2×18+1×18=2183 \times \frac{1}{2} +3\times \frac{1}{4} +2\times \frac{1}{8} +1\times \frac{1}{8} = \frac{21}{8}비트
1.5배나 더 많은 비트 사용 필요

분류 문제에서의 손실함수
분류문제
-주어진 대상이 AA인지 아닌지를 판단
-주어진 대상이 A,B,C,A,B,C,\dots 중 어느 것인지를 판단
기계학습에서는 주어진 대상이 각 그룹에 속할 확률을 제공
원하는 답 P=[p1,p2,,pn],p1+p2++pn=1P = [p_1,p_2,\dots,p_n],p_1+p_2+\dots+p_n = 1
제시된 답 Q=[q1,q2,,qn],q1+q2++qn=1Q = [q_1,q_2,\dots,q_n],q_1+q_2+\dots+q_n = 1

PPQQ가 얼마나 다른지에 대한 척도 필요

제곱합
(piqi)2\sum(p_i-q_i)^2
확률이 다를수록 큰 값을 가짐
하지만 학습속도 느림

교차 엔트로피 H(P,Q):H(P,Q):
확률이 다를수록 큰 값을 가짐
학습 속도 빠름
분류 문제에서 주로 교차 엔트로피 사용

S=A,BS = {A,B}
실제 상황
P=[1,0]P = [1,0]
P(A)=1,P(B)=0\to P(A) = 1, P(B) = 0
예측 Q(X)Q(X)
[0.8,0.2]:Q(A)=0.8,Q(B)=0.2[0.8, 0.2]: Q(A) = 0.8, Q(B) = 0.2
H(P,Q)=xXP(x)log2Q(x)=1×log20.8=0.3219H(P,Q) = -\sum_{x \in X}P(x)log_2Q(x) = -1 \times log_20.8 = 0.3219

[0.5,0.5]:Q(A)=0.5,Q(B)=0.5[0.5, 0.5]: Q(A) = 0.5, Q(B) = 0.5
H(P,Q)=xXP(x)log2Q(x)=1×log20.5=1H(P,Q) = -\sum_{x \in X}P(x)log_2Q(x) = -1 \times log_20.5 = 1

[0.2,0.8]:Q(A)=0.2,Q(B)=0.8[0.2, 0.8]: Q(A) = 0.2, Q(B) = 0.8
H(P,Q)=xXP(x)log2Q(x)=1×log20.2=2.32H(P,Q) = -\sum_{x \in X}P(x)log_2Q(x) = -1 \times log_20.2 = 2.32

import numpy as np
def crossentropy(P, Q):
  return sum([-P[i]*np.log2(Q[i]) for i in range(len(P))])
P = [1, 0, 0, 0]
Q = [0.7, 0.1, 0.1, 0.1]
print(crossentropy(P,Q))
profile
Good Morning

0개의 댓글