เมื่อใดที่ฉันควรใช้โปรแกรมสร้างรหัสอัตโนมัติแบบแปรปรวนเมื่อเทียบกับโปรแกรมสร้างรหัสอัตโนมัติ?


19

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

คำตอบ:


13

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

ต้องบอกว่าแน่นอนหนึ่งสามารถใช้ VAE เพื่อเรียนรู้การเป็นตัวแทนแฝง เป็นที่รู้กันว่าจะเป็นตัวแทน VAEs กับ disentangled ปัจจัย [1] นี้เกิดขึ้นเนื่องจาก isotropic Gaussian Priors บนตัวแปรแฝง การจำลองแบบเป็น Gaussians อนุญาตให้แต่ละมิติในการเป็นตัวแทนผลักตัวเองให้ไกลที่สุดเท่าที่จะทำได้จากปัจจัยอื่น ๆ นอกจากนี้ [1] ยังเพิ่มสัมประสิทธิ์การทำให้เป็นมาตรฐานที่ควบคุมอิทธิพลของค่าก่อนหน้า

ในขณะที่ isotropic Gaussians ก็เพียงพอแล้วสำหรับกรณีส่วนใหญ่ แต่สำหรับกรณีที่เฉพาะเจาะจงเราอาจต้องการสร้างแบบจำลองของนักบวชที่แตกต่างกัน ตัวอย่างเช่นในกรณีของลำดับหนึ่งอาจต้องการกำหนด Priors เป็นแบบจำลองตามลำดับ [2]

กลับมาที่คำถามดังที่เราเห็นก่อนหน้านี้ให้การควบคุมที่สำคัญเกี่ยวกับวิธีที่เราต้องการจำลองการกระจายแฝง การควบคุมชนิดนี้ไม่มีอยู่ในกรอบการทำงานปกติของ AE นี่คือพลังของแบบจำลอง Bayesian เอง VAEs นั้นทำให้สามารถใช้งานได้จริงและเป็นไปได้สำหรับชุดข้อมูลขนาดใหญ่ ดังนั้นเพื่อสรุปหากคุณต้องการควบคุมการแสดงที่แฝงไว้อย่างแม่นยำและสิ่งที่คุณต้องการให้พวกเขาเป็นตัวแทนให้เลือก VAE บางครั้งการสร้างแบบจำลองที่แม่นยำสามารถจับภาพการเป็นตัวแทนที่ดีกว่าใน [2] อย่างไรก็ตามหาก AE พอเพียงสำหรับงานที่คุณทำเพียงแค่ไปกับ AE มันง่ายและไม่ซับซ้อนพอ ท้ายที่สุดด้วย AE เราเพียงแค่ทำ PCA ที่ไม่ใช่เชิงเส้น

[1] การเรียนรู้ด้วยภาพในช่วงต้นกับการเรียนรู้ลึกแบบไม่ต้องลงทะเบียน 2016
Irina Higgins, Loic Matthey, Xavier Glorot, Arka Pal, Benigno Uria, Charles Blundell, Shakir Mohamed, Alexander Lerchner
https://arxiv.org/abs/1606.05579

[2] โมเดลตัวแปรแฝงแฝงสำหรับข้อมูลตามลำดับ, 2015
Junyoung Chung, Kyle Kastner, Laurent Dinh, Kratarth Goel, แอรอนคูวิลล์, โยชูวาเบงกิโอ
https://arxiv.org/abs/1506.02216


6

TenaliRaman มีคะแนนที่ดี แต่เขาก็คิดถึงแนวคิดพื้นฐานมากมายเช่นกัน ประการแรกควรสังเกตว่าเหตุผลหลักในการใช้เฟรมเวิร์กคล้าย AE คือพื้นที่แฝงที่ช่วยให้เราบีบอัดข้อมูลและหวังว่าจะได้รับปัจจัยอิสระออกมาจากมันซึ่งแสดงถึงคุณสมบัติระดับสูงของข้อมูล จุดสำคัญคือในขณะที่ AE สามารถตีความได้ว่าเป็นส่วนขยายที่ไม่เชิงเส้นของ PCA เนื่องจากยูนิต "X" ที่ซ่อนอยู่จะขยายพื้นที่เดียวกันกับองค์ประกอบหลักจำนวน "X" แรก แต่ AE ไม่จำเป็นต้องสร้างส่วนประกอบมุมฉากในระยะแฝง พื้นที่ (ซึ่งจะเป็นจำนวนรูปแบบของการคลี่คลาย) นอกจากนี้จาก VAE คุณสามารถรับความเป็นไปได้ของข้อมูล (แม้ว่าโดยประมาณ) และตัวอย่างจากมัน (ซึ่งอาจเป็นประโยชน์สำหรับงานที่แตกต่างกัน) อย่างไรก็ตาม

