อะไรคือข้อดีของการวัด Wasserstein เมื่อเทียบกับ Kullback-Leibler divergence?


25

อะไรคือความแตกต่างระหว่างWasserstein metricและKullback-Leibler divergence ? Wasserstein metric เรียกอีกอย่างหนึ่งว่าระยะทางของผู้มีอิทธิพลของโลก

จากวิกิพีเดีย:

Wasserstein (หรือ Vaserstein) เมตริกเป็นฟังก์ชันระยะทางที่กำหนดระหว่างการแจกแจงความน่าจะเป็นในพื้นที่เมตริกที่กำหนด M

และ

Kullback – Leibler divergence เป็นการวัดว่าการแจกแจงความน่าจะเป็นหนึ่งแยกจากการแจกแจงความน่าจะเป็นที่สองอย่างไร

ฉันเคยเห็น KL ถูกใช้ในการเรียนรู้การใช้งานเครื่อง แต่เมื่อเร็ว ๆ นี้ฉันได้พบกับตัวชี้วัดของ Wasserstein มีแนวทางที่ดีเมื่อใช้อย่างใดอย่างหนึ่งหรือไม่?

(ฉันมีชื่อเสียงไม่เพียงพอที่จะสร้างแท็กใหม่ด้วยWassersteinหรือEarth mover's distance.)


ที่ฉันเจอตัวชี้วัด Wasserstein: github.com/RaRe-Technologies/movie-plots-by-genre/blob/master/ …
Thomas Fauskanger

1
แก้ไขโพสต์เพื่อเพิ่มแท็ก Wasserstein ตามคำขอโปสเตอร์ ยังเพิ่มคำตอบ
ลูคัสโรเบิร์ตส์

คำตอบ:


28

เมื่อพิจารณาถึงข้อดีของการ Wasserstein เมตริกเมื่อเทียบกับ KL แตกต่างแล้วเห็นได้ชัดที่สุดคือการที่ W เป็นตัวชี้วัดในขณะที่ KL ความแตกต่างไม่ได้ตั้งแต่ KL ไม่สมมาตร (เช่นโดยทั่วไปQ | | P )และไม่ตอบสนองความไม่เท่าเทียมกันของรูปสามเหลี่ยม (เช่นD K L ( R | | P ) D K L ( Q | | P ) + D KDKL(P||Q)DKL(Q||P)ไม่ถือโดยทั่วไป)DKL(R||P)DKL(Q||P)+DKL(R||Q)

สิ่งที่แตกต่างกันในทางปฏิบัติแล้วหนึ่งในสิ่งที่สำคัญที่สุดคือไม่เหมือนกับ KL (และมาตรการอื่น ๆ อีกมากมาย) Wasserstein คำนึงถึงพื้นที่ของตัวชี้วัดและสิ่งนี้หมายความว่าอย่างไรในแง่นามธรรมที่น้อยกว่าบางทีอาจอธิบายได้ดีที่สุดในตัวอย่าง เพื่อร่างรหัสเพียงการผลิต):

# define samples this way as scipy.stats.wasserstein_distance can't take probability distributions directly
sampP = [1,1,1,1,1,1,2,3,4,5]
sampQ = [1,2,3,4,5,5,5,5,5,5]
# and for scipy.stats.entropy (gives KL divergence here) we want distributions
P = np.unique(sampP, return_counts=True)[1] / len(sampP)
Q = np.unique(sampQ, return_counts=True)[1] / len(sampQ)
# compare to this sample / distribution:
sampQ2 = [1,2,2,2,2,2,2,3,4,5]
Q2 = np.unique(sampQ2, return_counts=True)[1] / len(sampQ2)

fig = plt.figure(figsize=(10,7))
fig.subplots_adjust(wspace=0.5)
plt.subplot(2,2,1)
plt.bar(np.arange(len(P)), P, color='r')
plt.xticks(np.arange(len(P)), np.arange(1,5), fontsize=0)
plt.subplot(2,2,3)
plt.bar(np.arange(len(Q)), Q, color='b')
plt.xticks(np.arange(len(Q)), np.arange(1,5))
plt.title("Wasserstein distance {:.4}\nKL divergence {:.4}".format(
    scipy.stats.wasserstein_distance(sampP, sampQ), scipy.stats.entropy(P, Q)), fontsize=10)
plt.subplot(2,2,2)
plt.bar(np.arange(len(P)), P, color='r')
plt.xticks(np.arange(len(P)), np.arange(1,5), fontsize=0)
plt.subplot(2,2,4)
plt.bar(np.arange(len(Q2)), Q2, color='b')
plt.xticks(np.arange(len(Q2)), np.arange(1,5))
plt.title("Wasserstein distance {:.4}\nKL divergence {:.4}".format(
    scipy.stats.wasserstein_distance(sampP, sampQ2), scipy.stats.entropy(P, Q2)), fontsize=10)
plt.show()

