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

التوجيه بدون مُصنِّف في نماذج الانتشار

Classifier-Free Diffusion Guidance

Ho, J. · Salimans, T. — NeurIPS Workshop (2021) / arXiv (2022)

المشكلة

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

الإسهام

بديل بسيط بشكل لافت: بدلاً من تدريب مصنّف منفصل، يُدرَّب نموذج انتشار واحد على التوليد المشروط (مع تسمية الفئة) وغير المشروط (بدونها) معاً. عند التوليد، يبتعد النموذج عن التنبؤ غير المشروط ويتّجه نحو المشروط بوزن توجيه w. التعديل الوحيد في هو حذف تسمية الفئة عشوائياً — سطر كود واحد — مع معادلة مزج بسيطة عند التوليد. النتيجة هي نفس المقايضة بين الجودة والتنوّع التي يحققها التوجيه بالمصنّف، لكن بنموذج توليدي صرف ودون أي تدرّجات مصنّف.

الأثر

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

تخيّل أنك مصوّر تريد التقاط صورة مثالية لكلب من فصيلة المسترد الذهبي.

الطريقة القديمة (): تأخذ معك ناقداً فنياً يهمس لك باستمرار «اجعلها أشبه بالكلب... أوضح... أوضح» وأنت تضبط الكاميرا. كلامه مفيد فعلاً، لكنه يكلّفك: تدفع أجره وتتحمّل نقله، وهو يحكم من منظوره الشخصي فقط، وأحياناً نصائحه تجعل الصورة تبدو جيدة في عين النقّاد دون أن تتحسّن فعلياً.

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

المشكلة: جودة عالية أم تنوّع واسع — اختر واحداً فقط؟

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

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

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

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

التوجيه بالمصنّف: الأسلوب السابق

حلّ ضاريوال ونيكول (2021) مشكلة الاقتطاع في نماذج الانتشار بحيلة ذكية: أثناء عملية ، يُمزج تقدير دالّة النتيجة من نموذج الانتشار مع مصنّف مُدرَّب على حدة. فكرة المصنّف بسيطة: «هذه الصورة المُشوَّشة تبدو بنسبة 60% كمسترد ذهبي — وهذا هو الاتجاه الذي يجب دفع البكسلات نحوه لزيادة الشَبَه.» وبالتحكّم في شدة تدرّج المصنّف، أصبح بالإمكان المقايضة بسلاسة بين تنوّع العيّنات (بحسب ) ودقّتها (بحسب ).

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

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

الفكرة الجوهرية: التوجيه من النموذج نفسه

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

الفكرة تتكثّف في ثلاث خطوات. الخطوة الأولى (التدريب): درِّب نموذج انتشار واحداً يرى أحياناً تسمية الفئة وأحياناً لا يراها. التطبيق العملي بسيط: استبدل تسمية الفئة عشوائياً برمز فارغ ∅ باحتمال p_uncond (قيمة صغيرة مثل 0.1 أو 0.2). بهذا يتعلّم النموذج في كلتا الحالتين: المشروطة وغير المشروطة.

الخطوة الثانية (النتيجة المشروطة): عند التوليد، شغّل النموذج مع تسمية الفئة المطلوبة c لتحصل على تنبؤ الضجيج المشروط ε_θ(z_λ, c).

الخطوة الثالثة (التوجيه): شغّل النموذج مرة أخرى بدون تسمية لتحصل على التنبؤ ε_θ(z_λ). ثم ادمجهما: ابتعِد عن التنبؤ غير المشروط واتّجِه نحو المشروط، وتحكّم في مقدار الابتعاد بوزن التوجيه w.

