Pattern Recognition

[ML] KL Divergence, Cross Entropy, Likelihood

2022. 11. 4. 01:25
목차
  1. 1. KL Divergence(Kullback-Leibler Divergence)
  2. 2. Cross Entropy
  3. (1) 정의
  4. (2) KL Divergence와의 관계
  5. 3. Likelihood
  6. (1) 정의
  7. (2) Negative Loss Likelihood

wikepedia 내용을 정리하고자 한다. 일반적으로 loss 관점에서만 설명되는 글들이 많은데 확률분포 추정에서의 접근이 더 근본적인 방식이다.

 

1. KL Divergence(Kullback-Leibler Divergence)

KL Divergence는 두 확률분포가 P,Q가 있을 때 두 분포가 얼마나 다른지를 측정하는 계산식이다. 정의와 예시는 이 wiki에 있다.

DKL(P || Q)=∑x∈XP(x)log(P(x)Q(x))

 

 

2. Cross Entropy

(1) 정의

정보이론에서 cross-entropy는 두 확률 분포 p 와 q를 구분하기 위해 필요한 평균 비트 수를 의미한다.

In information theory, the cross-entropy between two probability distributions p and q over the same underlying set of events measures the average number of bits needed to identify an event drawn from the set if a coding scheme used for the set is optimized for an estimated probability distribution q, rather than the true distribution p

수식 정의는 다음과 같다.

H(p,q)=−Ep[logq]

 

(2) KL Divergence와의 관계

KL Divergence를 풀어쓰면 cross-entropy와의 관계를 알 수 있다. 교집합에서 자기 집합을 빼는 것 처럼 생각해볼 수 있다.

DKL(P || Q)=∑x∈XP(x)log(P(x)Q(x))=∑x∈Xp(x)log1q(x)−∑x∈Xp(x)log1p(x)=H(P,Q)−H(P)

 

 

3. Likelihood

(1) 정의

분류 문제를 풀 때는 참 분포(P)를 관찰하여 여러 결과들의 확률을 추정(Q)하고 싶다. 일반적으로 P는 true distribution, observation 등으로 표현되고 Q는 θ로 parametrized된 모델 Qθ를 의미한다. 

파라미터 θ를 기반으로 한 결과 i의 추정 확률을 qθ(X=i), 학습 데이터(observation, empirical probability)에서 결과 i의 빈도를 p(X=i)라 하자. 그럼 관찰 데이터에 대한 모델 qθ(X=x)의 likelihood는 다음과 같이 정의할 수 있다.

L(θ)=∏i∈X(estimated probability of i)number of occurrences of i=∏i∈Xqθ(X=i)Np(X=i)

이 likelihood에 log를 취하고 N으로 나눠주면 다음과 같은 결과를 얻을 수 있다.

1Nlog(L(θ))=1Nlog∏i∈Xqθ(X=i)Np(X=i)=∑ip(X=i)logqθ(X=i)=−H(p,q)

 

(2) Negative Loss Likelihood

PyTorch를 사용하다 보면 CrossEntropy(), NLLloss()가 모두 구현되어 있는 것을 볼 수 있다. 근데 NLLloss를 찾아보면 수식만 나와있고 정의가 없다(위키에도 없다).

위의 likelihood의 정의를 통해 이를 유추해볼 수 있다. 먼저 우리가 원하는 것은 관찰된 분포 P와 모델의 확률분포 Qθ가 가깝도록 학습하고 싶으며, SGD등을 통해 두 확률분포의 KL Divergence 값을 계산하여 최소화하는 θ를 찾을 수 있다.

DKL(P || Q)=H(P,Q)−H(P)

이때 KL Divergence를 최소화 하는 것은 두 확률분포의 Cross Entropy를 최소화하는 것과 동일하다. 그리고 likelihood 정의에 따라 Cross Entropy를 최소화하는 것은 Negative Loss Likelihood를 최소화하는 것과 동일하다.

NLL=−1Nlog(L(θ))=H(P,Q)

 

PyTorch 구현 부분을 살펴보면 CrossEntropyLoss를 사용할 때는 출력값 logit을 그대로 입력으로 받아 Cross Entropy값을 계산하고, NLLloss를 사용할 때는 출력값 log에 log softmax를 씌우고 Cross Entropy를 계산한다(참고).

 

 

 

728x90
저작자표시 비영리 변경금지 (새창열림)

'Pattern Recognition' 카테고리의 다른 글

5. Density Estimation  (0) 2022.09.12
4. Clustering (2)  (2) 2022.09.12
4. Clustering (1)  (0) 2022.09.11
3. Maximum Likelihood Estimation(MLE)  (0) 2022.08.06
(참고) Gaussian Distribution  (0) 2022.08.06
  1. 1. KL Divergence(Kullback-Leibler Divergence)
  2. 2. Cross Entropy
  3. (1) 정의
  4. (2) KL Divergence와의 관계
  5. 3. Likelihood
  6. (1) 정의
  7. (2) Negative Loss Likelihood
'Pattern Recognition' 카테고리의 다른 글
  • 5. Density Estimation
  • 4. Clustering (2)
  • 4. Clustering (1)
  • 3. Maximum Likelihood Estimation(MLE)
Fine애플
Fine애플
이것저것
끄적끄적이것저것
Fine애플
끄적끄적
Fine애플
전체
오늘
어제
  • 분류 전체보기 (167)
    • 논문 및 개념 정리 (27)
    • Pattern Recognition (8)
    • 개발 (57)
    • python 메모 (45)
    • pytorch, tensorflow (5)
    • 알고리즘 (9)
    • Toy Projects (4)
    • 통계이론 (2)
    • Reinforcement Learning (10)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • reinforcement learning
  • ubuntu
  • Bert
  • pandas
  • tensorflow
  • Probability
  • transformer
  • nlp
  • miniconda
  • container
  • 언어모델
  • python
  • 자연어
  • PyTorch
  • Docker
  • 알고리즘
  • 딥러닝
  • BigBird
  • 개발환경
  • GPU

최근 댓글

최근 글

hELLO · Designed By 정상우.
Fine애플
[ML] KL Divergence, Cross Entropy, Likelihood
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.