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

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

Denoising Diffusion Implicit Models

Song, J. · Meng, C. · Ermon, S. — ICLR

المشكلة

بحلول عام 2020، أثبتت نماذج DDPM أنها قادرة على توليد صور بجودة تُنافس شبكات GAN — وبدون مشاكل عدم الاستقرار المعروفة في التنافسي. لكن كانت هناك مشكلة جوهرية: البطء الشديد. لتوليد صورة واحدة، كان لا بدّ من المرور بسلسلة ماركوف مكوّنة من 1,000 خطوة متتابعة، وهذا يعني أنها أبطأ من GAN بمراتب كبيرة. على سبيل المثال، توليد 50,000 صورة من CIFAR-10 كان يستغرق نحو 20 ساعة على GPU واحدة، بينما تُنجزها GAN في أقل من دقيقة. ومع الصور عالية الدقة، كان الوقت يصل إلى ما يقارب 1,000 ساعة. عملياً، كان DDPM غير صالح لأي تطبيق يتطلّب استجابة سريعة.

الإسهام

الفكرة المحورية في DDIM هي توسيع إطار عمل DDPM عبر استبدال الماركوفية بعائلة كاملة من العمليات غير الماركوفية، جميعها تشترك في التوزيعات الهامشية نفسها، وبالتالي تستخدم دالة الهدف ذاتها أثناء التدريب. حين نضبط معامل العشوائية σ على الصفر، تتحوّل عملية التوليد إلى عملية حتمية بالكامل: كل متجه ضجيج كامن يُنتج صورة واحدة ووحيدة. هذا الاختصار الحتمي يُمكّننا من توليد صور بـ10 إلى 50 خطوة فقط، بجودة قريبة جداً من DDPM الأصلي بـ1,000 خطوة — والأهم أنه لا يحتاج إلى إعادة تدريب: أي نموذج DDPM مُدرَّب مسبقاً يعمل مباشرة مع DDIM. إضافة إلى ذلك، يتيح DDIM ً ذا معنى في ، وإعادة بناء شبه مثالية للصور من خلال دورة ترميز وفك ترميز تسلك مسار .

الأثر

DDIM هو ما حوّل نماذج الانتشار من فكرة نظرية إلى أداة عملية قابلة للنشر. أصبحت آلية الأخذ الحتمي المتسارع التي قدّمها هي الطريقة الافتراضية في Stable Diffusion وDALL·E 2 وتقريباً كل مولّد صور حديث. كذلك، الربط الثابت بين الضجيج والصورة فتح المجال لتقنيات تعديل الصور عبر الفضاء الكامن. والصلة التي كشفها DDIM بالمعادلات التفاضلية العادية ألهمت موجة كاملة من الأعمال اللاحقة لتسريع الأخذ، مثل DPM-Solver ونماذج . والأعمق من ذلك أن DDIM أثبت مبدأً جديداً: نموذج واحد مُدرَّب مسبقاً يمكن أن يدعم طيفاً كاملاً من استراتيجيات التوليد — وهذا غيّر طريقة تفكير المجتمع البحثي في العلاقة بين التدريب .

تخيّل أنك تُرمِّم لوحة قديمة طُمِرت تحت طبقات كثيفة من الغبار. الطريقة التقليدية (DDPM) تفرض عليك مسح اللوحة بـ1,000 مسحة خفيفة بالضبط، كل واحدة تُزيل طبقة مجهرية — واتجاه كل مسحة يتحدّد بقذف عملة معدنية، أي أن المسار عشوائي تماماً.

الاكتشاف الذي جاء به DDIM مفاجئ: ما دمتَ تعرف بنية اللوحة من التدريب السابق، يمكنك أن تسلك مساراً محسوباً مباشراً نحو الصورة النظيفة. بدلاً من 1,000 مسحة عشوائية، تأخذ 50 مسحة دقيقة — حتمية، بلا أي قذف عملة — وتصل إلى اللوحة المرمَّمة ذاتها. والأجمل أنك لا تحتاج إلى تعلُّم مهارة جديدة؛ التدريب نفسه الذي أهّلك لأداء 1,000 مسحة يعمل تماماً مع 50 فقط.

