4 คะแนน โดย GN⁺ 2024-05-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

การสร้างแบบจำลองเชิงกำเนิด

  • ปัญหาพื้นฐานของการสร้างแบบจำลองเชิงกำเนิดคือ เมื่อให้ชุดตัวอย่างจากการแจกแจงที่ไม่ทราบค่า x∼p(x) แล้ว จะสร้างตัวอย่างใหม่จากการแจกแจงนั้นอย่างไร

1.1 โมเดลการแพร่แบบลบสัญญาณรบกวน

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

โมเดล DDP

  • โมเดล DDP ย่อมาจาก Denoising Diffusion Probabilistic Models
  • ความก้าวหน้าใหม่ ๆ อาศัยภาษาและคณิตศาสตร์จากงานวิจัยนี้เป็นพื้นฐาน

2.1 การเพิ่มและลบสัญญาณรบกวน

  • ใช้กระบวนการแพร่ไปข้างหน้าเพื่อค่อย ๆ เพิ่มสัญญาณรบกวนให้กับภาพอินพุต x0 ตลอดช่วงเวลา t=1,2,…,T เพื่อแมปมันไปยังจุดของการแจกแจงปกติมาตรฐาน
  • ในแต่ละช่วงเวลา จะผสมสัญญาณรบกวนแบบสุ่มปริมาณเล็กน้อยลงในภาพก่อนหน้าเพื่อสร้างภาพใหม่
  • กระบวนการนี้มีคุณสมบัติแบบทำซ้ำ โดยแต่ละขั้นขึ้นกับเพียงขั้นเวลาก่อนหน้า และสัญญาณรบกวนที่เพิ่มเข้ามาจะเป็นอิสระจากตัวอย่างสัญญาณรบกวนก่อนหน้า
  • เรียนรู้กระบวนการย้อนกลับเพื่อทำนายการแจกแจงของเวอร์ชันที่มีสัญญาณรบกวนน้อยกว่า xt-1 จากภาพที่มีสัญญาณรบกวน xt

2.2 การเรียนรู้การลบสัญญาณรบกวน

  • q(xt−1∣xt) มีลักษณะเป็น Gaussian โดยประมาณเมื่อปริมาณสัญญาณรบกวนมีน้อยมาก
  • นี่เป็นผลลัพธ์ที่มีมานานในสาขาฟิสิกส์สถิติ
  • จึงทำให้สามารถเรียนรู้การแจกแจงย้อนกลับได้
  • ใช้ KL divergence เพื่อลดความแตกต่างระหว่าง q(xt−1∣xt,x0) และ pθ(xt−1∣xt) สำหรับตัวอย่างฝึกทุกตัว x0
  • ฟังก์ชัน loss สุดท้ายถูกทำให้ง่ายลงเป็นปัญหาการทำนายสัญญาณรบกวน

2.3 การสุ่มตัวอย่าง

  • หลังจากฝึกโมเดลประมาณค่าสัญญาณรบกวน ϵθ(xt,t) แล้ว ก็สามารถใช้มันเพื่อสุ่มตัวอย่างภาพ x0 ได้
  • เริ่มจากการสุ่มภาพสัญญาณรบกวนล้วน xT∼N(0,I) แล้วสำหรับแต่ละช่วงเวลาจาก T ไปถึง 1 จะทำนายสัญญาณรบกวน และใช้สัญญาณรบกวนที่ทำนายนั้นเพื่อสุ่มภาพที่ถูกลบสัญญาณรบกวน

2.4 สรุปและตัวอย่าง

  • เรียนรู้การแจกแจงพื้นฐานของชุดข้อมูลภาพ และนิยามกระบวนการเพิ่มสัญญาณรบกวนไปข้างหน้าเพื่อค่อย ๆ แปลงภาพ x0 ให้เป็นสัญญาณรบกวนล้วน xT
  • เรียนรู้กระบวนการย้อนกลับเพื่อทำนายการแจกแจงของ xt-1 จาก xt
  • ใช้ KL divergence เพื่อให้แน่ใจว่าการแจกแจงที่เรียนรู้มานั้นใกล้เคียงกับการแจกแจงที่ทราบของชุดข้อมูลมากที่สุด
  • สุดท้ายทำให้ปัญหาง่ายลงเป็นการทำนายสัญญาณรบกวน

