reparameterization trick สำหรับ VAEs ทำงานอย่างไรและทำไมจึงมีความสำคัญ


57

อย่างไรเคล็ดลับ reparameterizationสำหรับ autoencoders แปรผัน (VAE) ทำงานอย่างไร มีคำอธิบายที่เข้าใจง่ายและเข้าใจง่ายโดยไม่ทำให้คณิตศาสตร์ง่ายขึ้นหรือไม่? แล้วทำไมเราถึงต้องการ 'เคล็ดลับ'?


5
ส่วนหนึ่งของคำตอบคือการสังเกตว่าการแจกแจงแบบปกติทั้งหมดเป็นเพียงการย่อส่วนและฉบับแปลของ Normal (1, 0) ในการดึงจาก Normal (mu, sigma) คุณสามารถวาดจาก Normal (1, 0) คูณด้วย sigma (scale) และเพิ่ม mu (แปล)
พระภิกษุ

@monk: มันควรจะเป็นปกติ (0,1) แทนที่จะเป็น (1,0) ถูกต้องมิฉะนั้นการคูณและการขยับจะเป็นไปได้อย่างสมบูรณ์!
ริกา

@ บรีซฮา! ใช่แน่นอนขอบคุณ
พระภิกษุ

คำตอบ:


57

หลังจากอ่านผ่านสไลด์เวิร์กช็อป NIPS 2015 ของ Kingmaฉันรู้ว่าเราต้องการเคล็ดลับการแก้ไขพารามิเตอร์เพื่อ backpropagate ผ่านโหนดแบบสุ่ม

อย่างสังหรณ์ใจในรูปแบบดั้งเดิม VAEs ตัวอย่างจากการสุ่มปมซึ่งประมาณโดยแบบจำลองพารามิเตอร์ของหลังจริง Backprop ไม่สามารถไหลผ่านโหนดสุ่มq ( z ϕ , x )zq(zϕ,x)

การแนะนำพารามิเตอร์ใหม่ช่วยให้เราสามารถแก้ไขพารามิเตอร์ในลักษณะที่ทำให้ backprop ไหลผ่านโหนดที่กำหนดขึ้นได้zϵz

รูปแบบดั้งเดิมและ reparameterised


3
ทำไมจึงถูกกำหนดในขณะนี้ทางด้านขวา? z
bringingdownthegauss

2
มันไม่ได้ แต่ก็ไม่ได้เป็น "แหล่งที่มาของการสุ่ม" - บทบาทนี้ได้ถูกนำตัวไปจาก\ϵ
quant_dev

โปรดทราบว่าวิธีการนี้ได้รับการเสนอหลายครั้งก่อนปี 2014: blog.shakirm.com/2015/10/…
quant_dev

2
ง่ายมากใช้งานง่าย! คำตอบที่ดี!
Serhiy

2
น่าเสียดายที่มันไม่ได้เป็น รูปแบบดั้งเดิมยังคงสามารถย้อนกลับได้ แต่มีความแปรปรวนสูงกว่า รายละเอียดสามารถพบได้จากการโพสต์ของฉัน
JP Zhang

56

สมมติว่าเรามีการกระจายปกติที่แปรโดยเฉพาะ1) เราต้องการแก้ปัญหาด้านล่าง นี่เป็นปัญหาที่ค่อนข้างโง่และเห็นได้ชัดที่สุดแต่ที่นี่เราเพียงแค่ต้องการที่จะเข้าใจว่าเคล็ดลับ reparameterization ช่วยในการคำนวณการไล่ระดับสีของวัตถุประสงค์นี้2]θ q θ ( x ) = N ( θ , 1 ) ขั้นต่ำθqθqθ(x)=N(θ,1)θ E q [ x 2 ]

minθEq[x2]
θEq[x2]

วิธีหนึ่งในการคำนวณมีดังนี้ θEq[x2]

θEq[x2]=θqθ(x)x2dx=x2θqθ(x)qθ(x)qθ(x)dx=qθ(x)θlogqθ(x)x2dx=Eq[x2θlogqθ(x)]

สำหรับตัวอย่างของเราโดยที่วิธีนี้ให้ qθ(x)=N(θ,1)

θEq[x2]=Eq[x2(xθ)]

