วิธีลดน้ำหนัก KLD เทียบกับการสูญเสียการสร้างใหม่ในโปรแกรมเปลี่ยนเกียร์อัตโนมัติแบบแปรผัน


26

ในตัวอย่างโค้ดเกือบทั้งหมดที่ฉันเคยเห็น VAE ฟังก์ชั่นการสูญเสียมีการกำหนดไว้ดังนี้ (นี่คือรหัส tenorflow แต่ฉันเคยเห็นคล้ายกับ theano ไฟฉาย ฯลฯ มันสำหรับ convnet แต่ก็ไม่เกี่ยวข้องกันเกินไป เพียงแค่ส่งผลกระทบต่อแกนที่ต้องใช้เงินก้อน):

# latent space loss. KL divergence between latent space distribution and unit gaussian, for each batch.
# first half of eq 10. in https://arxiv.org/abs/1312.6114
kl_loss = -0.5 * tf.reduce_sum(1 + log_sigma_sq - tf.square(mu) - tf.exp(log_sigma_sq), axis=1)

# reconstruction error, using pixel-wise L2 loss, for each batch
rec_loss = tf.reduce_sum(tf.squared_difference(y, x), axis=[1,2,3])

# or binary cross entropy (assuming 0...1 values)
y = tf.clip_by_value(y, 1e-8, 1-1e-8) # prevent nan on log(0)
rec_loss = -tf.reduce_sum(x * tf.log(y) + (1-x) * tf.log(1-y), axis=[1,2,3])

# sum the two and average over batches
loss = tf.reduce_mean(kl_loss + rec_loss)

อย่างไรก็ตามช่วงตัวเลขของ kl_loss และ rec_loss นั้นขึ้นอยู่กับการหรี่พื้นที่ว่างและขนาดของคุณลักษณะอินพุต (เช่นความละเอียดพิกเซล) ตามลำดับ มันจะมีเหตุผลหรือไม่ที่จะแทนที่การลดด้วยการลดคือการได้รับ KLD ต่อลิตรและต่อพิกเซล (หรือคุณสมบัติ) LSE หรือ BCE ที่สำคัญกว่านั้นเราจะลดน้ำหนักที่แฝงอยู่ด้วยการสูญเสียการสร้างใหม่ได้อย่างไรเมื่อรวมเข้าด้วยกันเพื่อการสูญเสียครั้งสุดท้าย มันเป็นเพียงการลองผิดลองถูกไหม? หรือมีทฤษฎีบางอย่าง (หรืออย่างน้อยกฎของหัวแม่มือ) สำหรับมัน? ฉันไม่สามารถหาข้อมูลใด ๆ เกี่ยวกับเรื่องนี้ได้ทุกที่ (รวมถึงเอกสารต้นฉบับ)


ปัญหาที่ฉันมีคือถ้าความสมดุลระหว่างมิติข้อมูลเข้าของฉัน (x) และมิติพื้นที่แฝง (z) ไม่ได้ 'ดีที่สุด' ทั้งไทปันของฉันก็ดีมาก แต่พื้นที่แฝงที่เรียนรู้นั้นไม่มีโครงสร้าง (ถ้า x มิติ สูงมากและมีข้อผิดพลาดในการสร้างใหม่เหนือ KLD) หรือในทางกลับกัน (ไทปันไม่ดี แต่พื้นที่แฝงที่เรียนรู้มีโครงสร้างที่ดีถ้า KLD ปกครอง)

ฉันพบว่าตัวเองต้องทำให้การสูญเสียการสร้างใหม่เป็นปกติ (หารด้วยขนาดคุณลักษณะอินพุต) และ KLD (หารด้วยมิติ z) จากนั้นให้น้ำหนักคำศัพท์ KLD ด้วยตนเองด้วยปัจจัยน้ำหนักตามอำเภอใจ (การปรับสภาพปกติคือเพื่อให้ น้ำหนักที่คล้ายกันขึ้นอยู่กับขนาดของ x หรือ z ) สังเกตุฉันพบประมาณ 0.1 เพื่อให้สมดุลที่ดีระหว่างการสร้างใหม่และพื้นที่แฝงที่มีโครงสร้างซึ่งรู้สึกเหมือน 'จุดหวาน' สำหรับฉัน ฉันกำลังมองหางานก่อนหน้าในพื้นที่นี้


ตามคำขอสัญลักษณ์คณิตศาสตร์ด้านบน (เน้นที่การสูญเสีย L2 สำหรับข้อผิดพลาดในการสร้างใหม่)

Llatent(i)=12j=1J(1+log(σj(i))2(μj(i))2(σj(i))2)

Lrecon(i)=k=1K(yk(i)xk(i))2

L(m)=1Mi=1M(Llatent(i)+Lrecon(i))

Jzμσ2KM(i)iL(m)m

คำตอบ:


17

7

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

ในส่วนย่อย 3.1 ของบทความผู้เขียนระบุว่าพวกเขาล้มเหลวในการฝึกอบรมการใช้ VAE แบบตรงซึ่งให้น้ำหนักความน่าจะเป็นและการเบี่ยงเบน KL อย่างเท่าเทียมกัน ในกรณีของพวกเขาการสูญเสียของ KL ถูกลดลงอย่างไม่น่าเป็นศูนย์แม้ว่าจะคาดว่าจะมีค่าน้อย เพื่อที่จะเอาชนะสิ่งนี้พวกเขาเสนอให้ใช้ "KL cost annealing" ซึ่งค่อย ๆ เพิ่มตัวประกอบน้ำหนักของคำศัพท์ KL divergence (เส้นโค้งสีน้ำเงิน) จาก 0 เป็น 1

รูปที่ 2 น้ำหนักของคำศัพท์ KL divergence ของขอบเขตล่างแปรผันตามกำหนดการอบอ่อน sigmoid ทั่วไปที่พล็อตพร้อมกับค่า (ไม่ถ่วง) ของคำ divergence KL สำหรับ VAE ของเราบน Penn TreeBank

โซลูชันการแก้ไขปัญหานี้นำไปใช้กับ Ladder VAE

กระดาษ:

ธนูอาร์, Vilnis ลิตร Vinyals ทุม, ได AM, Jozefowicz หม่อมราชวงศ์และ Bengio เอส 2015 ประโยคผลิตจากพื้นที่อย่างต่อเนื่อง พิมพ์ arXiv arXiv: 1511.06349

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