ต้นขั้ว Autoencoder คืออะไร? - Unite.AI
เชื่อมต่อกับเรา
มาสเตอร์คลาส AI:

AI 101

Autoencoder คืออะไร?

mm
วันที่อัพเดท on

หากคุณเคยอ่านเกี่ยวกับเทคนิคการเรียนรู้แบบไม่มีผู้ดูแลมาก่อน คุณอาจเจอคำว่า “ตัวเข้ารหัสอัตโนมัติ". โปรแกรมเข้ารหัสอัตโนมัติเป็นหนึ่งในวิธีหลักในการพัฒนาโมเดลการเรียนรู้แบบไม่มีผู้ดูแล autoencoder คืออะไรกันแน่?

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

Autoencoder คืออะไร?

ตัวเข้ารหัสอัตโนมัติ เป็นเครือข่ายประสาท โครงข่ายประสาทเทียมประกอบด้วยเลเยอร์หลายชั้น และลักษณะเฉพาะของโปรแกรมเข้ารหัสอัตโนมัติคือเลเยอร์อินพุตประกอบด้วยข้อมูลมากพอๆ กับเลเยอร์เอาท์พุต เหตุผลที่ชั้นอินพุตและชั้นเอาต์พุตมีจำนวนหน่วยเท่ากันทุกประการ เนื่องจากโปรแกรมเข้ารหัสอัตโนมัติมีจุดมุ่งหมายเพื่อทำซ้ำข้อมูลอินพุต มันส่งออกสำเนาของข้อมูลหลังจากวิเคราะห์และสร้างใหม่ในแบบที่ไม่มีผู้ดูแล

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

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

สถาปัตยกรรมตัวเข้ารหัสอัตโนมัติ

ลองดูที่ สถาปัตยกรรมของตัวเข้ารหัสอัตโนมัติ เราจะพูดถึงสถาปัตยกรรมหลักของ autoencoder ที่นี่ มีรูปแบบต่างๆ ในสถาปัตยกรรมทั่วไปนี้ที่เราจะกล่าวถึงในส่วนด้านล่าง

รูปภาพ: Michela Massi ผ่าน Wikimedia Commons,(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)

ตามที่กล่าวไว้ก่อนหน้านี้ autoencoder สามารถแบ่งออกเป็นสามส่วน: ตัวเข้ารหัส คอขวด และตัวถอดรหัส

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

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

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

สถาปัตยกรรมพื้นฐานที่สุดของ autoencoder คือสถาปัตยกรรมแบบ feed-forward โดยมีโครงสร้างเหมือนกับ perceptron ชั้นเดียวที่ใช้ใน perceptron หลายชั้น เช่นเดียวกับโครงข่ายประสาทเทียมแบบฟีดฟอร์เวิร์ดทั่วไป ตัวเข้ารหัสอัตโนมัติได้รับการฝึกฝนผ่านการใช้แบ็คโพรพาเกชัน

คุณสมบัติของโปรแกรมเข้ารหัสอัตโนมัติ

มีตัวเข้ารหัสอัตโนมัติหลายประเภท แต่ทั้งหมดมีคุณสมบัติบางอย่างที่รวมเข้าด้วยกัน

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

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

เมื่อออกแบบตัวเข้ารหัสอัตโนมัติ วิศวกรแมชชีนเลิร์นนิงจะต้องให้ความสนใจกับไฮเปอร์พารามิเตอร์ของโมเดลที่แตกต่างกันสี่แบบ ได้แก่ ขนาดโค้ด หมายเลขเลเยอร์ โหนดต่อเลเยอร์ และฟังก์ชันการสูญเสีย

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

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

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

กระจัดกระจาย

รูปภาพ: Michela Massi ผ่าน Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)

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

หดตัว

