두 개의 감마 분포 사이의 쿨백 –Leibler 발산


15

pdf 의해 감마 분포 를 매개 변수화하도록 선택 와 사이의 Kullback-Leibler 분기 는 다음과 같이 [1]에 의해 주어집니다.Γ(,)g(x;b,c)=1Γ(c)xc1bcex/bΓ(bq,cq)Γ(bp,cp)

KLGa(bq,cq;bp,cp)=(cq1)Ψ(cq)logbqcqlogΓ(cq)+logΓ(cp)+cplogbp(cp1)(Ψ(cq)+logbq)+bqcqb

나는 같은데요 는 IS 디 감마 함수 . Ψ(x):=Γ(엑스)/Γ(엑스)

이것은 파생없이 제공됩니다. 이것을 유도하는 참조를 찾을 수 없습니다. 어떤 도움? 좋은 참조로 충분합니다. 어려운 부분은 를 감마 pdf와 통합 하는 것입니다.로그엑스

[1] WD 페니, KL 표준의 Normal, Gamma, Dirichlet 및 Wishart 밀도 , www.fil.ion.ucl.ac.uk/~wpenny/publications/densities.ps


2
와 관련하여 pdf의 미분을 취하면 찾고있는 의 요인이 나타납니다. 그것이 디 감마가 나타나는 이유입니다. l o g ( x )영형(엑스)
whuber

Pierre Baldi와 Laurent Itti (2010)에서“비트와 와우 : 응용 프로그램에 주목 한 베이지안 이론”신경망 23 : 649-666을 보면 방정식 73은 두 감마 pdf 사이에 KL의 차이를 나타냅니다. 그러나 수식이 잘못 인쇄 된 것처럼 보입니다.
Mr 클라리넷

저도 같은 문제에 대한 해결책을 찾고이 발견하고 하나가 유용합니다.
Yi Yang

답변:


15

KL 발산은 형태의 적분의 차이입니다.

$$ \ eqalign {I (a, b, c, d) & = \ int_0 ^ {\ infty} \ log \ left (\ frac {e ^ {-x / a} x ^ {b-1}} {a ^ b \ Gamma (b)} \ right) \ frac {e ^ {-x / c} x ^ {d-1}} {c ^ d \ Gamma (d)} dx \

& =-\ frac {1} {a} \ int_0 ^ \ infty \ frac {x ^ de ^ {-x / c}} {c ^ d \ Gamma (d)} \, dx-\ log (a ^ b \ Gamma (b)) \ ​​int_0 ^ \ infty \ frac {e ^ {-x / c} x ^ {d-1}} {c ^ d \ Gamma (d)} \, dx \ & \ quad + (b- 1) \ int_0 ^ \ infty \ log (x) \ frac {e ^ {-x / c} x ^ {d-1}} {c ^ d \ Gamma (d)} \, dx \

& =-\ frac {cd} {a}-\ log (a ^ b \ Gamma (b)) + (b-1) \ int_0 ^ \ infty \ log (x) \ frac {e ^ {-x / c } x ^ {d-1}} {c ^ d \ Gamma (d)} \, dx} $$

우리는 단지 오른쪽 적분을 처리해야합니다.

dΓ(d)=d0ex/cxd1cddx=d0ex/c(x/c)d1cdx=0ex/cxd1cdlogxcdx=0log(x)ex/cxd1cddxlog(c)Γ(d).

어떻게

1Γ()0로그(엑스)이자형엑스/(엑스/)1엑스=(1)Γ'()Γ()+(1)로그().

앞의 수확량에 연결

I(a,b,c,d)=cdalog(abΓ(b))+(b1)Γ(d)Γ(d)+(b1)log(c).

간 KL 발산 Γ ( , B는 ) 동일 I ( C , D , C , D ) - I ( , B , C , D ) 조립이 간단하다.Γ(c,d)Γ(,)나는(,,,)나는(,,,)


구현 세부 사항

감마 함수는 빠르게 증가하므로 오버플로를 피하기 위해 감마를 계산하지 말고 로그를 취하십시오. 대신 통계 컴퓨팅 플랫폼 (Excel 포함)에서 찾을 수있는 log-Gamma 함수를 사용하십시오.

의 로그 도함수이다 Γ , 일반적으로 불리는 ψ , digamma의 기능. 사용할 수없는 경우 Wikipedia 기사에 설명 된대로 대략적으로 간단한 방법이 있습니다.Γ'()/Γ()Γ,ψ,

여기서 설명하기 위해 I의R 관점에서 공식을 직접 구현합니다 . 이것은 대수적으로 결과를 단순화 할 수있는 기회를 이용하지 않기 때문에 ( ψ 의 중복 계산을 제거함으로써) 좀 더 효율적으로 만들 수 있습니다 .Iψ

#
# `b` and `d` are Gamma shape parameters and
# `a` and `c` are scale parameters.
# (All, therefore, must be positive.)
#
KL.gamma <- function(a,b,c,d) {
  i <- function(a,b,c,d)
    - c * d / a - b * log(a) - lgamma(b) + (b-1)*(psigamma(d) + log(c))
  i(c,d,c,d) - i(a,b,c,d)
}
print(KL.gamma(1/114186.3, 202, 1/119237.3, 195), digits=12)

2
좋은 대답입니다. 감사! 그러나 네 번째 평등에는 부호 오류가 있다고 생각합니다. 또한 감마 pdf에는 분모에 'c'가 추가로 있어야합니다. 편집 하시겠습니까?
Ian Langmore

@Ian 당신이 맞아요; 나는 보통 측정 값을 로 쓰고 그렇게하지 않으면 서 c의 추가 인자를 생략했다 . 부호 실수를 잘 잡습니다. 편집하고 싶으시면 언제든지 연락하십시오! dx/xc
whuber

2
수정했습니다.
Ian Langmore

10

감마 분포는 밀도가 다음과 같이 표현 될 수 있기 때문에 지수 패밀리에 있습니다.

f(xθ)=exp(η(θ)T(x)g(θ)+h(x))

감마 밀도 함수를 찾고, 그 로그 노말는 천연 매개 변수 θ = [ (C) - 1 - 1

g(θ)=log(Γ(c))+clog(b)
θ=[c11b]

지수 패밀리의 모든 분포에는 KL 분기가 있습니다.

KL(q;p)=g(θp)g(θq)(θpθq)g(θq).

그것에 대한 좋은 증거가 있습니다 :

Frank Nielsen, École Polytechnique 및 Richard Nock, 지수 패밀리의 엔트로피 및 교차 엔트로피.


g(.)θpθq

1
예,이 공식은 동일한 지수 계열의 두 분포에 대한 것입니다.
Neil G
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.