Entropy
엔트로피는 확률론에 기반한 정보이론에서 매우 중요하게 쓰이는 개념이다. 확률변수random variable ξ 가(random element 참고) density f≥0 을 가진다고 하자 (✅ density function은 Radon-Nikodym 참조). 이때 ξ의 엔트로피는 다음과 같이 정의된다.
H(ξ)=E(−logf(ξ))=∫Rlogf(x)⋅f(x)dx
기댓값expectation E 는 확률변수 ξ∈L1(P) 에 대해
E[ξ]=∫ΩξdP=∫Rxd(P∘ξ−1)(x)
와 같이 정의된다. (추후에 자세히 다룰 예정)
또한, 수리통계에서 어떤 확률밀도함수의 모수 θ 에 대해 Kullback-Leibler divergence를 정의한 적이 있다. 이를 확률론에서는 더 확장하여 다음과 같이 정의한다.
KL divergence
Measurable space (X,X) 에서의 두 σ-finite measure μ,ν 가 있으며 ν≪μ 를 만족한다고 하자. 이때 μ에 대한 ν의 Kullback-Leibler divergence는
DKL(ν∥μ)=∫Xlog(dμdν)dν
로 정의된다. 특별히 Probability Space (X,X,P) 에서 정의된 discrete probability distribution P,Q 에 대해서
DKL(P∥Q)=x∈X∑P(x)log(Q(x)P(x))(1)
으로 정의된다.
Cross Entropy
Cross entropy는 cross의 의미 그대로 두 random variable가 교차할 때의 엔트로피를 의미하며, random variable p,q 에 대해 다음과 같이 정의된다.
H(p,q)=−Ep[logq]
여기서 기댓값에 붙어있는 subscript p는 기댓값을 계산하는 과정에서 q의 density function이 아닌, p의 density function을 이용한다는 것을 의미한다. 이때 식 (1)로부터
DKL(P∥Q)=x∈X∑P(x)log(Q(x)P(x))=−∑P(x)logQ(x)+∑P(x)logP(x)
이 성립하므로, cross entropy(첫째 항), entropy(둘째 항), KL divergence 사이에는 다음과 같은 관계식이 성립한다.
H(p,q)=H(p)+DKL(p∥q)
만일 Probability space (X,X) 에서 정의되는 확률분포 p,q 가 discrete한 경우, cross entropy를
H(p,q)=−x∈X∑p(x)logq(x)
로 쓸 수 있다.
Cross-entropy loss function
Cross entropy는 머신러닝에서 주로 이진(혹은 다중) 분류의 손실함수로 사용된다. 어떤 분류 문제에서 레이블을 예측하는 경우, 실제 레이블(pi, true probability)와 에측 레이블(qi, predicted proability) 가 주어지므로 이 둘 간의 격차를 측정하는 도구로 앞서 설명한 cross entropy를 이용한다.
N개 데이터를 갖는 데이터셋으로 K개의 클래스를 분류하는 다항 분류문제가 주어진다고 하자. 이때 분류기는 주어진 input data(xi)를 입력하여 이 데이터가 각 클래스에 해당할 확률 P(Y=k∣X=xi) 을 구하는 것이다(k=1,…,K). 이때 임의의 모델 f(xi;θ)를 이용해 계산한 xi 각 클래스별 출력값(y^k)은 확률이 아니므로(ex. 세 클래스에 대해 5.1, 2.7, -12의 값이 나왔다고 하자.), 우리는 이를 확률처럼 사용하기 위해 처리해주어야 한다. 이를 위해 softmax function을 사용하고, 이는 다음과 같다.
P(Y=k∣X=xi)=∑jey^jey^k
(만일 이진 분류(0 또는 1)의 경우 softmax의 특수한 케이스인 sigmoid function을 사용한다) 이렇게 처리한 값들은 이제 확률로 사용할 수 있으므로 이를 바탕으로 다음의 cross-entropy 손실함수를 계산한다(yk(i) 는 i번째 데이터가 k번째 클래스를 가지면 1, 아니면 0으로 계산한다).
J(θ)=−N1i=1∑Nk=1∑Kyk(i)logy^k(i)
✅ 손실함수가 Sample Mean의 형태인 것은 데이터셋의 원래 확률분포를 알 수 없기 때문임을 잊지 말자!
References