4 คะแนน โดย GN⁺ 2024-05-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โมเดล Diffusion เรียนรู้วิธี ค่อย ๆ ผสม noise เข้าไปในข้อมูลแล้วย้อนกระบวนการกลับ จึงถูกใช้ไม่เพียงกับการสร้างภาพอย่าง Stable Diffusion แต่ยังรวมถึงการสร้างวิดีโอ, 3D, โครงสร้างโปรตีน และ trajectory ของหุ่นยนต์ด้วย
  • DDPM ทำให้ภาพสะอาด (x_0) กลายเป็น noise ที่ใกล้กับ (x_T) ผ่าน timestep หลายขั้น และฝึกโมเดลด้วย L2 loss ให้ทำนาย ทิศทางของ noise ในแต่ละขั้น
  • กระบวนการย้อนกลับสามารถจัดการได้โดยประมาณเป็น Gaussian distribution ในขั้น noise ขนาดเล็ก และ Ho 2020 ทำให้การฝึกเสถียรขึ้นด้วยการตรึง variance และทำให้การทำนาย mean ง่ายลงเป็นการทำนาย noise
  • ความเร็วในการสร้างสามารถลดลงจากการ sampling สูงสุด 1000 ขั้นของ DDPM เหลือประมาณ 10 ขั้นใน sampler แบบ ODE ไปจนถึง การสร้างแบบขั้นเดียว ด้วย progressive distillation และ adversarial distillation
  • ขอบเขตการใช้งานจริงของโมเดล Diffusion กว้างขึ้นแล้ว แต่คุณภาพที่ลดลงจากการ distillation มากเกินไป, ข้อจำกัดของการควบคุมด้วยเงื่อนไข, รวมถึงประเด็นจริยธรรมและที่มาของ dataset ยังเป็นข้อจำกัดต่อเนื่อง

ตำแหน่งของโมเดล Diffusion ใน Generative Modeling

  • ปัญหาพื้นฐานของ generative modeling คือ เมื่อมีชุดตัวอย่างที่มาจาก distribution ที่ไม่รู้จัก (p(x)) จะสร้าง ตัวอย่างใหม่ จาก distribution เดียวกันได้อย่างไร
  • GAN ใช้แนวทางเกมระหว่าง generator และ discriminator และสามารถสังเคราะห์ภาพที่น่าประทับใจได้ แต่ฝึกยาก ไม่ได้ model (p(x)) อย่างชัดเจน และอาจเกิด mode collapse ได้
  • Normalizing flow เรียนรู้ mapping แบบ deterministic และ invertible ระหว่างตัวอย่างข้อมูลกับ unit Gaussian
    • Glow ของ OpenAI ในปี 2018 สร้างภาพใบหน้าที่มี latent space ที่มีความหมาย
    • flow กำหนดให้แต่ละ layer ต้อง invertible และต้องคำนวณ Jacobian determinant ได้รวดเร็ว โดยการคำนวณ Jacobian determinant ขนาด (N \times N) ทั่วไปมีค่าใช้จ่าย (O(N^3)) จึงมีข้อจำกัดมาก
  • โมเดล Diffusion ไม่ใช้ deterministic mapping แต่ทำ probabilistic mapping หลายขั้น โดยค่อย ๆ ผสม noise แบบสุ่มเข้าไปในข้อมูล แล้วเรียนรู้โมเดลที่ย้อนกระบวนการนั้นกลับ

ไอเดียพื้นฐานของ Denoising Diffusion

  • หากผสม noise ขนาดเล็กหลายครั้งเข้าไปใน data point ที่สะอาด สุดท้ายจะได้สถานะที่ดูแทบเหมือน noise ล้วน
  • แม้จะมองเพียง data point ที่ปน noise ในช่วงเวลาหนึ่ง ก็ยังพอประมาณได้ระดับหนึ่งว่ามาจากทิศทางใดในขั้นก่อนหน้า
  • เมื่อผสม noise มากพอ ความน่าจะเป็นที่จุดหนึ่ง (y) ใน target space มาจาก (x) ใน space เดิม สามารถเข้าใกล้ (p(x)) ได้ตามต้องการ
  • หากเรียนรู้ กระบวนการย้อนกลับ หลายขั้น ก็สามารถ sample จาก (p(x)) ได้
  • การฝึกทำโดยเพิ่ม noise แบบสุ่มให้กับ data point แต่ละจุด ให้โมเดลทำนาย noise นั้น จากนั้นลด L2 loss ระหว่าง noise ที่ทำนายกับทิศทาง noise จริงด้วย gradient descent
  • การ sampling พื้นฐานเป็นไปตาม flow ต่อไปนี้
    • เริ่มจากภาพ noise ล้วน
    • ทำนาย noise ในภาพ แล้วลบออกตามสัดส่วนที่กำหนด
    • ทำซ้ำ 10~1000 ครั้งตาม sampler เพื่อให้ได้ภาพที่ไม่มี noise

