ฉันจำเป็นต้องกำหนด 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πσ21),
ดังนั้นฉันจึง จำกัด ตัวเองไว้ที่∫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)x2dx−∫p(x)2xμ2dx+∫p(x)μ22dx2σ22
ปล่อยให้⟨⟩แสดงถึงความคาดหวังของผู้ประกอบการภายใต้pผมสามารถเขียนนี้เป็น
12log(2πσ22)+⟨x2⟩−2⟨x⟩μ2+μ222σ22.
var(x)=⟨x2⟩−⟨x⟩2
⟨x2⟩=σ21+μ21
และดังนั้นจึง
12log(2πσ2)+σ21+μ21−2μ1μ2+μ222σ22,
ซึ่งฉันสามารถใส่เป็น
12log(2πσ22)+σ21+(μ1−μ2)22σ22.
ฉันเอาทุกอย่างเข้าด้วยกัน
KL(p,q)=−∫p(x)logq(x)dx+∫p(x)logp(x)dx=12log(2πσ22)+σ21+(μ1−μ2)22σ22−12(1+log2πσ21)=logσ2σ1+σ21+(μ1−μ2)22σ22.
1
ทุกคนสามารถสังเกตเห็นข้อผิดพลาดของฉันได้ไหม
ปรับปรุง
ขอบคุณ mpiktas สำหรับการล้างสิ่งต่าง ๆ คำตอบที่ถูกต้องคือ:
KL(p,q)=logσ2σ1+σ21+(μ1−μ2)22σ22−12