النماذج التوليدية2020متوسط11 دقيقة قراءة

نماذج الانتشار الاحتمالية لإزالة الضوضاء

Denoising Diffusion Probabilistic Models

Ho, J. · Jain, A. · Abbeel, P. — NeurIPS

المشكلة

حتى عام 2020 كانت شبكات GAN تسيطر على مجال توليد الصور — نتائجها مبهرة لكن تدريبها كابوس حقيقي. (النموذج يكرر أنواعاً محدودة فقط من الصور)، وتلاشي التدرجات، والحساسية المفرطة للمعاملات الفائقة، كلها جعلت التوسع وإعادة الإنتاج أمراً عسيراً. في المقابل، قدّمت شبكات VAE تدريباً مستقراً لكن صورها كانت ضبابية دائماً. كان المجال بحاجة إلى نموذج توليدي يحقق دقة بصرية عالية وتدريباً مستقراً مبنياً على أسس رياضية متينة.

الإسهام

DDPM: نموذج توليدي يعتمد على سلسلة ماركوف من خطوات إضافة ضوضاء غاوسية. في تُشوَّش الصورة تدريجياً عبر T خطوة حتى تتحول إلى عشوائية بحتة. ثم تتعلّم عكس كل خطوة بالتنبؤ بالضوضاء المُضافة وطرحها. الفكرة المحورية: بدلاً من أن يتنبأ النموذج بالصورة النظيفة مباشرة، يتنبأ بالضوضاء التي أُضيفت. دالة خسارة مبسَّطة — متوسط مربعات الخطأ بين الضوضاء الحقيقية والمتوقَّعة — جعلت مستقراً وقابلاً للتوسع. النتيجة: جودة صور تنافس أفضل شبكات GAN، بلا أيّ مشاكل في الاستقرار.

الأثر

أطلقت هذه الورقة ثورة نماذج الانتشار. كل من DALL·E 2 وStable Diffusion وMidjourney وImagen يعود في أصله إلى هذا العمل. أثبتت أن التنقية التدريجية خطوة بخطوة تستطيع مجاراة التدريب التنافسي بل تجاوزه، فتحوّل المجال بأكمله من شبكات GAN إلى نماذج الانتشار. كما مهّدت الطريق للتوليد الموجَّه، وتوليد الفيديو، بل وتخطيط حركة الروبوتات باستخدام الانتشار.

النحّات يعمل على كتلة رخام بإزالة الزوائد حتى يظهر التمثال المختبئ بداخلها. يعمل بالمنطق ذاته: كتلة الرخام هنا هي عشوائية بحتة، والشبكة العصبية هي النحّات — تُزيل طبقة رقيقة من العشوائية في كل خطوة حتى تتكشّف صورة واضحة المعالم.

عبقرية هذا الأسلوب أن تعلُّم إزالة التشويش أسهل بكثير من تعلُّم توليد صور من العدم، تماماً كما أن تعليم شخص الصقل والتلميع أسهل بكثير من تعليمه النحت الحر.

المشهد التوليدي قبل ظهور نماذج الانتشار

قبل ظهور DDPM، سيطرت عائلتان من على مجال توليد الصور:

تقوم على فكرة المواجهة: يحاول خداع في لعبة . النتائج كانت حادة بصرياً، لكن التدريب كان هشّاً: انهيار الأنماط حيث يتعلم المولِّد تكرار بضعة مخرجات فقط، وتلاشي التدرجات، وحساسية مفرطة تجاه . احتاج توسيع هذه الشبكات سنواتٍ من الحيل الهندسية.

يضغط الصورة إلى ثم يعيد بناءها. التدريب مستقر ومبني على أسس رياضية صلبة (تعظيم )، لكن الصور الناتجة كانت ضبابية دائماً — لأن النموذج يحسب متوسط الاحتمالات بدلاً من اختيار إعادة بناء حادة واحدة.

كانت نماذج الانتشار قد طُرحت نظرياً على يد Sohl-Dickstein وزملائه عام 2015، لكن لم يُثبت أحد قدرتها على إنتاج صور بجودة تنافسية. ورقة DDPM هي التي غيّرت ذلك.