DDPM: จุดตั้งต้นทางคณิตศาสตร์ของโมเดล Diffusion

  • DDPM (Denoising Diffusion Probabilistic Models) เป็นแนวทางที่กลายเป็นภาษาและรากฐานทางคณิตศาสตร์ของการพัฒนาโมเดล Diffusion หลังจากนั้น
  • ภาพ input (x_0) ถูกผสม noise สุ่มขนาดเล็กซ้ำ ๆ ระหว่าง timestep (t=1,2,\dots,T) และเคลื่อนไปเป็นจุดหนึ่งของ unit normal distribution
  • forward diffusion step ผสม noise (\epsilon \sim \mathcal{N}(0,I)) เข้าไปในภาพก่อนหน้า (x_{t-1}) เพื่อสร้าง (x_t)
    • (\alpha_t) น้อยกว่า 1 แต่ใกล้ 1
    • ถูกตั้งค่าให้ (\prod_{t=1}^T \alpha_t \approx 0)
    • พจน์รากที่สองช่วยให้ variance ยังคงถูกรักษาไว้หลังแต่ละขั้น
  • แต่ละขั้นพึ่งพาเฉพาะ timestep ก่อนหน้า และ noise ที่ผสมเข้าไปเป็นอิสระจาก noise ก่อนหน้า ดังนั้นจึงสามารถแสดง (x_t) โดยตรงจาก (x_0) และเวกเตอร์ Gaussian noise เพียงตัวเดียวได้
  • คุณสมบัตินี้ถูกใช้เพื่ออนุมานกระบวนการย้อนกลับและ เป้าหมายการเรียนรู้แบบทำนาย noise

กระบวนการย้อนกลับและการเรียนรู้เพื่อทำนาย noise

  • หากรู้ noisy image (x_t) และภาพต้นฉบับ (x_0) distribution ของเวอร์ชันก่อนหน้าที่มี noise น้อยกว่า (x_{t-1}) จะมีรูปปิดแบบ Gaussian
  • ในช่วงสร้างภาพ เราไม่รู้ต้นฉบับ (x_0) จึงต้องใช้ (q(x_{t-1} \mid x_t)) โดยตรง แต่ไม่สามารถใช้ dataset ทั้งหมดในช่วงสร้างได้
    • dataset อาจมีภาพหลายพันล้านภาพ
    • หากทำตามนี้ในทุก timestep ผลลัพธ์จะเป็นการกู้คืนตัวอย่างฝึก ไม่ใช่ตัวอย่างใหม่
  • (q(x_{t-1} \mid x_t)) เป็น Gaussian โดยประมาณในขั้น noise ที่เล็กมาก ซึ่งเป็นผลลัพธ์เก่าแก่ใน statistical physics
  • โมเดลประมาณ parameter ของ Gaussian (\mu_\theta, \Sigma_\theta) และลด KL divergence กับ distribution ที่รู้จัก (q(x_{t-1} \mid x_t, x_0)) ของตัวอย่างฝึกแต่ละรายการ
  • Ho 2020 ตรึง (\Sigma_\theta) ให้เท่ากับ (\Sigma(t))
    • เมื่อพยายามเรียนรู้ variance การฝึกไม่เสถียรเกินไป
    • ในทางปฏิบัติจึงเรียนรู้เฉพาะ mean (\mu_\theta)
  • ปัญหาการทำนาย mean ถูกเปลี่ยนเป็น ปัญหาการทำนาย noise โดยใช้ข้อเท็จจริงที่ว่า (x_t) แสดงได้เป็นการผสมระหว่าง (x_0) กับ Gaussian noise (\epsilon)
  • loss แบบง่ายสุดท้าย (L_\text{simple}) ลด squared error ระหว่าง noise จริง (\epsilon) กับค่าทำนายของโมเดล (\epsilon_\theta)
    • หากละเว้น weighting คุณภาพผลลัพธ์จะดีขึ้น
    • มองได้ว่าเป็นการให้น้ำหนัก loss term ของ (t) ต่ำ ๆ น้อยลง ทำให้ network โฟกัสกับปัญหาที่ยากกว่า คือการ denoise ภาพที่มี noise มาก

