الرئيسيةمن أناالدوراتالمدونةسوق الأوامرالمناهج والباقاتالشركاء

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

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

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • سوق الأوامر
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالمناهجالمدونةالدخول
الذكاء الاصطناعي

نماذج الانتشار Diffusion: إزاي الذكاء الاصطناعي بيرسم صورة من ضوضاء عشوائية

متوسط28 يوليو 20265 دقائق قراءة
نماذج الانتشار Diffusion: إزاي الذكاء الاصطناعي بيرسم صورة من ضوضاء عشوائية

هذا المقال يتطلب مستوى متوسط. يفترض إنك تعرف أساسيات الشبكات العصبية وتقدر تقرأ كود Python، لكنك ما اشتغلتش قبل كده على النماذج التوليدية.

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

نماذج الانتشار: من الضوضاء إلى الصورة

المشكلة باختصار: منين بتيجي الصورة أصلًا

Midjourney وStable Diffusion وDALL·E كلهم بيشتغلوا بنفس الفكرة الأساسية: نماذج الانتشار (Diffusion Models). السؤال اللي بيحيّر أغلب الناس: النموذج بيرسم الصورة منين؟ الإجابة اللي بتحصل فعلاً إنه مبيرسمش من ورقة بيضا. بيبدأ من ضوضاء عشوائية بالكامل، وبيشيلها على مراحل لحد ما تظهر صورة.

المثال الأول: ثلج التلفزيون القديم

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

ده بالظبط اللي بيعمله نموذج الانتشار. بيبدأ من "ثلج" (ضوضاء)، وبيتدرّب على إنه يشيل جزء صغير من الضوضاء في كل خطوة. النموذج مش بيرسم، هو بيعمل إزالة ضوضاء (denoising) متكررة.

الشرح العلمي: عمليتان متعاكستان

نموذج الانتشار مبني على عمليتين. الأولى ثابتة ومعروفة، والتانية هي اللي بنتعلمها.

الانتشار الأمامي (Forward): نبدأ من صورة حقيقية x0 ونضيف عليها ضوضاء غاوسية على خطوات صغيرة، من x1 لحد xT (عادة T = 1000). عند آخر خطوة، الصورة بتبقى ضوضاء نقية تقريبًا. العملية دي حتمية الشكل ومفيهاش تعلّم، مجرد إضافة ضوضاء بجدول معروف. ودي سلسلة ماركوف: كل خطوة بتعتمد على اللي قبلها بس.

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

الافتراض المهم هنا: إن الخطوات صغيرة كفاية لدرجة إن كل خطوة عكسية تقدر تُقرّب بتوزيع غاوسي. ده اللي بيخلي المسألة قابلة للتعلم من الأساس (Ho et al., 2020).

مثال تنفيذي: الانتشار الأمامي والعكسي بالكود

الكود ده بيوضّح الجزء الرياضي بدون أي مكتبات تقيلة. الانتشار الأمامي شغّال بالكامل. العكسي محتاج شبكة مدرّبة تتنبأ بالضوضاء، فسبناها كمدخل.

Python
import numpy as np

T = 1000
betas = np.linspace(1e-4, 0.02, T)      # جدول الضوضاء الخطي (Ho et al., 2020)
alphas = 1.0 - betas
alpha_bar = np.cumprod(alphas)          # الناتج التراكمي ᾱ_t

def add_noise(x0, t):
    """الانتشار الأمامي: نوصل لأي خطوة t في معادلة واحدة."""
    eps = np.random.randn(*x0.shape)                 # ضوضاء غاوسية قياسية
    xt = np.sqrt(alpha_bar[t]) * x0 + np.sqrt(1 - alpha_bar[t]) * eps
    return xt, eps

x0 = np.random.rand(64, 64)             # صورة مبسّطة 64×64
x_noisy, _ = add_noise(x0, t=900)       # قرب النهاية = ضوضاء شبه كاملة
print(round(x_noisy.std(), 2))          # ~1.0: بقى توزيع غاوسي قياسي تقريبًا

