คำอธิบายที่ใช้งานง่ายของการสูญเสียการประมาณค่าเสียงรบกวน (NCE)?


32

ฉันอ่านเกี่ยวกับ NCE (รูปแบบของการสุ่มตัวอย่างผู้สมัคร) จากทั้งสองแหล่ง:

การเขียน Tensorflow

กระดาษต้นฉบับ

ใครสามารถช่วยฉันด้วยสิ่งต่อไปนี้:

  1. คำอธิบายง่ายๆเกี่ยวกับวิธีการทำงานของ NCE (ฉันพบว่าข้างต้นยากที่จะแยกวิเคราะห์และทำความเข้าใจเกี่ยวกับดังนั้นสิ่งที่ใช้งานง่ายที่นำไปสู่คณิตศาสตร์ที่นำเสนอจะมีมาก)
  2. หลังจากจุดที่ 1 ด้านบนคำอธิบายที่ใช้งานง่ายตามธรรมชาติของสิ่งนี้แตกต่างจากการสุ่มตัวอย่างเชิงลบ ฉันเห็นว่ามีการเปลี่ยนแปลงเล็กน้อยในสูตร แต่ไม่สามารถเข้าใจคณิตศาสตร์ได้ ฉันมีความเข้าใจที่เข้าใจง่ายเกี่ยวกับการสุ่มตัวอย่างเชิงลบในบริบทของword2vec- เราสุ่มเลือกตัวอย่างจากคำศัพท์Vและอัปเดตเฉพาะสิ่งเหล่านั้นเนื่องจาก|V|มีขนาดใหญ่และนี่เป็นการเพิ่มความเร็ว โปรดแก้ไขหากผิด
  3. เมื่อใดควรใช้สิ่งใดและจะตัดสินใจอย่างไร มันจะดีถ้าคุณมีตัวอย่าง (อาจเข้าใจได้ง่ายเกี่ยวกับแอปพลิเคชัน)
  4. NCE ดีกว่าการสุ่มตัวอย่างเชิงลบหรือไม่ ดีกว่าในลักษณะใด

ขอขอบคุณ.


อาจเป็นโพสต์ของฉันอาจช่วย nanjiang.quora.com/Noise-contrastive-Eimimationและการทดลองในภายหลังกับ theano สามารถพบได้ที่ github.com/jiangnanHugo/language_modeling ของฉัน ฉันหวังว่าความเข้าใจของฉันถูกต้อง
jiangnan hugo

คำตอบ:


27

นำมาจากโพสต์นี้: https://stats.stackexchange.com/a/245452/154812

ปัญหา

มีปัญหาบางอย่างในการเรียนรู้คำว่าเวคเตอร์โดยใช้เครือข่ายนิวรัล "มาตรฐาน" ด้วยวิธีนี้คำเวกเตอร์จะได้เรียนรู้ในขณะที่เครือข่ายเรียนรู้ที่จะทำนายคำต่อไปที่ได้รับหน้าต่างของคำ (อินพุตของเครือข่าย)

การทำนายคำถัดไปก็เหมือนกับการทำนายชั้นเรียน นั่นคือเครือข่ายดังกล่าวเป็นเพียงลักษณนาม "มาตรฐาน" multinomial (หลายคลาส) และเครือข่ายนี้จะต้องมีเซลล์ประสาทเอาท์พุทมากเท่าที่เรียนมี เมื่อชั้นเรียนมีคำจริงจำนวนเซลล์ประสาทก็ดีมาก

โครงข่ายประสาท "มาตรฐาน" มักจะได้รับการฝึกอบรมด้วยฟังก์ชั่นค่าใช้จ่ายข้ามเอนโทรปีซึ่งต้องการค่าของเซลล์ประสาทเอาท์พุทเพื่อเป็นตัวแทนความน่าจะเป็น - ซึ่งหมายความว่าเอาท์พุท "คะแนน" ที่คำนวณโดยเครือข่ายสำหรับแต่ละชั้นเรียน ความน่าจะเป็นจริงสำหรับแต่ละชั้นเรียน ขั้นตอนการทำให้เป็นมาตรฐานนี้ทำได้โดยใช้ฟังก์ชัน softmax Softmax นั้นมีราคาสูงมากเมื่อใช้กับเลเยอร์เอาท์พุทขนาดใหญ่