افتح في المختبر
قارن بين الأساليب التوليدية الثلاثة: GAN وVAE والانتشار. انقر على كل بطاقة لاستعراض نقاط القوة والضعف.
تستيقظ التجربة عند وصولك…

العملية الأمامية: تحويل الصور إلى ضوضاء

العملية الأمامية وصفة ثابتة لا تتضمن أي تعلُّم. نبدأ من صورة نظيفة x0x_0 ونُضيف في كل خطوة قدراً ضئيلاً من الضوضاء الغاوسية، فنحصل على سلسلة x1,x2,,xTx_1, x_2, \ldots, x_T. بعد عدد كافٍ من الخطوات (T1000T \approx 1000) تتحول الصورة إلى عشوائية بحتة لا يمكن تمييزها عن تشويش صِرف.

الفكرة بسيطة: تخيّل أنك ترفع مستوى التشويش على شاشة تلفاز — عند الخطوة الأولى الصورة واضحة تماماً، عند الخطوة 500 تبدأ الملامح بالاختفاء، وعند الخطوة 1000 لم يعد أمامك سوى ثلج رقمي.

كل خطوة هي انتقال ماركوفي — أي أن مقدار الضوضاء عند الخطوة tt يعتمد فقط على حالة الصورة عند t1t-1، ولا علاقة له بأي خطوة سابقة. هذه الخاصية في هي ما يجعل الحسابات الرياضية مُيسَّرة.

q(xtxt1)=N(xt;1βtxt1,  βtI)q(x_t | x_{t-1}) = \mathcal{N}(x_t;\, \sqrt{1 - \beta_t}\, x_{t-1},\; \beta_t\, \mathbf{I})
خطوة أمامية واحدة — إضافة قدر ضئيل من الضوضاءعند الخطوة t تُقلَّص الصورة قليلاً بمعامل √(1−βₜ) ثم تُضاف ضوضاء غاوسية بتباين βₜ. هذه القيمة صغيرة جداً (من 0.0001 إلى 0.02 مثلاً)، فالتغيير في كل خطوة طفيف بالكاد يُلاحظ — لكن بعد 1000 خطوة يتراكم الأثر بالكامل.
q(xtx0)=N(xt;αˉtx0,  (1αˉt)I)q(x_t | x_0) = \mathcal{N}(x_t;\, \sqrt{\bar\alpha_t}\, x_0,\; (1 - \bar\alpha_t)\, \mathbf{I})
القفز إلى أي خطوة زمنية مباشرةᾱₜ هو الجداء التراكمي (1−β₁)·(1−β₂)·…·(1−βₜ). كلما زاد t اقتربت ᾱₜ من الصفر وأصبح x_t عشوائية بحتة. وكلما اقترب t من الصفر اقتربت ᾱₜ من الواحد وبقي x_t قريباً من الصورة الأصلية x_0.
افتح في المختبر
اسحب شريط الخطوة الزمنية لمشاهدة الصورة تذوب في الضوضاء. لاحظ كيف تنخفض ᾱₜ نحو الصفر.
تستيقظ التجربة عند وصولك…

جدول الضوضاء: كيف نتحكم في سرعة التشويش

التسلسل β1,β2,,βT\beta_1, \beta_2, \ldots, \beta_T هو — وهو الذي يحدد سرعة تشويش الصورة. اختار Ho وزملاؤه جدولاً خطياً يتدرج من β1=104\beta_1 = 10^{-4} إلى βT=0.02\beta_T = 0.02 على مدى T=1000T = 1000 خطوة.

لماذا يهمّ هذا الجدول؟ إذا أضفنا الضوضاء بسرعة كبيرة، فإن ستحتاج إلى تصحيحات ضخمة في كل خطوة وستكون عرضة للأخطاء. وإذا أضفناها ببطء شديد، يصبح التدريب مكلفاً ويستغرق أخذ العينات وقتاً طويلاً. الجدول الخطي يوازن بين الأمرين: يُبقي الإضافة لطيفة في البداية حفاظاً على بنية الصورة، ثم يتسارع في النهاية ليُنهي التشويش بالكامل.