ϵ~θ(zλ,c)=(1+w)ϵθ(zλ,c)    wϵθ(zλ)\tilde{\epsilon}_\theta(z_\lambda, c) = (1 + w)\,\epsilon_\theta(z_\lambda, c) \;-\; w\,\epsilon_\theta(z_\lambda)
معادلة التوجيه بدون مصنّفالنتيجة المُوجَّهة عبارة عن استقراء خطّي: خُذ التنبؤ المشروط ثم ابتعد عن التنبؤ غير المشروط بمقدار إضافي. حين يكون w=0 لا يوجد توجيه ونحصل على توليد مشروط عادي. وحين يكون w>0 يُضخّم النموذج ما يُميّز التنبؤ المشروط عن غير المشروط — فتصبح العيّنات أوضح وأكثر ارتباطاً بالفئة المطلوبة، لكن على حساب التنوّع.
افتح في المختبر
عدّل قيمة w لترى كيف يتحرك التنبؤ المُوجَّه: استكمال داخلي (w<0)، مطابقة للمشروط (w=0)، أو استقراء يتجاوز المشروط (w>0).
تستيقظ التجربة عند وصولك…

التدريب: نموذج واحد بوضعَيْن

التعديل على التدريب بسيط جداً. النموذج هو نموذج انتشار مشروط عادي ε_θ(z_λ, c) — مثلاً شبكة تستقبل الفئة. التعديل الوحيد أنّ تسمية الفئة c تُستبدل عشوائياً برمز فارغ ∅ باحتمال p_uncond أثناء التدريب. بهذه الطريقة تتعلّم الشبكة إزالة الضجيج بوجود معلومات الفئة وبدونها، باستخدام الأوزان ذاتها.

لا نموذج إضافي، ولا إضافية، ولا ضبط جديد للمُعامِلات الفائقة. مجرد سطر كود واحد: باحتمال معيّن، اجعل c = ∅. وجد الباحثون أنّ قيم p_uncond بين 0.1 و0.2 تعطي نتائج جيدة — أي أنّ جزءاً صغيراً فقط من التدريب يكفي أن يكون غير مشروط. وحتى مع p_uncond = 0.5 يظل الأداء تنافسياً، وإن تحرّكت حدود المقايضة بين الجودة والتنوّع.

الخوارزمية 1: التدريب المشترك مع التوجيه بدون مصنّفpython

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

# حلقة التدريب للتوجيه بدون مصنّف # التعديل الوحيد: حذف تسمية الفئة عشوائياً
for x, c in dataloader:
    # باحتمال p_uncond، استبدل الفئة بالرمز الفارغ
    if random() < p_uncond:
        c = NULL_TOKEN              # ← التعديل الوحيد

    t = sample_timestep()           # اختيار مستوى الضجيج
    eps = randn_like(x)             # توليد الضجيج
    z_t = alpha_t * x + sigma_t * eps

    # دالة الخسارة المعتادة — مطابقة لأي نموذج انتشار
    loss = mse(model(z_t, c, t), eps)
    loss.backward()
    optimizer.step()
افتح في المختبر
أثناء التدريب تُحذف تسمية الفئة عشوائياً. بدّل بين الوضعين لترى كيف يتعلّم النموذج إزالة الضجيج بوجود معلومات الفئة وبدونها.
تستيقظ التجربة عند وصولك…

التوليد: تمريرتان ومعادلة واحدة

عند التوليد، تتطلب كل خطوة إزالة ضجيج تمريرتين أماميتين عبر النموذج: تمريرة مشروطة مع تسمية الفئة المطلوبة c، وتمريرة غير مشروطة مع الرمز الفارغ ∅. بعدها يُحسَب تنبؤ الضجيج المُوجَّه بالمعادلة التي رأيناها.

تخيّل الأمر كبوصلة: التنبؤ المشروط يشير نحو «صور من الفئة c»، والتنبؤ غير المشروط يشير نحو «صور عامة بلا هويّة». معادلة التوجيه تقول: انطلق من الاتجاه المشروط ثم تجاوزه بمقدار يتناسب مع بُعده عن الاتجاه غير المشروط. أنت تتخطّى الهدف المشروط عمداً لتُبرز ما يجعله مميّزاً.

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

الخوارزمية 2: التوليد مع التوجيه بدون مصنّفpython

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