เคล็ดลับ Reparameterization เป็นวิธีที่จะเขียนคาดหวังเพื่อให้การกระจายที่เกี่ยวกับการที่เราจะใช้การไล่ระดับสีเป็นอิสระจากพารามิเตอร์\เพื่อให้บรรลุนี้เราต้องทำให้องค์ประกอบสุ่มในอิสระจาก\ดังนั้นเราเขียนเป็น จากนั้นเราสามารถเขียน โดยที่คือการกระจายของคือ(0,1) ตอนนี้เราสามารถเขียนอนุพันธ์ของดังนี้ θqθx

x=θ+ϵ,ϵN(0,1)
Eq[x2]=Ep[(θ+ϵ)2]
pϵN(0,1)Eq[x2]
θEq[x2]=θEp[(θ+ϵ)2]=Ep[2(θ+ϵ)]

นี่คือสมุดบันทึก IPython ที่ฉันเขียนซึ่งดูความแปรปรวนของสองวิธีในการคำนวณการไล่ระดับสี http://nbviewer.jupyter.org/github/gokererdogan/Notebooks/blob/master/Reparameterization%20Trick.ipynb


4
theta "ชัดเจน" สำหรับสมการแรกคืออะไร?
gwg

2
มันคือ 0. วิธีหนึ่งในการดูนั่นคือให้สังเกตว่า E [x ^ 2] = E [x] ^ 2 + Var (x) ซึ่งก็คือ theta ^ 2 + 1 ในกรณีนี้ ดังนั้น theta = 0 จึงลดวัตถุประสงค์นี้ลง
goker

ดังนั้นมันขึ้นอยู่กับปัญหาทั้งหมดหรือไม่ สำหรับการพูด min_ \ theta E_q [| x | ^ (1/4)] มันอาจจะแตกต่างอย่างสิ้นเชิง?
Anne van Rossum

ขึ้นอยู่กับปัญหาอะไร ทีต้าที่ดีที่สุด? ถ้าใช่มันแน่นอนขึ้นอยู่กับปัญหา
goker

ในสมการหลัง "วิธีนี้ให้" ไม่ควรเป็นแทนเพียงแค่ ? θEq[x2]=Eq[x2(xθ)qθ(x)]θEq[x2]=Eq[x2(xθ)]
AlphaOmega

17

ตัวอย่างที่สมเหตุสมผลของคณิตศาสตร์ของ "reparameterization trick" ถูกระบุไว้ในคำตอบของ goker แต่แรงจูงใจบางอย่างอาจมีประโยชน์ (ฉันไม่ได้รับอนุญาตให้แสดงความคิดเห็นในคำตอบนั้นดังนั้นนี่คือคำตอบแยกต่างหาก)

ในระยะสั้นเราต้องการคำนวณค่าของรูปแบบ Gθ

Gθ=θExqθ[]

หากไม่มี "reparameterization หลอกลวง"เรามักจะเขียนสิ่งนี้ต่อคำตอบของคนที่เป็น , ที่ไหน, Exqθ[Gθest(x)]

Gθest(x)=1qθ(x)θqθ(x)=θlog(qθ(x))

ถ้าเราวาดจากแล้วคือการประมาณการเป็นกลางของg _นี่คือตัวอย่างของ "การสุ่มตัวอย่างที่สำคัญ" สำหรับการรวมระบบ Monte Carlo หากแสดงผลลัพธ์บางส่วนของเครือข่ายการคำนวณ (เช่นเครือข่ายนโยบายสำหรับการเรียนรู้การเสริมแรง) เราสามารถใช้สิ่งนี้ในการเผยแพร่กลับ (ใช้กฎลูกโซ่) เพื่อค้นหาอนุพันธ์ที่เกี่ยวข้องกับพารามิเตอร์เครือข่ายxqθGθestGθθ

จุดสำคัญคือว่ามักจะเป็นที่เลวร้ายมาก (ความแปรปรวนสูง) ประมาณการ แม้ว่าคุณเฉลี่ยมากกว่าตัวอย่างจำนวนมาก แต่คุณอาจพบว่าค่าเฉลี่ยของมันดูเหมือนว่าจะทำการขยายระบบ (หรือ )อย่างเป็นระบบGθestGθ