أعمال لاحقة مثل Improved DDPM (Nichol وDhariwal عام 2021) جرّبت جداول جيب تمامية تحافظ على بانخفاض أكثر انتظاماً، لكن الجدول الخطي الأصلي كان كافياً لتحقيق أفضل النتائج.

افتح في المختبر
بدِّل بين الجدول الخطي وجدول الجيب التمامي. لاحظ كيف تنخفض ᾱₜ بشكل مختلف — الجيب التمامي يحتفظ بمزيد من الإشارة في الخطوات الوسطى.
تستيقظ التجربة عند وصولك…

العملية العكسية: استخراج الصور من العشوائية

العملية العكسية هي جوهر الفكرة — وهنا يحدث كل التعلُّم. نبدأ من ضوضاء صِرفة xTN(0,I)x_T \sim \mathcal{N}(0, \mathbf{I})، ثم يُزيل النموذج التشويش تدريجياً: xTxT1x1x0x_T \to x_{T-1} \to \ldots \to x_1 \to x_0.

السؤال الذي يجيب عنه النموذج في كل خطوة هو: «أمامي صورة مشوَّشة xtx_t وأعرف رقم الخطوة tt، فكيف أحصل على نسخة أقل تشويشاً بقليل xt1x_{t-1}؟» ويُعبَّر عن ذلك رياضياً بتوزيع غاوسي:

pθ(xt1xt)=N(xt1;μθ(xt,t),  σt2I)p_\theta(x_{t-1} | x_t) = \mathcal{N}(x_{t-1};\, \mu_\theta(x_t, t),\; \sigma_t^2\, \mathbf{I})
خطوة عكسية مُتعلَّمةالشبكة العصبية تتعلّم التنبؤ بالمتوسط μ_θ فقط، أما التباين σ²ₜ فثابت ومأخوذ من العملية الأمامية. كل ما يحتاجه النموذج هو معرفة الاتجاه الصحيح لتنقية الصورة المشوَّشة.

بدلاً من جعل الشبكة تتنبأ بالمتوسط μθ\mu_\theta مباشرة، اتخذ Ho وزملاؤه قراراً تصميمياً محورياً: التنبؤ بالضوضاء نفسها ثم اشتقاق المتوسط منها. الشبكة تستقبل الصورة المشوَّشة مع رقم الخطوة الزمنية وتُخرج تقديرها للضوضاء التي أُضيفت ϵθ(xt,t)\epsilon_\theta(x_t, t). بعدها يُحسب المتوسط من هذا التنبؤ:

μθ(xt,t)=1αt(xtβt1αˉtϵθ(xt,t))\mu_\theta(x_t, t) = \frac{1}{\sqrt{\alpha_t}} \left( x_t - \frac{\beta_t}{\sqrt{1 - \bar\alpha_t}}\, \epsilon_\theta(x_t, t) \right)
التنبؤ بالضوضاء ثم اشتقاق المتوسطنطرح الضوضاء المتوقَّعة (بعد ضبط مقياسها) من المدخل المشوَّش ثم نُعيد التقييس. هذا جوهر DDPM بأكمله: «أخبرني ما الضوضاء التي أضفتَها وسأزيلها.»
افتح في المختبر
انقر «خطوة» لمشاهدة العملية العكسية وهي تتقدّم — النموذج يُزيل الضوضاء خطوة بخطوة. قارن بين الضوضاء المتوقَّعة والفعلية.
تستيقظ التجربة عند وصولك…

هدف التدريب: حين تنتصر البساطة

الصيغة الكاملة لـالحد الأدنى للدليل في نماذج الانتشار تتضمن مجموع عبر كل الخطوات الزمنية — وهي معقَّدة ومكلفة حسابياً. الإنجاز الحقيقي لـ Ho وزملائه كان إثبات أن مبسَّطة جذرياً تعطي نتائج مماثلة بل أفضل أحياناً:

  1. اسحب صورة نظيفة x0x_0 من مجموعة البيانات
  2. اختر خطوة زمنية عشوائية tUniform(1,T)t \sim \text{Uniform}(1, T)
  3. ولِّد ضوضاء عشوائية ϵN(0,I)\epsilon \sim \mathcal{N}(0, \mathbf{I})
  4. ركِّب الصورة المشوَّشة: xt=αˉtx0+1αˉtϵx_t = \sqrt{\bar\alpha_t}\, x_0 + \sqrt{1 - \bar\alpha_t}\, \epsilon
  5. اطلب من الشبكة التنبؤ بالضوضاء: ϵθ(xt,t)\epsilon_\theta(x_t, t)
  6. احسب الخسارة: ϵϵθ(xt,t)2\|\epsilon - \epsilon_\theta(x_t, t)\|^2

