ในยุคที่ ปัญญาประดิษฐ์ (AI) กำลังเข้ามามีบทบาทสำคัญในชีวิตประจำวันของเราเพิ่มมากขึ้นเรื่อย ๆ การเข้าใจถึงกลไก และกระบวนการที่ช่วยให้ AI สามารถทำงานได้อย่างมีประสิทธิภาพนั้น ก็เป็นความรู้รอบตัวที่มีความสำคัญเป็นอย่างยิ่ง หนึ่งในกระบวนการที่น่าจับตามอง และถูกนำมาใช้ใน AI อย่างแพร่หลายคือ โมเดลที่ถูกเรียกว่า "Diffusion Model"
มันเป็นกระบวนการที่ AI ใช้ในการสร้างข้อมูลใหม่จากข้อมูลเดิมที่มีอยู่ บทความนี้จะพาคุณไปทำความเข้าใจกับเทคนิค Diffusion Model ที่ Generative AI ใช้ในการทำงานกัน ...
ก่อนอื่นต้องขออธิบายก่อนว่า อย่าสับสนระหว่าง "Diffusion Model" กับ "Diffusion Processing" (กระบวนการแพร่) ที่เป็นหลักการทางฟิสิกส์ว่า อนุภาคจะมีการเคลื่อนที่จากบริเวณที่มีความเข้มข้นสูง ไปยังบริเวณที่มีความเข้มข้นต่ำ ตัวอย่างง่าย ๆ ที่อยู่รอบตัวเราก็อย่างเช่น เมื่อคุณเปิดขวดน้ำมันหอมระเหย หรือเตาอโรม่า กลิ่นหอมของมันก็จะค่อย ๆ กระจายไปทั่วทั้งห้อง หรือหากเราหยดน้ำหมึกลงไปในน้ำ หมึกก็จะแพร่กระจายไปทั่วจนน้ำเปลี่ยนสี
ในการพัฒนา AI ที่เป็นแบบ Multimodal หรือ AI ที่สามารถประมวลผล และทำงานกับข้อมูลได้หลากหลายรูปแบบพร้อมกัน เช่น ข้อความ, ภาพ, เสียง, และวิดีโอ ได้ส่งผลให้เกิดแรงผลักดันในการพัฒนา การเรียนรู้ของเครื่องจักร (Machine Learning) จนนำไปสู่การพัฒนา Generative AI ขึ้นมา ที่ทำงานได้โดยมี Diffusion Model เป็นหนึ่งในหัวใจหลัก
Diffusion Model มีคุณสมบัติโดดเด่นในการช่วยให้ AI สามารถสร้างภาพคุณภาพสูง, วิดีโอ, เสียง ฯลฯ โดยที่มาของชื่อโมเดล ก็ถูกตั้งตามความคล้ายคลึงกับกระบวนการแพร่แบบธรรมชาติในกฏฟิสิกส์ ตัวอย่างของ Diffusion Model ที่มีชื่อเสียง ก็อย่างเช่น DALL-E, Midjourney, Stable Diffusion หรือแม้แต่ ChatGPT เป็นตัน
ตัวอย่างภาพที่สร้างด้วย DALL-E
ภาพจาก : https://www.assemblyai.com/blog/diffusion-models-for-machine-learning-introduction/
ใน Machine Learning โมเดล Diffusion Model หรือที่รู้จักกันในอีกชื่อว่า "Diffusion Probabilistic Models" และ Score-Based Generative Models เป็นแบบจำลองการสร้างตัวแปรแฝง (Latent Variable Generative Models) โดยมันจะประกอบด้วยสามส่วนหลัก คือ กระบวนการไปข้างหน้า (Forward Process), กระบวนการย้อนกลับ (Reverse Process) และกระบวนการสุ่มตัวอย่าง (Sampling Procedure) เมื่อนำกระบวนการทั้งหมดนี้มาเรียนรู้ในชุดข้อมูลที่ถูกเตรียมไว้ มันจะสามารถสร้างองค์ประกอบใหม่ที่คล้ายกับชุดข้อมูลเดิมขึ้นมาได้
ภาพจาก : https://dsin.ai/news/article/EWCunQ/dreamdistribution_prompt_distribution_learning_for_text_to_image_diffusion_models
หลักการของ Diffusion Model มีแนวคิดในการทำงานดังต่อไปนี้
ค่า Noise ในที่นี้จะหมายถึงข้อมูลที่เป็นการสุ่ม หรือไม่ได้เป็นส่วนหนึ่งของรูปแบบข้อมูลที่ AI กำลังพยายามเรียนรู้ หรือวิเคราะห์ Noise เหล่านี้สามารถเกิดขึ้นได้จากหลายสาเหตุ เช่น ความผิดพลาดในการวิเคราะห์, ข้อมูลที่ไม่เกี่ยวข้อง หรือการแทรกแซงจากข้อมูลอื่น ๆ ซึ่งใน Diffusion Model จะมีการเพิ่ม Noise เข้าไปในข้อมูลด้วยความตั้งใจตามหลักการทางคณิตศาสตร์ มันมีความสำคัญต่อการช่วยให้แบบจำลองสามารถเรียนรู้วิธีการย้อนกลับกระบวนการของการทำลายข้อมูล
Diffusion Process เป็นกระบวนการแพร่กระจายที่เกี่ยวข้องกับการทำลายข้อมูลอย่างเป็นระบบจาก Noise และการสร้างข้อมูลขึ้นใหม่ โดยตัวโมเดลจะเรียนรู้วิธีการทำให้ข้อมูลกลับมาเป็นระเบียบจากข้อมูลที่ถูกทำลาย
ภาพจาก : https://learnopencv.com/denoising-diffusion-probabilistic-models/
Diffusion Model เริ่มต้นสร้างข้อมูลโดยการลบ Noise ออกทีละน้อย จนได้ผลลัพธ์ที่มีคุณภาพสูง สร้างเป็นข้อมูลอันใหม่ขึ้นมา
ภาพจาก : https://developer.nvidia.com/blog/understanding-diffusion-models-an-essential-guide-for-aec-professionals/
เบื้องหลังการทำงานของ Diffusion Model มีความซับซ้อน ประกอบด้วยหลายขั้นตอนที่ทำงานร่วมกันเพื่อให้ตัวโมเดลสามารถสร้างข้อมูลใหม่ที่มีคุณภาพสูงได้ ขั้นตอนพื้นฐานที่สำคัญ ประกอบไปด้วย
เริ่มจากการเตรียมข้อมูลเบื้องต้น หรือ Data Preprocessing ก่อนที่ Diffusion Model จะเริ่มสร้างข้อมูลได้ มันจำเป็นต้องประมวลผลข้อมูลที่ถูกป้อนเข้ามาผ่านขั้นตอนการเตรียมข้อมูลเบื้องต้นหลายขั้นตอน ขั้นตอนเหล่านี้มีความสำคัญเนื่องจากช่วยให้ข้อมูลถูกจัดรูปแบบอย่างถูกต้อง และสามารถเปลี่ยนแปลงได้ในระหว่างกระบวนการ Diffusion Process การเตรียมข้อมูลเบื้องต้นมักประกอบด้วย
การปรับข้อมูลให้เป็นมาตรฐาน เพื่อเพิ่มประสิทธิภาพการทำงานของตัวโมเดล
วางแผนการเพิ่ม Noise หรือข้อมูลรบกวนในขั้นตอนต่าง ๆ เพื่อช่วยจัดการกระบวนการทำลายข้อมูลได้อย่างมีประสิทธิภาพ
ใช้การเปลี่ยนแปลง เช่น การหมุน หรือการตัดข้อมูลทิ้งบางส่วน เพื่อเพิ่มความหลากหลายของข้อมูล และปรับปรุงการทำงานตัวโมเดล
ในกระบวนการแพร่กระจายแบบไปข้างหน้า ตัวโมเดลจะค่อย ๆ เปลี่ยนแปลงข้อมูลทีละนิด โดยการเพิ่ม Gaussian Noise ที่แต่ละขั้นตอน โดยที่ผลลัพธ์ของแต่ละขั้นตอน ขึ้นอยู่กับสถานะ Noise ของขั้นตอนก่อนหน้า ตามหลักคณิตศาสตร์ที่เรียกว่า Markov Chain
เริ่มต้นที่ข้อมูลที่ถูกใช้เป็นตัวอย่าง โมเดลจะเพิ่ม Noise เล็กน้อยทีละขั้น ระดับของ Noise จะเพิ่มขึ้นเมื่อเวลาผ่านไป และในแต่ละขั้น ตัวอย่างข้อมูลก็จะถูกทำลายมากขึ้น
การเปลี่ยนแปลงทีละขั้นนี้ จะเกิดขึ้นในโครงสร้างของ Markov Chain ซึ่งทำให้การเพิ่ม Noise ในแต่ละขั้นขึ้นอยู่กับสถานะก่อนหน้าโดยตรง ไม่ใช่ขึ้นอยู่กับลำดับทั้งหมด
Markov Chain
ภาพจาก https://ai.plainenglish.io/markov-chains-b84ec329a54c
เมื่อสิ้นสุดกระบวนการแพร่กระจายแบบไปข้างหน้า (Forward Diffusion Process) ข้อมูลดั้งเดิมจะไม่สามารถแยกออกจากเสียง Gaussian ได้อีกต่อไป นี่เป็นการทำลายที่เจตนา เพื่อเตรียมโมเดลสำหรับกระบวนการย้อนกลับ ที่จะเรียนรู้การลบ Noise
เป็นขั้นตอนที่โมเดลจะเริ่มแสดงประสิทธิภาพได้แล้ว โดยมันจะสร้างข้อมูลขึ้นใหม่โดยการลบ Noise ออกทีละขั้นตอน ผ่านการย้อนด้วยกระบวนการแบบ Markov Chain ทำให้แบบจำลองสามารถสร้างข้อมูลใหม่จาก Noise ที่ถูกสุ่มได้
โมเดลจะคาดการณ์ปริมาณ Noise ที่ถูกเพิ่มเข้ามาในแต่ละขั้นตอน และใช้ข้อมูลนี้ในการเริ่มลบ Noise ออกทีละเล็กทีละน้อย
ในแต่ละขั้นตอน โมเดลจะลบเสียงออกจากตัวอย่างข้อมูลทีละน้อย ทำให้มันกลับมาเป็นตัวอย่างข้อมูลที่สอดคล้องกันได้ กระบวนการนี้ดำเนินต่อไปจนกว่า โมลจะสร้างข้อมูลขึ้นใหม่ทั้งหมดได้สำเร็จ
ภาพจาก : https://www.researchgate.net/figure/terative-denoising-over-30-iterations-0-4-8-12-16-20-24-30-are-shown-by-a_fig1_381016894
ขั้นตอนสุดท้ายจะได้ผลลัพธ์เป็นตัวอย่างข้อมูลใหม่ที่คล้ายคลึงกับข้อมูลเดิม ด้วยวิธีการลบ Noise นี้ ช่วยให้ Diffusion Model สามารถสร้างผลลัพธ์ที่มีคุณภาพ ตามโครงสร้าง และลักษณะเด่นของ Prompt ที่ผู้ใช้งานป้อนให้มัน
การปฏิสัมพันธ์ระหว่าง Noise และข้อมูล ใน Diffusion Model มีความสำคัญต่อคุณภาพของผลลัพธ์เป็นอย่างมาก Noise ทำหน้าที่ทั้งเป็นการเป็น "ผู้ทำลาย" และ "ผู้สอน" ที่ทำให้ตัวโมเดลสามารถเรียนรู้วิธีการสร้างข้อมูลผ่านกระบวนการทำลายที่ควบคุมได้ ซึ่งมีส่วนประกอบที่สำคัญดังนี้
นี่เป็นสิ่งสำคัญสำหรับการฝึกฝน AI เพราะช่วยให้โมเดลเรียนรู้ว่าระดับ Noise ที่ต่างกันมีผลต่อข้อมูลอย่างไรบ้าง ?
ด้วยการเรียนรู้วิธีลบ Noise ตัวโมเดลจะสามารถย้อนกระบวนการสร้างข้อมูลเดิมได้ เพื่อนำมาใช้สร้างตัวอย่างใหม่ที่ใกล้เคียงของจริง และหลากหลาย
ความสำเร็จของโมเดลขึ้นอยู่กับคุณภาพของข้อมูล การวางแผนวิธีเพิ่ม Noise อย่างแม่นยำ และกระบวนการเตรียมข้อมูลที่มีประสิทธิภาพเป็นสิ่งสำคัญเพื่อให้ Diffusion Model ทำงานได้ดี
ภาพจาก : https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
การปรับจูน Hyperparameter ซึ่งเป็นพารามิเตอร์ที่ใช้ควบคุมกระบวนการเรียนรู้ของโมเดล แต่ไม่ได้ถูกเรียนรู้จากข้อมูลโดยตรง เป็นสิ่งสำคัญในการทำงานของ Diffusion Model เนื่องจากมีผลโดยตรงต่อประสิทธิภาพของโมเดล Hyperparameter หลักประกอบไปด้วย
กำหนดอัตราการเพิ่ม Noise ในข้อมูล แผนการเพิ่ม Noise ที่ออกแบบมาอย่างดี มีความสำคัญต่อการสร้างสมดุลระหว่างการทำลาย และการกู้คืนอย่างมาก
ควบคุมความเร็วที่โมเดลใช้ในการปรับตัวเข้ากับข้อมูล อัตราการเรียนรู้ที่สูงอาจทำให้การฝึกอบรมเร็วขึ้น แต่ทำให้เกิดความไม่เสถียร ในขณะที่อัตราที่ต่ำจะให้ความเสถียรแต่ทำให้การฝึกอบรมช้าลง
กำหนดจำนวนตัวอย่างที่ประมวลผลในแต่ละขั้นตอนการฝึกอบรม ขนาดกลุ่มตัวอย่างที่ใหญ่ขึ้นสามารถเร่งการฝึกอบรมได้ ในขณะที่กลุ่มตัวอย่างที่เล็กลงอาจทำให้การเรียนรู้มีความแข็งแกร่งมากขึ้น
มีตัวเลือกสถาปัตยกรรมพื้นฐานอยู่ 2 แบบที่เป็นที่นิยมสำหรับ Diffusion Model คือ U-Net และ Transformer
ภาพจาก : https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
ประกอบไปด้วยการ "ซ้อนลดขนาด" (Downsampling Stack) และ "การซ้อนขยายขนาด" (Upsampling Stack)
แต่ละขั้นตอนประกอบด้วยการใช้ Convolutions (แบบ Unpadded convolutions) การดำเนินการทางคณิตศาสตร์ที่ใช้ในการตรวจจับคุณสมบัติของภาพ เช่น ขอบ, ลวดลาย หรือวัตถุ ขนาด 3x3 ซ้ำสองครั้ง โดยแต่ละครั้งตามด้วย Rectified Linear Unit (ReLU สมการของ ReLU(X) = max(0,X)) หมายความว่าหาก x เป็นค่าบวก ค่าของ ReLU ก็จะเท่ากับ x แต่หาก x เป็นค่าลบ ค่าของ ReLU จะเท่ากับ 0
แต่ละขั้นตอนประกอบด้วยการขยายขนาดแผนที่คุณลักษณะตามด้วย Convolutions ขนาด 2x2 ซึ่งแต่ละครั้งจะลดจำนวนช่องคุณลักษณะลงครึ่งหนึ่ง
การเชื่อมต่อทางลัดส่งผลให้เกิดการรวมกับเลเยอร์ (Layer) ที่สอดคล้องกันของการซ้อนลดขนาด และให้คุณลักษณะความละเอียดสูงที่จำเป็นต่อกระบวนการขยายขนาด
ภาพจาก : https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
ทำงานบน Latent Patches ชิ้นส่วนย่อยของพื้นที่แฝง (Latent Space) ซึ่งถูกแบ่งออกมา เพื่อทำการประมวลผลแต่ละชิ้นส่วนอย่างมีประสิทธิภาพ DiT
สถาปัตยกรรม Transformer สามารถขยายขนาดได้อย่างง่ายดาย ซึ่งเป็นคุณสมบัติหนึ่งที่มีชื่อเสียงที่สุดของ DiT เนื่องจากประสิทธิภาพของมันเพิ่มขึ้น เมื่อมีพลังการประมวลผลที่มากขึ้น
Diffusion Model ตัวแรกถูกคิดค้นขึ้นที่มหาวิทยาลัยสแตนฟอร์ดในปี ค.ศ. 2015 (พ.ศ. 2558) โดย Jascha Sohl-Dickstein ซึ่งปัจจุบันเป็นนักวิทยาศาสตร์ และนักวิจัยใน Brain Group ที่ Google ในขณะที่ Sohl-Dickstein ทำงานเป็น Postdoctoral Researcher นักวิจัยที่สำเร็จการศึกษาระดับปริญญาเอกแล้ว และทำงานในห้องปฏิบัติการ หรือสถาบันวิจัยต่างๆ เพื่อศึกษา และวิจัยเพิ่มเติมในสาขาที่ตนเชี่ยวชาญ
Jascha Sohl-Dickstein และ Surya Ganguli ศาสตราจารย์ที่เชี่ยวชาญด้านโครงข่ายประสาทเทียม (Neural Network) กำลังหาแนวคิดใหม่ ๆ เกี่ยวกับหลักอุณหพลศาสตร์ที่ไม่สมดุล (Non-equilibrium Thermodynamics) ซึ่งเป็นสาขาหนึ่งของวิชาฟิสิกส์ ที่ศึกษาการไหลของพลังงาน และเรื่องราวในระบบที่ไม่อยู่ในสมดุล งานนั้นได้นำไปสู่กระบวนความคิดที่ว่า "ข้อมูลสามารถเปลี่ยนเป็น Noise และด้วยการฝึกฝน Neural Network เราจะสามารถทำให้ Noise เปลี่ยนกลับเป็นข้อมูลได้"
ในท้ายที่สุดแล้วแนวคิดดังกล่าวนำไปสู่งานวิจัยจนออกมาเป็น Diffusion Model
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |