autoencoder คืออะไร?

Aug 17 2020

ฉันเป็นนักเรียนและกำลังเรียนแมชชีนเลิร์นนิง ฉันกำลังมุ่งเน้นไปที่รูปแบบการกำเนิดลึกและโดยเฉพาะอย่างยิ่งในautoencodersและautoencoders แปรผัน (VAE)

ฉันพยายามที่จะเข้าใจแนวคิด แต่ฉันมีปัญหาบางอย่าง

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

หลังจากนี้ด้วยฟังก์ชันการสูญเสียมันจะสร้างพื้นที่แฝงขึ้นใหม่และรับคุณสมบัติแฝง

เกี่ยวกับ VAE มันใช้วิธีการที่น่าจะเป็นดังนั้นเราต้องเรียนรู้ความแปรปรวนร่วมของ gaussian

จนถึงตอนนี้นี่คือสิ่งที่ฉันเข้าใจ

สิ่งที่ฉันไม่ชัดเจนจริงๆคือสิ่งที่เราพยายามเรียนรู้กับโปรแกรมเข้ารหัสอัตโนมัติและ VAE

ฉันเคยเห็นตัวอย่างที่รูปภาพเปลี่ยนไปจากการไม่ยิ้มเป็นใบหน้าที่ยิ้มแย้มหรือภาพขาวดำเป็นภาพสี

แต่ฉันไม่เข้าใจแนวคิดหลักซึ่งก็คือตัวเข้ารหัสอัตโนมัติทำอะไรได้บ้าง

ฉันเพิ่มแหล่งที่มาที่ฉันศึกษาไว้ที่นี่เพื่อให้ผู้ที่ต้องการสามารถดูได้:

  1. https://hackernoon.com/autoencoders-deep-learning-bits-1-11731e200694
  2. https://www.youtube.com/watch?v=yFBFl1cLYx8
  3. https://www.youtube.com/watch?v=9zKuYvjFFS8

คำตอบ

11 cag51 Aug 18 2020 at 07:56

ตัวเข้ารหัสอัตโนมัติทำอะไร

ตัวเข้ารหัสอัตโนมัติที่ง่ายที่สุดจะนำภาพที่มีมิติสูง (เช่น 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 แบบ "ปกติ"

10 hH1sG0n3 Aug 17 2020 at 22:06

วิธีง่ายๆในการคิดเกี่ยวกับ autoencoders คือ: prticlar pice ของ infrmaton สามารถสร้างใหม่ได้ดีเพียงใด frm ของมัน reducd หรือ otherwse ที่ประกอบไปด้วย reprsentaton ถ้าคุณมาไกลขนาดนี้หมายความว่าคุณสร้างประโยคก่อนหน้าขึ้นมาใหม่ได้สำเร็จโดยใช้เพียง 92 ตัวจาก 103 ตัวอักษรดั้งเดิม

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

ในทางปฏิบัติ AE

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

ในลูปการฝึกอบรมนี้ AE จะลดการสูญเสียการสร้างใหม่นี้เพื่อให้เอาต์พุตมีความคล้ายคลึงกับอินพุตมากที่สุด

3 JoshPurtell Aug 17 2020 at 23:04

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

เป็นตัวอย่างให้พิจารณาข้อมูลในการ

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

สังเกตว่าไม่มีฟังก์ชั่นการเปิดใช้งานที่ไม่ใช่เชิงเส้นตัวเข้ารหัสอัตโนมัติโดยพื้นฐานแล้วจะเทียบเท่ากับ PCA - ขึ้นอยู่กับการเปลี่ยนแปลงพื้นฐาน การออกกำลังกายที่มีประโยชน์อาจต้องพิจารณาว่าเหตุใดจึงเป็นเช่นนั้น