การ sampling ของ DDPM และตัวอย่าง 2D

  • หากมีโมเดลประมาณ noise ที่ฝึกแล้ว (\epsilon_\theta(x_t,t)) ก็สามารถ sample กระบวนการย้อนกลับได้
    • sample ภาพ noise สุ่มด้วย (x_T \sim \mathcal{N}(0,I))
    • เดิน timestep ย้อนกลับจาก (T) ถึง 1 พร้อมทำนาย noise
    • sample (x_{t-1}) ด้วย mean และ variance ที่ทำนายได้
  • flow ของ DDPM เป็นดังนี้
    • พยายามเรียนรู้ underlying distribution ของ image dataset
    • ค่อย ๆ เปลี่ยน (x_0) เป็น (x_T) ด้วย forward noising process
    • กระบวนการย้อนกลับเมื่อ (T) มีค่ามากสามารถจัดการเป็น Gaussian โดยประมาณได้
    • หากสมมติว่า (x_0) เป็นภาพหนึ่ง ๆ ใน dataset จะสามารถคำนวณ distribution ที่รู้จักได้อย่างแม่นยำ
    • ฝึกด้วย KL divergence ให้เข้าใกล้ distribution ที่รู้จักนี้สำหรับภาพฝึกทั้งหมด
    • กระบวนการนี้ optimize lower bound ที่เพิ่ม likelihood ในการสร้าง dataset ขึ้นใหม่ให้สูงสุด
  • ตัวอย่าง dataset Datasaurus ที่ประกอบด้วย 142 จุด แสดงการเรียนรู้ distribution แบบ 2D
    • MLP ที่ใช้ hidden layer 3 ชั้น, hidden size 64 และ ReLU มี parameter มากกว่า 12,000 ตัว
    • หากไม่ให้ข้อมูล timestep จะไม่ได้ distribution รูปไดโนเสาร์ที่ต้องการ
    • เมื่อ normalize timestep (t=0,\dots,50) ให้อยู่ระหว่าง 0~1 แล้วใส่เป็น input ผลลัพธ์จะดีขึ้น
    • หากใช้ Fourier encoding เปลี่ยน input เป็น space ของ random frequency feature จะเรียนรู้ distribution ได้ดีขึ้น
  • การปรับ noising schedule ก็สำคัญต่อ performance เช่นกัน
    • วิธีของ Ho 2020 ลด (\alpha_t) แบบเชิงเส้นและทำให้ (\bar\alpha_T \approx 0) จึงเหมาะกับภาพความละเอียดสูง
    • ข้อมูลมิติต่ำดูเหมือน noise แล้วตั้งแต่ผ่านไปเพียงระดับกลาง ๆ หากปรับ schedule ให้ฝึกด้วยตัวอย่าง high-signal มากขึ้น performance จะดีขึ้น
    • schedule เดิมของตัวอย่างมี (\bar\alpha_T \approx 0.28) จึงยังไม่ไปถึง noise ล้วน และ schedule ใหม่จบที่ 0.6 ซึ่งเป็นค่ากลางของ schedule เดิม

พัฒนาการที่ช่วยเพิ่มความเร็วในการสร้าง

  • Score matching และ sampler ที่ใช้ ODE

    • ข้อเสียในช่วงแรกของโมเดล diffusion คือ ความเร็วในการสร้าง ช้า เนื่องจากสมมติฐานการแจกแจงย้อนกลับแบบ Gaussian ของ DDPM
    • ทิศทางของ noise ที่โมเดลทำนายจาก noisy input (x_t) หากไม่นับค่าคงที่ตาม timestep แล้ว จะเท่ากับ log-likelihood gradient ของ forward process ที่สร้าง (x_t) หรือก็คือ score
    • score สามารถมองได้ว่าเป็น vector field ที่บอกทิศทางที่ควรเคลื่อนไปยัง mode ของการแจกแจง
    • Noise-conditioning score network เรียนรู้ score ของชุดข้อมูลที่ถูกเติม noise ทีละขั้น และสร้าง sample ใหม่โดยเคลื่อนตาม score field
    • forward diffusion process สามารถอธิบายได้ด้วย stochastic differential equation(SDE)
    • นอกจากนี้ยังมี ODE ที่อธิบาย deterministic process ซึ่งมีการแจกแจงในแต่ละ timestep แบบเดียวกัน และ ODE นี้มีรูปแบบปิดที่รวม score function ไว้ด้วย
    • ด้วยเหตุนี้ แม้แต่ diffusion model ที่ผ่านการ pre-train แล้วก็สามารถ sampling แบบ deterministic ได้อย่างสมบูรณ์ และสามารถใช้ ODE solver ทั่วไปในการ sampling ได้
    • DDPM อาจต้องใช้มากถึง 1000 ขั้นเพื่อให้ได้ผลลัพธ์คุณภาพสูงใน Stable Diffusion
    • sampler ที่ใช้ Euler method สามารถให้ผลลัพธ์คุณภาพสูงได้แม้ใช้เพียงประมาณ 10 ขั้น
    • Karras 2022 กล่าวถึง tradeoff ของ sampler และความจริงที่ว่า stochasticity ของ stochastic sampler อย่าง DDPM อาจมีความสำคัญในบางกรณี
  • Distillation

    • Progressive distillation ใช้ teacher ที่ผ่านการ pre-train และ sampling ด้วย 1000 ขั้น เพื่อฝึกให้ student ทำนาย output 2 ขั้นของ teacher ให้ได้ใน 1 ขั้น
    • หากทำกระบวนการนี้ซ้ำโดยให้ student กลายเป็น teacher ตัวใหม่ ก็สามารถลดจำนวนขั้นลงครึ่งหนึ่งได้ทุกครั้ง
    • Progressive distillation มีการสูญเสีย และหากใช้มากเกินไป sample อาจเบลอหรือดูไม่สมจริง
    • Adversarial distillation ฝึก discriminator ควบคู่กันเพื่อเพิ่มความสมจริงของ student sample แต่ก็มี tradeoff กับ sample diversity อย่างที่เห็นใน GAN
    • Stable Diffusion XL Turbo ถูกฝึกด้วยวิธีนี้ จึงสามารถสร้างภาพคุณภาพสูงได้ใน ขั้นเดียว

