[ML] Entropy, KL-Divergence, and Cross-entropy

2022. 5. 12. 15:45·Programming
728x90
728x90

 

Classification Model 과 Probability Distribution

Classification(분류) Task에서 Model을 성공적으로 학습시킨다는 것은

  • Model의 predict(예측 결과)가
  • 실제 Label(정답)에 근접해야 함을 의미함.

이때

  • Model 의 출력은 단순한 class label(클래스 라벨)이 아니라,
  • 각 class 에 대한 probability distribution(확률 분포)로 해석됨.

예를 들어

  • 어떤 입력 $x$에 대해 실제 정답 분포를 $p(y \mid x)$,
  • Model 이 예측한 분포를 $q(y \mid x)$라고 하면
  • 학습의 목표는 $q(y \mid x)$ 가 $p(y \mid x)$에 비슷해지도록 만드는 것임.

따라서 Classification Model 을 학습시키려면
두 Probability Distriibution 이
얼마나 다른지를 수치화할 수 있어야 함!


Discrepancy of Probability

Classification은 확률분포의 차이를 정량화하는 loss function이 필요함

  • 단순히 “정답을 맞혔다/틀렸다”만으로는 모델이 얼마나 확신을 가지고 예측했는지 알 수 없음.
  • 예를 들어 정답 class(클래스)에 속할 확률을 모델이 0.9로 부여한 경우와 0.51로 부여한 경우는
    둘 다 같은 class를 예측했더라도 training 단계에선 다르게 평가되어야 함.
  • 정답 class에
    • 모델이 낮은 확률을 부여한 경우에는 그 정도에 비례하여 더 큰 penalty(벌점)를 주고,
    • 모델이 높은 확률을 부여한 경우에는 더 높은 reward를 주어야 함.
  • 이를 위해 모델의 예측 분포와 실제 정답 분포 사이의 discrepancy(불일치성)를 정량적으로 측정하는 loss function(손실 함수)이 필요함.

이를 위해서 정보이론(Information Theory)의 주요 개념인
Entropy(엔트로피), KL-Divergence(KL 발산), Cross-entropy(교차 엔트로피)가 단계적으로 사용됨.


Entropy (평균정보량)

첫째로, 확률 분포 자체의 불확실성 을 수치화하기 위해 Entropy(엔트로피)가 정의된다.

Entropy(엔트로피)는

  • 어떤 random variable(확률 변수) $X$가 가질 수 있는 값들에 대해
  • 기대되는 평균 information content(정보량),
  • 즉, information content(정보량)의 expectation(기댓값)을 의미 .

$$H(p) = - \sum_x p(x) \log p(x)$$

여기서 $p(x)$는 실제 probability distribution이며, $-\log p(x)$는 event(사건) $x$가 발생했을 때의 정보량임.

  • Entropy는 distribution $p$ 로부터 sample(표본)이 생성될 때, 그 값을 표현하는 데 평균적으로 필요한 정보량 임.
  • 로그의 밑을 2로 사용하면 단위는 bit 임.
  • 또한 optimal coding(최적 부호화)을 가정할 때, Entropy 는 해당 random variable 을 인코딩하는 데 필요한 average code length의 이론적 lower bound(하한)으로 해석할 수 있음.

2022.05.12 - [.../Math] - [Math] Entropy 란 (평균정보량, 정보량의 기댓값)

 

[Math] Entropy 란 (평균정보량, 정보량의 기댓값)

Entropy란?Random variable에서 기대되는 정보량 (or 정보량의 기댓값, 평균 정보량).해당 random variable을 encoding하는데 필요한 평균정보량(단위 bit)의 lower bound.Claude Shannon 이 1948년 증명한 Noiseless Coding The

dsaint31.tistory.com


KL-Divergence

둘째로, 두 probability distribution(확률 분포)이 얼마나 다른지를 측정하기 위해 KL-Divergence(KL 발산)가 사용됨.

  • 실제 distribution을 $p(x)$,
  • 모델이 예측하거나 근사한 distribution을 $q(x)$라고 하면,
  • 이들간의 discrepancy 에 해당하는 KL-Divergence(KL 발산)는 다음과 같음

$$D_{\mathrm{KL}}(p \Vert q) = \sum_x p(x) \log \frac{p(x)}{q(x)}$$

실제로 KL-Divergence는 $p(x)$를 따르는 data를 $q(x)$를 기준으로 설명할 때 추가로 필요한 평균 정보량 을 의미함.

  • $q(x)$가 $p(x)$와 다를수록 KL-Divergence는 큰 값을 가짐.
  • 다만 KL-Divergence는 단순히 "두 Entropy(엔트로피)의 distance function" 이라고 말할 수는 없음.
  • 정확하게는 실제 distribution $p$를 기준으로 보았을 때, 예측 distribution $q$가 얼마나 비효율적인지를 나타내는 Relative Entropy(상대 엔트로피)로 이해해야 함.

2022.05.12 - [.../Math] - [Math] Kullback-Leibler Divergence

 

[Math] Kullback-Leibler Divergence

어떤 random variable $x$ (확률변수 $x$)에 대해 원래의 Probability Distribution $p(x)$와 Predicted Probability Distribution $q(x)$ (or Approximated Probability Distribution)가 있을 때, 각 경우의 entropy에 대한 difference가 바로 KL

dsaint31.tistory.com


Cross-Entropy

실제 분류 모델의 loss function으로는 Cross-entropy(교차 엔트로피)가 널리 사용됨.