ทางออก (a)

เพื่อจัดการกับปัญหานี้นั่นคือการคำนวณค่า softmax ที่มีราคาแพง Word2Vec ใช้เทคนิคที่เรียกว่าการประมาณค่าตัดกันเสียง เทคนิคนี้ได้รับการแนะนำโดย [A] (สร้างใหม่โดย [B]) จากนั้นนำไปใช้ใน [C], [D], [E] เพื่อเรียนรู้คำศัพท์การปักจากข้อความภาษาธรรมชาติที่ไม่มีป้ายกำกับ

แนวคิดพื้นฐานคือการแปลงปัญหาการจัดหมวดหมู่พหุนาม (เนื่องจากเป็นปัญหาของการทำนายคำถัดไป) เป็นปัญหาการจำแนกประเภทไบนารี นั่นคือแทนที่จะใช้ softmax เพื่อประเมินการแจกแจงความน่าจะเป็นจริงของคำที่ส่งออกจะใช้การถดถอยแบบลอจิสติกแบบไบนารี (การจำแนกประเภทไบนารี) แทน

สำหรับตัวอย่างการฝึกอบรมตัวแยกประเภทที่ได้รับการปรับปรุง (ปรับให้เหมาะสม) จะได้รับคู่จริง (คำกลางและคำอื่นที่ปรากฏในบริบท) และจำนวนคู่ที่เสียหายแบบสุ่ม kk (ประกอบด้วยคำกลางและคำที่สุ่มเลือกจาก คำศัพท์) โดยการเรียนรู้ที่จะแยกแยะคู่แท้จากคู่ที่เสียหายลักษณนามจะได้เรียนรู้คำในท้ายที่สุด

สิ่งนี้มีความสำคัญ: แทนที่จะเป็นการทำนายคำถัดไป (เทคนิคการฝึกอบรม "มาตรฐาน") ตัวแยกประเภทที่ได้รับการปรับให้เหมาะสมที่สุดนั้นจะทำนายว่าคู่ของคำนั้นดีหรือไม่ดี

Word2Vec ปรับแต่งกระบวนการเล็กน้อยและเรียกมันว่าการสุ่มตัวอย่างเชิงลบ ใน Word2Vec คำสำหรับตัวอย่างเชิงลบ (ใช้สำหรับคู่ที่เสียหาย) จะถูกดึงมาจากการแจกแจงที่ออกแบบมาเป็นพิเศษซึ่งจะช่วยให้คำที่มีความถี่น้อยจะถูกดึงบ่อยขึ้น

อ้างอิง

[A] (2005) - การประมาณคอนทราสต์: การฝึกอบรมโมเดลบันทึกเชิงเส้นตรงกับข้อมูลที่ไม่มีป้ายกำกับ

[B] (2010) - การประมาณค่าความแตกต่างของเสียงรบกวน: หลักการประมาณค่าแบบใหม่สำหรับแบบจำลองทางสถิติที่ผิดปกติ

[C] (2008) - สถาปัตยกรรมแบบครบวงจรสำหรับการประมวลผลภาษาธรรมชาติ: เครือข่ายประสาทเทียมระดับลึกพร้อมการเรียนรู้แบบมัลติทาสก์

[D] (2012) - ได้อย่างรวดเร็วและขั้นตอนวิธีการที่ง่ายสำหรับการฝึกอบรมประสาทรุ่นภาษาน่าจะเป็น

[E] (2013) - การเรียนรู้ embeddings คำอย่างมีประสิทธิภาพด้วยการประมาณค่าเสียงเปรียบ


3

สุจริตไม่มีวิธีที่เข้าใจง่ายว่าทำไมการสูญเสีย NCE จะทำงานโดยไม่เข้าใจคณิตศาสตร์อย่างลึกซึ้ง เพื่อให้เข้าใจคณิตศาสตร์คุณควรอ่านเอกสารต้นฉบับ

สาเหตุที่การสูญเสีย NCE จะทำงานได้เนื่องจาก NCE ประมาณค่าความน่าจะเป็นสูงสุด (MLE) เมื่ออัตราส่วนของสัญญาณรบกวนต่อข้อมูลจริงเพิ่มขึ้นk

