ภาพจาก https://people.tuebingen.mpg.de/burger/neural_denoising/
Autoencoder (ออโตเอนโคเดอร์) เป็นอัลกอริทึมในด้านการเรียนรู้ของเครื่อง ในพื้นที่ของการเรียนรู้แบบไม่มีควบคุม (Unsupervised Learning) ที่ใช้ในงานการลดมิติของข้อมูล (Dimensionality Reduction) และสร้างโมเดลใหม่ที่สามารถเข้าใจและสร้างความหมายจากข้อมูลแบบซับซ้อนได้ โดยมักนำมาใช้ในการเรียนรู้ลึก (Deep Learning) และงานที่เกี่ยวข้องกับการค้นหาลักษณะ (Feature Learning) หรือเรียนรู้การแทนภาพข้อมูล (Representation Learning) ที่เป็นเวกเตอร์แทนข้อมูลเดิมให้มีมิติต่ำลง ซึ่งช่วยลดขนาดของข้อมูลและเพิ่มประสิทธิภาพในการจัดการข้อมูลต่อไป
โครงสร้างของ Autoencoder ประกอบด้วยสองส่วนหลักคือ “Encoder” และ “Decoder” ซึ่งทำหน้าที่คือ:
- Encoder: รับข้อมูลนำเข้าและแปลงมันเป็นรูปแบบเชิงพื้นที่ที่มีมิติต่ำลง เพื่อให้ได้เวกเตอร์แทนภาพของข้อมูลที่มีขนาดเล็กและครบครันมากขึ้น
- Decoder: รับเวกเตอร์ที่ถูกสร้างขึ้นจาก Encoder และแปลงมันกลับเป็นข้อมูลเดิมในมิติเดิม ซึ่งเป็นการสร้างความหมายกลับมาจากเวกเตอร์แทนข้อมูล
หลังจากเรียนรู้จากข้อมูลแบบซับซ้อน โมเดล Autoencoder สามารถให้เราสร้างโมเดลที่มีความสามารถในการค้นหาลักษณะและสร้างความหมายให้กับข้อมูลในอนาคต นอกจากนี้ยังสามารถนำมาใช้ในงานอื่นๆ เช่นการกระจายคลาส (Clustering) การกระจายตัวแบ่งกลุ่ม (Manifold Learning) และสร้างรูปภาพเทียม (Image Generation) ซึ่งทำให้ Autoencoder เป็นอัลกอริทึมที่มีความสำคัญและน่าสนใจในการนำไปใช้ในงานต่างๆ ในด้านการเรียนรู้ของเครื่อง และปัญหาต่างๆ ที่เกี่ยวข้องกับการลดมิติและการเรียนรู้ลึก
โครงสร้าง Autoencoder
ภาพจ่าก https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798
นี่คือการแสดงผังเมื่อละเอียดของออโตเอนโคเดอร์มากขึ้น ตัวอย่างแรกคือข้อมูลนำเข้าจะผ่านส่วนของอนุกรมเชื่อมโยงแบบเต็มที่ของ ANN (Artificial Neural Network) เพื่อสร้างรหัส (code) ส่วน Decoder ที่มีโครงสร้าง ANN ที่คล้ายกัน จากนั้นก็จะสร้างเอาต์พุตโดยใช้เฉพาะรหัสที่ได้รับ เป้าหมายคือการให้เอาต์พุตเหมือนกับข้อมูลนำเข้า โปรดทราบว่าสถาปัตยกรรมของ Decoder คือภาพกระจกของ Encoder ซึ่งไม่ใช่ความต้องการ แต่มักจะเป็นเช่นนั้น สิ่งเดียวที่ต้องการคือมิติของข้อมูลนำเข้าและเอาต์พุตต้องเป็นเท่ากัน ส่วนสิ่งใดกลางๆ สามารถเปลี่ยนแปลงได้ตามต้องการ
นี่คือตัวอย่างเพิ่มเติมของวิธีการใช้งาน Autoencoder:
- การลดรบกวนในภาพ (Image Denoising):
Autoencoder สามารถใช้งานในการลบรบกวนออกจากภาพได้ ส่วน Encoder ของ Autoencoder จะเรียนรู้การบีบอัดภาพที่มีรบกวน และส่วน Decoder จะสร้างภาพที่ไม่มีรบกวนใหม่ขึ้นมา - การตรวจจับสิ่งผิดปกติ (Anomaly Detection):
Autoencoder สามารถใช้ตรวจจับสิ่งผิดปกติในแอพพลิเคชั่นต่างๆ เช่น การตรวจจับฉ้อโกงในระบบเงิน การผลิตหรือระบบตรวจสอบ โดยการที่ Autoencoder ถูกฝึกด้วยข้อมูลปกติ ในการทดสอบจะสามารถระบุสิ่งผิดปกติโดยการวัดความผิดพลาดในการสร้างภาพใหม่ - การแยกความสำคัญของข้อมูล (Feature Extraction):
Autoencoder สามารถใช้เพื่อเรียนรู้ลักษณะที่มีประโยชน์จากข้อมูลดิบ โดยการฝึก Autoencoder กับชุดข้อมูล เราสามารถพิจารณาค่าของชั้นซ่อนเป็นลักษณะที่ถูกสกัดมา และใช้งานได้ในงานอื่นๆ เช่น การจำแนกหรือการจัดกลุ่ม - การสร้างภาพ (Image Generation):
Autoencoder แบบ Variational Autoencoder (VAEs) สามารถสร้างภาพใหม่ได้ โดยการสุ่มตัวแทนจากพื้นที่ลักษณะที่เรียนรู้ได้ จะทำให้สามารถสร้างภาพใหม่ที่หลากหลายและคล้ายกับภาพในชุดข้อมูลการฝึก - การลดมิติ (Dimensionality Reduction):
Autoencoder สามารถใช้ในการลดมิติของข้อมูลที่มีมิติสูง ทำให้ง่ายและมีประสิทธิภาพในการจัดการข้อมูลในการวิเคราะห์หรือการนำเสนอ - การเรียนรู้การแทนภาพข้อมูล (Representation Learning):
Autoencoder สามารถเรียนรู้การแทนภาพข้อมูลที่มีประสิทธิภาพโดยไม่ต้องมีการกำหนดค่าให้เป็นอย่างชัดเจน ซึ่งเป็นประโยชน์เมื่อข้อมูลที่มีป้ายกำกับน้อยหรือมีค่าใช้จ่ายในการรับข้อมูล - การกรองความชอบร่วมกันในระบบแนะนำ (Collaborative Filtering in Recommender Systems):
Autoencoder สามารถใช้ในระบบแนะนำสำหรับการกรองความชอบร่วมกัน โดยการเรียนรู้จากเมตริกซึ่งอาจเป็นข้อมูลระบบแนะนำของผู้ใช้และรายการ ทำให้มีการแนะนำที่มีความปรับให้ตรงกับผู้ใช้เนื่องจากข้อมูลขาเข้าที่เป็นอย่างราบรื่น