عنق الزجاجة: 1,000 خطوة إلزامية

لفهم DDIM، لنبدأ أولاً بتشخيص مشكلة البطء في DDPM. الفكرة في DDPM أننا نأخذ صورة نظيفة x0x_0 ونُضيف إليها بشكل تدريجي على مدى T=1,000T = 1{,}000 خطوة، فنحصل على تسلسل x1,x2,,xTx_1, x_2, \ldots, x_T ينتهي بضجيج خالص. هذا التسلسل هو : كل خطوة xtx_t تعتمد حصراً على سابقتها xt1x_{t-1}.

عملية التوليد تسير بالاتجاه المعاكس: نبدأ من ضجيج خالص xTN(0,I)x_T \sim \mathcal{N}(0, I) ونُزيل الضجيج خطوة بخطوة حتى نصل إلى صورة نظيفة x0x_0. المشكلة أن العملية الأمامية تتكوّن من TT خطوة، فلا بدّ أن تمرّ بـTT خطوة أيضاً — أي تقييم واحد للشبكة العصبية في كل خطوة. في سلسلة ماركوف لا يوجد طريق مختصر.

لكن هناك ملاحظة جوهرية تفتح الباب لكل ما سيأتي: يمكننا القفز من x0x_0 إلى أي خطوة xtx_t مباشرة دون المرور بالخطوات الوسيطة:

xt=αtx0+1αtϵ,ϵN(0,I)x_t = \sqrt{\alpha_t}\, x_0 + \sqrt{1 - \alpha_t}\, \epsilon, \quad \epsilon \sim \mathcal{N}(0, I)
التوزيع الهامشي الأمامي — القفز مباشرة من الصورة النظيفة إلى أي مستوى ضجيجفي أي خطوة زمنية tt، الصورة المُشوَّشة xtx_t ليست سوى مزيج موزون بين الصورة الأصلية x0x_0 وضجيج عشوائي ϵ\epsilon. المعامل αt\alpha_t يتناقص تدريجياً من 1 إلى قيمة قريبة من الصفر، بحيث تكون الخطوات الأولى غنية بالإشارة والخطوات الأخيرة غالبها ضجيج. النقطة المهمة: هذه الصيغة تنطبق على *أي* tt مباشرة — لا حاجة للمرور بالخطوات الوسيطة.

وهنا تأتي الملاحظة الحاسمة: التوزيع الهامشي q(xtx0)q(x_t | x_0) عند أي خطوة لا يتأثر بـالمسار الذي سلكناه للوصول إليه. سواء وصلنا عبر 1,000 خطوة في سلسلة ماركوف أو قفزنا مباشرة، النتيجة الإحصائية واحدة. والمفتاح هنا أن دالة هدف التدريب في DDPM — وهي التنبؤ بالضجيج ϵ\epsilon من xtx_t — تعتمد فقط على هذه التوزيعات الهامشية، ولا علاقة لها بالتوزيع المشترك q(x1,,xTx0)q(x_1, \ldots, x_T | x_0). هذه هي الثغرة التي استغلّها DDIM.

افتح في المختبر
قارن بين مسار DDPM بـ1,000 خطوة ومسار DDIM المختصر. كلاهما ينطلق من الضجيج ذاته ويصل إلى جودة متقاربة — لكن DDIM يصل أسرع بكثير.
تستيقظ التجربة عند وصولك…

الرؤية المحورية: مسارات عديدة، وجهة واحدة

سلسلة ماركوف في DDPM ليست إلا توزيعاً مشتركاً واحداً q(x1,,xTx0)q(x_1, \ldots, x_T | x_0) يُعطينا التوزيعات الهامشية q(xtx0)=N(αtx0,(1αt)I)q(x_t | x_0) = \mathcal{N}(\sqrt{\alpha_t}\, x_0, (1 - \alpha_t) I). لكن في الواقع، هناك عدد لا نهائي من التوزيعات المشتركة المختلفة التي تُنتج التوزيعات الهامشية ذاتها بالضبط.

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

