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

الشبكات التوليدية التنافسية

Generative Adversarial Networks

Goodfellow, I. J. · Pouget-Abadie, J. · Mirza, M. · Xu, B. · Warde-Farley, D. · Ozair, S. · Courville, A. · Bengio, Y. — NeurIPS

المشكلة

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

الإسهام

شبكات GAN: إطار يتجاوز مسألة تقدير الكثافة الاحتمالية من أساسها. شبكتان عصبيتان تتنافسان في لعبة minimax — المُولِّد G يحوِّل ضجيجاً عشوائياً z إلى عيّنات مُصطنَعة، والمُميِّز D يحكم إن كانت العيّنة حقيقية أم مُزيّفة. يُدرَّب G على تعظيم أخطاء D، بينما يُدرَّب D على تقليلها. عند نقطة التوازن، يتعلّم G توليد التوزيع الحقيقي للبيانات ويُخرج D القيمة ½ لكل مُدخَل. لا سلاسل ماركوف، لا استدلال تقريبي، لا كثافة صريحة — فقط انتشار عكسي عبر شبكتين متنافستين.

الأثر

أشعلت شبكات GAN ثورة في الذكاء الاصطناعي التوليدي. منها تفرّعت DCGAN (تدريب التفافي مستقر)، وWGAN (مسافة واسرشتاين لاستقرار التدرُّجات)، وPix2Pix وCycleGAN (تحويل صورة إلى صورة)، وStyleGAN (توليد وجوه بجودة فوتوغرافية)، وألهمت في نهاية المطاف نماذج الانتشار. كما فتحت الباب لتطبيقات عملية مثل تحسين الدقة الفائقة، ، والتزييف العميق، واكتشاف الأدوية، وتوليد الفنّ. وصف يان لوكان التدريب التنافسي بأنه «أهمّ فكرة في العقد الأخير في تعلُّم الآلة».

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

جولةً بعد جولة، يدرس المزوِّر أيَّ المُزيّفات خدعت الأمينة، وتدرس الأمينة كيف أفلتت تلك المُزيّفات. كلّ إخفاق يُعلِّم كلا الطرفين شيئاً جديداً. بعد آلاف الجولات، يُنتج المزوِّر لوحات لا تُميَّز عن أعمال رامبرانت — والأمينة لا تملك إلا التخمين.

هذا بالضبط ما تفعله الشبكة التوليدية التنافسية (GAN). هو المزوِّر، و هو الأمينة. المنافسة بينهما هي إشارة التدريب الوحيدة التي يحتاجها كلاهما.

المشكلة: توليد بيانات واقعية أمرٌ صعب

بحلول عام 2014، كانت النماذج التوليدية مُقسَّمة إلى معسكرين، وكلاهما يحمل قيداً جوهرياً:

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

  • نماذج سلاسل ماركوف (مثل آلات بولتزمان) تستطيع تمثيل توزيعات معقّدة، لكنها تحتاج إلى عملية أخذ عيّنات تكرارية مُكلِفة — آلاف الخطوات لتوليد صورة واحدة.

لم ينجح أيٌّ من المعسكرين في إنتاج صور حادّة ومتنوعة من توزيعات معقّدة بكفاءة. فماذا لو أمكننا تدريب شبكة عصبية على إنتاج عيّنات مباشرةً — دون الحاجة إلى كتابة دالة كثافة أصلاً؟

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

الفكرة: اجعل شبكتين تتنافسان

البصيرة التي طرحها Goodfellow كانت تجاوز مسألة تقدير الكثافة بالكامل. بدلاً من أن تسأل «ما قيمة p(x)p(x)؟»، اسأل «هل تستطيع التفريق بين عيّناتي المُصطنَعة والبيانات الحقيقية؟» — ثم درِّب شبكة عصبية وظيفتها الوحيدة الإجابة عن هذا السؤال.

يتألّف الإطار من لاعبين اثنين:

  • المُولِّد GG يأخذ ضجيجاً عشوائياً zz مسحوباً من توزيع بسيط (كالتوزيع الغاوسي) ويحوّله إلى عيّنة بيانات G(z)G(z). فكِّر في zz كبطاقة وصفة: كل نقطة في تُنتج صورة مختلفة.

  • المُميِّز DD يستقبل إمّا عيّنة حقيقية xx من مجموعة البيانات أو عيّنة مُصطنَعة G(z)G(z) من المُولِّد، ويُخرج احتمال أن يكون المُدخَل حقيقياً.

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

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

لعبة الأصغري-الأعظمي: جوهر تدريب GAN

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