Wasserstein metric และ Kullback-Leibler divergences สำหรับการแจกแจงที่ต่างกันสองคู่ ที่นี่มาตรการระหว่างการแจกแจงสีแดงและสีน้ำเงินนั้นเหมือนกันสำหรับ KL divergence ในขณะที่ระยะทาง Wasserstein วัดการทำงานที่จำเป็นในการขนส่งมวลความน่าจะเป็นจากสถานะสีแดงไปยังรัฐสีน้ำเงินโดยใช้แกน x เป็น "ถนน" เห็นได้ชัดว่ามาตรการนี้ยิ่งมีขนาดใหญ่มากเท่าไรความน่าจะเป็นยิ่งมากขึ้นก็คือ ดังนั้นสิ่งที่คุณต้องการใช้ขึ้นอยู่กับพื้นที่แอพพลิเคชันของคุณและสิ่งที่คุณต้องการวัด ในฐานะที่เป็นโน้ตแทนที่จะเป็น KL divergence นอกจากนี้ยังมีตัวเลือกอื่น ๆ เช่นระยะทาง Jensen-Shannon ซึ่งเป็นตัวชี้วัดที่เหมาะสม


6

Wasserstein metric ส่วนใหญ่จะปรากฏในปัญหาการขนส่งที่ดีที่สุดซึ่งเป้าหมายคือการย้ายสิ่งต่าง ๆ จากการกำหนดค่าที่กำหนดไปยังการกำหนดค่าที่ต้องการในราคาต่ำสุดหรือระยะทางต่ำสุด Kullback-Leibler (KL) เป็นความแตกต่าง (ไม่ใช่ตัวชี้วัด) และแสดงให้เห็นบ่อยครั้งในสถิติการเรียนรู้ของเครื่องและทฤษฎีข้อมูล

นอกจากนี้ตัวชี้วัด Wasserstein ไม่ต้องการการวัดทั้งสองแบบในพื้นที่ความน่าจะเป็นแบบเดียวกันในขณะที่ KL divergence ต้องการการวัดทั้งสองแบบในพื้นที่ความน่าจะเป็นแบบเดียวกัน

kμผมΣผมผม=1,2

W2(ยังไม่มีข้อความ0,ยังไม่มีข้อความ1)2=μ1-μ222+เสื้อR(Σ1+Σ2-2(Σ21/2Σ1Σ21/2)1/2)
DKL(ยังไม่มีข้อความ0,ยังไม่มีข้อความ1)=12(TR(Σ1-1Σ0)+(μ1-μ0)TΣ1-1(μ1-μ0)-k+LN(เดชอุดมΣ1เดชอุดมΣ0)).
Σ1=Σ2=Wผมkμ1μ20-k0ดังนั้นปริมาณสองอย่างนี้จึงกลายเป็น: และ โปรดสังเกตว่าระยะทาง Wasserstein จะไม่เปลี่ยนแปลงหากความแปรปรวนเปลี่ยนไป (กล่าวว่าใช้เป็นปริมาณมากในเมทริกซ์ความแปรปรวนร่วม) ในขณะที่ KL แตกต่าง นี่เป็นเพราะระยะทาง Wasserstein เป็นฟังก์ชันระยะทางในพื้นที่สนับสนุนร่วมของการวัดความน่าจะเป็นสองแบบ ในทางตรงกันข้าม KL divergence เป็น divergence และ divergence นี้เปลี่ยนแปลงตามพื้นที่ข้อมูล (อัตราส่วนสัญญาณต่อสัญญาณรบกวน) ของการแจกแจง
W2(ยังไม่มีข้อความ0,ยังไม่มีข้อความ1)2=μ1-μ222
DKL(ยังไม่มีข้อความ0,ยังไม่มีข้อความ1)=(μ1-μ0)TΣ1-1(μ1-μ0).
W


1

ตัวชี้วัด Wasserstein มีประโยชน์ในการตรวจสอบความถูกต้องของแบบจำลองเนื่องจากหน่วยของมันเป็นของการตอบสนองของตัวเอง ตัวอย่างเช่นหากคุณกำลังเปรียบเทียบการแทนแบบสุ่มสองแบบของระบบเดียวกัน (เช่นแบบจำลองการลดคำสั่งซื้อ)และและการตอบสนองคือหน่วยการกระจัดตัวเมตริก Wasserstein ก็อยู่ในหน่วยการกระจัด หากคุณลดการสุ่มแทนของคุณเป็นค่าที่กำหนด CDF ของการแจกแจงของแต่ละรายการจะเป็นฟังก์ชันขั้นตอน ตัวชี้วัด Wasserstein คือความแตกต่างของค่าPQ

ฉันพบว่าคุณสมบัตินี้เป็นส่วนขยายที่เป็นธรรมชาติมากเพื่อพูดคุยเกี่ยวกับความแตกต่างที่แน่นอนระหว่างตัวแปรสุ่มสองตัว

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