อย่างไรเคล็ดลับ reparameterizationสำหรับ autoencoders แปรผัน (VAE) ทำงานอย่างไร มีคำอธิบายที่เข้าใจง่ายและเข้าใจง่ายโดยไม่ทำให้คณิตศาสตร์ง่ายขึ้นหรือไม่? แล้วทำไมเราถึงต้องการ 'เคล็ดลับ'?
อย่างไรเคล็ดลับ reparameterizationสำหรับ autoencoders แปรผัน (VAE) ทำงานอย่างไร มีคำอธิบายที่เข้าใจง่ายและเข้าใจง่ายโดยไม่ทำให้คณิตศาสตร์ง่ายขึ้นหรือไม่? แล้วทำไมเราถึงต้องการ 'เคล็ดลับ'?
คำตอบ:
หลังจากอ่านผ่านสไลด์เวิร์กช็อป NIPS 2015 ของ Kingmaฉันรู้ว่าเราต้องการเคล็ดลับการแก้ไขพารามิเตอร์เพื่อ backpropagate ผ่านโหนดแบบสุ่ม
อย่างสังหรณ์ใจในรูปแบบดั้งเดิม VAEs ตัวอย่างจากการสุ่มปมซึ่งประมาณโดยแบบจำลองพารามิเตอร์ของหลังจริง Backprop ไม่สามารถไหลผ่านโหนดสุ่มq ( z ∣ ϕ , x )
การแนะนำพารามิเตอร์ใหม่ช่วยให้เราสามารถแก้ไขพารามิเตอร์ในลักษณะที่ทำให้ backprop ไหลผ่านโหนดที่กำหนดขึ้นได้z
สมมติว่าเรามีการกระจายปกติที่แปรโดยเฉพาะ1) เราต้องการแก้ปัญหาด้านล่าง นี่เป็นปัญหาที่ค่อนข้างโง่และเห็นได้ชัดที่สุดแต่ที่นี่เราเพียงแค่ต้องการที่จะเข้าใจว่าเคล็ดลับ reparameterization ช่วยในการคำนวณการไล่ระดับสีของวัตถุประสงค์นี้2]θ q θ ( x ) = N ( θ , 1 ) ขั้นต่ำθθ E q [ x 2 ]
วิธีหนึ่งในการคำนวณมีดังนี้
สำหรับตัวอย่างของเราโดยที่วิธีนี้ให้
เคล็ดลับ Reparameterization เป็นวิธีที่จะเขียนคาดหวังเพื่อให้การกระจายที่เกี่ยวกับการที่เราจะใช้การไล่ระดับสีเป็นอิสระจากพารามิเตอร์\เพื่อให้บรรลุนี้เราต้องทำให้องค์ประกอบสุ่มในอิสระจาก\ดังนั้นเราเขียนเป็น จากนั้นเราสามารถเขียน โดยที่คือการกระจายของคือ(0,1) ตอนนี้เราสามารถเขียนอนุพันธ์ของดังนี้
นี่คือสมุดบันทึก IPython ที่ฉันเขียนซึ่งดูความแปรปรวนของสองวิธีในการคำนวณการไล่ระดับสี http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb
ตัวอย่างที่สมเหตุสมผลของคณิตศาสตร์ของ "reparameterization trick" ถูกระบุไว้ในคำตอบของ goker แต่แรงจูงใจบางอย่างอาจมีประโยชน์ (ฉันไม่ได้รับอนุญาตให้แสดงความคิดเห็นในคำตอบนั้นดังนั้นนี่คือคำตอบแยกต่างหาก)
ในระยะสั้นเราต้องการคำนวณค่าของรูปแบบ
หากไม่มี "reparameterization หลอกลวง"เรามักจะเขียนสิ่งนี้ต่อคำตอบของคนที่เป็น , ที่ไหน,
ถ้าเราวาดจากแล้วคือการประมาณการเป็นกลางของg _นี่คือตัวอย่างของ "การสุ่มตัวอย่างที่สำคัญ" สำหรับการรวมระบบ Monte Carlo หากแสดงผลลัพธ์บางส่วนของเครือข่ายการคำนวณ (เช่นเครือข่ายนโยบายสำหรับการเรียนรู้การเสริมแรง) เราสามารถใช้สิ่งนี้ในการเผยแพร่กลับ (ใช้กฎลูกโซ่) เพื่อค้นหาอนุพันธ์ที่เกี่ยวข้องกับพารามิเตอร์เครือข่าย
จุดสำคัญคือว่ามักจะเป็นที่เลวร้ายมาก (ความแปรปรวนสูง) ประมาณการ แม้ว่าคุณเฉลี่ยมากกว่าตัวอย่างจำนวนมาก แต่คุณอาจพบว่าค่าเฉลี่ยของมันดูเหมือนว่าจะทำการขยายระบบ (หรือ )อย่างเป็นระบบ
ปัญหาพื้นฐานคือการมีส่วนร่วมที่สำคัญของอาจมาจากค่าของซึ่งหายากมาก (เช่นค่าที่มีขนาดเล็ก) ปัจจัยของกำลังขยายการประมาณการของคุณสำหรับบัญชีนี้ แต่การปรับขนาดนั้นจะไม่ช่วยถ้าคุณไม่เห็นค่าเมื่อคุณประเมินจากตัวอย่างจำนวน จำกัด ความดีหรือไม่ดีของ (เช่นคุณภาพของการประเมิน, , สำหรับดึงมาจาก ) อาจขึ้นอยู่กับซึ่งอาจไม่เหมาะสม (เช่นค่าเริ่มต้นที่เลือกโดยพลการ) มันเป็นเหมือนเรื่องราวของคนขี้เมาที่มองหากุญแจของเขาใกล้ถนน (เพราะนั่นคือสิ่งที่เขาสามารถดู / ตัวอย่าง) แทนที่จะใกล้ที่ที่เขาทิ้งมัน
"เคล็ดลับการแก้ไขพารามิเตอร์" บางครั้งก็แก้ไขปัญหานี้ โดยใช้สัญกรณ์ goker ของเคล็ดลับคือการเขียนเป็นฟังก์ชันของตัวแปรสุ่มมีการกระจายที่ไม่ได้ขึ้นอยู่กับแล้วเขียนความคาดหวังในเป็นความคาดหวังมากกว่า ,
เคล็ดลับ reparameterization มีประโยชน์อย่างยิ่งเมื่อตัวประมาณใหม่ไม่มีปัญหาที่กล่าวถึงข้างต้นอีกต่อไป (เช่นเมื่อเราสามารถเลือกเพื่อให้การประมาณที่ดีไม่ได้ขึ้นอยู่กับ ในการวาดค่าที่หายากของ ) สิ่งนี้สามารถอำนวยความสะดวกได้ (แต่ไม่รับประกัน) โดยข้อเท็จจริงที่ว่าไม่ได้ขึ้นอยู่กับและเราสามารถเลือกเป็นการกระจายแบบ unimodal อย่างง่าย
แต่เคล็ดลับ reparamerization อาจแม้แต่ "การทำงาน" เมื่อคือไม่ได้ประมาณการที่ดีของg _โดยเฉพาะแม้ว่าจะมีผลงานขนาดใหญ่เพื่อจากซึ่งเป็นของหายากมากเราอย่างต่อเนื่องไม่เห็นพวกเขาในระหว่างการเพิ่มประสิทธิภาพและเรายังไม่เห็นพวกเขาเมื่อเราใช้รูปแบบของเรา (ถ้ามีรูปแบบของเราเป็นรูปแบบการกำเนิด ) ในแง่ที่เป็นทางการมากขึ้นเล็กน้อยเราสามารถคิดของการแทนที่วัตถุประสงค์ของเรา (คาดหวังมากกว่า ) ที่มีวัตถุประสงค์ที่มีประสิทธิภาพที่ความคาดหวังบาง"ชุดปกติ"สำหรับพีด้านนอกของฉากทั่วไปนั้นอาจสร้างค่าที่ไม่ดีโดยพลการของ - ดูรูปที่ 2 (b) ของBrock et อัล สำหรับ GAN ที่ประเมินภายนอกชุดตัวอย่างทั่วไประหว่างการฝึกอบรม (ในกระดาษนั้นค่าการตัดที่น้อยกว่าซึ่งสอดคล้องกับค่าตัวแปรแฝงที่อยู่ไกลกว่าชุดทั่วไปถึงแม้ว่าจะมีความน่าจะเป็นสูงกว่า)
ฉันหวังว่าจะช่วย
ให้ฉันอธิบายก่อนทำไมเราต้องใช้เคล็ดลับ Reparameterization ใน VAE
VAE มีตัวเข้ารหัสและตัวถอดรหัส ถอดรหัสการสุ่มกลุ่มตัวอย่างจากหลังจริงZ ~ Q (z|φ, x) ในการใช้ตัวเข้ารหัสและตัวถอดรหัสเป็นเครือข่ายประสาทคุณต้องทำการ backpropogate ผ่านการสุ่มตัวอย่างและนั่นเป็นปัญหาเนื่องจาก backpropogation ไม่สามารถไหลผ่านโหนดแบบสุ่มได้ เพื่อเอาชนะอุปสรรคนี้เราใช้เคล็ดลับการแก้ไขพารามิเตอร์
ตอนนี้ให้มาหลอกลวง เนื่องจากปกติกระจายด้านหลังของเราเราสามารถประมาณมันด้วยการแจกแจงแบบปกติอีกอันได้ เราประมาณZที่มีการกระจายตามปกติε
แต่สิ่งนี้เกี่ยวข้องกันอย่างไร
ตอนนี้แทนที่จะบอกว่าZถูกสุ่มตัวอย่างจากq (z∣ϕ, x)เราสามารถพูดได้ว่าZเป็นฟังก์ชันที่รับพารามิเตอร์(ε, (µ, L))และµ, Lเหล่านี้มาจากเครือข่ายประสาทส่วนบน (เครื่องเข้ารหัส) . ดังนั้นในขณะที่ backpropogation ทั้งหมดที่เราต้องการคืออนุพันธ์ของ wrt t บางส่วน, Lและεนั้นไม่เกี่ยวข้องกับการใช้อนุพันธ์
ฉันคิดว่าคำอธิบายที่พบในหลักสูตรของ Stanford CS228 ในแบบจำลองความน่าจะเป็นแบบกราฟิกนั้นดีมาก พบได้ที่นี่: https://ermongroup.github.io/cs228-notes/extras/vae/
ฉันได้สรุป / คัดลอกส่วนสำคัญที่นี่เพื่อความสะดวก / ความเข้าใจของฉันเอง (แม้ว่าฉันขอแนะนำอย่างยิ่งให้ลองตรวจสอบลิงก์เดิม)
ดังนั้นปัญหาของเราคือเรามีการไล่ระดับสีที่เราต้องการคำนวณ:
หากคุณคุ้นเคยกับตัวประมาณฟังก์ชันของคะแนน (ฉันเชื่อว่า REINFORCE เป็นเพียงกรณีพิเศษนี้) คุณจะสังเกตเห็นว่าเป็นปัญหาที่แก้ได้ อย่างไรก็ตามตัวประเมินฟังก์ชันคะแนนมีความแปรปรวนสูงซึ่งนำไปสู่ความยากลำบากในการเรียนรู้รูปแบบส่วนใหญ่
ดังนั้นภายใต้เงื่อนไขบางประการเราสามารถแสดงการแจกแจงเป็นกระบวนการ 2 ขั้นตอน
ก่อนอื่นเราลองชิมตัวแปรเสียงจากการแจกแจงอย่างง่ายเหมือน Normal Standard ต่อไปเราใช้การแปลงแบบกำหนดขึ้นอย่างที่แมปเสียงแบบสุ่มบนการกระจายที่ซับซ้อนมากขึ้นนี้ นี้ส่วนที่สองคือไม่เสมอไป แต่มันเป็นความจริงสำหรับการเรียนที่น่าสนใจหลายแห่งq_
ตัวอย่างเช่นลองใช้ q ที่ง่ายมากที่เราสุ่มตัวอย่าง
ตอนนี้แทนที่จะจำเป็นต้องได้รับการไล่ระดับสีของความคาดหวังของ Q (z) นั้นเราสามารถเขียนเป็นการไล่ระดับสีของความคาดหวังเกี่ยวกับฟังก์ชั่นที่เรียบง่ายepsilon)
สิ่งนี้มีความแปรปรวนต่ำกว่าด้วยเหตุผลที่ไม่ใช่เหตุผลเล็กน้อย ตรวจสอบส่วน D ของภาคผนวกที่นี่สำหรับคำอธิบาย: https://arxiv.org/pdf/1401.4082.pdf
เรามีแบบจำลองความน่าจะเป็นของเรา และต้องการกู้คืนพารามิเตอร์ของรุ่น เราลดงานของเราเพื่อปรับขอบเขตขอบเขตความแปรปรวน (VLB) ให้เหมาะสม เมื่อต้องการทำสิ่งนี้เราควรจะสามารถทำสองสิ่ง:
ผู้เขียนแนะนำให้ใช้ Monte Carlo Estimator สำหรับทั้งสอง และที่จริงพวกเขาแนะนำเคล็ดลับนี้เพื่อให้ได้เครื่องมือประมาณการ Monte Carlo Gradient ที่แม่นยำยิ่งขึ้นของ VLB
มันเป็นเพียงการปรับปรุงวิธีการเชิงตัวเลข
เคล็ดลับการแก้ไขพารามิเตอร์ลดความแปรปรวนของตัวประมาณ MC สำหรับการไล่ระดับสีอย่างมาก ดังนั้นจึงเป็นเทคนิคการลดความแปรปรวน :
เป้าหมายของเราคือการหาค่าประมาณของ
เราสามารถใช้ "ตัวประมาณฟังก์ชันคะแนน":
แต่คะแนน ฟังก์ชันประมาณค่ามีความแปรปรวนสูง เช่นถ้าความน่าจะเป็นน้อยมากดังนั้นค่าสัมบูรณ์ของ
มีขนาดใหญ่มากและมีค่าเป็นลบ ดังนั้นเราจะมีความแปรปรวนสูง
ด้วย Reparametrizationเรามี
ตอนนี้คาดหวังก็คือ WRTและมีความเป็นอิสระของพารามิเตอร์ลาด\ดังนั้นเราสามารถใส่การไล่ระดับสีโดยตรงในความคาดหวังซึ่งสามารถมองเห็นได้ง่ายโดยเขียนความคาดหวังออกมาอย่างชัดเจน การไล่ระดับสีนั้นมีค่าน้อยกว่ามากดังนั้นเราจึงมีความแปรปรวนที่ลดลง
หมายเหตุ: เราสามารถทำเล่ห์เหลี่ยม reparametrization นี้ได้ก็ต่อเมื่อต่อเนื่องดังนั้นเราจึงสามารถไล่ระดับของพี)