Cross-entropy는 "실제 distribution $p(x)$를 따르는 data를 모델의 예측 distribution $q(x)$를 사용하여 encoding할 때 필요한 평균 정보량 (추가가 아님)" 임.

$$H(p, q) = - \sum_x p(x) \log q(x)$$

Cross-entropy는 다음과 같이 Entropy와 KL-Divergence로 분해됨:

$$H(p, q) = H(p) + D_{\mathrm{KL}}(p \Vert q)$$

주의할 점은 $H(p)$는 실제 data distribution 자체가 가지는 Entropy이므로, 모델 학습 과정에서 model parameter에 의해 변하지 않는 constant term(상수항)임.

  • 따라서 Cross-entropy $H(p, q)$를 최소화하는 것은
  • KL-Divergence $D_{\mathrm{KL}}(p \Vert q)$를 최소화하는 것과 같은 방향의 optimization(최적화)이 성립함.

이 때문에 분류 문제에서는 KL-Divergence 가 아닌 Cross-entropy loss를 사용함.

특히 정답이 one-hot label(원-핫 라벨)로 주어지는 multi-class classification에서는

  • 실제 distribution $p(y \mid x)$가 정답 class(클래스)에만 확률 1을 부여하고, 나머지 class에는 확률 0을 부여함.
  • 이 경우 Cross-entropy loss 는 정답 class에 대해 모델이 예측한 probability의 negative log likelihood(음의 로그 가능도)로 단순화됨.

$$L = - \log q(y \mid x)$$

  • Model이 정답 class에 높은 probability를 부여할수록 loss는 작아지고 낮은 probability를 부여할수록 loss는 증가함.
  • Cross-entropy loss 는 분류 모델이 정답 class에 더 높은 확률을 부여하도록 학습시키는 핵심적인 objective function(목적 함수)으로 사용됨.

2022.05.12 - [.../Math] - [Math] Cross Entropy

 

[Math] Cross Entropy

Cross Entropy란두 probability distribution $p$, $q$ 사이의 dissimilarity(차이)를 정량화하는 지표 로 사용됨.엄밀하게는 dissimilarity는 KL-Divergence로 구해야 하나, Cross entropy로 해도 큰 문제없기 때문임.다음 참

dsaint31.tistory.com


요약

  • Classification Model의 출력은 보통 각 class에 대한 probability distribution 임.
  • Label distribution $p$와 모델의 predicted distribution $q$ 사이의 차이(discrepancy)를 줄이는 것이 training 의 핵심임.
  • Entropy는 하나의 distribution이 가진 불확실성(=평균 정보량)을 측정함.
  • KL-Divergence는 label distribution $p$를 기준으로 predicted distribution $q$가 얼마나 다른지를 Entropy를 기반으로 정량화.
  • Cross-entropy는 실제 학습에서 손실 함수로 사용되며, 이를 최소화하는 것은 KL-Divergence를 최소화하는 것과 같은 최적화 결과를 얻음.

같이 보면 좋은 자료

http://colah.github.io/posts/2015-09-Visual-Information/

 

Visual Information Theory -- colah's blog

Posted on October 14, 2015 <!-- by colah --> I love the feeling of having a new way to think about the world. I especially love when there’s some vague idea that gets formalized into a concrete concept. Information theory is a prime example of this. Info

colah.github.io

2024.04.18 - [.../Math] - [Math] Probability Distribution

 

[Math] Probability Distribution

Probability Distribution : Probability Distribution은 특정 random variable(확률 변수)이 취할 수 있는 각각의 값에 대한 확률을 나타내는 분포임.Probability Distribution Function (PDF)으로 기술되며,random variable이 어떤

dsaint31.tistory.com

https://dsaint31.me/mkdocs_site/ML/ch03/logistic_regression/

 

BME

Classification Logistic MLEM Regression Logistic Regression Logistic Regression은 이름과 달리, binary classification task를 위한 모델로서 특정 class에 속할 확률을 결과값으로 가짐.(output이 하나의 확률값임). Label은 일

dsaint31.me


 

728x90

'Programming' 카테고리의 다른 글

Paradigm (패러다임)  (0) 2022.07.21
[Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.  (2) 2022.07.18
[Error: Tensorboard] ImportError: cannot import name 'Mapping' from 'collections'  (1) 2022.05.18
[Conda] miniconda의 기본 채널 변경 : conda-forge  (3) 2022.04.05
sh파일(non-interactive shell script)에서 conda 가상환경 activation!  (2) 2021.12.05
'Programming' 카테고리의 다른 글
  • [Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.
  • [Error: Tensorboard] ImportError: cannot import name 'Mapping' from 'collections'
  • [Conda] miniconda의 기본 채널 변경 : conda-forge
  • sh파일(non-interactive shell script)에서 conda 가상환경 activation!
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (802)
      • Private Life (16)
      • Programming (216)
        • DIP (116)
        • ML (45)
      • Computer (120)
        • CE (54)
        • ETC (31)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (12)
      • ... (372)
        • Signals and Systems (115)
        • Math (179)
        • Linear Algebra (33)
        • Physics (44)
        • 인성세미나 (1)
      • 정리필요. (62)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (7)
        • PET Study 2009 (1)
        • 방사선 장해방호 (6)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
    • kakao dev. tools.
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    Vector
    math
    opencv
    DIP
    linear algebra
    SIGNAL
    signals_and_systems
    인허가제도
    Probability
    cv2
    signal_and_system
    Programming
    function
    Term
    Optimization
    SS
    random
    ML
    fourier transform
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[ML] Entropy, KL-Divergence, and Cross-entropy
상단으로

티스토리툴바