การแจกแจงก่อนหน้านี้กำหนดไว้ในหน่วยแฝงใน VAE เท่านั้นที่มีส่วนช่วยในการสร้างแบบจำลองเนื่องจากเทอม KL แตกต่างซึ่งการอ้างอิง [1] เพียงแค่เพิ่มตัวคูณไฮเปอร์พารามิเตอร์ในคำนั้นและได้รับกระดาษฉบับเต็ม (ส่วนใหญ่คือ ค่อนข้างชัดเจน) โดยพื้นฐานแล้วก่อนหน้านี้ "uninformative" คืออันที่มีค่าเบี่ยงเบน KL ที่ใกล้เคียงกับศูนย์และไม่ทำให้เกิดการสูญเสียมากซึ่งหมายความว่าหน่วยใดหน่วยหนึ่งไม่ได้ใช้สำหรับการสร้างใหม่ในตัวถอดรหัส การกระจัดกระจายเข้ามาเล่นบน VAE อย่างเป็นธรรมชาติเพราะในกรณีที่ง่ายที่สุดของข้อมูลหลายโมดัล ค่าใช้จ่ายในการเบี่ยงเบนของ KL ต่ำกว่าโดยมี Gaussian แฝงที่ไม่ซ้ำกันสำหรับแต่ละโหมดกว่าถ้าแบบจำลองพยายามที่จะจับภาพหลายโหมดด้วย Gaussian เดียว (ซึ่งจะแยกออกไปเพิ่มเติมจากก่อนหน้านี้ เพื่อคลี่คลายในหน่วยแฝง ดังนั้น VAE จึงให้ยืมแหล่งข้อมูลส่วนใหญ่ตามธรรมชาติเนื่องจากผลกระทบทางสถิติที่เกี่ยวข้อง

มีกรอบการจัดวางที่กระจัดกระจายสำหรับ AE ด้วยเช่นกัน แต่น่าเสียดายที่ฉันไม่ทราบว่ามีกระดาษใดบ้างที่เปรียบเทียบ VAE กับ AE อย่างเคร่งครัดบนพื้นฐานของการเป็นตัวแทนพื้นที่แฝงและการคลี่คลาย ฉันอยากเห็นบางสิ่งบางอย่างในเวทีนั้น - เพราะ AE ง่ายกว่าในการฝึกอบรมและถ้าพวกเขาสามารถประสบความสำเร็จในการหลุดพ้นจากการเป็น VAEs ในพื้นที่แฝงพวกเขาจะเห็นได้ชัดว่าเป็นที่ต้องการ ในบันทึกที่เกี่ยวข้องฉันยังเห็นคำสัญญาโดยวิธี ICA (และไม่เชิงเส้น ICA) แต่สิ่งที่ฉันเคยเห็นบังคับให้พื้นที่ที่แฝงอยู่นั้นมีขนาดเท่ากับข้อมูลซึ่งแทบไม่เป็นประโยชน์เท่ากับ AE สำหรับการแยกคุณสมบัติระดับสูง


3

autoencoder มาตรฐานสามารถแสดงได้โดยใช้กราฟต่อไปนี้: ป้อนคำอธิบายรูปภาพที่นี่

ตามที่ระบุไว้ในคำตอบก่อนหน้านี้สามารถดูได้เป็นเพียงส่วนขยายที่ไม่เชิงเส้นของ PCA

แต่เมื่อเทียบกับตัวถอดรหัสอัตโนมัติวานิลลา autoencoder มีข้อเสียเปรียบดังต่อไปนี้:

ปัญหาพื้นฐานของ autoencoders สำหรับรุ่นคือพื้นที่แฝงที่พวกเขาแปลงอินพุตและที่ซึ่งพาหะเข้ารหัสอยู่อาจไม่ต่อเนื่องหรืออนุญาตให้แก้ไขได้ง่าย

นั่นคือส่วนการเข้ารหัสในกราฟด้านบนไม่สามารถจัดการกับอินพุตที่ตัวเข้ารหัสไม่เคยเห็นมาก่อนเพราะคลาสที่แตกต่างกันเป็นกลุ่มแบบโผงผางและอินพุตที่มองไม่เห็นเหล่านั้นถูกเข้ารหัสเป็นสิ่งที่อยู่ในที่ว่าง:

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

เพื่อจัดการกับปัญหานี้ตัวสร้างความแปรปรวนอัตโนมัติสร้างขึ้นโดยการเพิ่มเลเยอร์ที่มีค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานสำหรับตัวแปรที่ซ่อนอยู่ในเลเยอร์กลาง:

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

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

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

ดังนั้นเพื่อ denoise หรือจัดประเภทข้อมูล (กรองข้อมูลที่แตกต่างกัน) ตัวสร้างรหัสอัตโนมัติมาตรฐานจะเพียงพอในขณะที่เราควรใช้ตัวสร้างรหัสอัตโนมัติแบบแปรปรวนเพื่อการสร้าง

การอ้างอิง: การ
ทำความเข้าใจกับชุดเข้ารหัสอัตโนมัติแบบสังหรณ์ใจ


1

การเลือกการกระจายของรหัสใน VAE ช่วยให้การเรียนรู้การแทนค่าแบบไม่มีผู้ดูแลที่ดีขึ้นโดยที่ตัวอย่างของคลาสเดียวกันจบลงใกล้กันในพื้นที่โค้ด ด้วยวิธีนี้การค้นหา semantic สำหรับภูมิภาคในพื้นที่โค้ดนั้นง่ายขึ้น เช่นคุณจะรู้ว่าจากแต่ละพื้นที่สามารถสร้างคลาสได้

หากท่านต้องการข้อมูลเพิ่มเติมการวิเคราะห์ในเชิงลึกมีลักษณะที่วิทยานิพนธ์ Durk Kingma' มันเป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับการอนุมานแบบแปรผัน


เมื่อคุณกำลังพูดถึง "การเลือกการกระจาย" คุณกำลังพูดถึงการกระจายที่? p (z), p (z | x), p (x | z) หรือทั้งหมด? ฉันเห็นว่าใช้การแจกแจงแบบปกติหรือการแจกแจงเบอร์นูลี่เท่านั้นคุณรู้เกี่ยวกับงานใดบ้างที่เปรียบเทียบประสิทธิภาพโดยใช้การกระจายแบบอื่น สำหรับประเด็นที่สองของคุณฉันไม่สามารถเห็นได้ว่าเหตุใดตัวสร้างรหัสอัตโนมัติแบบแปรผันจะทำงานได้ดีกว่าตัวแปลงสัญญาณอัตโนมัติปกติคุณสามารถอธิบายรายละเอียดได้หรือไม่ ขอบคุณ
DiveIntoML
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.