คำตอบ:
แม้ว่าระบบตรวจสอบอัตโนมัติแบบผันแปร (VAE) นั้นง่ายต่อการติดตั้งและฝึกอบรมการอธิบายพวกเขานั้นไม่ง่ายเลยเพราะพวกเขาผสมผสานแนวคิดจาก Deep Learning และ Variational Bayes และชุมชน Deep Learning และ Probabilistic Model ใช้คำศัพท์ที่แตกต่างกันสำหรับแนวคิดเดียวกัน ดังนั้นเมื่ออธิบาย VAE คุณมีความเสี่ยงที่จะมุ่งเน้นไปที่ส่วนของแบบจำลองทางสถิติปล่อยให้ผู้อ่านไม่ทราบว่าจะนำมันไปใช้อย่างไรหรือในทางกลับกันก็ให้ความสนใจกับสถาปัตยกรรมเครือข่ายและฟังก์ชั่นการสูญเสีย ดึงออกมาจากอากาศบาง ๆ ฉันจะพยายามหาจุดกึ่งกลางที่นี่เริ่มจากตัวแบบ แต่ให้รายละเอียดมากพอที่จะนำไปใช้จริงในทางปฏิบัติหรือเข้าใจการใช้งานของคนอื่น
ซึ่งแตกต่างจาก autoencoders (กระจัดกระจาย denoising ฯลฯ ), VAEs เป็นรูปแบบการกำเนิดเช่น GANs ด้วยรูปแบบการกำเนิดที่ผมหมายถึงรูปแบบการเรียนรู้ซึ่งการกระจายความน่าจะเป็นมากกว่าการป้อนข้อมูลพื้นที่xซึ่งหมายความว่าหลังจากที่เราได้รับการฝึกอบรมรูปแบบดังกล่าวเราสามารถแล้วตัวอย่างจาก (ประมาณของเรา) ) หากชุดการฝึกอบรมของเราทำจากตัวเลขที่เขียนด้วยลายมือ (MNIST) หลังจากการฝึกอบรมแบบจำลองทั่วไปสามารถสร้างภาพที่ดูเหมือนตัวเลขที่เขียนด้วยลายมือแม้ว่าพวกเขาจะไม่ใช่ "คัดลอก" ของภาพในชุดฝึกอบรมก็ตาม
การเรียนรู้การกระจายภาพในชุดฝึกหมายความว่าภาพที่ดูเหมือนตัวเลขที่เขียนด้วยลายมือควรมีความน่าจะเป็นสูงในขณะที่ภาพที่ดูเหมือน Jolly Roger หรือเสียงรบกวนแบบสุ่มควรมีความน่าจะเป็นต่ำ กล่าวอีกนัยหนึ่งก็คือการเรียนรู้เกี่ยวกับการพึ่งพาระหว่างพิกเซล: ถ้าภาพของเราเป็นพิกเซลภาพระดับสีเทาจาก MNIST แบบจำลองควรเรียนรู้ว่าถ้าพิกเซลสว่างมาก มีความสว่างเช่นกันว่าถ้าเรามีพิกเซลที่ยาวและเอียงเราอาจมีพิกเซลที่เล็กกว่าและเส้นแนวนอนด้านบนอันนี้ (a 7) เป็นต้น
VAE เป็นแบบจำลองตัวแปรแฝง : นี่หมายความว่า , เวกเตอร์แบบสุ่มของความเข้มของพิกเซล 784 ( ตัวแปรที่สังเกตได้ ) ถูกสร้างแบบจำลองเป็นฟังก์ชั่น (อาจซับซ้อนมาก) ของเวกเตอร์สุ่มมีมิติต่ำกว่า เป็นตัวแปรที่ไม่ได้ตรวจสอบ ( แฝง ) แบบจำลองนี้เหมาะสมเมื่อใด ตัวอย่างเช่นในกรณี MNIST เราคิดว่าตัวเลขที่เขียนด้วยลายมือนั้นเป็นของมิติที่เล็กกว่ามิติของเนื่องจากส่วนใหญ่ของการจัดเรียงแบบสุ่มที่ความเข้มของพิกเซล 784 ไม่ดูเหมือนลายมือที่เขียนด้วยลายมือ เราคาดหวังว่าขนาดอย่างน้อย 10 (จำนวนหลัก) โดยสังเขป แต่ก็มีแนวโน้มที่ใหญ่กว่าเพราะแต่ละหลักสามารถเขียนได้หลายวิธี ความแตกต่างบางอย่างนั้นไม่สำคัญกับคุณภาพของภาพสุดท้าย (ตัวอย่างเช่นการหมุนทั่วโลกและการแปล) แต่สิ่งอื่นนั้นมีความสำคัญ ดังนั้นในกรณีนี้แบบจำลองแฝงจึงสมเหตุสมผล เพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง โปรดทราบว่าน่าแปลกใจแม้ว่าสัญชาตญาณของเราบอกเราว่าขนาดควรประมาณ 10 เราสามารถใช้ตัวแปรแฝง 2 ตัวเพื่อเข้ารหัสชุดข้อมูล MNIST ด้วย VAE (แม้ว่าผลลัพธ์จะไม่สวย) เหตุผลก็คือแม้แต่ตัวแปรจริงเพียงตัวเดียวสามารถเข้ารหัสคลาสจำนวนมากได้อย่างไม่ จำกัด เพราะมันสามารถสันนิษฐานได้ว่าเป็นจำนวนเต็มและเป็นไปได้ทั้งหมด แน่นอนถ้าชั้นเรียนมีการทับซ้อนกันอย่างมีนัยสำคัญในหมู่พวกเขา (เช่น 9 และ 8 หรือ 7 และฉันใน MNIST) แม้ฟังก์ชั่นที่ซับซ้อนที่สุดของตัวแปรแฝงเพียงสองตัวจะทำงานที่ไม่ดีในการสร้างตัวอย่างที่มองเห็นได้ชัดเจน เพิ่มเติมเกี่ยวกับเรื่องนี้ในภายหลัง
VAEs ถือว่าการแจกแจงตัวแปรแบบหลายตัวแปร (โดยที่เป็นพารามิเตอร์ของ ) และพวกเขาเรียนรู้พารามิเตอร์ของ การกระจายหลายตัวแปร การใช้พารามิเตอร์รูปแบบไฟล์ PDF สำหรับซึ่งป้องกันจำนวนพารามิเตอร์ของ VAE ที่จะเติบโตโดยไม่มีขอบเขตกับการเติบโตของชุดฝึกอบรมเรียกว่าค่าตัดจำหน่ายในภาษาศาสตร์ของ VAE (ใช่ฉันรู้ ... )
เราเริ่มต้นจากเครือข่ายถอดรหัสเพราะ VAE เป็นรูปแบบกำเนิดและส่วนเดียวของ VAE ที่ใช้ในการสร้างภาพใหม่คือตัวถอดรหัส เครือข่ายตัวเข้ารหัสจะใช้เฉพาะในเวลาที่การอนุมาน (การฝึกอบรม)
เป้าหมายของเครือข่ายถอดรหัสคือการสร้างแบบสุ่มเวกเตอร์ใหม่ที่อยู่ในพื้นที่การป้อนข้อมูลคือภาพใหม่เริ่มต้นจากความเข้าใจของแฝงเวกเตอร์{Z} วิธีการนี้อย่างชัดเจนว่ามันจะต้องเรียนรู้การกระจายเงื่อนไข{Z}) สำหรับ VAEs การกระจายนี้มักจะถือว่าเป็นหลายตัวแปรเกาส์1 :
เป็นเวกเตอร์ของน้ำหนัก (และอคติ) ของเครือข่ายตัวเข้ารหัส The vectorsและมีความซับซ้อนไม่ทราบหน้าที่ แบบจำลองโดยถอดรหัสเครือข่าย: โครงข่ายประสาทเทียมเป็นฟังก์ชันที่ไม่เชิงเส้นที่มีประสิทธิภาพ
ตามที่ระบุไว้โดย @amoeba ในความคิดเห็นมีความคล้ายคลึงกันระหว่างตัวถอดรหัสและรูปแบบตัวแปรแฝงคลาสสิกที่โดดเด่น : การวิเคราะห์ปัจจัย ในการวิเคราะห์ปัจจัยคุณถือว่ารูปแบบ:
ทั้งสองรุ่น (FA & ตัวถอดรหัส) สันนิษฐานว่าการแจกแจงแบบมีเงื่อนไขของตัวแปรที่สังเกตได้บนตัวแปรแฝงคือ Gaussian และนั้นเป็น Gaussians มาตรฐาน ความแตกต่างคือตัวถอดรหัสไม่คิดว่าค่าเฉลี่ยของเป็นเส้นตรงในและไม่ถือว่าการเบี่ยงเบนมาตรฐานเป็นเวกเตอร์คงที่ ในทางตรงกันข้ามมันรุ่นพวกเขาเป็นฟังก์ชั่นแบบไม่เชิงเส้นที่ซับซ้อนของ{Z} ในแง่นี้มันสามารถถูกมองว่าเป็นการวิเคราะห์ปัจจัยแบบไม่เชิงเส้น ดูที่นี่สำหรับการสนทนาอย่างลึกซึ้งเกี่ยวกับการเชื่อมต่อระหว่าง FA และ VAE เนื่องจาก FA ที่มีเมทริกซ์ความแปรปรวนร่วม isotropic เป็นเพียงแค่ PPCA สิ่งนี้ยังเชื่อมโยงกับผลลัพธ์ที่เป็นที่รู้จักกันดีว่าตัวเข้ารหัสเชิงเส้นอัตโนมัติลดลงเป็น PCA
กลับไปที่ตัวถอดรหัส: เราจะเรียนรู้อย่างไร สังหรณ์ใจเราต้องการตัวแปรแฝงซึ่งเพิ่มโอกาสในการสร้างที่ในการฝึกอบรมชุดD_nกล่าวอีกนัยหนึ่งเราต้องการคำนวณการแจกแจงความน่าจะเป็นหลังของจากข้อมูลที่ได้รับ:
เราสมมติว่าก่อนหน้านี้และเราเหลือประเด็นปกติในการอนุมานแบบเบย์ที่คำนวณ ( หลักฐาน ) นั้นยาก ( อินทิกรัลหลายมิติ) มีอะไรเพิ่มเติมเนื่องจากที่นี่ไม่เป็นที่รู้จักเราจึงไม่สามารถคำนวณได้ ป้อนการอนุมานแบบแปรผันซึ่งเป็นเครื่องมือที่ให้รหัสตัวแปรปรวนอัตโนมัติμ ( z ; ϕ )
การอนุมานแบบแปรผันเป็นเครื่องมือในการดำเนินการอนุมานแบบเบย์โดยประมาณสำหรับรุ่นที่ซับซ้อนมาก มันไม่ใช่เครื่องมือที่ซับซ้อนเกินไป แต่คำตอบของฉันยาวเกินไปและฉันจะไม่อธิบายคำอธิบายโดยละเอียดของ VI คุณสามารถดูคำตอบนี้และการอ้างอิงในนั้นหากคุณอยากรู้:
มันพอเพียงที่จะบอกว่า VI มองหาการประมาณของในการแจกแจงแบบพารามิเตอร์เชิงครอบครัวซึ่งตามที่ระบุไว้ข้างต้นเป็นพารามิเตอร์ของตระกูล เรามองหาพารามิเตอร์ที่ลดการเบี่ยงเบน Kullback-Leibler ระหว่างการกระจายเป้าหมายของเราและ :
อีกครั้งเราไม่สามารถลดสิ่งนี้ได้โดยตรงเนื่องจากคำจำกัดความของการเบี่ยงเบน Kullback-Leibler รวมถึงหลักฐาน แนะนำ ELBO (Evidence Lower BOund) และหลังจากการเปลี่ยนแปลงพีชคณิตบางครั้งเราก็ได้:
เนื่องจาก ELBO เป็นขอบเขตล่างของหลักฐาน (ดูลิงค์ด้านบน) การเพิ่ม ELBO ไม่เท่ากับการเพิ่มความเป็นไปได้สูงสุดของข้อมูลที่ได้รับ (หลังจากทั้งหมด VI เป็นเครื่องมือสำหรับการอนุมานแบบเบย์โดยประมาณ ) แต่มันไปในทิศทางที่ถูกต้อง
เพื่อที่จะทำให้การอนุมานเราจำเป็นต้องระบุครอบครัวพาราแลมบ์ดา}) ใน VAE ส่วนใหญ่เราเลือกการกระจายแบบเกาส์หลายตัวแปรที่ไม่สัมพันธ์กัน
นี่เป็นตัวเลือกเดียวกันกับที่เราสร้างขึ้นสำหรับแม้ว่าเราอาจจะเลือกตระกูลพารามิเตอร์อื่น ก่อนหน้านี้เราสามารถประเมินฟังก์ชันที่ไม่เชิงเส้นที่ซับซ้อนเหล่านี้ได้โดยการแนะนำโมเดลโครงข่ายประสาทเทียม เนื่องจากรุ่นนี้ยอมรับรูปภาพอินพุตและส่งคืนพารามิเตอร์ของการแจกแจงตัวแปรแฝงที่เราเรียกว่าเครือข่ายตัวเข้ารหัส ก่อนหน้านี้เราสามารถประเมินฟังก์ชันที่ไม่เชิงเส้นที่ซับซ้อนเหล่านี้ได้โดยการแนะนำโมเดลโครงข่ายประสาทเทียม เนื่องจากรุ่นนี้ยอมรับรูปภาพอินพุตและส่งคืนพารามิเตอร์ของการแจกแจงตัวแปรแฝงที่เราเรียกว่าเครือข่ายตัวเข้ารหัส
เรียกอีกอย่างว่าเครือข่ายการอนุมานซึ่งจะใช้ในเวลาฝึกอบรมเท่านั้น
ตัวเข้ารหัสต้องประมาณและ ดังนั้นถ้าเราพูด 24 ตัวแปรแฝงผลลัพธ์ของ ตัวเข้ารหัสเป็นเวกเตอร์ เข้ารหัสมีน้ำหนัก (และอคติ)theta} เพื่อเรียนรู้ในที่สุดเราสามารถเขียน ELBO ในแง่ของพารามิเตอร์และของเครือข่ายเครื่องเข้ารหัสและถอดรหัสรวมถึงจุดชุดฝึกอบรม:
ในที่สุดเราก็สามารถสรุปได้ ตรงกันข้ามกับ ELBO ในฐานะที่เป็นฟังก์ชั่นของและใช้เป็นฟังก์ชั่นการสูญเสียของ VAE เราใช้ SGD เพื่อลดการสูญเสียนี้เช่นเพิ่ม ELBO ให้ได้มากที่สุด เนื่องจาก ELBO มีขอบเขตที่ต่ำกว่าของหลักฐานสิ่งนี้จะดำเนินไปในทิศทางของการเพิ่มพูนหลักฐานและทำให้เกิดภาพใหม่ที่เหมาะสมกับภาพในชุดฝึกอบรม เทอมแรกใน ELBO คือความน่าจะเป็นบันทึกเชิงลบของคะแนนชุดการฝึกอบรมดังนั้นจึงสนับสนุนให้ตัวถอดรหัสสร้างภาพที่คล้ายกับภาพฝึกอบรม คำที่สองสามารถตีความได้ว่าเป็น regularizer: มันสนับสนุนให้ตัวเข้ารหัสเพื่อสร้างการแจกแจงสำหรับตัวแปรแฝงซึ่งคล้ายกับ. แต่ด้วยการแนะนำตัวแบบความน่าจะเป็นอันดับแรกเราเข้าใจว่าการแสดงออกทั้งหมดมาจากไหน: การลดความแตกต่างของ Kullabck-Leibler ระหว่างการมองหลังโดยประมาณและรุ่นหลังแลมบ์ดา}) 2
เมื่อเราได้เรียนรู้และโดยการเพิ่มสูงสุดเราสามารถทิ้งตัวเข้ารหัส จากนี้ไปหากต้องการสร้างภาพใหม่เพียงตัวอย่างและเผยแพร่ผ่านตัวถอดรหัส เอาท์พุทตัวถอดรหัสจะเป็นภาพคล้ายกับที่อยู่ในชุดฝึกอบรม
1ข้อสมมติฐานนี้ไม่จำเป็นอย่างเคร่งครัดแม้ว่าจะทำให้คำอธิบาย VAE ของเราง่ายขึ้น แต่ขึ้นอยู่กับการใช้งานที่คุณอาจคิดการกระจายแตกต่างกันสำหรับ{Z}) ยกตัวอย่างเช่นถ้าเป็นเวกเตอร์ของตัวแปรไบนารีตัว Gaussianไม่สมเหตุสมผลและหลายตัวแปร Bernoulli สามารถสันนิษฐานได้
2การแสดงออกของ ELBO ด้วยความสง่างามทางคณิตศาสตร์ปกปิดสองแหล่งสำคัญของความเจ็บปวดสำหรับผู้ฝึก VAE หนึ่งคือเทอมเฉลี่ย{Z})] สิ่งนี้ต้องการการคำนวณอย่างมีประสิทธิภาพซึ่งต้องใช้หลายตัวอย่างจาก. เมื่อพิจารณาถึงขนาดของโครงข่ายประสาทที่เกี่ยวข้องและอัตราการบรรจบกันต่ำของอัลกอริทึม SGD ต้องสุ่มตัวอย่างหลายครั้งในแต่ละรอบ (จริง ๆ แล้วสำหรับแต่ละรถตู้ซึ่งแย่ยิ่งกว่า) ใช้เวลานานมาก ผู้ใช้ VAE แก้ปัญหานี้ได้ในทางปฏิบัติโดยการคำนวณความคาดหวังด้วยตัวอย่างสุ่ม (!) อีกประเด็นคือการฝึกอบรมเครือข่ายประสาทสองตัว (ตัวเข้ารหัส & ตัวถอดรหัส) ด้วยอัลกอริทึมการขยายพื้นที่กลับคืนฉันต้องแยกความแตกต่างของขั้นตอนทั้งหมดที่เกี่ยวข้องในการแพร่กระจายไปข้างหน้าจากตัวเข้ารหัสไปยังตัวถอดรหัส เนื่องจากตัวถอดรหัสไม่ได้ถูกกำหนด (การประเมินเอาท์พุทของมันจำเป็นต้องใช้การวาดจากหลายตัวแปรแบบเกาส์เซียน) มันจึงไม่มีเหตุผลที่จะถามว่ามันเป็นสถาปัตยกรรมที่แตกต่างกันหรือไม่ วิธีการนี้เป็นเคล็ดลับ reparametrization