Diffusion Models
تولّد نماذج الانتشار الصور والفيديو والصوت عبر تعلّم عكس عملية إضافة الضوضاء تدريجيًا، خطوة بخطوة، من ضوضاء خالصة إلى عينة جديدة.
نماذج الانتشار هي نماذج الذكاء الاصطناعي التوليدي التي تنشئ البيانات بتعلّم عكس عملية تدريجية لإضافة الضوضاء. أثناء التدريب، تُشوَّه الصور أو غيرها من البيانات بضوضاء غاوسية عبر خطوات صغيرة عديدة، وتتعلم شبكة عصبية التنبؤ بالضوضاء في كل خطوة. وللتوليد، يبدأ النموذج بضوضاء عشوائية خالصة ويزيلها خطوةً تلو الأخرى حتى تظهر عينة جديدة. اقترح ياشا سول-ديكشتاين وزملاؤه هذا النهج عام 2015 في التعلم العميق غير الخاضع للإشراف باستخدام الديناميكا الحرارية خارج التوازن، وجعله جوناثان هو وأجاي جاين وبيتر أبيل تنافسيًا عام 2020 عبر نماذج الانتشار الاحتمالية لإزالة الضوضاء (DDPM)، التي سجلت قيمة قياسية بلغت 3.17 وفق مقياس FID على CIFAR-10. وفي عام 2021، أظهر باحثو OpenAI أن نماذج الانتشار تفوقت على GANs في توليد الصور على ImageNet، وأصبحت نماذج الانتشار والنماذج المرتبطة بها القائمة على مطابقة التدفق تشغّل الآن أنظمة تحويل النص إلى صورة مثل Stable Diffusion، ومولدات الفيديو، ومحررات الصور، والنماذج العلمية.
آلية عمل نماذج الانتشار#
تكون العملية الأمامية ثابتة لا متعلَّمة. فهي تضيف قدرًا قليلًا من الضوضاء الغاوسية في كل خطوة من T خطوات؛ ويستخدم DDPM عدد T = 1,000، مع تباين للضوضاء يرتفع خطيًا من 0.0001 إلى 0.02 في كل خطوة. ولأن مجموع الضوضاء الغاوسية يظل غاوسيًا، يمكن نقل صورة التدريب مباشرةً إلى أي خطوة t بصيغة مغلقة، xt = sqrt(alpha_bar_t) * x0 + sqrt(1 - alpha_bar_t) * noise، حيث إن alpha_bar_t هو حاصل ضرب 1 - beta على مدى الخطوات t الأولى. ويختار التدريب مرارًا صورةً وخطوة عشوائية وضوضاء جديدة، ثم ينشئ xt ويعلّم الشبكة التنبؤ بتلك الضوضاء باستخدام متوسط مربع الخطأ، وهو الهدف المبسط في DDPM. يطبق هذا الرمز العملية الأمامية على صورة باستخدام جدول DDPM:
import urllib.request
import numpy as np
import torch
from PIL import Image
# DDPM's linear schedule: 1,000 steps whose noise variance rises from 0.0001 to 0.02
betas = torch.linspace(1e-4, 0.02, 1000)
alpha_bar = torch.cumprod(1 - betas, dim=0)
# Load a photo and scale its pixels to [-1, 1]
image = Image.open(urllib.request.urlopen("https://ultralytics.com/images/bus.jpg")).convert("RGB").resize((256, 256))
x0 = torch.tensor(np.array(image), dtype=torch.float32).permute(2, 0, 1) / 127.5 - 1
# Jump straight to step t in closed form: x_t = sqrt(alpha_bar) * x0 + sqrt(1 - alpha_bar) * noise
frames = []
for t in (0, 99, 299, 599, 999):
xt = alpha_bar[t].sqrt() * x0 + (1 - alpha_bar[t]).sqrt() * torch.randn_like(x0)
frames.append(((xt.clamp(-1, 1) + 1) * 127.5).byte().permute(1, 2, 0).numpy())
print(f"step {t + 1}: image weight {alpha_bar[t].sqrt():.3f}, noise weight {(1 - alpha_bar[t]).sqrt():.3f}")
Image.fromarray(np.hstack(frames)).save("forward_diffusion.jpg")ينخفض وزن الصورة من 1.000 عند الخطوة 1 إلى 0.947 عند الخطوة 100، و0.630 عند الخطوة 300، و0.161 عند الخطوة 600، و0.006 عند الخطوة 1,000، بينما يرتفع وزن الضوضاء إلى 1.000. ويُظهر forward_diffusion.jpg المحفوظ الحافلة واضحةً، ثم محببة، ثم باهتة، ثم مختفية.
يجري التوليد العملية بالعكس. إذ يبدأ بضوضاء غاوسية محضة، وفي كل خطوة تتنبأ الشبكة بالضوضاء في العينة الحالية، ثم تزيل خوارزمية الحل جزءًا منها، وتُمرر النتيجة الأنقى قليلًا إلى الخطوة التالية. ويدخل الطلب النصي أو تسمية الفئة إلى الشبكة بوصفه شرطًا، غالبًا عبر الانتباه المتقاطع. أما التوجيه الخالي من المصنّف، الذي قدمه جوناثان هو وتيم سالمانس، فيدرّب شبكة واحدة باستخدام الشرط ومن دونه، ثم يستقرئ من التنبؤ غير المشروط باتجاه التنبؤ المشروط عند أخذ العينات؛ ويؤدي رفع مقياس التوجيه، مثل القيمة الافتراضية 7.5 في مسارات Stable Diffusion 1.x، إلى التزام أكبر بالطلب على حساب التنوع.
تسريع أخذ العينات#
يتطلب أخذ العينات باستخدام DDPM تقييم الشبكة 1,000 مرة لكل صورة، لذا انصب جانب كبير من تقدم المجال على تقليص هذا العدد:
- أدوات أخذ عينات أفضل: يعيد DDIM استخدام DDPM مدرّب مع أداة أخذ عينات حتمية، وينتج عينات عالية الجودة بسرعة فعلية أكبر من 10 إلى 50 مرة. وتخفض خوارزميات حل معادلات ODE اللاحقة التوليد المعتاد إلى نحو 20–50 خطوة.
- الانتشار الكامن: يزيل نموذج الانتشار الكامن الضوضاء من تمثيل مضغوط ينتجه مشفّر تلقائي بدلًا من البكسلات. ويحوّل المشفّر التلقائي في Stable Diffusion صورة بحجم 512×512×3 إلى تمثيل كامن بحجم 64×64×4، أي عدد قيم أقل بمقدار 48 مرة.
- التقطير: تتعلم نماذج الاتساق تحويل أي عينة مشوشة مباشرةً إلى عينة نظيفة، ما يتيح التوليد بخطوة واحدة، وتطبق نماذج الاتساق الكامنة الفكرة نفسها على Stable Diffusion باستخدام خطوتين إلى أربع خطوات.
- مسارات أكثر استقامة: تدرّب مطابقة التدفق والتدفق المصحح على مسارات مستقيمة تصل بين الضوضاء والبيانات، ويمكن لخوارزميات الحل اتباعها بخطوات أقل.
انتقلت شبكة إزالة الضوضاء نفسها من بنية U-Net الالتفافية في DDPM وStable Diffusion 1.x إلى محوّل الانتشار (DiT)، الذي تستخدمه معظم مولدات الصور والفيديو الحالية.
نماذج الانتشار مقارنةً بالنماذج التوليدية الأخرى#
- الشبكات التوليدية التنافسية (GANs): تولّد GAN عينة بتمريرة أمامية واحدة، لكن تدريبها التنافسي بين المولّد والمميّز عرضة لعدم الاستقرار وانهيار الأنماط، حيث لا يغطي المولّد سوى جزء من البيانات. أما تدريب نماذج الانتشار فهو انحدار مستقر ويغطي توزيع البيانات على نحو أكمل، على حساب الحاجة إلى خطوات عديدة لأخذ العينات.
- المشفّرات التلقائية التغايرية (VAEs): يفك VAE ترميز متجه كامن إلى عينة في تمريرة واحدة، وتميل عيناته إلى أن تكون أكثر ضبابية. ولا تستخدم نماذج الانتشار الكامن مشفّرًا تلقائيًا على غرار VAE إلا لضغط الصور، وتترك التوليد لنموذج الانتشار.
- النماذج ذاتية الانحدار: تولّد النماذج اللغوية والنماذج البصرية ذاتية الانحدار رمزًا واحدًا أو مقياسًا واحدًا في كل مرة، اعتمادًا على ما سبق. ويحسّن نموذج الانتشار كل أجزاء العينة بالتوازي في كل خطوة، وتطبق نماذج الانتشار اللغوية عملية إزالة الضوضاء نفسها على النص.
تطبيقات عملية#
- توليد الصور وتحريرها: تنشئ نماذج تحويل النص إلى صورة صورًا انطلاقًا من الطلبات، ويعيد ملء الصور توليد منطقة مقنّعة بما يلائم محيطها، ويقيّد ControlNet التخطيط باستخدام خرائط الحواف أو العمق أو الوضعية، كما تنفذ أدوات تحسين دقة الانتشار رفعًا للدقة الفائقة.
- توليد الفيديو: تزيل نماذج توليد الفيديو الضوضاء من تمثيلات كامنة مضغوطة تشمل إطارات عديدة في آن واحد، لذا يُولّد كل إطار مع الإطارات المجاورة له.
- بيانات التدريب الاصطناعية: تملأ الصور المولّدة الفجوات في مجموعات بيانات الرؤية، مثل العيوب النادرة والطقس غير المعتاد وزوايا الرؤية غير الشائعة. وفي مجموعة بيانات على منصة Ultralytics، ينشئ إجراء توليد صور مشابهة من صورة موجودة صورةً واحدة إلى 16 صورة جديدة في كل دفعة، وتُضاف الصور التي تحتفظ بها إلى مجموعة البيانات دون تسميات، لتكون جاهزة للتعليق التوضيحي.
- الروبوتات: تولّد سياسات الانتشار تسلسلات أفعال الروبوتات بإزالة الضوضاء منها، اعتمادًا على صور الكاميرا.
- العلوم: يتنبأ AlphaFold 3 ببُنى معقدات البروتينات والأحماض النووية والجزيئات الصغيرة باستخدام وحدة انتشار تزيل الضوضاء من إحداثيات الذرات الأولية، لتحل محل وحدة البنية في AlphaFold 2.










