코딩하는 해맑은 거북이
[머신러닝] 엔트로피(Entropy)와 크로스 엔트로피(Cross-Entropy) 본문
해당 글은 아래의 2가지를 다룬다.
1. 엔트로피(Entropy)
2. 크로스 엔트로피(Cross-Entropy)
1. 엔트로피(Entropy)
엔트로피는 불확실성의 척도 이다. 정보이론에서의 엔트로피는 불확실성을 나타내며 엔트로피가 높다는 것은 정보가 많고 확률이 낮다는 것을 의미한다.
예시
- 동전을 던졌을 때, 앞/뒷면이 나올 확률을 모두 1/2 라고 한다.
- 주사위를 던졌을 때, 각 6면이 나올 확률을 모두 1/6 라고 한다.
위의 두 상황에서 불확실성은 주사위가 더 크다고 직관적으로 다가온다.
(불확실성 = 어떤 데이터가 나올지 예측하기 어려운 것)
위의 수식으로 엔트로피 값을 계산해보면,
동전의 엔트로피 값 = 약 0.693
주사위의 엔트로피 값 = 1.79
여기서 주사위의 엔트로피 값이 더 높다는 것을 알 수 있다. 즉, 무엇이 나올지 알기 어려운 주사위의 경우가 엔트로피가 더 높은 것이다.
위의 수식을 아래의 수식으로 바꿔보자.
\(p(xi)\)는 각각의 요소들이 나올 수 있는 확률값이다.
모든 요소들이 나올 확률이 동일하다면, \(-log p(xi)\) 값도 모두 동일하기 때문에 식을 간결하게 만들 수 있다.
\(p(xi)\)값의 총 합은 1이기 때문에 수식은 \(-log p(xi)\)가 된다.
\(x\)값이 작아질수록 \(-logx\)값은 기하급수적으로 커진다.
\(x\)가 작아진 것보다 \(logx\)가 커지는 폭이 훨씬 크기때문에 전체 엔트로피는 증가한다.
2. 크로스 엔트로피(Cross-Entropy)
실제 분포 \(q\)에 대해 알지 못하는 상태에서, 모델링을 통하여 구한 분포인 \(p\)를 통해서 \(q\)를 예측하는 것이다.
\(q\)와 \(p\)가 모두 들어가서 크로스 엔트로피(Cross-Entropy)라고 한다.
머신러닝을 통한 예측 모형에서 훈련 데이터에서는 실제 분포인 \(q\) 를 알 수 있기 때문에 Cross-Entropy를 계산할 수 있다. 즉, 훈련 데이터를 사용한 예측 모형에서 Cross-Entropy는 실제 값 \(q\)과 예측값 \(p\)의 차이 (dissimilarity) 를 계산하는데 사용할 수 있다는 것이다.
즉, Cross-Entropy는 실제 값 \(q\)과 예측값 \(p\)이 서로 얼마나 근사한지 보는 것이다.
예시
가방에 0.8/0.1/0.1 의 비율로, 빨간/녹색/노랑 공이 들어가 있다고 하자.
하지만 직감에는 0.2/0.2/0.6의 비율로 들어가 있을 것 같다.
이 때, Entropy 와 Cross-Entropy 는 아래와 같이 계산된다.
Kullback-Leibler Divergence (쿨백-라이블러 발산, KL Divergence)
서로 다른 두 분포의 차이 (dissimilarity) 를 측정하는데 쓰이는 measure 이다.
이를 Entropy와 Cross-Entropy 개념에 대입하면 두 Entropy 차이로 계산된다.
Relative entropy 라고도 하며 정식 명칭은 Kullback–Leibler divergence (KL Divergence)이다.
Cross-Entropy인 \(H_p(q)\)는 실제 Entropy인 \(H(q)\)보다 항상 크기 때문에 KL Divergence는 항상 0보다 큰 값을 갖게된다.
예측모형이 하고자 하는 것은 예측 분포인 \(p\)를 실제분포 \(q\)에 가깝게 하는 것이다.
\(p\)가 \(q\)에 가까이 갈수록 KL Divergence은 0에 가까워질 것이다.
그리고 \(H(q)\)는 고정이기 때문에, \(H_p(q)\)를 최소화시키는 것이 예측 모형을 최적화 시키는 것이라고 할 수 있다. 따라서 Cross-Entropy를 최소화 시키는 것이 KL Divergence를 최소화 시키는 것이며, 이것이 불확실성을 제어하고자하는 예측모형을 실질적인 목적이라고 볼 수 있다.
[참고자료]
https://melonicedlatte.com/machinelearning/2019/12/20/204900.html
'AI' 카테고리의 다른 글
[딥러닝] Normalization, Standardization (0) | 2022.08.03 |
---|---|
[머신러닝] 선형회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), 소프트맥스 회귀(Softmax Regression) (0) | 2022.07.27 |
[머신러닝] Frequentist(빈도주의) vs Bayesian(베이지안) (0) | 2022.07.21 |
[머신러닝] Feature (0) | 2022.07.20 |
[머신러닝] PCA, SVD, LDA, LSA (0) | 2022.07.18 |