ปัญหาพื้นฐานคือการมีส่วนร่วมที่สำคัญของอาจมาจากค่าของซึ่งหายากมาก (เช่นค่าที่มีขนาดเล็ก) ปัจจัยของกำลังขยายการประมาณการของคุณสำหรับบัญชีนี้ แต่การปรับขนาดนั้นจะไม่ช่วยถ้าคุณไม่เห็นค่าเมื่อคุณประเมินจากตัวอย่างจำนวน จำกัด ความดีหรือไม่ดีของ (เช่นคุณภาพของการประเมิน, , สำหรับดึงมาจาก ) อาจขึ้นอยู่กับGθxxqθ(x)1qθ(x)xGθqθGθestxqθθซึ่งอาจไม่เหมาะสม (เช่นค่าเริ่มต้นที่เลือกโดยพลการ) มันเป็นเหมือนเรื่องราวของคนขี้เมาที่มองหากุญแจของเขาใกล้ถนน (เพราะนั่นคือสิ่งที่เขาสามารถดู / ตัวอย่าง) แทนที่จะใกล้ที่ที่เขาทิ้งมัน

"เคล็ดลับการแก้ไขพารามิเตอร์" บางครั้งก็แก้ไขปัญหานี้ โดยใช้สัญกรณ์ goker ของเคล็ดลับคือการเขียนเป็นฟังก์ชันของตัวแปรสุ่มมีการกระจายที่ไม่ได้ขึ้นอยู่กับแล้วเขียนความคาดหวังในเป็นความคาดหวังมากกว่า ,xϵpθGθp

Gθ=θEϵp[J(θ,ϵ)]=Eϵp[θJ(θ,ϵ)]
สำหรับ บางepsilon)J(θ,ϵ)

เคล็ดลับ reparameterization มีประโยชน์อย่างยิ่งเมื่อตัวประมาณใหม่ไม่มีปัญหาที่กล่าวถึงข้างต้นอีกต่อไป (เช่นเมื่อเราสามารถเลือกเพื่อให้การประมาณที่ดีไม่ได้ขึ้นอยู่กับ ในการวาดค่าที่หายากของ ) สิ่งนี้สามารถอำนวยความสะดวกได้ (แต่ไม่รับประกัน) โดยข้อเท็จจริงที่ว่าไม่ได้ขึ้นอยู่กับและเราสามารถเลือกเป็นการกระจายแบบ unimodal อย่างง่ายθJ(θ,ϵ)pϵpθp

แต่เคล็ดลับ reparamerization อาจแม้แต่ "การทำงาน" เมื่อคือไม่ได้ประมาณการที่ดีของg _โดยเฉพาะแม้ว่าจะมีผลงานขนาดใหญ่เพื่อจากซึ่งเป็นของหายากมากเราอย่างต่อเนื่องไม่เห็นพวกเขาในระหว่างการเพิ่มประสิทธิภาพและเรายังไม่เห็นพวกเขาเมื่อเราใช้รูปแบบของเรา (ถ้ามีรูปแบบของเราเป็นรูปแบบการกำเนิด ) ในแง่ที่เป็นทางการมากขึ้นเล็กน้อยเราสามารถคิดของการแทนที่วัตถุประสงค์ของเรา (คาดหวังมากกว่า ) ที่มีวัตถุประสงค์ที่มีประสิทธิภาพที่ความคาดหวังบาง"ชุดปกติ"สำหรับพีด้านนอกของฉากทั่วไปนั้นθJ(θ,ϵ)GθGθϵppϵอาจสร้างค่าที่ไม่ดีโดยพลการของ - ดูรูปที่ 2 (b) ของBrock et อัล สำหรับ GAN ที่ประเมินภายนอกชุดตัวอย่างทั่วไประหว่างการฝึกอบรม (ในกระดาษนั้นค่าการตัดที่น้อยกว่าซึ่งสอดคล้องกับค่าตัวแปรแฝงที่อยู่ไกลกว่าชุดทั่วไปถึงแม้ว่าจะมีความน่าจะเป็นสูงกว่า)J

ฉันหวังว่าจะช่วย


"ปัจจัย 1 / qθ (x) กำลังขยายการประมาณการของคุณเพื่อพิจารณาสิ่งนี้ แต่ถ้าคุณไม่เคยเห็นค่าของ x การปรับขนาดนั้นจะไม่ช่วยได้" คุณอธิบายเพิ่มเติมได้ไหม
czxttkl