การสร้างแบบมีเงื่อนไขและ Guidance

  • โมเดล diffusion แบบมีเงื่อนไข

    • หากต้องการให้โมเดลที่ฝึกด้วยภาพสัตว์สร้างเฉพาะแมว ต้องโมเดลการแจกแจงแบบมีเงื่อนไข (p(x \mid y))
    • หากฝึก diffusion model (\epsilon_\theta(x_t,t,y)) ด้วยคู่ ((x_0,y)) ในชุดข้อมูล ก็สามารถใช้ข้อมูลเงื่อนไขอย่าง class label, text embedding, segmentation mask ได้
    • Ho 2021 ฝึก class-conditional diffusion model บน ImageNet
    • หาก sample ของ (p(x \mid y)) สำหรับ (y) เฉพาะมีไม่เพียงพอ อาจนำไปสู่ sample ที่ label ไม่สมจริงหรือมีความหลากหลายต่ำ
    • ดังนั้นระหว่างการสร้างจึงต้องมี guidance เพื่อปรับว่าต้องการให้โมเดลทำตาม label มากเพียงใด
  • Classifier guidance

    • หาก classifier ส่งออก (p_\phi(y \mid x_0)) ก็สามารถใช้ gradient ต่อ input เพื่อผลักภาพไปยัง class (y) ที่ต้องการได้
    • ในแต่ละขั้นของ sampling หากเพิ่ม classifier gradient เข้าไปใน estimated mean จะช่วยให้ diffusion process วางภาพไว้ในบริเวณของ image space ที่ดูสมเหตุสมผลได้
    • classifier ถูกฝึกด้วย noisy image เพื่อให้จัดการกับ noisy image (x_t) ได้
    • ในตัวอย่าง class “T-shirt” ของ Fashion-MNIST แม้ใช้ classifier ที่มีความแม่นยำ 40% ก็ยังสามารถสร้าง classifier-guided sample ได้
    • guidance parameter cg ใช้สเกล classifier gradient
    • guidance ที่แรงขึ้นจะเสริมลักษณะของ class แต่ realism อาจลดลง
  • Classifier-free guidance

    • classifier-free guidance ทำ guidance โดยไม่ต้องใช้ classifier แยกต่างหาก
    • เมื่อใช้ Bayes rule, class gradient จะเปลี่ยนเป็นผลต่างระหว่าง conditional score กับ score ของข้อมูลทั้งหมด
    • เนื่องจาก denoising diffusion model เรียนรู้ score ของข้อมูลฝึก จึงฝึก diffusion model ตัวเดียวกันกับ sample เดียวกันในสองวิธี
    • ฝึกพร้อม class label (y)
    • ฝึกพร้อม null class label
    • ระหว่าง sampling จะเรียกทั้งแบบใส่ class label ที่ต้องการและแบบไม่มี label จากนั้นใช้ผลต่างนั้นเป็น guidance vector