def denoise_step(xt, t, eps_theta):
    """خطوة عكسية واحدة من x_t إلى x_{t-1}. eps_theta = تنبؤ الشبكة بالضوضاء."""
    a, ab = alphas[t], alpha_bar[t]
    mean = (xt - (1 - a) / np.sqrt(1 - ab) * eps_theta) / np.sqrt(a)
    z = np.random.randn(*xt.shape) if t > 0 else 0
    return mean + np.sqrt(betas[t]) * z

ركز في السطر x_noisy.std(): بيطبع قيمة قريبة من 1.0، لإن بعد 900 خطوة الصورة بقت شبه ضوضاء غاوسية قياسية. ده اللي بيخلّينا نبدأ التوليد من np.random.randn بالظبط.

ليه بطيئة، وإزاي نسرّعها بالأرقام

المشكلة العملية إن كل خطوة عكسية = تمريرة كاملة للشبكة. لو بتولّد صورة 512×512 بـ DDPM الأصلي على 1000 خطوة، ده 1000 تمريرة للصورة الواحدة. النتيجة عشرات الثواني لكل صورة على GPU متوسط.

فيه طريقتين أساسيتين للتسريع، وكل واحدة ليها ثمنها:

  • DDIM بدل DDPM: عيّنة حتمية تقدر تقفز خطوات. بتنزّل من 1000 خطوة لـ 20 إلى 50 خطوة بجودة قريبة جدًا. ده تسريع 20 إلى 50 مرة. بتكسب السرعة، بتخسر جزء بسيط من التنوّع العشوائي في المخرجات (Song et al., 2021).
  • الانتشار الكامن (Latent Diffusion): بدل ما نشتغل على البكسل مباشرة، نضغط الصورة لفضاء كامن أصغر. 512×512×3 = حوالي 786 ألف قيمة، بينما الفضاء الكامن 64×64×4 = حوالي 16 ألف قيمة. ده فضاء أصغر بحوالي 48 مرة، فالحساب أرخص بكتير. ده أساس Stable Diffusion (Rombach et al., 2022). الثمن: محتاج مُرمِّز/فاكّ ترميز (VAE) مدرّب كويس، وأي عيب فيه بيظهر في كل الصور.

وللسياق، نموذج DDPM الأصلي حقّق FID = 3.17 على مجموعة CIFAR-10، وده كان وقتها من أفضل النتائج في التوليد غير المشروط (Ho et al., 2020). الرقم ده مهم لإنه بيقيس جودة التوزيع مش صورة واحدة.

متى لا تستخدم نماذج الانتشار

مش دايمًا هي الأداة الصح:

  • لو محتاج توليد لحظي بأقل زمن ممكن (real-time) وجودة عالية مش شرط، نماذج GAN لسه أسرع في تمريرة واحدة.
  • لو شغلك على بيانات صغيرة أو مهمة تصنيف عادية، ده over-engineering. مش كل مشكلة محتاجة نموذج توليدي.
  • لو مواردك محدودة (بدون GPU)، تدريب نموذج انتشار من الصفر مكلف. الأفضل تستخدم نموذج جاهز عبر مكتبة زي Hugging Face Diffusers.

الخطوة التالية

افتح مكتبة diffusers من Hugging Face، وشغّل StableDiffusionPipeline مرة بـ 50 خطوة ومرة بـ 20 خطوة على نفس الـ prompt والـ seed. قارن الزمن والجودة بعينك. لو الفرق في الجودة مش واضح والزمن اتنصف، يبقى عندك دليل عملي إن تقليل الخطوات هو أول مكان تكسب منه سرعة.

المصادر

  • Ho, Jain, Abbeel — "Denoising Diffusion Probabilistic Models" (DDPM), NeurIPS 2020. مصدر جدول الضوضاء الخطي، معادلة الانتشار الأمامي، ورقم FID = 3.17 على CIFAR-10.
  • Song, Meng, Ermon — "Denoising Diffusion Implicit Models" (DDIM), ICLR 2021. مصدر التسريع من 1000 خطوة لـ 20–50 خطوة.
  • Rombach et al. — "High-Resolution Image Synthesis with Latent Diffusion Models", CVPR 2022. أساس Stable Diffusion وفكرة الفضاء الكامن الأصغر.
  • Hugging Face Diffusers Documentation — التوثيق الرسمي لتشغيل خطوط أنابيب الانتشار عمليًا (StableDiffusionPipeline وجداول أخذ العيّنات).

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة