نماذج الانتشار
Diffusion Models
التوليد بإزالة الضوضاء: العملية الأمامية والعكسية، وهدف التدريب، والتوجيه، والانتشار في الفضاء الكامن.
العملية الأمامية
عند كل خطوة \(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\)، مع تنوع أقل.
الانتشار الكامن
- مشفر تلقائي يضغط الصورة إلى تمثيل كامن أصغر.
- الانتشار والشبكة يعملان على هذا التمثيل، مع شرط نصي عبر الانتباه المتقاطع.
- المفكك يعيد بناء الصورة.
هذه الفكرة أساس نماذج مفتوحة واسعة الانتشار لتوليد الصور.
مصطلحات الدرس
- التوجيه دون مصنف Classifier-Free Guidance
- تقنية تدمج تنبؤ النموذج المشروط وغير المشروط لتقوية التزام التوليد بالشرط.
- العملية الأمامية Forward Diffusion Process
- سلسلة خطوات تضيف ضوضاء غاوسية تدريجياً إلى البيانات حتى تقترب من ضوضاء خالصة.
- العملية العكسية Reverse Process
- سلسلة خطوات مُتعلَّمة تزيل الضوضاء تدريجياً لتوليد عينة من البيانات.
الملخص
نماذج الانتشار تولد البيانات بعكس عملية تدريجية لإضافة الضوضاء. في العملية الأمامية تُضاف ضوضاء غاوسية للصورة عبر خطوات حتى تصبح ضوضاء خالصة، وتتعلم شبكة (غالباً U-Net أو محوّل) التنبؤ بالضوضاء المضافة في كل خطوة. للتوليد نبدأ من ضوضاء ونزيلها تدريجياً. التوجيه دون مصنف (Classifier-free guidance) يقوي الالتزام بالشرط النصي، والانتشار الكامن (Latent Diffusion) يجري العملية في فضاء مضغوط فيقلل التكلفة كثيراً.
أسئلة مراجعة
-
ما الذي تتعلمه الشبكة في DDPM؟
التنبؤ بالضوضاء المضافة إلى الصورة عند خطوة زمنية معينة.
-
لماذا يقلل الانتشار الكامن التكلفة؟
لأنه يعمل على تمثيل مضغوط بعد مشفر تلقائي بدلاً من بكسلات الصورة الكاملة.
المصادر والمراجع
إكمال الدرس
أكملت كل دروس المسار! يمكنك الآن طلب شهادة إكمال المسار.
اطلب الشهادة