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

เกี่ยวกับ VAE มันใช้วิธีการที่น่าจะเป็นดังนั้นเราต้องเรียนรู้ความแปรปรวนร่วมของ gaussian
จนถึงตอนนี้นี่คือสิ่งที่ฉันเข้าใจ
สิ่งที่ฉันไม่ชัดเจนจริงๆคือสิ่งที่เราพยายามเรียนรู้กับโปรแกรมเข้ารหัสอัตโนมัติและ VAE
ฉันเคยเห็นตัวอย่างที่รูปภาพเปลี่ยนไปจากการไม่ยิ้มเป็นใบหน้าที่ยิ้มแย้มหรือภาพขาวดำเป็นภาพสี
แต่ฉันไม่เข้าใจแนวคิดหลักซึ่งก็คือตัวเข้ารหัสอัตโนมัติทำอะไรได้บ้าง
ฉันเพิ่มแหล่งที่มาที่ฉันศึกษาไว้ที่นี่เพื่อให้ผู้ที่ต้องการสามารถดูได้:
- https://hackernoon.com/autoencoders-deep-learning-bits-1-11731e200694
- https://www.youtube.com/watch?v=yFBFl1cLYx8
- https://www.youtube.com/watch?v=9zKuYvjFFS8
คำตอบ
ตัวเข้ารหัสอัตโนมัติทำอะไร
ตัวเข้ารหัสอัตโนมัติที่ง่ายที่สุดจะนำภาพที่มีมิติสูง (เช่น 100K พิกเซล) ลงไปที่การแสดงมิติต่ำ (เช่นเวกเตอร์ที่มีความยาว 10) จากนั้นใช้คุณลักษณะ 10 ประการเท่านั้นเพื่อพยายามสร้างภาพต้นฉบับ คุณสามารถจินตนาการถึงการเปรียบเทียบกับมนุษย์: ฉันมองไปที่ใครบางคนอธิบายพวกเขา ("ตัวสูงผมสีเข้ม ... ") หลังจากที่ฉันลืมไปแล้วว่าพวกเขาหน้าตาเป็นอย่างไรฉันก็ลองร่างโดยใช้โน้ตของฉันเท่านั้น
เราพยายามเรียนรู้อะไร
กล่าวอีกนัยหนึ่งทำไมต้องรำคาญ? เหตุผลบางประการ:
- การลดขนาด: 10 คุณสมบัติสะดวกกว่า 100K พิกเซลมาก ตัวอย่างเช่นฉันสามารถทำการจัดหมวดหมู่โดยการจัดกลุ่มในช่องว่าง 10 มิติ (ในขณะที่การจัดกลุ่มในพื้นที่มิติ 100K นั้นยาก)
- ความหมายเชิงความหมาย: หากทุกอย่างเป็นไปด้วยดีคุณลักษณะทั้ง 10 ประการจะมี "คำอธิบาย" ที่ชัดเจนเช่นการปรับค่าหนึ่งค่าจะทำให้วัตถุดูเก่าขึ้น (แม้ว่าโดยปกติแล้วจะไม่ง่ายนัก) ซึ่งตรงข้ามกับค่าพิกเซลซึ่งได้รับผลกระทบจากการแปลการหมุน ฯลฯ
- การรับรู้ข้อยกเว้น: ถ้าฉันฝึกตัวเข้ารหัสอัตโนมัติกับสุนัขโดยปกติควรเข้ารหัสและถอดรหัสรูปภาพของสุนัขได้ดี แต่ถ้าฉันใส่แมวเข้าไปมันอาจจะทำงานได้แย่มากซึ่งฉันสามารถบอกได้เพราะผลลัพธ์ที่ได้ดูเหมือนจะไม่เหมือนกับอินพุต ดังนั้นการมองหาสถานที่ที่ตัวเข้ารหัสอัตโนมัติทำงานได้ไม่ดีจึงเป็นวิธีทั่วไปในการค้นหาความผิดปกติ
ฉันเคยเห็นตัวอย่างที่รูปภาพเปลี่ยนจากหน้าไม่ยิ้มเป็นหน้ายิ้มหรือภาพขาวดำไปเป็นภาพสี
ตัวเข้ารหัสอัตโนมัติมีหลายประเภท สิ่งที่ฉันอธิบายไว้ข้างต้นเป็นสิ่งที่ง่ายที่สุด อีกประเภทหนึ่งที่พบบ่อยคือตัวเข้ารหัสอัตโนมัติ "denoising" แทนที่จะสร้างภาพต้นฉบับขึ้นมาใหม่เป้าหมายคือการสร้างภาพที่เกี่ยวข้องกับภาพต้นฉบับ แต่แตกต่างกัน
ตัวอย่างคลาสสิกของสิ่งนี้คือ denoising (ดังนั้นชื่อ): คุณสามารถถ่ายภาพที่สะอาดเพิ่มเสียงรบกวนเรียกใช้ผ่านตัวเข้ารหัสอัตโนมัติจากนั้นให้รางวัลตัวเข้ารหัสอัตโนมัติในการสร้างภาพที่สะอาด ดังนั้นอินพุต (ภาพที่มีเสียงดัง) จึงแตกต่างจากเอาต์พุตที่ต้องการ (ภาพที่สะอาด) ตัวอย่างที่คุณให้ก็คล้ายกัน
ความท้าทายในการออกแบบตัวเข้ารหัสอัตโนมัติประเภทนี้โดยปกติแล้วการสูญเสียคุณต้องมีกลไกบางอย่างเพื่อบอกตัวเข้ารหัสอัตโนมัติว่าทำสิ่งที่ถูกต้องหรือไม่
เกี่ยวกับ VAE มันใช้วิธีการที่น่าจะเป็นดังนั้นเราต้องเรียนรู้ค่าเฉลี่ยและความแปรปรวนร่วมของ gaussian
VAE เป็นตัวเข้ารหัสอัตโนมัติประเภทที่สาม พิเศษหน่อยเพราะมีพื้นฐานทางคณิตศาสตร์เป็นอย่างดี ไม่จำเป็นต้องใช้เมตริกเฉพาะกิจ คณิตศาสตร์ซับซ้อนเกินกว่าจะผ่านตรงนี้ได้ แต่แนวคิดสำคัญคือ:
- เราต้องการให้พื้นที่แฝงมีความต่อเนื่อง แทนที่จะกำหนดให้แต่ละชั้นเรียนไปยังมุมของพื้นที่แฝงเราต้องการให้พื้นที่แฝงมีรูปร่างต่อเนื่องที่กำหนดไว้อย่างชัดเจน (เช่น Gaussian) นี่เป็นสิ่งที่ดีเพราะมันบังคับให้พื้นที่แฝงมีความหมายตามความหมาย
- การจับคู่ระหว่างรูปภาพและช่องว่างแฝงควรเป็นไปได้มากกว่าที่จะกำหนด เนื่องจากวัตถุเดียวกันสามารถสร้างภาพได้หลายภาพ
ดังนั้นขั้นตอนการทำงานคือ:
- คุณเริ่มต้นด้วยภาพลักษณ์ของคุณเหมือนเดิม
- เช่นเดิมโปรแกรมเปลี่ยนไฟล์ของคุณจะกำหนดเวกเตอร์ (เช่นความยาว 200)
- แต่เวกเตอร์นั้นไม่ใช่ช่องว่างแฝง คุณใช้เวกเตอร์นั้นเป็นพารามิเตอร์เพื่อกำหนดช่องว่างแฝงแทน ตัวอย่างเช่นคุณอาจเลือกพื้นที่แฝงของคุณเป็น Gaussian 100 มิติ Gaussian 100 มิติจะต้องใช้ค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานในแต่ละมิติ - นี่คือสิ่งที่คุณใช้เวกเตอร์ความยาว 200 สำหรับ
- ตอนนี้คุณมีการแจกแจงความน่าจะเป็น คุณสุ่มตัวอย่างจุดหนึ่งจากการแจกแจงนี้ นี่คือการแสดงภาพของคุณในช่องว่างแฝง
- เช่นเดิมตัวถอดรหัสของคุณจะเปลี่ยนเวกเตอร์นี้เป็น "เอาต์พุต" ใหม่ (เช่นเวกเตอร์ความยาว 200K)
- แต่ "ผลลัพธ์" นี้ไม่ใช่ภาพที่ส่งออกของคุณ คุณใช้พารามิเตอร์ 200K เหล่านี้เพื่อกำหนด Gaussian 100K มิติแทน จากนั้นให้คุณสุ่มตัวอย่างจุดหนึ่งจากการแจกแจงนี้นั่นคือภาพที่ส่งออก
แน่นอนว่าไม่มีอะไรพิเศษเกี่ยวกับ Gaussian คุณสามารถใช้การแจกแจงพาราเมตริกอื่น ๆ ได้อย่างง่ายดาย ในทางปฏิบัติคนมักใช้ Gaussians
บางครั้งสิ่งนี้ให้ผลลัพธ์ที่ดีกว่าโปรแกรมเข้ารหัสอัตโนมัติอื่น ๆ นอกจากนี้บางครั้งคุณจะได้ผลลัพธ์ที่น่าสนใจเมื่อคุณดูระหว่างชั้นเรียนในพื้นที่แฝงของคุณ ระยะห่างของภาพในพื้นที่แฝงจากศูนย์กลางคลัสเตอร์บางครั้งเกี่ยวข้องกับความไม่แน่นอน
นอกจากนี้ยังมีคุณสมบัติที่ดีที่ Gaussians มิติสูงเหล่านี้คือการแจกแจงความน่าจะเป็นในแง่คณิตศาสตร์ที่เข้มงวด โดยประมาณความน่าจะเป็นที่รูปภาพหนึ่ง ๆ เป็นของคลาสที่กำหนด ดังนั้นจึงมีความคิดบางอย่างที่เวอร์จิเนียจะสามารถเอาชนะ "การโบกมือ" ของการเรียนรู้เชิงลึกและทำให้ทุกอย่างกลับมาอยู่บนพื้นฐานที่น่าจะเป็นแบบเบย์ แต่แน่นอนว่ามันเป็นเพียงการประมาณเท่านั้นและการประมาณนั้นเกี่ยวข้องกับโครงข่ายประสาทส่วนลึกจำนวนมากดังนั้นในขณะนี้จึงยังมีมือโบกมืออยู่มากมาย
อย่างไรก็ตามฉันชอบใช้คำถามนี้ในระหว่างการสัมภาษณ์ผู้คนจำนวนมากที่อ้างว่ามีประสบการณ์กับ VAE แต่ในความเป็นจริงไม่ทราบว่า VAE นั้นแตกต่างจาก AE แบบ "ปกติ"
วิธีง่ายๆในการคิดเกี่ยวกับ autoencoders คือ: prticlar pice ของ infrmaton สามารถสร้างใหม่ได้ดีเพียงใด frm ของมัน reducd หรือ otherwse ที่ประกอบไปด้วย reprsentaton ถ้าคุณมาไกลขนาดนี้หมายความว่าคุณสร้างประโยคก่อนหน้าขึ้นมาใหม่ได้สำเร็จโดยใช้เพียง 92 ตัวจาก 103 ตัวอักษรดั้งเดิม
โดยเฉพาะอย่างยิ่งโปรแกรมเข้ารหัสอัตโนมัติคือเครือข่ายประสาทเทียมที่ได้รับการฝึกฝนให้เรียนรู้การเข้ารหัสข้อมูลที่มีประสิทธิภาพในลักษณะที่ไม่ได้รับการดูแล จุดมุ่งหมายคือเพื่อเรียนรู้การเป็นตัวแทนของชุดข้อมูลที่กำหนดโดยการฝึกอบรมเครือข่ายให้เพิกเฉยต่อสัญญาณที่ "ไม่สำคัญ" เช่นสัญญาณรบกวน โดยทั่วไปแล้ว AE จะถูกพิจารณาสำหรับการลดขนาด
ในทางปฏิบัติ AE
- เริ่มต้นบีบอัดข้อมูลอินพุตลงในการแสดงพื้นที่แฝง
- สร้างเอาต์พุตใหม่จากการแสดงพื้นที่แฝงนี้
- คำนวณความแตกต่างระหว่างอินพุตและเอาต์พุตซึ่งหมายถึงการสูญเสียการสร้างใหม่
ในลูปการฝึกอบรมนี้ AE จะลดการสูญเสียการสร้างใหม่นี้เพื่อให้เอาต์พุตมีความคล้ายคลึงกับอินพุตมากที่สุด
แนวทางหนึ่งที่ฉันพบว่ามีประโยชน์เมื่อพิจารณาตัวเข้ารหัสอัตโนมัติคือผลลัพธ์ต่อไปนี้: ในขณะที่วิธีการเช่น PCA ระบุแกนของการเปลี่ยนแปลงสูงสุดในพื้นที่อินพุตการแนะนำฟังก์ชันการเปิดใช้งานที่ไม่ใช่เชิงเส้นในตัวเข้ารหัสอัตโนมัติช่วยให้สามารถระบุแกนสูงสุดได้ รูปแบบที่ฝังอยู่ในการแปลงที่ไม่ใช่เชิงเส้น (อาจเป็นไปได้) ของช่องว่าง
เป็นตัวอย่างให้พิจารณาข้อมูลในการ
สังเกตว่าไม่มีฟังก์ชั่นการเปิดใช้งานที่ไม่ใช่เชิงเส้นตัวเข้ารหัสอัตโนมัติโดยพื้นฐานแล้วจะเทียบเท่ากับ PCA - ขึ้นอยู่กับการเปลี่ยนแปลงพื้นฐาน การออกกำลังกายที่มีประโยชน์อาจต้องพิจารณาว่าเหตุใดจึงเป็นเช่นนั้น