minGmaxD  V(D,G)=Expdata[logD(x)]+Ezpz[log(1D(G(z)))]\min_G \max_D \; V(D,G) = \mathbb{E}_{x \sim p_{\text{data}}}[\log D(x)] + \mathbb{E}_{z \sim p_z}[\log(1 - D(G(z)))]
دالة هدف Minimax في GANالحدّ الأول يكافئ المُميِّز على التصنيف الصحيح للبيانات الحقيقية (D(x) قريب من 1). والحدّ الثاني يكافئه على رفض المُزيّفات (D(G(z)) قريب من 0) — لكن المُولِّد يسعى للعكس تماماً: أن يكون D(G(z)) قريباً من 1. المُميِّز يُعظِّم الحدّين معاً، والمُولِّد يُصغِّر الحدّ الثاني.
افتح في المختبر
اسحب المنزلق لترى كيف يتدافع سطحا خسارة المُولِّد والمُميِّز ضدّ بعضهما.
تستيقظ التجربة عند وصولك…

خوارزمية التدريب: التحسين بالتناوب

يتناوب تدريب GAN بين خطوتين في كل تكرار:

الخطوة الأولى — تدريب المُميِّز. اسحب دفعة صغيرة من البيانات الحقيقية xx ودفعة من zz. ولِّد عيّنات مُصطنَعة G(z)G(z). حدِّث أوزان D لتعظيم logD(x)+log(1D(G(z)))\log D(x) + \log(1 - D(G(z))). بهذا يتحسّن المُميِّز في التفريق بين الحقيقي والمُزيّف.

الخطوة الثانية — تدريب المُولِّد. اسحب دفعة جديدة من الضجيج zz. ولِّد عيّنات مُصطنَعة G(z)G(z) ومرِّرها إلى المُميِّز. حدِّث أوزان G لتعظيم logD(G(z))\log D(G(z)) (الصيغة العملية). بهذا يتحسّن المُولِّد في خداع المُميِّز.

النقطة الجوهرية هنا: عند تحديث G تُجمَّد أوزان D، والعكس صحيح. كل لاعب يتحسّن فقط في مواجهة الاستراتيجية الحالية للاعب الآخر — تماماً كنقلات متناوبة في مباراة شطرنج.

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

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

for epoch in range(num_epochs):
    for real_batch in dataloader:
        # ── الخطوة 1: تدريب المُميِّز ──
        z = torch.randn(batch_size, latent_dim)
        fake = G(z).detach()          # لا نحسب تدرُّجات G هنا
        loss_D = -( log(D(real_batch)) + log(1 - D(fake)) ).mean()
        loss_D.backward()
        optimizer_D.step()

        # ── الخطوة 2: تدريب المُولِّد ──
        z = torch.randn(batch_size, latent_dim)
        fake = G(z)
        loss_G = -log(D(fake)).mean()  # الصيغة العملية
        loss_G.backward()
        optimizer_G.step()

الضمانات النظرية: الأمثليّة والتقارب

أثبت Goodfellow نتيجتين نظريتين أساسيتين تُرسِّخان لعبة الأصغري-الأعظمي:

النتيجة الأولى: المُميِّز الأمثل. لأيّ مُولِّد ثابت G، يكون المُميِّز الأمثل هو:

DG(x)=pdata(x)pdata(x)+pg(x)D^*_G(x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + p_g(x)}
المُميِّز الأمثلتصف هذه المعادلة أفضل مُميِّز ممكن عند تثبيت المُولِّد. المُميِّز هنا يُقدِّر احتمال أن تكون العيّنة قادمة من البيانات الحقيقية وليست مُولَّدة اصطناعياً. مع تحسُّن المُولِّد وازدياد واقعية مخرجاته، يصبح التمييز أصعب. وعندما يتطابق توزيع المُولِّد تماماً مع توزيع البيانات الحقيقية، لا يعود بإمكان المُميِّز التفوّق على التخمين العشوائي — وهذا يعني أن اللعبة التنافسية وصلت إلى حالة التوازن.

النتيجة الثانية: الأمثل الشامل. عندما يكون المُميِّز في حالته المثلى، يتحوّل هدف المُولِّد إلى تصغير بين توزيع البيانات الحقيقية والتوزيع المُولَّد. هذا التباعد يساوي صفراً فقط عندما يكون التوزيعان متطابقين تماماً. أي أن النقطة المثلى الشاملة تتحقّق عند pg=pdatap_g = p_{\text{data}} — حين يتعلّم المُولِّد إنتاج التوزيع الحقيقي بالضبط.

C(G)=log4+2JSD(pdatapg)C(G) = -\log 4 + 2 \cdot \text{JSD}(p_{\text{data}} \| p_g)
تكلفة المُولِّد عند المُميِّز الأمثلحين يعمل المُميِّز بأفضل أداء ممكن، ترتبط تكلفة المُولِّد مباشرة بمقدار الفرق بين التوزيع المُولَّد وتوزيع البيانات الحقيقية. فكلّما اقتربت العيّنات المُولَّدة من البيانات الفعلية، انخفضت التكلفة. حدّ التباعد يعمل كمقياس لعدم التطابق بين التوزيعين، ولا يبلغ قيمته الدنيا إلا عند التطابق التامّ. أمّا الحدّ الثابت log4-\log 4 فلا يؤثّر في عملية التحسين.

بنية المُولِّد والمُميِّز