@czxttkl ในทางปฏิบัติเราประมาณค่าที่ต้องการด้วยจำนวนตัวอย่างที่ จำกัด หากมีขนาดเล็กมากสำหรับบางแล้วเราอาจจะไม่น่าที่จะลิ้มลองเช่นxดังนั้นแม้ว่ารวมถึงปัจจัยขนาดใหญ่และอาจมีส่วนร่วมที่มีความหมายกับค่าที่คาดหวังที่แท้จริงมันอาจถูกแยกออกจากการคาดการณ์มูลค่าที่เราคาดหวังสำหรับ จำนวนตัวอย่างที่เหมาะสมใด ๆ qθxxGθest(x)1/qθ
Seth Bruder

10

ให้ฉันอธิบายก่อนทำไมเราต้องใช้เคล็ดลับ Reparameterization ใน VAE

VAE มีตัวเข้ารหัสและตัวถอดรหัส ถอดรหัสการสุ่มกลุ่มตัวอย่างจากหลังจริงZ ~ Q (z|φ, x) ในการใช้ตัวเข้ารหัสและตัวถอดรหัสเป็นเครือข่ายประสาทคุณต้องทำการ backpropogate ผ่านการสุ่มตัวอย่างและนั่นเป็นปัญหาเนื่องจาก backpropogation ไม่สามารถไหลผ่านโหนดแบบสุ่มได้ เพื่อเอาชนะอุปสรรคนี้เราใช้เคล็ดลับการแก้ไขพารามิเตอร์

ตอนนี้ให้มาหลอกลวง เนื่องจากปกติกระจายด้านหลังของเราเราสามารถประมาณมันด้วยการแจกแจงแบบปกติอีกอันได้ เราประมาณZที่มีการกระจายตามปกติε

ป้อนคำอธิบายรูปภาพที่นี่

แต่สิ่งนี้เกี่ยวข้องกันอย่างไร

ตอนนี้แทนที่จะบอกว่าZถูกสุ่มตัวอย่างจากq (z∣ϕ, x)เราสามารถพูดได้ว่าZเป็นฟังก์ชันที่รับพารามิเตอร์(ε, (µ, L))และµ, Lเหล่านี้มาจากเครือข่ายประสาทส่วนบน (เครื่องเข้ารหัส) . ดังนั้นในขณะที่ backpropogation ทั้งหมดที่เราต้องการคืออนุพันธ์ของ wrt t บางส่วน, Lและεนั้นไม่เกี่ยวข้องกับการใช้อนุพันธ์

ป้อนคำอธิบายรูปภาพที่นี่


วิดีโอที่ดีที่สุดที่จะเข้าใจแนวคิดนี้ ฉันอยากจะแนะนำให้ดูวิดีโอที่สมบูรณ์เพื่อความเข้าใจที่ดีขึ้น แต่ถ้าคุณต้องการที่จะเข้าใจเพียงเคล็ดลับการเปลี่ยนค่าพารามิเตอร์แล้วดูจาก 8 นาที youtube.com/channel/UCNIkB2IeJ-6AmZv7bQ1oBYg
Sherlock

9

ฉันคิดว่าคำอธิบายที่พบในหลักสูตรของ Stanford CS228 ในแบบจำลองความน่าจะเป็นแบบกราฟิกนั้นดีมาก พบได้ที่นี่: https://ermongroup.github.io/cs228-notes/extras/vae/

ฉันได้สรุป / คัดลอกส่วนสำคัญที่นี่เพื่อความสะดวก / ความเข้าใจของฉันเอง (แม้ว่าฉันขอแนะนำอย่างยิ่งให้ลองตรวจสอบลิงก์เดิม)

ดังนั้นปัญหาของเราคือเรามีการไล่ระดับสีที่เราต้องการคำนวณ:

ϕEzq(z|x)[f(x,z)]

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

ดังนั้นภายใต้เงื่อนไขบางประการเราสามารถแสดงการแจกแจงเป็นกระบวนการ 2 ขั้นตอนqϕ(z|x)

ก่อนอื่นเราลองชิมตัวแปรเสียงจากการแจกแจงอย่างง่ายเหมือน Normal Standard ต่อไปเราใช้การแปลงแบบกำหนดขึ้นอย่างที่แมปเสียงแบบสุ่มบนการกระจายที่ซับซ้อนมากขึ้นนี้ นี้ส่วนที่สองคือไม่เสมอไป แต่มันเป็นความจริงสำหรับการเรียนที่น่าสนใจหลายแห่งq_ϵp(ϵ)gϕ(ϵ,x)qϕ