เงื่อนไขและการควบคุมภาพ

  • Image-to-image และ SDEdit

    • image-to-image พื้นฐานสามารถทำได้โดยไม่ต้องฝึกโมเดลใหม่
    • เพิ่ม noise ให้กับภาพอินพุตตาม conditioning strength ที่ต้องการ แล้วจึง denoise
    • หากต้องการให้ conditioning เข้มขึ้น ให้เพิ่ม noise น้อยลง
    • หากต้องการให้ conditioning อ่อนลง ให้เพิ่ม noise มากขึ้น
    • วิธีนี้คือ SDEdit และสร้างผลลัพธ์ที่มีรูปทรงโดยรวมเหมือนกับภาพอินพุต
    • ข้อเสียคือไม่สามารถระบุอย่างละเอียดได้ว่าภาพอินพุตจะควบคุมอะไร
    • หากมีสเก็ตช์อินพุต จะเกิด tradeoff ระหว่างผลลัพธ์ที่ดูเหมือนสเก็ตช์ หรือไม่เป็นไปตามรูปทรงที่กำหนดไว้อย่างเพียงพอ
  • Sketch-Guided Diffusion และ ControlNet

    • หากต้องการ condition การสร้างด้วยภาพสเก็ตช์ (y) สามารถฝึกโมเดลให้ทำนายเส้นสเก็ตช์ (\hat{y}=F(x_t)) จาก noisy image (x_t) แล้วใช้ sketch loss gradient เพื่อ guide แต่ละขั้นตอนการ sampling ได้
    • นี่คือแนวคิดของ Sketch-Guided Diffusion
    • อีกวิธีหนึ่งคือเปลี่ยน architecture เพื่อให้ denoiser รับ conditioning image (y) และ fine-tuning ด้วยคู่ ((x_0,y))
    • การ fine-tuning แบบตรงไปตรงมาอาจเกิดปัญหา overfitting และ catastrophic forgetting
    • ControlNet สร้างสำเนาเพื่อคง weight ของโมเดลต้นฉบับไว้ โดย freeze โมเดลต้นฉบับ และฝึก control-net กับพารามิเตอร์ 1x1 convolution
    • convolution ถูก initialize เป็น zero ในตอนแรก เพื่อค่อย ๆ เรียนรู้ delta สำหรับ denoising step
    • ControlNet จริงไม่ได้ใช้ในระดับ denoising model ทั้งหมด แต่ใช้ในระดับ per-block
    • ตามเกณฑ์ human evaluation แสดงประสิทธิภาพดีกว่าทางเลือกอย่าง Sketch-Guided Diffusion
    • สามารถผสานกับ LoRA เพื่อฝึก ControlNet ได้อย่างมีประสิทธิภาพบน consumer GPU
  • Inpainting

    • Inpainting คือภารกิจเติมส่วน masked part ของภาพ
    • วิธี image-to-image แบบง่ายที่เพิ่ม noise เฉพาะ masked part ใช้งานไม่ได้
    • ที่ (t>0) denoising model ไม่รู้ว่าควรจัดการ non-noisy part อย่างไร
    • วิธีที่ใช้งานได้คือเพิ่ม noise ให้ทั้ง masked และ unmasked part แล้วป้อนเข้าเป็น (x_T)
    • จากนั้นในแต่ละ sampling step (t) จะคัดลอก unmasked part ของภาพต้นฉบับ เพิ่ม noise ให้สอดคล้องกับ timestep (t) แล้ววางทับบน (x_t) เพื่อใช้เป็นอินพุตของ denoiser
  • Text-to-image

    • Text-to-image คือ conditional generation ที่ใช้ text embedding label
    • Dall-E ของ OpenAI ฝึกโมเดล encoding CLIP ที่ project ภาพและข้อความไปยัง space เดียวกัน
    • multimodal embedding space ไม่ได้จำเป็นเสมอไป
    • Google Imagen เข้ารหัสข้อความเป็น embedding ด้วย T5 large language model
    • หาก embedding เป็นการแทนค่าที่สมบูรณ์เพียงพอ ก็สามารถใช้เป็นเงื่อนไขสำหรับ text-to-image ได้

ข้อมูลฝึกและจริยธรรม

  • Dataset ของโมเดลสร้างภาพไม่ใช่ปัญหาเฉพาะของ diffusion model เท่านั้น แต่เป็นองค์ประกอบสำคัญในการถกเถียงเรื่องโมเดลเชิงสร้างสรรค์
  • ตัวอย่าง dataset มีดังนี้
    • Dall-E 1 ฝึกด้วย text-image pair 250 ล้านคู่ และ Dall-E 2 ฝึกด้วย 650 ล้านคู่ โดย dataset เป็น closed source
    • Stable Diffusion 1 ฝึกด้วย LAION-2B-en 2 พันล้านคู่ จากนั้น fine-tuning ด้วย 170 ล้านคู่จาก LAION-5B
    • หลังจากนั้น checkpoint ของ Stable Diffusion 1 ถูก fine-tuning บน subset ที่คัดจาก LAION-5B ตามเกณฑ์ “aesthetics”
    • LAION-400M เปิดเผยต่อสาธารณะในเดือนสิงหาคม 2021 และเป็นความพยายามในการสร้างกระบวนการที่ OpenAI ใช้ฝึก CLIP ขึ้นมาใหม่
    • LAION ได้มาจาก Common Crawl โดยรวบรวม HTML image tag ที่มี alt-text แล้วใช้ CLIP ทิ้งรายการที่เนื้อหาไม่ตรงกัน
  • ผู้ใช้บางส่วนสร้าง artist list ที่ปรากฏใน LAION และ haveibeentrained.com ช่วยให้ผู้ใช้ตรวจสอบได้ว่าภาพของตนอยู่ใน LAION หรือ dataset อื่นหรือไม่
  • องค์ประกอบสำคัญของกระแสต่อต้าน AI art คือ ปัญหาจริยธรรม ที่ dataset อย่าง LAION รวบรวม art โดยไม่ได้รับความยินยอมจาก artist และนำไปใช้ฝึกโมเดลสร้างภาพ
    • อีกประเด็นที่ถูกกล่าวถึงควบคู่กันคือโมเดลภาพอาจเป็นภัยคุกคามโดยตรงต่อการดำรงชีพของ artist
  • ยังมีความพยายามที่จะฝึกโมเดลสร้างภาพที่แข่งขันได้ด้วยวิธีที่มีจริยธรรมมากขึ้น
    • Adobe Firefly ระบุว่าฝึกด้วย licensed content เช่น Adobe Stock และ public domain content ที่ลิขสิทธิ์หมดอายุแล้วเท่านั้น
    • มี scandal ล่าสุดว่า Firefly ถูกฝึกด้วยภาพ Midjourney บางส่วน
    • Stable Diffusion 3 อนุญาตให้ artist opt-out จากการใช้ใน training และส่งผลให้มีภาพถูกนำออกไปมากกว่า 80 ล้านภาพ