في الورقة الأصلية، كلٌّ من G وD عبارة عن (شبكة كاملة الاتصال). يستخدم المُولِّد تنشيط في طبقاته المخفيّة ودالة سيجمويد في المخرَج لإنتاج قيم بكسل في النطاق [0, 1]. أمّا المُميِّز فيستخدم تنشيطات maxout مع للتنظيم، ودالة سيجمويد نهائية تُخرج احتمالاً.

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

افتح في المختبر
اسحب عبر الفضاء الكامن ثنائي الأبعاد. كل نقطة تُنتج عيّنة مختلفة — الحركة السلسة تعني انتقالات سلسة بين الصور.
تستيقظ التجربة عند وصولك…

التحدّيات العملية: حين تنحرف المنافسة

لعبة الأصغري-الأعظمي أنيقة نظرياً لكنها هشّة عملياً. يُعاني تدريب GAN من مشكلتين شائعتين بشكل خاص:

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

  • عدم استقرار التدريب. إذا تفوّق المُميِّز بسرعة كبيرة، يرفض جميع المُزيّفات بثقة تقارب 1، فتصل تدرُّجات المُولِّد إلى ما يقارب الصفر — وهي مشكلة في سياق GAN. وبالعكس، إذا خدع المُولِّد المُميِّز تماماً، تتلاشى تدرُّجات المُميِّز. يجب أن يظلّ اللاعبان في توازن تقريبي — وهي معادلة دقيقة تجعل ضبط تدريب GAN أمراً صعباً بالتجربة.

عالجت أعمال لاحقة هذه المشكلات: DCGAN قدّمت بنيات التفافية مستقرة، وWGAN استبدلت تباعد جنسن-شانون بمسافة واسرشتاين لتدرُّجات أكثر سلاسة، والتسوية الطيفية (spectral normalization) حدّت من قدرة المُميِّز لمنعه من التغلُّب على المُولِّد.

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

لماذا شبكات GAN مهمّة: المزايا مقارنةً بالطرق السابقة

أبرزت الورقة عدة مزايا للإطار التنافسي:

  • لا حاجة لسلاسل ماركوف — تُولَّد العيّنات بتمريرة أمامية واحدة عبر المُولِّد. قارن ذلك بآلات بولتزمان التي تحتاج آلاف الخطوات لسحب عيّنة واحدة.

  • لا حاجة للاستدلال أثناء التدريب — بخلاف VAE، لا يوجد مُرمِّز ولا شبكة تعرُّف. كل ما يُستخدَم هو .

  • عيّنات حادّة — لأن المُولِّد يُدرَّب على خداع المُميِّز (وهو مُصنِّف ثنائي)، فعليه إنتاج مخرجات حادّة وواقعية. النماذج المبنيّة على الأرجحية تُراكم متوسّطاً بين الأنماط فتُنتج صوراً ضبابية.

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

افتح في المختبر
قارن مخرجات GAN مع VAE — لاحظ كيف يُنتج التدريب التنافسي نتائج أحدّ من التدريب القائم على الأرجحية.
تستيقظ التجربة عند وصولك…

ما الذي أطلقته شبكات GAN

  1. 2014

    GAN — الورقة الأصلية

    قدّمت الإطار التنافسي باستخدام بيرسبترونين متعددي الطبقات. ولّدت عيّنات ضبابية لكن واعدة على MNIST وCIFAR. أثبتت أن التنافس وحده كافٍ لقيادة التعلُّم التوليدي.

  2. 2015

    DCGAN — شبكات GAN التفافية مستقرة

    استبدلت البيرسبترونات ببنيات التفافية عميقة. تسوية الدُّفعات والإرشادات البنيوية جعلت التدريب مستقراً لأول مرة، وأنتجت صور غرف نوم مُقنعة.

  3. 2016

    Pix2Pix — تحويل صورة إلى صورة بأزواج

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

  4. 2017

    WGAN — مسافة واسرشتاين بدلاً من JSD

    استبدلت تباعد جنسن-شانون بمسافة واسرشتاين، ممّا وفّر تدرُّجات ذات معنى حتى عندما لا يتداخل التوزيعان. حسّنت استقرار تدريب GAN بشكل ملحوظ.

  5. 2017

    CycleGAN — تحويل صور بلا أزواج

    حوّلت بين مجالات الصور دون الحاجة إلى أمثلة متزاوجة — أحصنة إلى حمر وحشية، صيف إلى شتاء. قدّمت خسارة التناسق الدوري للحفاظ على المحتوى عند تغيير الأسلوب.

  6. 2019

    StyleGAN — توليد وجوه بجودة فوتوغرافية

    أنتجت أول وجوه مُولَّدة لا تُميَّز عن الصور الفوتوغرافية. مزج الأنماط والتحكُّم في الفضاء الكامن أتاحا تعديلاً دقيقاً لملامح الوجه.

  7. 2020

    ELECTRA — التدريب المسبق التنافسي للّغة

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

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

المرجعGoodfellow, Pouget-Abadie, Mirza, Xu, Warde-Farley, Ozair, Courville, Bengio. Generative Adversarial Networks. NeurIPS, 2014.

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