ตัวอย่างเช่นลองใช้ q ที่ง่ายมากที่เราสุ่มตัวอย่าง

zqμ,σ=N(μ,σ)
ตอนนี้แทนที่จะสุ่มตัวอย่างจากเราสามารถเขียนสิ่งนี้เป็น ที่1)q
z=gμ,σ(ϵ)=μ+ϵσ
ϵN(0,1)

ตอนนี้แทนที่จะจำเป็นต้องได้รับการไล่ระดับสีของความคาดหวังของ Q (z) นั้นเราสามารถเขียนเป็นการไล่ระดับสีของความคาดหวังเกี่ยวกับฟังก์ชั่นที่เรียบง่ายepsilon)p(ϵ)

ϕEzq(z|x)[f(x,z)]=Eϵp(ϵ)[ϕf(x,g(ϵ,x))]

สิ่งนี้มีความแปรปรวนต่ำกว่าด้วยเหตุผลที่ไม่ใช่เหตุผลเล็กน้อย ตรวจสอบส่วน D ของภาคผนวกที่นี่สำหรับคำอธิบาย: https://arxiv.org/pdf/1401.4082.pdf


สวัสดีคุณรู้ไหมว่าทำไมในการดำเนินการพวกเขาแบ่ง std ด้วย 2? (เช่น std = torch.exp (z_var / 2)) ในการแก้ไขพารามิเตอร์?
Rika

4

เรามีแบบจำลองความน่าจะเป็นของเรา และต้องการกู้คืนพารามิเตอร์ของรุ่น เราลดงานของเราเพื่อปรับขอบเขตขอบเขตความแปรปรวน (VLB) ให้เหมาะสม เมื่อต้องการทำสิ่งนี้เราควรจะสามารถทำสองสิ่ง:

  • คำนวณ VLB
  • รับการไล่ระดับสีของ VLB

ผู้เขียนแนะนำให้ใช้ Monte Carlo Estimator สำหรับทั้งสอง และที่จริงพวกเขาแนะนำเคล็ดลับนี้เพื่อให้ได้เครื่องมือประมาณการ Monte Carlo Gradient ที่แม่นยำยิ่งขึ้นของ VLB

มันเป็นเพียงการปรับปรุงวิธีการเชิงตัวเลข


2

เคล็ดลับการแก้ไขพารามิเตอร์ลดความแปรปรวนของตัวประมาณ MC สำหรับการไล่ระดับสีอย่างมาก ดังนั้นจึงเป็นเทคนิคการลดความแปรปรวน :

เป้าหมายของเราคือการหาค่าประมาณของ

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]

เราสามารถใช้ "ตัวประมาณฟังก์ชันคะแนน": แต่คะแนน ฟังก์ชันประมาณค่ามีความแปรปรวนสูง เช่นถ้าความน่าจะเป็นน้อยมากดังนั้นค่าสัมบูรณ์ของ มีขนาดใหญ่มากและมีค่าเป็นลบ ดังนั้นเราจะมีความแปรปรวนสูง

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]=Eq(z(i)x(i);ϕ)[logp(x(i)z(i),w)ϕlogqϕ(z)]
p(x(i)z(i),w)logp(x(i)z(i),w)

ด้วย Reparametrizationเรามี z(i)=g(ϵ(i),x(i),ϕ)

ϕEq(z(i)x(i);ϕ)[logp(x(i)z(i),w)]=Ep(ϵ(i))[ϕlogp(x(i)g(ϵ(i),x(i),ϕ),w)]

ตอนนี้คาดหวังก็คือ WRTและมีความเป็นอิสระของพารามิเตอร์ลาด\ดังนั้นเราสามารถใส่การไล่ระดับสีโดยตรงในความคาดหวังซึ่งสามารถมองเห็นได้ง่ายโดยเขียนความคาดหวังออกมาอย่างชัดเจน การไล่ระดับสีนั้นมีค่าน้อยกว่ามากดังนั้นเราจึงมีความแปรปรวนที่ลดลงp(ϵ(i))p(ϵ(i))ϕ

หมายเหตุ: เราสามารถทำเล่ห์เหลี่ยม reparametrization นี้ได้ก็ต่อเมื่อต่อเนื่องดังนั้นเราจึงสามารถไล่ระดับของพี)z(i)z(i)=g(ϵ(i),x(i),ϕ)

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