คำนวณ Kullback-Leibler Divergence ในทางปฏิบัติหรือไม่?


15

ฉันใช้ KL Divergence เป็นตัวชี้วัดความแตกต่างกันระหว่าง 2และQp.m.f. PQ

DKL(P||Q)=i=1Nln(PiQi)Pi
=P(Xi)ln(Q(Xi))+P(Xi)ln(P(Xi))

ถ้า

P(Xi)=0
เราสามารถคำนวณ P ( X i ) l n ( P ( X i ) ) = 0
P(Xi)ln(Q(Xi))=0
P(Xi)ln(P(Xi))=0

แต่ถ้า

P(Xi)0
และ
Q(Xi)=0
วิธีการคำนวณ
P(Xi)ln(Q(Xi))

เพื่อช่วยให้คนอื่นมองไปที่สิ่งที่คุณตั้งใจคุณอาจต้องการเปลี่ยนเป็นด้วยโทเค็น "\ ne"P(Xi)!=0P(Xi)0

นอกจากนี้คุณหมายถึงสำหรับทั้งหมดหรือไม่ ในกรณีนี้ KL divergence ไม่ได้ถูกกำหนดเนื่องจากไม่ใช่ฟังก์ชันความน่าจะเป็น Q(Xi)=0XiQ

@ Matthew ขอบคุณแก้ไขแล้ว ฉันทำตามนิสัยการเขียนรหัสโดยไม่ตั้งใจ
smwikipedia

@Matthewสำหรับบางตัวไม่ใช่ทั้งหมด ฉันกำลังพิจารณาวิธีแก้ปัญหาเพื่อยึดฐานและในชุดผลลัพธ์เดียวกันและเพิ่มจำนวนหลอกหลอกเล็ก ๆ ที่กล่าวว่า 0.001 สำหรับผลลัพธ์ที่ไม่ปรากฏ มันสามารถหลีกเลี่ยงความน่าจะเป็นค่าศูนย์ แต่ฉันไม่แน่ใจว่ามีผลข้างเคียงหรือไม่ Q(Xi)=0XiPQ
smwikipedia

คำตอบ:


15

คุณทำไม่ได้และทำไม่ได้ ลองนึกภาพว่าคุณมีตัวแปรสุ่มของการแจกแจงความน่าจะเป็น Q. แต่เพื่อนของคุณ Bob คิดว่าผลลัพธ์มาจากการกระจายความน่าจะเป็น P เขาได้สร้างการเข้ารหัสที่ดีที่สุดซึ่งจะช่วยลดจำนวนบิตที่คาดหวังไว้ ผล. แต่เนื่องจากเขาสร้างการเข้ารหัสจาก P และไม่ใช่จาก Q รหัสของเขาจึงยาวเกินความจำเป็น KL-divergence ทำการวัดว่าจะใช้รหัสนานเท่าใด

ตอนนี้สมมติว่าเขามีเหรียญและเขาต้องการบอกลำดับของผลลัพธ์ที่คุณได้รับ เนื่องจากส่วนหัวและส่วนท้ายมีแนวโน้มเท่ากันเขาจึงให้ทั้งรหัส 1 บิต 0 สำหรับหัว 1 สำหรับหาง ถ้าเขาได้หางที่หัวหางเขาสามารถส่ง 1 1 0 1. ตอนนี้ถ้าเหรียญของเขาตกลงบนขอบเขาอาจไม่สามารถบอกคุณได้! ไม่มีรหัสที่จะส่งคุณจะทำงาน เมื่อมาถึงจุดนี้ KL-divergence ก็หยุดลง

เนื่องจาก KL-divergence หยุดลงคุณจะต้องใช้การวัดอื่นหรือการแจกแจงความน่าจะเป็นอื่น ๆ สิ่งที่คุณควรทำจริง ๆ ขึ้นอยู่กับสิ่งที่คุณต้องการ ทำไมคุณถึงเปรียบเทียบการแจกแจงความน่าจะเป็น การแจกแจงความน่าจะเป็นของคุณมาจากไหนพวกมันประมาณจากข้อมูลหรือไม่

คุณบอกว่าการแจกแจงความน่าจะเป็นนั้นมาจากเอกสารภาษาธรรมชาติและคุณต้องการเปรียบเทียบคู่หมวดหมู่

ก่อนอื่นฉันขอแนะนำการวัดความสัมพันธ์แบบสมมาตร สำหรับแอปพลิเคชันนี้ดูเหมือนว่า A จะคล้ายกับ B เป็น B คล้ายกับ A