DDIM يستثمر هذه الحرية الرياضية: يُعرِّف عائلة من العمليات الأمامية غير الماركوفية، يتحكّم بها متجه σ=(σ1,,σT)\sigma = (\sigma_1, \ldots, \sigma_T)، حيث كل σt\sigma_t يُحدّد مقدار العشوائية عند الخطوة tt. صُمّمت هذه العائلة بعناية بحيث تظلّ التوزيعات الهامشية qσ(xtx0)q_\sigma(x_t | x_0) مطابقة لما في DDPM مهما كانت قيم σ\sigma. وبما أن دالة هدف التدريب تعتمد فقط على التوزيعات الهامشية، فإن النموذج المُدرَّب نفسه يصلح لجميع أفراد هذه العائلة — دون أي إعادة تدريب.

افتح في المختبر
بدّل بين العملية الأمامية الماركوفية وغير الماركوفية. كلتاهما تُعطيان التوزيعات الهامشية نفسها عند كل خطوة — لكن طريقة الترابط بين الخطوات مختلفة.
تستيقظ التجربة عند وصولك…

قاعدة التحديث: ثلاث قوى في معادلة واحدة

جوهر DDIM هو معادلة تحديث واحدة تُنتج xt1x_{t-1} من xtx_t. قبل أن نغوص في الرياضيات، لنفهم المنطق الذي تقوم عليه.

النموذج ϵθ(t)(xt)\epsilon_\theta^{(t)}(x_t) تعلَّم أثناء التدريب أن يتنبّأ بالضجيج الذي أُضيف إلى الصورة الأصلية. إذا عرفنا الضجيج، نستطيع تقدير شكل الصورة النظيفة x0x_0. بعد ذلك نأخذ هذا التقدير ونُعيد إضافة الضجيج بالمقدار المناسب للخطوة t1t{-}1. المعادلة تجمع ثلاثة مكوّنات: تقدير الصورة النظيفة، وحدّ تصحيحي يوجّهنا في اتجاه الضجيج المطلوب، وحدّ ضجيج عشوائي اختياري يتحكّم فيه σt\sigma_t.

xt1=αt1(xt1αt  ϵθ(t)(xt)αt)predicted x0+1αt1σt2ϵθ(t)(xt)direction pointing to xt+σtϵtrandom noisex_{t-1} = \sqrt{\alpha_{t-1}} \underbrace{\left(\frac{x_t - \sqrt{1-\alpha_t}\;\epsilon_\theta^{(t)}(x_t)}{\sqrt{\alpha_t}}\right)}_{\text{predicted } x_0} + \underbrace{\sqrt{1-\alpha_{t-1}-\sigma_t^2} \cdot \epsilon_\theta^{(t)}(x_t)}_{\text{direction pointing to } x_t} + \underbrace{\sigma_t \epsilon_t}_{\text{random noise}}
معادلة التوليد في DDIM — من الضجيج إلى الصورةثلاثة حدود، لكل منها دور واضح. الأول يُقدّر الصورة النظيفة x0x_0 انطلاقاً من الحالة المشوَّشة الحالية. الثاني يضبط الاتجاه ليُوافق مستوى الضجيج المطلوب للخطوة t1t{-}1. الثالث يُدخل عشوائية جديدة بمقدار σt\sigma_t. حين نضع σt=0\sigma_t = 0 (وهذه حالة DDIM)، تختفي العشوائية كلياً وتصبح العملية حتمية تماماً. أما حين يُطابق σt\sigma_t صيغة DDPM، نحصل على العملية العشوائية الأصلية.
افتح في المختبر
حرّك σ لترى كيف يتغيّر التوازن بين حدود المعادلة الثلاثة. عند σ = 0 (DDIM) يختفي حدّ الضجيج العشوائي تماماً.
تستيقظ التجربة عند وصولك…

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

