ในตัวอย่างโค้ดเกือบทั้งหมดที่ฉันเคยเห็น 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 สำหรับข้อผิดพลาดในการสร้างใหม่)