คุณลองวัดความคล้ายคลึงกันแบบโคไซน์แล้วหรือยัง? มันค่อนข้างธรรมดาใน NLP

หากคุณต้องการใช้ KL สิ่งหนึ่งที่คุณทำได้คือการประเมินความน่าจะเป็นจากทั้งสองเอกสารแล้วดูว่าคุณต้องการบิตเพิ่มโดยเฉลี่ยสำหรับเอกสารใดเอกสารหนึ่ง นั่นคือ (P || (P + Q) / 2 + Q || (P + Q) / 2) / 2


คำอธิบายที่ดี แต่สับสนเล็กน้อย: วิธีที่คุณอธิบายย่อหน้าแรกนั่นไม่ใช่ KL (Q || P) ใช่หรือไม่
Jurgen

8

ในทางปฏิบัติฉันได้พบปัญหานี้เช่นกัน ในกรณีนี้ฉันพบว่าการแทนที่ค่า 0 สำหรับจำนวนที่น้อยมากอาจทำให้เกิดปัญหาได้ ขึ้นอยู่กับค่าที่คุณใช้คุณจะแนะนำ "อคติ" ในค่า KL หากคุณกำลังใช้ค่า KL สำหรับการทดสอบสมมติฐานหรือการใช้อื่น ๆ ที่เกี่ยวข้องกับเกณฑ์ดังนั้นค่าขนาดเล็กนี้อาจทำให้คุณมีอคติกับผลลัพธ์ ฉันได้พบว่าวิธีที่มีประสิทธิภาพที่สุดในการจัดการกับเรื่องนี้คือการพิจารณาการคำนวณ KL บนพื้นที่สมมุติฐานที่สอดคล้องกัน X_i ซึ่งทั้ง P และ Q ไม่เป็นศูนย์ โดยพื้นฐานแล้วสิ่งนี้จะ จำกัด โดเมนของ KL ไปยังโดเมนที่ทั้งคู่ถูกกำหนดและช่วยให้คุณหมดปัญหาเมื่อใช้ KL เพื่อทำการทดสอบสมมติฐาน


ขอบคุณ มันเป็นข้อเสนอแนะที่น่าสนใจ โดยพื้นฐานแล้วก็พยายามที่จะยึดค่า P และ Q ในผลลัพธ์ชุดเดียวกัน ฉันจะลองดู
smwikipedia

หากฉันคำนวณ KL บนชุดย่อยข้อมูลที่ทั้ง P และ Q ไม่ใช่ศูนย์ฉันจำเป็นต้องทำให้ P และ Q กลับสู่มาตรฐานอีกครั้งในชุดย่อยนั้นหรือไม่ หรือเพียงแค่ใช้ค่าความน่าจะเป็นดั้งเดิม ฉันคิดว่าฉันควร มิฉะนั้น P และ Q ยังคงไม่ได้อยู่บนฐานเดียวกัน
smwikipedia

ฉันแค่ลองกับข้อเสนอแนะของคุณ P กระจายผลลัพธ์มากกว่า 10K และ Q กระจายผลลัพธ์มากกว่า 10K ด้วย แต่ P และ Q มีผลลัพธ์ที่เหมือนกันเพียง 3K เท่านั้น หากฉันใช้ผลลัพธ์ 3K ทั่วไปเพื่อประเมินความแตกต่างระหว่าง P และ Q ฉันไม่คิดว่ามันสมเหตุสมผล เพราะเราไม่สนใจสิ่งต่าง ๆ มากมาย และ btw ผลลัพธ์ด้วยวิธีนี้ค่อนข้างแตกต่างจากสิ่งที่ฉันได้รับโดยการเพิ่มจำนวนเล็กน้อย (หรือจำนวนหลอก)
smwikipedia

เพิ่มบริบทฉันกำลังทำงานกับการทดสอบ NLP ฉันมีเอกสารหลายประเภทและฉันต้องการบอกว่าแต่ละหมวดหมู่มีความสัมพันธ์กันอย่างไร
smwikipedia

5

Qi=0iQiQiQP

การแก้ปัญหาคือไม่อนุญาตให้มีความน่าจะเป็น 0 หรือ 1 ในการแจกแจงโดยประมาณ โดยปกติจะทำได้โดยการปรับให้เรียบเช่นการปรับให้เรียบแบบ Good-Turing, Dirichlet smoothing หรือ Laplace smoothing

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