Data poisoning

  • Nightshade คือการโจมตีแบบ data poisoning ต่อโมเดลสร้างภาพที่ได้รับความสนใจในกระแสต่อต้าน AI art
  • ใช้ประโยชน์จากข้อเท็จจริงที่ว่า แม้โมเดลจะฝึกด้วยภาพหลายพันล้านภาพ แต่สำหรับ concept เฉพาะหนึ่ง ๆ อาจมีภาพเพียงไม่กี่สิบภาพเท่านั้น
  • Nightshade เป็นวิธีที่พยายาม poison ข้อมูลบน basis แบบ concept-specific
  • ผู้เขียน论文แสดงตัวอย่างการโจมตี Stable Diffusion XL ด้วยภาพที่แก้ไข 50 ภาพ ทำให้ทุกครั้งที่ prompt กล่าวถึง “car” โมเดลจะส่งออกภาพวัว
  • การแก้ไขถูกออกแบบให้สายตามนุษย์สังเกตเห็นได้น้อยที่สุด โดย optimize multi-objective function ที่รวม perceptual loss
  • การโจมตีระยะแรกจำเป็นต้องเข้าถึง feature extractor ของโมเดล
  • ผู้เขียนสำรวจว่าการโจมตีที่อิงกับหนึ่งใน 4 โมเดลทำงานอย่างไรในโมเดลอื่น ๆ และกล่าวว่าการโจมตี generalize ไปยังโมเดลอื่นนอกเหนือจากโมเดลตั้งต้นได้

การสร้างภาพความละเอียดสูง

  • Cascaded Diffusion เป็นแนวทางยุคแรกที่สร้างภาพเริ่มต้นในความละเอียดต่ำก่อน แล้ว upscale ภาพด้วย super-resolution diffusion model หลายตัว
  • Stable Diffusion ใช้ latent diffusion
    • สร้างภาพด้วย diffusion ใน latent space ของ auto-encoder
    • จากนั้น decode latent เพื่อให้ได้ภาพความละเอียดสูง
  • ผู้เขียน latent diffusion เห็นว่าวิธีที่ทำงานดีที่สุดคือฝึก auto-encoder ให้บีบอัดข้อมูลภาพก่อน แล้วฝึก diffusion model แยกต่างหากบน encoded latent แทนที่จะฝึก auto-encoder และ diffusion model พร้อมกัน
  • Cascaded Diffusion และ latent diffusion นำโมเดลอื่นหลายตัวมาต่อกับ backbone diffusion model เพื่อ scale up ภาพที่สร้างขึ้น
  • ความก้าวหน้าด้าน resolution ของ single-model อาศัย training trick หลายอย่าง เช่น multi-scale loss และการใช้ backbone architecture อย่าง transformer

