2つのガンマ分布間のKullback–Leibler発散


15

pdfによる ガンマ分布パラメーター化の選択と 間の -Leibler発散は、[1]で与えられます。Γ(b,c)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)+bqcqbp

Ψ(x):=Γ(x)/Γ(x)ディガンマ関数であると推測しています

これは派生なしで与えられます。これを導き出す参考文献は見つかりません。助けがありますか?適切なリファレンスで十分です。難しいのは、をガンマpdfに統合することです。logx

[1] WD Penny、KLダイバージェンスのNormal、Gamma、Dirichlet、およびWishart密度、www.fil.ion.ucl.ac.uk /〜wpenny / publications / densities.psで入手可能


2
に関するpdfの導関数を取得すると、探しているl o g x cの係数が導入されます。そのため、ディガンマが表示されます。log(x)
whuber

Pierre Baldi and Laurent Itti(2010)「ビットとワウ:注目すべき用途を備えたベイズの驚き理論」ニューラルネットワーク23:649-666に出くわすと、方程式73が2つのガンマpdf間のKL発散を与えることがわかります。ただし、式が間違って印刷されているように見えます。
クラリネット氏

私は同じ問題への解決策を探して、これを見つける午前1が便利です。
李ヤン

回答:


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).

ホセ

b1Γ(d)0log(x)ex/c(x/c)d1dx=(b1)Γ(d)Γ(d)+(b1)log(c).

前述のyieldにプラグインする

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

Γ a b )の間のKL発散はI c d c d I a b c d に等しく、組み立てが簡単です。Γ(c,d)Γ(a,b)I(c,d,c,d)I(a,b,c,d)


実装の詳細

ガンマ関数は急速に成長するため、オーバーフローを回避するためにガンマを計算せずに対数を取ります。代わりに、統計計算プラットフォーム(Excelを含む)にあるlog-Gamma関数を使用します。

の対数微分であるΓ 一般的に呼ばれるψ ディガンマ関数。入手できない場合は、Wikipediaの記事で説明されいるように比較的簡単に概算できます。Γ(d)/Γ(d)Γ,ψ,

ここで、説明の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
いい答えです。ありがとう!ただし、4番目の等式には符号エラーがあると思います。また、ガンマpdfの分母には余分な係数「c」が必要です。編集してください。
イアンラングモア

@イアンあなたは正しいです。通常、メジャーをとして記述し、それを行わないことでcの余分な要素を省略しました。サインの間違いをよく理解してください。編集したい場合は、お気軽に!dx/xc
whuber

2
修正しました。
イアンラングモア

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).

そのことについての本当に素晴らしい証拠があります:

フコール・ニールセン、エコール・ポリテクニック、リチャード・ノック、指数ファミリーのエントロピーとクロスエントロピー。


これを知らなかった。ちょっとした質問-g 機能、それは同じである必要があります θp はどうかと言うと θq?したがって、たとえば、上記の式はガンマpdfからの通常のpdfのKL発散に有効ですか?
確率論的

1
はい、この式は同じ指数族の2つの分布に対するものです。
ニールG
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.