# التوليد مع التوجيه بدون مصنّف
z = randn(shape)                    # ابدأ من ضجيج صرف
for t in reversed(timesteps):
    # تمريرتان أماميتان لكل خطوة
    eps_cond   = model(z, c, t)     # التنبؤ المشروط
    eps_uncond = model(z, NULL, t)   # التنبؤ غير المشروط

    # معادلة التوجيه
    eps_guided = (1 + w) * eps_cond - w * eps_uncond

    # تحديث DDPM/DDIM المعتاد باستخدام eps_guided
    z = denoise_step(z, eps_guided, t)

return z

لماذا ينجح: المصنّف الضمني

التبرير الرياضي يربط التوجيه بدون مُصنِّف بـالتوجيه بالمُصنِّف عبر نظرية بايز. الفكرة أنّ أي نموذج توليدي مشروط وغير مشروط يحمل ضمنياً مصنّفاً يمكن تعريفه بوصفه نسبة بينهما.

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

عملياً التقديرات ليست دقيقة تماماً، لأنها تأتي من شبكات عصبية حرّة لا تُشكّل حقول متّجهات محافظة. لذلك لا يمكن للنتيجة المُوجَّهة ε̃_θ أن تكون حرفياً تدرّج لوغاريتم احتمال أي مصنّف. لكن التجارب تُظهر أنّ الأسلوب يعمل بنفس الفعالية — إشارة التوجيه لا تحتاج أن تكون تدرّج مصنّف حقيقي لتؤدّي الغرض.

zλ ⁣logpi(czλ)  =  1σλ[ϵ(zλ,c)ϵ(zλ)]\nabla_{z_\lambda}\!\log p^i(c|z_\lambda) \;=\;-\frac{1}{\sigma_\lambda} \bigl[\epsilon^*(z_\lambda, c)-\epsilon^*(z_\lambda)\bigr]
تدرّج المصنّف الضمنيتدرّج المصنّف الضمني (المُستخرَج من نظرية بايز) هو ببساطة الفرق بين تقدير النتيجة المشروطة وغير المشروطة، مقسوماً على σ. وهذا بالضبط هو الاتجاه الذي يُضخّمه التوجيه بدون مصنّف.

التجارب: الدليل على نجاح الفكرة

اختبر الباحثون الأسلوب على توليد صور ImageNet المشروطة بالفئة عند دقّتَيْ 64×64 و128×128 — وهو المعيار المرجعي المعتمد لدراسة المقايضة بين الجودة والتنوّع منذ BigGAN. غيّروا وزن التوجيه w من 0 إلى 4، وقاسوا نتيجة FID (الأقل أفضل للتنوّع) ونتيجة Inception (الأعلى أفضل للدقّة).

أبرز النتائج: عند w=0 (بلا توجيه) يُنتج النموذج عيّنات متنوّعة لكنها ليست مثالية. بمجرد إضافة توجيه خفيف (w بين 0.1 و0.3) تتحسّن نتيجة FID بشكل ملحوظ، وتتفوّق أحياناً على النماذج المُوجَّهة بمصنّف. أما التوجيه القوي (w≥4) فيدفع نتيجة IS إلى أقصاها على حساب FID، بمنحنى يُطابق تماماً منحنى الاقتطاع في الشبكات التنافسية. على ImageNet بدقة 128×128 تحديداً: التوجيه بدون مصنّف عند w=0.3 يتفوّق على ADM-G (خطّ الأساس المُوجَّه بمصنّف) في FID، وعند w=4.0 يتفوّق على BigGAN-deep في FID وIS معاً.

أما بالنسبة لاحتمال التدريب غير المشروط p_uncond، فالقيمتان 0.1 و0.2 أعطتا أداءً متقارباً، بينما p_uncond=0.5 كان أسوأ باستمرار — ما يعني أنّ جزءاً صغيراً فقط من سعة التدريب يحتاج تخصيصه للتعلّم غير المشروط. وفيما يخصّ عدد خطوات التوليد T: النموذج يستفيد من خطوات أكثر (T=256 يمثّل توازناً جيداً)، لكن كل خطوة تكلّف تمريرتين أماميتين، فالمقارنة العادلة سرعةً مع التوجيه بالمصنّف تكون عند نصف عدد الخطوات.