การใช้งาน TensorFlow ทำงานได้จริง โดยทั่วไปสำหรับข้อมูลแต่ละ ,เป็นชั้นที่มีป้ายกำกับจากข้อมูล TensorFlow NCE ตัวอย่างการสูญเสียเรียนจากการกระจายเสียง เราคำนวณตัวเลขพิเศษของตัวเลขสำหรับแต่ละคลาส (1 จาก data +จากการแจกแจงสัญญาณรบกวน) โดยใช้สมการ(x,y)ykk

Δsθ0(w,h)=sθ0(w,h)logkPn(w)

โดยที่เป็นการกระจายสัญญาณรบกวน ด้วยตัวเลขสำหรับแต่ละคลาสที่คำนวณ TensorFlow ใช้ตัวเลขเพื่อคำนวณการสูญเสีย softmax สำหรับการจำแนกเลขฐานสอง (บันทึกการสูญเสียในการถดถอยโลจิสติก) สำหรับแต่ละชั้นเรียนและเพิ่มการสูญเสียเหล่านี้ร่วมกันเป็นการสูญเสีย NCE สุดท้ายPn(w)

อย่างไรก็ตามการนำไปใช้งานนั้นผิดพลาดทางแนวคิดเนื่องจากอัตราส่วนของสัญญาณรบกวนต่อข้อมูลจริงนั้นแตกต่างจากจำนวนคลาสสุ่มตัวอย่างจากการกระจายสัญญาณรบกวน TensorFlow NCE ไม่ได้จัดเตรียมตัวแปรสำหรับอัตราส่วนสัญญาณรบกวนต่อข้อมูลและถือว่าโดยปริยายซึ่งฉันคิดว่าเป็นแนวคิดที่ไม่ถูกต้องknn=k

เอกสารต้นฉบับของ NCE นั้นข้ามการพิสูจน์ไปมากดังนั้นจึงเป็นเรื่องยากที่จะเข้าใจ NCE เพื่อให้เข้าใจคณิตศาสตร์เกี่ยวกับ NCE ง่ายขึ้นฉันมีบล็อกโพสต์เกี่ยวกับคำอธิบายประกอบคณิตศาสตร์นี้จากเอกสาร NCE:

https://leimao.github.io/article/Noise-Contrastive-Estimation/

นักเรียนชั้นปีที่สองขึ้นไปควรเข้าใจ


1

โดยพื้นฐานแล้วนี่เป็นการเลือกตัวอย่างจากการแจกแจงจริงซึ่งประกอบด้วยคลาสจริงและฉลากระดับที่มีเสียงดังอื่น ๆ จากนั้นนำ softmax ไปวางบนพื้น

สิ่งนี้ขึ้นอยู่กับการสุ่มตัวอย่างคำจากการแจกแจงที่แท้จริงและการกระจายเสียง

แนวคิดพื้นฐานคือการฝึกอบรมลักษณนามการถดถอยโลจิสติกซึ่งสามารถแยกตัวอย่างที่ได้จากการแจกแจงจริงและตัวอย่างที่ได้จากการกระจายสัญญาณรบกวน โปรดจำไว้ว่าเมื่อเราพูดถึงตัวอย่างที่ได้จากการแจกแจงจริงเรากำลังพูดถึงตัวอย่างเดียวซึ่งเป็นคลาสจริงที่ได้จากการแจกแจงแบบจำลอง

ที่นี่ฉันได้อธิบายเกี่ยวกับการสูญเสีย NCE และแตกต่างจากการสูญเสีย NCE

การประมาณค่าเสียงรบกวน: โซลูชันสำหรับ Softmax ราคาแพง


1
แม้ว่าลิงก์นี้อาจตอบคำถามได้ดีกว่าหากรวมส่วนสำคัญของคำตอบไว้ที่นี่และให้ลิงก์สำหรับการอ้างอิง คำตอบสำหรับลิงค์เท่านั้นอาจไม่ถูกต้องหากหน้าเว็บที่เชื่อมโยงมีการเปลี่ยนแปลง
tuomastik

0

กล่าวง่ายๆคือ NCE เป็นเพียงฟังก์ชันการจำแนกหมวดหมู่การสูญเสียหลายฉลากโดยมีเพียง 1 ป้ายบวกและลบ K เท่านั้น

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