ตัวเข้ารหัสอัตโนมัติแบบหดตัว ได้รับการออกแบบมาให้ทนทานต่อความแปรผันเล็กน้อยของข้อมูล โดยคงไว้ซึ่งการแสดงข้อมูลที่สอดคล้องกัน สิ่งนี้ทำได้โดยการใช้บทลงโทษกับฟังก์ชันการสูญเสีย เทคนิคการทำให้เป็นมาตรฐานนี้ขึ้นอยู่กับบรรทัดฐาน Frobenius ของเมทริกซ์ Jacobian สำหรับการเปิดใช้งานตัวเข้ารหัสอินพุต ผลกระทบของเทคนิคการทำให้เป็นมาตรฐานนี้คือแบบจำลองถูกบังคับให้สร้างการเข้ารหัสโดยที่อินพุตที่คล้ายกันจะมีการเข้ารหัสที่คล้ายกัน

Convolutional

ตัวเข้ารหัสอัตโนมัติ Convolutional เข้ารหัสข้อมูลอินพุตโดยแยกข้อมูลออกเป็นส่วนย่อย แล้วแปลงส่วนย่อยเหล่านี้เป็นสัญญาณอย่างง่ายที่รวมเข้าด้วยกันเพื่อสร้างการแสดงข้อมูลใหม่ คล้ายกับเครือข่ายประสาทเทียม Convolutional ตัวเข้ารหัสอัตโนมัติแบบ Convolutional เชี่ยวชาญในการเรียนรู้ข้อมูลภาพ และใช้ตัวกรองที่ย้ายไปยังส่วนต่างๆ ของภาพทั้งหมดทีละส่วน การเข้ารหัสที่สร้างโดยเลเยอร์การเข้ารหัสสามารถใช้เพื่อสร้างภาพใหม่ สะท้อนภาพ หรือแก้ไขรูปทรงเรขาคณิตของภาพ เมื่อเครือข่ายได้เรียนรู้ตัวกรองแล้ว ตัวกรองเหล่านี้สามารถใช้กับอินพุตที่ใกล้เคียงกันเพื่อแยกคุณสมบัติของรูปภาพ

ดีนอยส์ซิ่ง

รูปภาพ: MAL ผ่าน Wikimedia Commons, CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)

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

แปรผัน

autoencoders แบบแปรผัน ดำเนินการโดยการตั้งสมมติฐานเกี่ยวกับวิธีการกระจายตัวแปรแฝงของข้อมูล ตัวเข้ารหัสอัตโนมัติแบบแปรผันสร้างการแจกแจงความน่าจะเป็นสำหรับคุณลักษณะต่างๆ ของรูปภาพการฝึกอบรม/แอตทริบิวต์แฝง เมื่อทำการฝึกอบรม ตัวเข้ารหัสจะสร้างการกระจายแฝงสำหรับคุณลักษณะต่างๆ ของรูปภาพอินพุต

 

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

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

โปรแกรมเข้ารหัสอัตโนมัติ

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

Data denoising คือการใช้ autoencoders เพื่อตัดเกรน/นอยส์ออกจากภาพ ในทำนองเดียวกัน โปรแกรมเข้ารหัสอัตโนมัติสามารถใช้เพื่อซ่อมแซมความเสียหายของรูปภาพประเภทอื่นๆ เช่น ภาพที่พร่ามัวหรือภาพที่ขาดหายไปบางส่วน การลดขนาดสามารถช่วยให้เครือข่ายความจุสูงเรียนรู้คุณลักษณะที่เป็นประโยชน์ของภาพ หมายความว่าสามารถใช้ตัวเข้ารหัสอัตโนมัติเพื่อเพิ่มการฝึกอบรมโครงข่ายประสาทเทียมประเภทอื่นๆ ได้ นี่เป็นเรื่องจริงของการใช้ตัวเข้ารหัสอัตโนมัติสำหรับการแยกคุณสมบัติ เนื่องจากตัวเข้ารหัสอัตโนมัติสามารถใช้เพื่อระบุคุณสมบัติของชุดข้อมูลการฝึกอบรมอื่น ๆ เพื่อฝึกอบรมโมเดลอื่น ๆ

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

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

บล็อกเกอร์และโปรแกรมเมอร์ที่มีความเชี่ยวชาญด้าน เครื่องเรียนรู้ และ การเรียนรู้ลึก ๆ หัวข้อ Daniel หวังว่าจะช่วยให้ผู้อื่นใช้พลังของ AI เพื่อประโยชน์ทางสังคม