1. 자기정보 (self- information): i(A)
A : 사건
$i(A) = log_b(\frac{1}{P(A)})= -log_b P(A)$
확률이 높은 사건:
정보가 많지 않음
예) 도둑과 개
개가 안짓을 확률>>>??
정보가 많이 필요함
정보의 단위
b = 2: bits
b = e: nats
b = 10: hartleys
그냥 단위 많다
특성
$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)
$P(H) = \frac{1}{8} , P(T) = \frac{7}{8}$
$ i (H) = 3 $비트, $i(T) = 0.193$ 비트
왜인지 모르겟다
엔트로피는 자기 정보의 평균
$H(X) = \sum _j P(A_j)i(A_j) = - \sum _j P(A_j)log_2 P(A_j)$
특성
$0 \leq H(X) \leq log_2 K$
K: 사건의 수
솔찍히 뭔말인지 모르는중
엔트로피 (entropy)
활용
평균 비트수를 표현
데이터 압축에 사용 가능
4가지 벙보를 표현 하는데 필요한 비트수
일반적으로 2비트
X | P(X) | i(X) | code |
A | $\frac{1}{2}$ | 1 | 0 |
B | $\frac{1}{4}$ | 2 | 10 |
C | $\frac{1}{8}$ | 3 | 110 |
D | $\frac{1}{8}$ | 3 | 111 |
i(X)를 활용하는 경우
평균 비트수
$1 \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}$비트
데이터를 표현하기위한 필요한 평균개수?
확률분포 P와 Q
$S = {A_j}$
$P(A_j)$ : 확률분포 P에서 사건 $A_j$ 가 발생할 확률
$Q(A_j)$ : 확률분포 Q에서 사건 $A_j$가 발생할 확률
$i(A_j)$ : 확률분포 Q에서 사건 $A_j$의 자기정보
$i(A_j) = - log_2 Q(A_j)$
자기 정보는 $A_j$를 표현하는 비트수
잘못된 확률분포 Q를 사용하게 되면, 실제 최적의 비트수를 사용하지 못하게 됨
2. 교차 엔트로피
1.H(P,Q)
집합 S상에서 확률분포 P에 대한 확률분포 Q의 교차 엔트로피
확률분포 P에서 $i(A_j)$의 평균
$H(P,Q) = \sum_j P(A_j) i(A_j) = - \sum_j log_2 Q(A_j) = - \sum _{x \in X } P(x)log_2P(x) = H(P)$
따라서 이값은 P 와 Q가 얼마나 비슷한지를 표현
같으면 H(P,Q) = H(P)
다르면 H(P,Q) > H(P)
X | P(X) | i(X) | P(X) | i(X) | code |
A | $\frac{1}{2}$ | 1 | $\frac{1}{8}$ | 3 | 000 |
B | $\frac{1}{4}$ | 2 | $\frac{1}{8}$ | 3 | 001 |
C | $\frac{1}{8}$ | 3 | $\frac{1}{4}$ | 2 | 01 |
D | $\frac{1}{8}$ | 3 | $\frac{1}{2}$ | 1 | 1 |
위와같이 다른 값들을 봤을때 같을까 다를까 하는 문제를 알아맞추는 것같다
분류문제에서의 손실함수
분류문제
주어진 대상이 A인지 아닌지를 판단
주어진 대상이 A,B,C ...중 어느 것인지를 판단
기계학습에서는 주어진 대상니 각 그룹에 속할 확률을 제공
예
[0.8 ,0.2] : A일 확률 0.8 아닐 확률 0.2
이값이 정답인[1.0, 0.0] 과 얼마나 다른지 측정 필요
각 각에 확률들을 비교할 방법은 제곱을 해서 하는방법인
제곱합
$\sum(p_i -q_i)\^2$
제곱을 해서 차이를 본다
하지만 학습속도가 느리다
교차 엔트로피 H(P,Q):
확률이 다를수록 큰 값을 가짐
학습 속도가 빠르다
분류 문제에서 주로 교차 엔트로피를 사용한다
분류 문제에서의 손실함수
참고 : 분류 문제에서의 원하는 답
P = [p_1,p_2, ... ,p_n]
$p_i$중 하나만 1이고, 나머지는 다 0임
엔트로피는 0 즉 H(P) = 0
$p_k$ = 1.0 이라고하면 , $q_k$의 값이 최대한 커지는 방향으로 학습을 실행
뭔말인가??
S = {A,B}
실제 상활
P = [1,0]
P(A) = 1, P(B) = 0
예측 Q(X)
[0.8, 0.2] : Q(A) = 0.8, Q(B) = 0.2
H(P,Q) = - \sum{x \in X} P(x)log_2 Q(x) = -1 \times log_2 0.8 = 0.3219
[0.5, 0.5] : Q(A) = 0.5, Q(B) = 0.5
H(P,Q) = - \sum{x \in X} P(x)log_2 Q(x) = -1 \times log_2 0.5 = 1
[0.2, 0.8] : Q(A) = 0.2, Q(B) = 0.8
H(P,Q) = - \sum{x \in X} P(x)log_2 Q(x) = -1 \times log_2 0.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]
Q = [0.8,0.2]
print(crossentropy(P,Q))
Q = [0.5,0.5]
print(crossentropy(P,Q))
Q = [0.2,0.8]
print(crossentropy(P,Q))
colab.research.google.com/drive/134cSgQ7VIQxE5CLVG0dmkOo2qPMwHlUE?usp=sharing
[Programmer][Weak3] 교차엔트로피.ipynb
Colaboratory notebook
colab.research.google.com
'Programmers > 데브코스 인공지능' 카테고리의 다른 글
[프로그래머스 스쿨 AI] Weak 3 numpy (0) | 2021.05.04 |
---|---|
[프로그래머스 스쿨 AI] Weak 3 깃 사용 (0) | 2021.05.03 |
[프로그래머스 스쿨 AI] Weak 3 검정 (0) | 2021.05.03 |
[프로그래머스 스쿨 AI] Weak 3 추정 (0) | 2021.05.03 |
[프로그래머스 스쿨 AI] Weak 3 표본분포 (0) | 2021.05.03 |