الذكاء الاصطناعي التوليدي والوكلاء متوسط · Intermediate 18 دقيقة

نماذج الانتشار

Diffusion Models

التوليد بإزالة الضوضاء: العملية الأمامية والعكسية، وهدف التدريب، والتوجيه، والانتشار في الفضاء الكامن.

تقدّمك في المسار0%

العملية الأمامية

عند كل خطوة \(t\) نضيف ضوضاء بجدول تباين \(\beta_t\):

$$q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) = \mathcal{N}\left(\sqrt{1-\beta_t}\,\mathbf{x}_{t-1},\ \beta_t \mathbf{I}\right)$$

ويمكن القفز مباشرة إلى أي خطوة:

$$\mathbf{x}_t = \sqrt{\bar{\alpha}_t}\,\mathbf{x}_0 + \sqrt{1-\bar{\alpha}_t}\,\boldsymbol{\epsilon}, \qquad \bar{\alpha}_t = \prod_{s=1}^{t}(1-\beta_s), \quad \boldsymbol{\epsilon} \sim \mathcal{N}(0, \mathbf{I})$$

هدف التدريب (DDPM)

$$L = \mathbb{E}_{t, \mathbf{x}_0, \boldsymbol{\epsilon}}\left[\left\|\boldsymbol{\epsilon} – \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, t)\right\|^2\right]$$

import torch
def train_step(model, x0, alphas_bar, opt):
    t = torch.randint(0, len(alphas_bar), (x0.size(0),), device=x0.device)
    eps = torch.randn_like(x0)
    ab = alphas_bar[t].view(-1, 1, 1, 1)
    xt = ab.sqrt() * x0 + (1 - ab).sqrt() * eps
    loss = torch.nn.functional.mse_loss(model(xt, t), eps)
    opt.zero_grad(); loss.backward(); opt.step()
    return loss.item()

التوليد

نبدأ بـ \(\mathbf{x}_T \sim \mathcal{N}(0, \mathbf{I})\) ونطبق خطوات إزالة الضوضاء حتى \(\mathbf{x}_0\). DDPM الأصلي يستخدم ألف خطوة؛ طرق أخذ عينات أسرع (مثل DDIM) تقلل العدد كثيراً.

التوجيه دون مصنف

$$\hat{\boldsymbol{\epsilon}} = \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, \varnothing) + w\left(\boldsymbol{\epsilon}_\theta(\mathbf{x}_t, c) – \boldsymbol{\epsilon}_\theta(\mathbf{x}_t, \varnothing)\right)$$

قيمة \(w\) الأكبر تعني التزاماً أقوى بالنص \(c\)، مع تنوع أقل.

الانتشار الكامن

  1. مشفر تلقائي يضغط الصورة إلى تمثيل كامن أصغر.
  2. الانتشار والشبكة يعملان على هذا التمثيل، مع شرط نصي عبر الانتباه المتقاطع.
  3. المفكك يعيد بناء الصورة.

هذه الفكرة أساس نماذج مفتوحة واسعة الانتشار لتوليد الصور.

مصطلحات الدرس

التوجيه دون مصنف Classifier-Free Guidance
تقنية تدمج تنبؤ النموذج المشروط وغير المشروط لتقوية التزام التوليد بالشرط.
العملية الأمامية Forward Diffusion Process
سلسلة خطوات تضيف ضوضاء غاوسية تدريجياً إلى البيانات حتى تقترب من ضوضاء خالصة.
العملية العكسية Reverse Process
سلسلة خطوات مُتعلَّمة تزيل الضوضاء تدريجياً لتوليد عينة من البيانات.

الملخص

نماذج الانتشار تولد البيانات بعكس عملية تدريجية لإضافة الضوضاء. في العملية الأمامية تُضاف ضوضاء غاوسية للصورة عبر خطوات حتى تصبح ضوضاء خالصة، وتتعلم شبكة (غالباً U-Net أو محوّل) التنبؤ بالضوضاء المضافة في كل خطوة. للتوليد نبدأ من ضوضاء ونزيلها تدريجياً. التوجيه دون مصنف (Classifier-free guidance) يقوي الالتزام بالشرط النصي، والانتشار الكامن (Latent Diffusion) يجري العملية في فضاء مضغوط فيقلل التكلفة كثيراً.

أسئلة مراجعة

  1. ما الذي تتعلمه الشبكة في DDPM؟

    التنبؤ بالضوضاء المضافة إلى الصورة عند خطوة زمنية معينة.

  2. لماذا يقلل الانتشار الكامن التكلفة؟

    لأنه يعمل على تمثيل مضغوط بعد مشفر تلقائي بدلاً من بكسلات الصورة الكاملة.

المصادر والمراجع

  1. Ho, Jain & Abbeel (2020) Denoising Diffusion Probabilistic Models — arXiv
  2. Rombach et al. (2021) High-Resolution Image Synthesis with Latent Diffusion Models — arXiv
  3. Ho & Salimans (2022) Classifier-Free Diffusion Guidance — arXiv
  4. Weng — What are Diffusion Models?

إكمال الدرس