افتح في المختبر
منحنى المقايضة بين FID وIS. كل نقطة تمثّل وزن توجيه w مختلفاً. الوزن المنخفض يُرجّح التنوّع (FID أقل)، والمرتفع يُرجّح الدقّة (IS أعلى).
تستيقظ التجربة عند وصولك…

البديهة البصرية: التوجيه على توزيعات غاوسية

تعرض الورقة مثالاً توضيحياً بسيطاً لكنه بليغ. تخيّل ثلاث فئات، كلٌّ منها ممثّلة بتوزيع غاوسي متناحٍ في بعدين. بدون توجيه، الكثافة الناتجة هي مزيج من ثلاث كتل احتمالية متداخلة. لكن مع رفع شدّة التوجيه، يحدث شيء لافت: كثافة كل فئة تتشدّد وتنكمش وتبتعد عن جاراتها. الأشكال لم تعد غاوسية — كأنّ كل فئة «تُطالب بمنطقتها» وتدفع الكتلة الاحتمالية بعيداً عن الفئات المجاورة.

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

افتح في المختبر
ثلاث فئات غاوسية بشدّة توجيه قابلة للتعديل. لاحظ كيف تتشدّد كل فئة وتنفصل عن جاراتها مع ارتفاع w.
تستيقظ التجربة عند وصولك…

لماذا انتصر التوجيه بدون مصنّف: البساطة والنقاء

تُحدّد الورقة عدة مزايا لـالتوجيه بدون مُصنِّف مقارنة بـالتوجيه بالمُصنِّف.

البساطة: سطر كود واحد أثناء التدريب (حذف عشوائي للتسمية)، ومعادلة واحدة عند التوليد. لا نموذج ثانٍ يُدرَّب أو يُختبَر أو يُنشر.

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

المرونة: الأسلوب يعمل مع أي إشارة تشريط، ليس فقط مع تسميات الفئات. لهذا أصبح العمود الفقري لنماذج تحويل النص إلى صورة مثل Imagen وStable Diffusion، حيث تُستبدل «الفئة» بـتضمين النص.

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

الجدول الزمني: من الفكرة إلى المعيار الصناعي

  1. 2020

    DDPM — الأساس الحديث لنماذج الانتشار

    هو وجَين وأبيل يضعون الصياغة الرسمية لنماذج الانتشار الاحتمالية لإزالة الضجيج، ويُرسون إطار التدريب والتوليد الذي سيُبنى عليه التوجيه لاحقاً.

  2. 2021

    الانتشار يتفوّق على GAN + التوجيه بالمصنّف

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

  3. 2021

    طرح التوجيه بدون مصنّف

    هو وساليمانز يقدّمان البديل بدون مصنّف في ورشة عمل NeurIPS 2021. الأسلوب يستغني عن المصنّف المنفصل بتعديل سطر واحد في كود التدريب.

  4. 2022

    Imagen وDALL·E 2 تتبنّيان CFG

    Imagen من Google وDALL·E 2 من OpenAI تعتمدان التوجيه بدون مصنّف آليةً جوهرية للتشريط في تحويل النص إلى صورة، ممّا أثبت فعالية الأسلوب على نطاق واسع.

  5. 2022

    Stable Diffusion تنقل CFG إلى الجمهور العريض

    Stable Diffusion تُتيح التوجيه بدون مصنّف لملايين المستخدمين. شريط تمرير «CFG Scale» يصبح عنصر تحكّم مألوفاً في كل واجهة لتوليد الصور بالذكاء الاصطناعي.

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

المرجعHo, Salimans. Classifier-Free Diffusion Guidance. NeurIPS Workshop 2021 / arXiv 2022, 2022.

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