المعامل η\eta يُتيح لنا التحكّم السلس بين الطرفين: عند η=0\eta = 0 نحصل على DDIM (حتمي بالكامل)، وعند η=1\eta = 1 نعود إلى DDPM (عشوائي بالكامل)، والقيم بينهما تُعطي استيفاءً سلساً بين الحالتين. وذلك من خلال تعريف σt(η)=η(1αt1)/(1αt)1αt/αt1\sigma_t(\eta) = \eta \sqrt{(1-\alpha_{t-1})/(1-\alpha_t)} \sqrt{1 - \alpha_t / \alpha_{t-1}}.

حيلة التسريع: تخطَّ الخطوات واحتفظ بالجودة

الاكتشاف الثاني لا يقلّ أهمية: لسنا مضطرين لعكس جميع الخطوات الـT=1,000T = 1{,}000. ما دامت دالة هدف التدريب تعتمد فقط على التوزيعات الهامشية q(xtx0)q(x_t | x_0)، يمكننا انتقاء متتالية جزئية τ=[τ1,τ2,,τS]\tau = [\tau_1, \tau_2, \ldots, \tau_S] من المجموعة الأصلية [1,,T][1, \ldots, T] وتشغيل عملية التوليد على هذه الخطوات فحسب. بدلاً من المرور بالتسلسل الكامل x1000x999x0x_{1000} \to x_{999} \to \cdots \to x_0، نقفز مباشرة x1000x900x800x0x_{1000} \to x_{900} \to x_{800} \to \cdots \to x_0 — أي 10 خطوات فقط.

معادلة التحديث لا تتغيّر، نستبدل فقط αt\alpha_t وαt1\alpha_{t-1} بـατi\alpha_{\tau_i} وατi1\alpha_{\tau_{i-1}}. النموذج تعلّم عند جميع المستويات الألف، فيستطيع العمل عند أيّ منها. الأمر أشبه برحلة طويلة: بدلاً من التوقف في كل محطة، نختار محطات أقل ونصل إلى الوجهة نفسها.

النتائج التجريبية مُقنعة. على CIFAR-10 حقّق DDIM بـ50 خطوة يبلغ 4.67، وهو قريب جداً من 4.04 الذي يحقّقه DDPM بـ1,000 خطوة — تسريع 20 ضعفاً مع تراجع طفيف في الجودة. وحتى بـ20 خطوة فقط، يسجّل DDIM نتيجة 6.84، بينما ينهار أداء DDPM إلى 18.36 بالميزانية نفسها.

افتح في المختبر
حرّك الشريط لتغيير عدد خطوات التوليد. لاحظ كيف يحتفظ DDIM (η=0) بالجودة بشكل أفضل بكثير من DDPM (η=1) كلما قلّت الخطوات.
تستيقظ التجربة عند وصولك…

المكافأة: فضاء كامن ذو معنى

لأن DDIM حتمي، فإن نقطة الانطلاق xTx_T نفسها تُنتج دائماً الصورة x0x_0 ذاتها — مهما كان عدد الخطوات. هذه الخاصية تُسمى الاتساق: لو ولّدنا صورة بـ10 خطوات ثم بـ1,000 خطوة من xTx_T نفسه، سنحصل على السمات العامة ذاتها — الوضعية واللون والتكوين — والاختلاف يقتصر على تفاصيل دقيقة.

هذا يُحوّل xTx_T فعلياً إلى ترميز كامن حقيقي، مشابه لما نعرفه في الفضاء الكامن لشبكات GAN أو . ونكتسب بذلك قدرتين مهمتين. الأولى هي الاستيفاء: لو أخذنا متجهي ضجيج xT(0)x_T^{(0)} وxT(1)x_T^{(1)}، يمكننا التحرّك بينهما بسلاسة عبر الاستيفاء الخطي الكروي وتوليد صور وسيطة. الانتقالات تحمل معنى دلالياً واضحاً — الوجوه تتحوّل تدريجياً، والمشاهد تتمازج بشكل طبيعي.