هذا كل ما في الأمر. بين الضوضاء الحقيقية والمتوقَّعة — لا ألعاب تنافسية، ولا موازنة بين إعادة البناء وتباعد KL، ولا مشاكل استقرار. السؤال الوحيد: «هل تستطيع تخمين الضوضاء التي أضفتها؟»

Lsimple=Et,x0,ϵ ⁣[ϵϵθ ⁣(αˉtx0+1αˉtϵ,  t)2]L_{\text{simple}} = \mathbb{E}_{t,\, x_0,\, \epsilon}\!\Big[\, \big\|\epsilon - \epsilon_\theta\!\big(\sqrt{\bar\alpha_t}\, x_0 + \sqrt{1 - \bar\alpha_t}\, \epsilon,\; t\big)\big\|^2\,\Big]
دالة خسارة نموذج الانتشار المبسَّطة — المعادلة المحورية في الورقةخُذ صورة نظيفة، شوِّشها إلى الخطوة الزمنية t باستخدام اختصار إعادة المعلمة، تنبّأ بالضوضاء، ثم قِس الخطأ. هذه المعادلة الواحدة هي كل ما يحتاجه تدريب DDPM.
افتح في المختبر
تابع دورة تدريب واحدة خطوة بخطوة: اختيار صورة، تحديد خطوة زمنية، إضافة ضوضاء، التنبؤ، ثم حساب الخسارة.
تستيقظ التجربة عند وصولك…

العمود الفقري: شبكة U-Net

الشبكة العصبية ϵθ\epsilon_\theta التي تتنبأ بالضوضاء هي U-Net — بنية مع ، صُمِّمت في الأصل لتجزئة الصور الطبية. ما يجعل U-Net مناسبة تماماً أنها تعمل بنفس أبعاد المدخل (بخلاف المصنِّف الذي يختزل كل شيء إلى تسمية واحدة)، ووصلات التخطّي تنقل التفاصيل المكانية الدقيقة بين مراحل الترميز وفك الترميز.

يُضيف DDPM تعديلين جوهريين على بنية U-Net الأساسية:

للخطوة الزمنية — الشبكة بحاجة إلى معرفة مقدار التشويش في الصورة المُدخلة. تُرمَّز الخطوة الزمنية tt بتضمينات جيبية (الفكرة ذاتها المستخدمة في ) وتُحقن في كل . بهذه الطريقة تتعامل الشبكة الواحدة مع جميع مستويات الضوضاء، من التشويش الطفيف (t=1t = 1) إلى العشوائية الكاملة (t=Tt = T).

عند الدقات المنخفضة — عند مستوى الدقة 16×16 تُضاف طبقات انتباه ذاتي تتيح للمناطق المكانية البعيدة التواصل فيما بينها، مما يحسّن التماسك الكلي للصورة (مثلاً: ضمان أن تنظر كلتا العينين في الاتجاه ذاته في صورة وجه).

افتح في المختبر
انقر على أي طبقة في U-Net لمعرفة وظيفتها وكيف تتدفق معلومات الخطوة الزمنية عبرها.
تستيقظ التجربة عند وصولك…

النظرية الأعمق: مطابقة الرصيد وديناميكيات لانجفان

المبسَّطة تُخفي وراءها صلة عميقة بما يُعرف بـالنماذج التوليدية القائمة على الرصيد. لأي توزيع هي مُشتقة لوغاريتم احتماليته: xlogp(x)\nabla_x \log p(x)، وهي تشير نحو المناطق الأكثر كثافة — أي تجيب عن السؤال: «في أي اتجاه أتحرك لأجعل هذه العينة أكثر احتمالاً؟»