การประยุกต์ใช้โมเดล Diffusion นอกเหนือจากภาพ

  • Audio, video, 3D

    • Riffusion เป็นโมเดลสร้างเพลงยุคแรก ๆ ที่ fine-tuning Stable Diffusion ให้ส่งออกเป็น spectrogram image และสร้างเพลงความยาว 12 วินาที
    • Sonauto เป็นโมเดลที่ควบคุมได้รุ่นใหม่กว่า ซึ่งอิงบน diffusion transformer และสามารถสร้างเพลงความยาว 1 นาที 35 วินาทีที่มี coherent lyrics ได้
    • OpenAI Sora และ Google Veo เป็น diffusion transformer video generation model ที่สามารถสร้าง video clip 1080p ความยาว 1 นาทีจาก text prompt ได้
    • Sora แยก video ออกเป็น spacetime patch และฝึกให้ denoise patch เหล่านั้น
    • insight หลักของ technical report ของ Sora คือ diffusion transformer scale กับ video generation ได้ และประสิทธิภาพ scale ไปตาม compute
    • OpenAI ไม่ได้ระบุชัดเจนว่า compute ในที่นี้หมายถึง dataset size, model size หรือ training time
    • ทั้งสองโมเดลรองรับงานต่าง ๆ เช่น masked editing, การสร้าง loop video ที่สมบูรณ์, static image animation และการขยาย video ไปข้างหน้าและย้อนกลับตามเวลา
    • งาน video diffusion ในอดีตมี Imagen Video และ autoregressive model อย่าง VideoPoet ก็เป็นอีกทางเลือกหนึ่ง
    • 2D diffusion model เรียนรู้ 3D feature อย่าง correspondence โดยปริยาย
    • DreamFusion ใช้ text-to-image diffusion model เป็น prior เพื่อ guide 3D reconstruction algorithm แบบ gradient descent
    • Stable Video 3D ปรับปรุง multi-view consistency ด้วย video diffusion
    • โมเดลเหล่านี้ยังคงพึ่งพา 3D reconstruction algorithm อย่าง photogrammetry, 3D gaussian splatting และ neural radiance field
    • หนึ่งในเหตุผลที่เป็นไปได้คือ 3D data มีค่อนข้างน้อย
  • Life sciences

    • โมเดล Diffusion กำลังพบการใช้งานหลายด้านใน medicine และ biology
    • partial CT และ MRI scan ช่วยลด radiation exposure ของผู้ป่วยได้มากและเพิ่ม comfort แต่ก็ยากเพราะต้อง reconstruction full scan จาก partial data
    • โมเดล Diffusion ให้ประสิทธิภาพและ generalization ใน medical image reconstruction ที่เหนือกว่า supervised method และผลักดัน state-of-the-art ให้ก้าวหน้า
    • AlphaFold 3 ของ DeepMind ใช้ diffusion-based architecture และแสดงให้เห็นการปรับปรุงอย่างมากเมื่อเทียบกับเวอร์ชันก่อนหน้าและ specialized tool
    • เมื่อได้รับ input เป็น molecule list, AlphaFold 3 จะเริ่มจาก atom cloud แล้ว refinement ซ้ำ ๆ เพื่อสร้าง joint 3D structure
    • สิ่งนี้ช่วยแสดงให้เห็นว่า molecule ต่าง ๆ ประกบเข้าด้วยกันอย่างไร
    • การประยุกต์ใช้อื่น ๆ ใน computational biology ได้แก่ single-cell data analysis, drug and small molecule design และ protein-ligand interaction
  • Robotics

    • robot ที่โต้ตอบกับโลกจริงต้องทำ physical behavior ได้หลากหลายมาก
    • วิธีดั้งเดิมคือโปรแกรม edge case และวิธี recovery จำนวนมากอย่างชัดเจนสำหรับงานอย่างการเปิดประตูหรือการผูกเชือกรองเท้า
    • ใช้ได้ใน controlled setting อย่าง factory แต่ไม่ scale
    • Policy learning from demonstration เป็นแนวทางที่ scale ได้มากกว่า โดยสอน robot ให้ทำ task ผ่าน human demonstration
    • โดยทั่วไป คนจะให้ demonstration ด้วย teleoperation เพื่อควบคุม motor ของ robot
    • อาจต้องใช้ demonstration ตั้งแต่หลักสิบไปจนถึงหลักร้อย
    • หลังจากนั้น robot จะเรียนรู้การสร้าง action โดยอิงกับ sensor observation และในบางกรณีมี natural language prompt เป็นเงื่อนไข
    • โมเดล Diffusion เป็น state-of-the-art ใน policy generation model และแสดง substantial improvement เมื่อเทียบกับเทคนิคก่อนหน้า
    • จัดการ multimodal action distribution ได้อย่างเป็นธรรมชาติ
    • เหมาะกับ high-dimensional action space
    • training stability น่าประทับใจ

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

 
GN⁺ 2024-05-27
ความคิดเห็นจาก Hacker News
  • ผมนึกว่า diffusion มาจาก score matching แต่วันนี้เพิ่งรู้ว่า diffusion มีมาก่อนทฤษฎี score matching เสียอีก
    แปลว่าแม้ตอนที่ OpenAI ฝึกด้วยภาพ 250 ล้านภาพ ก็ยังไม่มีทฤษฎีดี ๆ ที่อธิบายว่าทำไมถึงต้องโมเดลการแจกแจงพื้นฐาน นับว่าเป็นการตัดสินใจที่ค่อนข้างกล้า
    • จริง ๆ แล้วบทความของ Dickstein ปี 2015 [1] เดิมทีได้จัดรูปแบบ diffusion ว่าเป็นการเพิ่มค่าสูงสุดของขอบล่างของ log likelihood สำหรับการสร้างการแจกแจง ดังนั้นจึงไม่ใช่ว่าไม่มีทฤษฎีเลย
      แต่ผมเข้าใจว่าจุดทะลุทะลวงมาจากผลการทดลองของ Ho [2] และ Nichol [3] เพราะแสดงให้เห็นว่า diffusion ไม่เพียงสร้างตัวอย่างคุณภาพสูงได้ แต่ในบางกรณียัง ดีกว่า GAN ด้วย

      [1] https://arxiv.org/abs/1503.03585
      [2] https://arxiv.org/abs/2006.11239
      [3] https://arxiv.org/abs/2105.05233

  • ไลบรารี Python สำหรับ Diffusion Transformers ที่ใช้ไลเซนส์ Apache หรือ MIT ตัวไหนดีที่สุด?
  • ใน classifier-free guidance วิธีที่ว่า “สำหรับตัวอย่างฝึกทุกตัว x0x0 ให้ฝึกโมเดล diffusion เดี่ยวโดยจับคู่ครั้งหนึ่งกับเลเบลคลาส yy และอีกครั้งกับเลเบลคลาส null” นี่ไม่ได้ทำสิ่งเดียวกับปัญหาที่บอกว่าไม่ดีในย่อหน้าแรกของหัวข้อเดียวกันเป๊ะ ๆ หรือ?
    ดูเหมือนปัญหาเดียวกับส่วนที่ว่า “ถ้าไม่ได้เห็นตัวอย่าง p(x∣y)p(x∣y) มากพอสำหรับ yy หนึ่ง ๆ เลเบลอาจทำให้ได้ตัวอย่างที่ไม่สมจริงหรือมีความหลากหลายน้อย ดังนั้นตอนสร้างภาพจึงอยากควบคุมว่าโมเดลจะ ‘ทำตาม’ เลเบลมากแค่ไหน”
    • ไม่เหมือนกันทั้งหมด การ sampling ไม่ได้ถูกจัดรูปแบบว่าแค่สุ่มจาก conditional distribution แต่เป็นการผลัก unconditional sample ไปในทิศทางของ conditional sample ด้วยปริมาณที่ปรับได้ จึงควบคุม trade-off ระหว่างความสมจริงกับความเข้มของคลาสได้
      แต่ก็จริงว่าถ้าให้ guidance strength แรงเกินไป จะเกิดปัญหาคล้ายกันคือความสมจริงลดลง
  • “ในปี 2022 ผมใช้เวลาไปกับการเรียนวาดรูป แล้วก็ถูกการขึ้นมาของโมเดล AI art อย่าง Stable Diffusion ทำเอาไม่ทันตั้งตัว จู่ ๆ คอมพิวเตอร์ก็กลายเป็นจิตรกรที่เก่งกว่าที่ผมจะคาดหวังได้มาก”
    ถึงอย่างนั้นก็อยากให้ผู้เขียนวาดต่อไป ยิ่ง AI รุกล้ำงานสร้างสรรค์ มากเท่าไร ก็ยิ่งทำให้อยากทุบทุกอย่างทิ้งมากขึ้นเท่านั้น
    • ในทางกลับกัน หลังจากได้ลองของอย่าง Stable Diffusion, Midjourney ผมกลับมีแรงจูงใจมากขึ้นที่จะวาดรูปและลองทำ digital art
      ผมพยายามเอาผลลัพธ์จากเครื่องมือพวกนี้มาแล้วสร้างซ้ำเองหรือวาดตามดู
  • บทความนี้ทำให้เข้าใจดีขึ้นมากว่า diffusion model ทำงานอย่างไรและทำไมถึงทำงานได้ ความสุ่มทรงพลังอย่างประหลาด
    ตอนนี้ถึงเวลาลองเขียนโค้ดเองด้วยภาษาที่ไม่เหมาะเท่าไรแล้ว สำหรับคนที่อ่านแค่คอมเมนต์ ก็แทบไม่มีอะไรให้สรุป บทความนี้เองคือฉบับย่อของ Stable Diffusion อยู่แล้ว
  • training loop ผิดหรือเปล่า? ในสมการ xts ไม่ได้ใช้ทั้ง x0s และ eps เลย ดูเหมือนกำลังฝึกให้ ทำนาย noise แบบสุ่ม เฉย ๆ
    • ไม่แน่ใจว่าหมายถึงสมการไหน แต่เท่าที่เข้าใจ network ไม่ได้ “เห็น” ภาพคำตอบโดยตรง แต่ต้องฝึกให้อนุมานข้อมูลทางอ้อมผ่าน loss function
      loss function มีข้อมูลเกี่ยวกับ noise อยู่ และเพราะ network เห็นภาพที่ผสม noise อย่างแม่นยำ จึงเทียบเท่ากับการเรียนรู้จากภาพตัวอย่างจริง เราอาจออกแบบ loss function ที่วัดความต่างระหว่าง output กับภาพจริงได้ และปริมาณข้อมูลก็เท่ากัน แต่เพราะคุณสมบัติของ Gaussian noise จึงรู้กันว่าการทำนาย noise ได้เปรียบกว่ามากสำหรับการประมาณ gradient ประเด็นหลักคือข้อมูลภาพจริงมีอยู่ใน loop จริง ๆ เพียงแต่เข้ามาผ่านเลนส์ที่เรียกว่า noise เท่านั้น

    • ใช่แล้ว ควรเหมือนกับสมการก่อนหน้าพอดี

      xts = alpha_bar[t].sqrt() * x0s + (1.-alpha_bar[t]).sqrt() * eps

      แถมโค้ดยังไม่สอดคล้องกันด้วย ในโค้ด sampling ใช้ time embedding แต่ในโค้ด training ไม่ได้ใช้

  • เลย์เอาต์อ่านง่ายมาก ทำไมผมถึงเสียเวลาไปกับการทำเลย์เอาต์ที่อ่านยากนักนะ?
    แต่ตอนเปิด Reader View แล้วน่าเสียดายนิดหน่อย เหมือนตั้งใจจะพิสูจน์ว่า “หน้านี้สมบูรณ์แบบเชิง semantic!!” แต่ในสภาพแวดล้อมนั้น line-height ของ รายการนำทาง ต่ำกว่า 1 จนบีบอัดเละเทะมาก ถึงอย่างนั้นก็ปล่อยผ่านละกัน ;)