القدرة الثانية هي الترميز العكسي: بتشغيل معادلة DDIM بالاتجاه المعاكس (من x0x_0 إلى xTx_T)، نستطيع ترميز أي صورة في الفضاء الكامن، ثم إعادة بنائها بدقة شبه مثالية. خطأ إعادة البناء ينخفض إلى أقل من 10410^{-4} مع 1,000 خطوة ترميز. هذا الأمر مستحيل في DDPM لأن العشوائية في عمليته تكسر العلاقة الأحادية بين الضجيج والصورة.

افتح في المختبر
حرّك الشريط للتنقّل بين متجهي ضجيج كامنين. العملية الحتمية في DDIM تُنتج انتقالات تدريجية سلسة وذات معنى دلالي.
تستيقظ التجربة عند وصولك…

الصلة الأعمق: DDIM بوصفه حلّاً لمعادلة تفاضلية

تحت السطح تختبئ صلة رياضية أنيقة. إذا أجرينا بقسمة كل xtx_t على αt\sqrt{\alpha_t} وعرّفنا σˉ(t)=(1αt)/αt\bar{\sigma}(t) = \sqrt{(1-\alpha_t)/\alpha_t}، نكتشف أن معادلة تحديث DDIM هي في حقيقتها خطوة أويلر واحدة لمعادلة تفاضلية عادية:

dxˉ(t)=ϵθ(t) ⁣(xˉ(t)σˉ2(t)+1)dσˉ(t)d\bar{x}(t) = \epsilon_\theta^{(t)}\!\left(\frac{\bar{x}(t)}{\sqrt{\bar{\sigma}^2(t)+1}}\right) d\bar{\sigma}(t)
DDIM كمعادلة تفاضلية عادية عصبية — الصياغة في الزمن المتصلتحديث DDIM هو ببساطة تجزئة أويلر لهذه المعادلة. تشغيلها للأمام (من t=0t=0 إلى TT) يُحوّل الصورة إلى ضجيج، وتشغيلها للخلف (من TT إلى 00) يُعيد بناء الصورة من الضجيج. وقد تبيّن أن هذه الصياغة مكافئة لمعادلة تدفق الاحتمال في إطار المعادلات التفاضلية العشوائية «المتفجرة التباين» التي اقترحها سونغ وآخرون (2020) بشكل مستقل، وهي نتيجة وحّدت بين مقاربة الدرجات ومقاربة إزالة الضجيج.

منظور المعادلات التفاضلية العادية قويّ لسببين جوهريين. أولاً، يفتح لنا الباب لاستثمار عقود من البحث في الحلول العددية للمعادلات التفاضلية — طرق آدمز–باشفورث ورنغه–كوتا وغيرها — لتحسين جودة الأخذ بخطوات أقل. ثانياً، يمنحنا ترميزاً عكسياً: في DDPM تجعل العشوائية العلاقة من x0x_0 إلى xTx_T علاقة واحد-إلى-كثير، لكن المعادلة التفاضلية في DDIM تُعرِّف تقابلاً ثنائياً — لكل صورة ترميز كامن وحيد، والعكس صحيح. عملياً، هذا يعني أن DDIM هو بصورة أخرى، حيث تلعب شبكة التنبؤ بالضجيج دور .

حلقة أخذ العيّنات في DDIM (مبسّطة)python

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

import torch