والمفاجأة أن شبكة التنبؤ بالضوضاء ϵθ\epsilon_\theta تتعلّم ضمنياً نسخة مُقيَّسة من دالة الرصيد ذاتها. بشكل أدق: ϵθ(xt,t)1αˉtxtlogq(xt)\epsilon_\theta(x_t, t) \approx -\sqrt{1 - \bar\alpha_t}\, \nabla_{x_t} \log q(x_t).

هذا يعني أن العملية العكسية في DDPM ترتبط ارتباطاً وثيقاً بـ**** — وهي طريقة أخذ عينات مستوحاة من الفيزياء تتبع فيها دالة الرصيد مع إضافة ضوضاء لسحب عينات من التوزيع. كان Song وErmon قد أثبتا فاعلية هذا المنهج عام 2019، ثم جاء Ho وزملاؤه ليُظهروا أن إطار الانتشار يصل إلى النتيجة ذاتها تلقائياً ويُنتج عينات أفضل.

هذا الترابط هو ما يمنح نماذج الانتشار متانةً نظرية استثنائية: فهي في الوقت ذاته نماذج تُعظِّم حداً أدنى على الأرجحية، و تتنبأ بالنظيف من المشوَّش، ونماذج مطابقة رصيد تتعلّم مُشتقة توزيع البيانات.

أخذ العينات: توليد الصور خطوة بخطوة

بعد انتهاء التدريب، تسير عملية توليد الصور وفق العملية العكسية:

  1. ابدأ من ضوضاء صِرفة: xTN(0,I)x_T \sim \mathcal{N}(0, \mathbf{I})
  2. لكل t=T,T1,,1t = T, T-1, \ldots, 1: — تنبّأ بالضوضاء ϵθ(xt,t)\epsilon_\theta(x_t, t) — احسب المتوسط μθ(xt,t)\mu_\theta(x_t, t) من المعادلة أعلاه — اسحب عينة xt1N(μθ,σt2I)x_{t-1} \sim \mathcal{N}(\mu_\theta, \sigma_t^2 \mathbf{I})
  3. أعد x0x_0 — الصورة المولَّدة

يُعرف هذا بأسلوب . يتطلب تنفيذ جميع الخطوات T = 1000 كاملة، وهو ما يجعله بطيئاً مقارنة بتمرير واحد في شبكات GAN. لكن كل خطوة ليست سوى واحد عبر U-Net، والنتيجة النهائية مذهلة.

النتائج: الانتشار يلحق بأفضل شبكات GAN

في توليد الصور غير المشروط على CIFAR-10 حقق DDPM درجة بقيمة 3.17 — مضاهياً ProgressiveGAN الذي كان يحتل الصدارة آنذاك. وعلى مجموعة LSUN (غرف نوم وكنائس وخيول) أنتج عينات متنوعة بدقة 256×256 وجودة بصرية عالية.

الأهم من ذلك أن هذه النتائج تحققت بلا أي تدريب تنافسي — لا مميِّز، ولا لعبة حدّ أدنى-أقصى، ولا انهيار أنماط. كان التدريب مستقراً تماماً كتدريب مصنِّف عادي: مجرد على الخسارة المبسَّطة.

أظهرت الورقة أيضاً أن نماذج الانتشار تُنتج تلقائياً ما يشبه : كل خطوة عكسية تكشف طبقة جديدة من التفاصيل، من البنية العامة الخشنة وصولاً إلى الملمس الدقيق — تماماً كما يعمل فك ترميز JPEG التدريجي.

الفكرة ذاتها في الكود

حلقة تدريب نموذج الانتشار — الخوارزمية الكاملةpython

مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.

import torch
import torch.nn.functional as F

def ddpm_train_step(model, x_0, betas, alpha_bars):
    """خطوة تدريب واحدة: اختر ضوضاء، تنبّأ بها، احسب الخسارة."""
    T = len(betas)

    # 1. اختر خطوة زمنية عشوائية
    t = torch.randint(0, T, (x_0.shape[0],))

    # 2. اختر ضوضاء غاوسية
    epsilon = torch.randn_like(x_0)

    # 3. كوِّن الصورة المشوَّشة عبر إعادة المعايرة
    alpha_bar_t = alpha_bars[t].view(-1, 1, 1, 1)
    x_t = torch.sqrt(alpha_bar_t) * x_0 + torch.sqrt(1 - alpha_bar_t) * epsilon

    # 4. تنبّأ بالضوضاء
    epsilon_pred = model(x_t, t)

    # 5. خسارة MSE البسيطة — هذا كل شيء!
    loss = F.mse_loss(epsilon_pred, epsilon)
    return loss