พัฒนาการ

3.1 การสร้างที่รวดเร็ว

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

Score matching และตัวสุ่มตัวอย่างแบบเร็ว

  • โมเดลการแพร่มีความเชื่อมโยงที่น่าทึ่งกับสมการเชิงอนุพันธ์ ซึ่งนำไปสู่การพัฒนาตัวสุ่มตัวอย่างแบบเร็วมากมาย
  • การทำนายทิศทางของสัญญาณรบกวนเทียบเท่ากับ gradient ของ log-likelihood ของกระบวนการไปข้างหน้า
  • สิ่งนี้เป็นพื้นฐานของโมเดลแบบอิงสกอร์ ซึ่งเรียนรู้สกอร์ของชุดข้อมูลที่มีการผสมสัญญาณรบกวน และสร้างตัวอย่างใหม่โดยเคลื่อนตามสนามสกอร์

ความเห็นของ GN⁺

  1. ความเข้าใจโมเดลการแพร่: โมเดลการแพร่สามารถประยุกต์ใช้ได้ไม่เพียงกับการสร้างภาพ แต่ยังรวมถึงแอนิเมชัน การสร้างวิดีโอ การสร้างโมเดล 3D การทำนายโครงสร้างโปรตีน และการวางแผนเส้นทางของหุ่นยนต์
  2. ความซับซ้อนของกระบวนการฝึก: กระบวนการฝึกของโมเดลการแพร่มีความซับซ้อน แต่ทำให้สามารถสร้างภาพที่ประณีตอย่างมากได้
  3. เทคนิคการสร้างแบบรวดเร็ว: เทคนิคการสร้างแบบรวดเร็วช่วยเพิ่มความใช้งานได้จริงของโมเดลการแพร่อย่างมาก
  4. โมเดลแบบอิงสกอร์: โมเดลแบบอิงสกอร์ทำงานในลักษณะคล้ายกับโมเดลการแพร่ และช่วยเพิ่มความเร็วในการสุ่มตัวอย่าง
  5. ข้อพิจารณาเมื่อเริ่มใช้เทคโนโลยีนี้: เมื่อนำโมเดลการแพร่มาใช้ ควรพิจารณาเวลาในการฝึก ทรัพยากรการคำนวณ และความซับซ้อนของโมเดล

1 ความคิดเห็น

 
GN⁺ 2024-05-27

ความคิดเห็นจาก Hacker News

  • เพิ่งได้รู้ว่าโมเดลการแพร่มีมาก่อนทฤษฎี score matching เสียอีก ตอนที่ OpenAI ฝึกด้วยภาพ 250 ล้านภาพ นี่เป็นความพยายามที่ท้าทายแม้จะยังขาดคำอธิบายเชิงทฤษฎี
  • วนลูปการฝึกดูเหมือนจะผิด เพราะ x0 และ eps ไม่ได้ถูกใช้ในนิพจน์ของ xt เลย จึงดูเหมือนกำลังทำนายสัญญาณรบกวนแบบสุ่ม
  • กำลังมองหาไลบรารี Python สำหรับ diffusion transformer ที่ใช้ไลเซนส์ Apache หรือ MIT ที่ดีที่สุด
  • ขอบคุณที่แชร์ ทำให้เข้าใจเชิงลึกมากขึ้นว่าโมเดลการแพร่ทำงานอย่างไร ความสุ่มนั้นทรงพลังจริง ๆ ตอนนี้ถึงเวลาลองเขียนโค้ดด้วยภาษาที่ไม่เหมาะสมแล้ว
  • สำหรับคนที่มาอ่านคอมเมนต์ เนื้อหาที่จะสรุปมีไม่มาก โพสต์นี้เป็นบทสรุปของ Stable Diffusion
  • ตอนเรียนวาดรูปในปี 2022 ก็รู้สึกตกใจกับการมาถึงของโมเดลศิลปะ AI อย่าง Stable Diffusion คอมพิวเตอร์กลายเป็นศิลปินที่เก่งกว่าตัวเองไปแล้ว ยิ่ง AI รุกล้ำงานสร้างสรรค์มากขึ้นเท่าไร ก็ยิ่งอยากกำจัดมันทั้งหมด