def ddim_sample(model, alphas, tau, eta=0.0):
    """
    model  : مُتنبِّئ الضجيج المُدرَّب epsilon_theta
    alphas : جدول ألفا الكامل [alpha_1, ..., alpha_T]
    tau    : متتالية جزئية من مؤشرات الخطوات، مثلاً [100, 200, ..., 1000]
    eta    : 0 = DDIM (حتمي)، 1 = DDPM (عشوائي)
    """
    # ابدأ من ضجيج خالص
    x = torch.randn_like(alphas[0])  # x_T ~ N(0, I)

    for i in reversed(range(len(tau))):
        t = tau[i]
        t_prev = tau[i - 1] if i > 0 else 0
        a_t = alphas[t]
        a_prev = alphas[t_prev] if t_prev > 0 else 1.0

        # تنبّأ بالضجيج
        eps = model(x, t)

        # قدِّر الصورة النظيفة (x_0 المتوقعة)
        x0_pred = (x - (1 - a_t).sqrt() * eps) / a_t.sqrt()

        # احسب سيغما لهذه الخطوة
        sigma = eta * ((1 - a_prev) / (1 - a_t)).sqrt() * (1 - a_t / a_prev).sqrt()

        # الاتجاه نحو x_t
        dir_xt = (1 - a_prev - sigma**2).sqrt() * eps

        # ادمج: x_0 المتوقعة + الاتجاه + الضجيج
        x = a_prev.sqrt() * x0_pred + dir_xt + sigma * torch.randn_like(x)

    return x

لماذا يهم هذا: من النظرية إلى Stable Diffusion

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

الأثر كان فورياً وعميقاً. كل نظام توليد صور حديث — Stable Diffusion وDALL·E 2 وImagen وMidjourney — يعتمد على أخذ العيّنات المتسارع بأسلوب DDIM كمكوّن أساسي. والفضاء الكامن الحتمي أتاح تقنيات تعديل الصور مثل عكس DDIM، حيث تُرمَّز صورة حقيقية في الفضاء الكامن وتُعدَّل ثم يُعاد بناؤها. والصلة التي كشفها DDIM بالمعادلات التفاضلية العادية ألهمت DPM-Solver الذي رفع الجودة بـ10–20 خطوة فقط باستخدام حلّالات من الرتبة العليا. أما الفكرة الأعمق — أن نموذجاً واحداً مُدرَّباً يدعم طيفاً كاملاً من استراتيجيات الاستدلال — فقد ألهمت مباشرة نماذج الاتساق التي تُقطّر مسار المعادلة التفاضلية بأكمله لتوليد الصورة في خطوة واحدة.

الإرث: تسريع الانتشار

  1. 2020

    DDPM (هو وآخرون)

    أثبت أن نماذج الانتشار قادرة على مجاراة جودة شبكات GAN — لكنه احتاج إلى 1,000 خطوة متتابعة لإزالة الضجيج، ما جعل عملية التوليد بطيئة للغاية.

  2. 2021

    DDIM (هذه الورقة)

    طرح العمليات الأمامية غير الماركوفية والتوليد الحتمي، فخفّض الخطوات من 1,000 إلى 50 مع تراجع طفيف في الجودة — وبدون أي إعادة تدريب.

  3. 2021

    Score SDE (سونغ وآخرون)

    وضع نماذج الانتشار في إطار موحّد باستخدام معادلة تفاضلية عشوائية في الزمن المتصل، واستخلص معادلة تفاضلية عادية لتدفق الاحتمال مكافئة لصياغة DDIM.

  4. 2022

    DALL·E 2 وStable Diffusion

    اعتمدت مولّدات الصور التجارية على أسلوب DDIM في التوليد كإعداد افتراضي، ما أوصل نماذج الانتشار إلى ملايين المستخدمين.

  5. 2022

    DPM-Solver (لو وآخرون)

    استثمر صلة DDIM بالمعادلات التفاضلية واستخدم حلّالات من الرتبة العليا لرفع الجودة بـ10–20 خطوة فقط.

  6. 2023

    نماذج الاتساق (سونغ وآخرون)

    دفع فكرة DDIM إلى أقصى حدودها: قطّر مسار المعادلة التفاضلية بالكامل ليُصبح التوليد ممكناً في خطوة واحدة فقط.

المرجعSong, Meng, Ermon. Denoising Diffusion Implicit Models. ICLR, 2021.

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