เรียบเรียงโดย นพพณ เลิศชูวงศา
แบบจำลองนี้เป็นหนึ่งในแบบจำลองที่ได้รับความสนใจเนื่องจากความสามารถในการสร้างข้อมูลสังเคราะห์คุณภาพสูง ทำให้เป็นพื้นฐานในด้านต่างๆ เช่น การสร้างภาพ การสังเคราะห์เสียง และการเพิ่มพูนข้อมูล
การแตกต่างระหว่าง GANs และแบบจำลองการแพร่กระจาย
การฝึกอบรม: GANs อาศัยกรอบการทำงานแบบตัวสร้าง-ตัวแยกแยะ (generator-discriminator framework) โดยที่ตัวสร้างจะสร้างข้อมูลและตัวแยกแยะจะประเมินความถูกต้องของข้อมูล การตั้งค่าแบบปฏิปักษ์นี้อาจจะนำไปสู่ความไม่เสถียร ในทางตรงกันข้ามแบบจำลองการแพร่กระจายใช้กรอบความน่าจะเป็นและหลีกเลี่ยงการฝึกอบรมแบบปฏิปักษ์ ทำให้มีความเสถียรมากกว่าแต่จำเป็นต้องใช้ทรัพยากรและเวลาในการคำนวณมากกว่า
หลักการสำคัญของแบบจำลองการแพร่กระจาย
- กระบวนการแพร่กระจาย (Diffusion Process)
หลักการสำคัญของแบบจำลองการแพร่กระจายคือ การแพร่กระจายไปข้างหน้า (forward diffusion) และการแพร่กระจายย้อนกลับ (reverse diffusion) กระบวนการไปข้างหน้าจะค่อยๆ เพิ่มสัญญาณรบกวน (noise) ให้กับข้อมูล แปลงข้อมูลให้เป็นการกระจายแบบแฝง (latent distribution) ในทางกลับกัน กระบวนการย้อนกลับจะสร้างข้อมูลต้นฉบับขึ้นใหม่โดยการลดสัญญาณรบกวนจากการกระจายนี้
วิธีการสองทิศทางนี้ช่วยให้แบบจำลองการแพร่กระจายเรียนรู้การกระจายข้อมูลที่ซับซ้อนได้อย่างมีประสิทธิภาพ
รูปที่ 1 การแพร่กระจายไปข้างหน้า (forward diffusion) และการแพร่กระจายย้อนกลับ (reverse diffusion)
- กรอบความน่าจะเป็น (Probabilistic Framework)
แบบจำลองการแพร่กระจายทำงานภายในกรอบความน่าจะเป็น โดยใช้หลักการของ Markov chains และการสร้างแบบจำลองแบบอิงคะแนน (score-based modeling) กระบวนการไปข้างหน้าถูกสร้างแบบจำลองเป็น Markov chain โดยมีการเพิ่มสัญญาณรบกวนแบบ Gaussian ทีละน้อยในแต่ละช่วงเวลา (timestep) กระบวนการย้อนกลับ ซึ่งกำหนดพารามิเตอร์โดยโครงข่ายประสาทเทียม (neural network) จะทำนายขั้นตอนการลดสัญญาณรบกวน
สถาปัตยกรรม U-Net (U-Net Architecture)
ส่วนประกอบสำคัญของแบบจำลองการแพร่กระจายจำนวนมากคือสถาปัตยกรรม U-Net ซึ่งทำหน้าที่เป็นแกนหลักสำหรับโครงข่ายประสาทเทียมที่ใช้ในกระบวนการย้อนกลับ U-Net คือโครงข่ายประสาทเทียมแบบคอนโวลูชัน (convolutional neural network) ที่ขึ้นชื่อเรื่องโครงสร้างตัวเข้ารหัส-ตัวถอดรหัส (encoder-decoder structure) พร้อมการเชื่อมต่อแบบข้าม (skip connections)
- ตัวเข้ารหัส (Encoder): ตัวเข้ารหัสจะค่อยๆ ลดขนาดเชิงพื้นที่ (spatial dimensions) ของอินพุต
- ตัวถอดรหัส (Decoder): ตัวถอดรหัสจะสร้างข้อมูลอินพุตขึ้นใหม่ จากแบบจำลองที่สอนไว้แล้ว
- การเชื่อมต่อแบบข้าม (Skip Connections): การเชื่อมต่อเหล่านี้ระหว่างเลเยอร์ที่สอดคล้องกันของตัวเข้ารหัสและตัวถอดรหัสช่วยรักษารายละเอียดของรูป