@torch.no_grad()
def ddpm_sample(model, shape, betas, alpha_bars):
    """ولِّد صورة بإزالة الضوضاء تكرارياً."""
    T = len(betas)
    alphas = 1.0 - betas

    # ابدأ من ضوضاء صِرفة
    x = torch.randn(shape)

    for t in reversed(range(T)):
        # تنبّأ بالضوضاء وأزلها
        eps = model(x, torch.tensor([t]))
        mean = (1 / alphas[t].sqrt()) * (
            x - (betas[t] / (1 - alpha_bars[t]).sqrt()) * eps
        )
        if t > 0:
            x = mean + betas[t].sqrt() * torch.randn_like(x)
        else:
            x = mean  # لا ضوضاء في الخطوة الأخيرة

    return x

لماذا كانت هذه الورقة مفصلية

  1. 2015

    Sohl-Dickstein وزملاؤه — ولادة فكرة الانتشار

    أول ورقة تطرح فكرة نماذج الانتشار الاحتمالية. أثبتت صحة المبدأ النظري لكن جودة الصور كانت بعيدة عن المستوى التنافسي.

  2. 2019

    Song وErmon — مطابقة الرصيد مع لانجفان

    أثبتا أن تعلُّم دالة الرصيد على مستويات ضوضاء متعددة يُمكِّن من توليد صور عالية الجودة باستخدام ديناميكيات لانجفان.

  3. 2020

    Ho وزملاؤه — نموذج الانتشار الاحتمالي

    هذه الورقة. بسّطت دالة الخسارة، واعتمدت U-Net كبنية أساسية، وحققت جودة تنافس أفضل شبكات GAN. أطلقت ثورة الانتشار.

  4. 2020

    DDIM — أخذ عينات سريع

    أظهر Song وزملاؤه كيف يمكن تخطي خطوات في العملية العكسية وتقليص التوليد من 1000 إلى 50 خطوة فقط مع تراجع طفيف في الجودة.

  5. 2021

    Dhariwal وNichol — الانتشار يتفوق على الشبكات التنافسية

    التوجيه بالمصنِّف مع تحسينات معمارية دفعت نماذج الانتشار لتتفوق على شبكات GAN في مقياس FID على ImageNet للمرة الأولى.

  6. 2022

    الانتشار الكامن / Stable Diffusion

    نقل Rombach وزملاؤه عملية الانتشار إلى فضاء كامن مضغوط، مما أتاح توليد صور عالية الدقة من النص على أجهزة المستهلكين.

  7. 2022

    DALL·E 2 وImagen

    نظاما توليد صور من نص من OpenAI وGoogle، كلاهما قائم على الانتشار. أثبتا أن المنهج يتعمم بنجاح إلى التوليد الموجَّه باللغة.

  8. 2023

    سياسة الانتشار

    طبّق Chi وزملاؤه الانتشار على تخطيط حركة الروبوتات — توليد مسارات سلسة ومتعددة الاحتمالات بدلاً من صور.

من فكرة واحدة — «تعلَّم التنبؤ بالضوضاء ثم أزلها» — وُلد نظام بيئي كامل. كل نظام رئيسي لتوليد الصور من النص أو توليد الفيديو أو التخليق ثلاثي الأبعاد يعود في أصله إلى هذه الورقة. أثبت DDPM أن الصبر (1000 خطوة صغيرة) يتفوق على القوة الغاشمة (التوليد بضربة واحدة عبر GAN)، وأن بساطة هدف التدريب يمكن أن تُثمر نتائج استثنائية.

المرجعHo, Jain, Abbeel. Denoising Diffusion Probabilistic Models. NeurIPS, 2020.

مصطلحات هذه الورقة