ความแตกต่างของ KL ระหว่าง Gaussians ที่ไม่เปลี่ยนแปลงสองตัว


79

ฉันจำเป็นต้องกำหนด KL-divergence ระหว่างสอง Gaussians ฉันกำลังเปรียบเทียบผลลัพธ์ของฉันกับสิ่งเหล่านี้แต่ฉันไม่สามารถทำซ้ำผลลัพธ์ของพวกเขาได้ ผลลัพธ์ของฉันผิดอย่างชัดเจนเนื่องจาก KL ไม่ใช่ 0 สำหรับ KL (p, p)

ฉันสงสัยว่าฉันกำลังทำผิดพลาดและถามว่าใครสามารถตรวจสอบได้

ให้p(x)=N(μ1,σ1)และq(x)=N(μ2,σ2) ) จาก PRML ของ Bishop ฉันรู้ว่า

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx

โดยที่การรวมเข้าด้วยกันจะทำในทุกบรรทัดจริงและ

p(x)logp(x)dx=12(1+log2πσ12),

ดังนั้นฉันจึง จำกัด ตัวเองไว้ที่p(x)logq(x)dxซึ่งฉันสามารถเขียนออกมาเป็น

p(x)log1(2πσ22)(1/2)e(xμ2)22σ22dx,

ซึ่งสามารถแยกออกเป็น

12log(2πσ22)p(x)loge(xμ2)22σ22dx.

รับบันทึกที่ฉันได้รับ

12log(2πσ22)p(x)((xμ2)22σ22)dx,

ที่ซึ่งฉันแยกจำนวนเงินและรับσ22จากอินทิกรัล

12log(2πσ22)+p(x)x2dxp(x)2xμ2dx+p(x)μ22dx2σ22

ปล่อยให้แสดงถึงความคาดหวังของผู้ประกอบการภายใต้pผมสามารถเขียนนี้เป็น

12log(2πσ22)+x22xμ2+μ222σ22.

var(x)=x2x2

x2=σ12+μ12

และดังนั้นจึง

12log(2πσ2)+σ12+μ122μ1μ2+μ222σ22,

ซึ่งฉันสามารถใส่เป็น

12log(2πσ22)+σ12+(μ1μ2)22σ22.

ฉันเอาทุกอย่างเข้าด้วยกัน

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx=12log(2πσ22)+σ12+(μ1μ2)22σ2212(1+log2πσ12)=logσ2σ1+σ12+(μ1μ2)22σ22.
1

ทุกคนสามารถสังเกตเห็นข้อผิดพลาดของฉันได้ไหม

ปรับปรุง

ขอบคุณ mpiktas สำหรับการล้างสิ่งต่าง ๆ คำตอบที่ถูกต้องคือ:

KL(p,q)=logσ2σ1+σ12+(μ1μ2)22σ2212


xμ1

สิ่งที่เกี่ยวกับกรณีหลายตัวแปร?

ฉันเพิ่งเห็นในรายงานการวิจัยที่ kld ควรเป็น $ KL (p, q) = ½ * ((μ₁-μ₂) ² + σ₁² + σ₂²) * ((1 / σ₁²) + (1 / σ₂²)) - 2
skyde

1
p(x)logp(x)dx=12(1+log2πσ12)
p(x)logp(x)dx=12(1+log2πσ12)

คำตอบที่ยังอยู่ในของฉัน1996 กระดาษในการสูญเสียที่แท้จริง
ซีอาน

คำตอบ:


59

ตกลงฉันไม่ดี ข้อผิดพลาดอยู่ในสมการสุดท้าย:

KL(p,q)=p(x)logq(x)dx+p(x)logp(x)dx=12log(2πσ22)+σ12+(μ1μ2)22σ2212(1+log2πσ12)=logσ2σ1+σ12+(μ1μ2)22σ2212

12μ1=μ2σ1=σ2


@mpiktas ฉันหมายถึงคำถามจริงๆ - bayerj เป็นนักวิจัยที่ได้รับการตีพิมพ์เป็นอย่างดีและฉันเป็นปริญญาตรี ดีใจที่ได้เห็นว่าแม้แต่พวกสมาร์ทก็กลับไปถามทางอินเทอร์เน็ตในบางครั้ง :)
N. McA

3
μ1σ1μ2σ2

N(u1,σ1)

31

pμ1σ12qμ2σ22qp

[log(p(x))log(q(x))]p(x)dx

=[12log(2π)log(σ1)12(xμ1σ1)2+12log(2π)+log(σ2)+12(xμ2σ2)2] ×12πσ1exp[12(xμ1σ1)2]dx

={log(σ2σ1)+12[(xμ2σ2)2(xμ1σ1)2]} ×12πσ1exp[12(xμ1σ1)2]dx

=E1{log(σ2σ1)+12[(xμ2σ2)2(xμ1σ1)2]}

=log(σ2σ1)+12σ22E1{(Xμ2)2}12σ12E1{(Xμ1)2}

=log(σ2σ1)+12σ22E1{(Xμ2)2}12

(Xμ2)2=(Xμ1+μ1μ2)2=(Xμ1)2+2(Xμ1)(μ1μ2)+(μ1μ2)2

=log(σ2σ1)+12σ22[E1{(Xμ1)2}+2(μ1μ2)E1{Xμ1}+(μ1μ2)2]12

=log(σ2σ1)+σ12+(μ1μ2)22σ2212

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.