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

شبكة الخصومة التوليدية بمسافة واسرشتاين

Wasserstein GAN

Arjovsky, M. · Chintala, S. · Bottou, L. — ICML

المشكلة

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

الإسهام

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

الأثر

أعادت هذه الورقة تأطير تدريب الشبكات التوليدية بوصفه مسألة نقل مثالي، وفتحت الباب أمام عائلة كاملة من البنى المستقرة: WGAN-GP استبدل قصّ الأوزان بعقوبة على معيار التدرّج، والشبكة التوليدية التصاعدية استثمرت استقرار تدرّجات واسرشتاين لتنمية دقة الصورة تدريجياً من 4×4 إلى 1024×1024. والأهم من ذلك، فكرة أن منحنى الخسارة يجب أن يعني شيئاً — وهي فكرة بدت جذرية حينها — أصبحت اليوم من المسلّمات. كل نموذج توليدي حديث عالي الدقة يدين نظرياً لهذه الورقة التي أوضحت أن اختيار مقياس المسافة المناسب أهم بكثير من أي حيلة معمارية.

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

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

المشكلة: حين يكون الحارس بارعاً أكثر من اللازم

في الشبكة التوليدية الأصلية، يعمل المُميِّز على تصنيف العيّنات إلى حقيقية أو مزيّفة، وهدف التدريب يعادل تقليل بين التوزيع الحقيقي PrP_r والتوزيع المُولَّد PgP_g.

الأمر يسير بشكل طبيعي ما دام التوزيعان يتقاطعان. لكن في الواقع، الصور تعيش على منخفضة الأبعاد داخل فضاء بكسلات عالي الأبعاد — تخيّل سطحين رقيقين في فراغ شاسع، فرصة تقاطعهما شبه معدومة. حين تنفصل حوامل التوزيعين، ينغلق تبايُن جنسن-شانون عند قيمته القصوى log2\log 2 ولا يتحرّك، بغضّ النظر عن مدى قرب التوزيعين من بعضهما. عند هذه النقطة يحقّق المُميِّز دقة مثالية بلا عناء، لكن لا تحمل أي معلومة اتجاهية، فيصبح أعمى تماماً.

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

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

الحل: ادفع بالمجرفة

مسافة واسرشتاين من الرتبة الأولى — والمعروفة أيضاً بـمسافة ناقل الأرض — تطرح سؤالاً بسيطاً وبديهياً: لو تخيّلت التوزيع الحقيقي PrP_r ككومة تراب والتوزيع المُولَّد PgP_g كحفرة تريد ملأها، فما أقل جهد تحتاجه لنقل التراب بالمجرفة؟ التكلفة هنا = كمية التراب × المسافة المنقولة.

من الناحية الرياضية، ندرس جميع «خطط النقل» الممكنة γ\gamma التي تحرّك الكتلة من PrP_r إلى PgP_g، ونختار الخطة الأرخص. هذه هي مسألة النقل المثالي التي عرفها الرياضيون منذ مونج عام 1781.

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

W(Pr,Pg)=infγΠ(Pr,Pg)E(x,y)γ[xy]W(P_r, P_g) = \inf_{\gamma \in \Pi(P_r, P_g)} \mathbb{E}_{(x,y) \sim \gamma} [\|x - y\|]
مسافة ناقل الأرض — تكلفة النقل المثاليγ = خطة نقل تحرّك الكتلة من Pᵣ إلى Pᵍ · ‖x − y‖ = المسافة التي تقطعها كل وحدة كتلة · الحدّ الأدنى يختار أرخص خطة من بين جميع الخطط المقبولة
افتح في المختبر
اضغط «انقل!» لتشاهد خطة النقل المثالية تحرّك الكتلة من المصدر إلى الهدف. التكلفة الإجمالية المعروضة هي مسافة ناقل الأرض.
تستيقظ التجربة عند وصولك…

الحيلة: من خطط النقل إلى ناقد مُتعلَّم

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

ما معنى شرط ليبشيتز هنا؟ ببساطة، الدالة لا يُسمح لها أن تتغيّر أسرع من تغيّر مدخلاتها — رياضياً: f(x1)f(x2)x1x2|f(x_1) - f(x_2)| \leq \|x_1 - x_2\| لكل x1,x2x_1, x_2. تخيّلها كدالة ميلها لا يتجاوز 1 في أي نقطة. يمكنك تصوّر القيمة التي تُسندها لأي عيّنة كـ«درجة ارتفاع» — ومسافة واسرشتاين هي ببساطة الفارق في متوسط الارتفاع بين العيّنات الحقيقية والمُولَّدة.

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

W(Pr,Pg)=supfL1[ExPr[f(x)]ExPg[f(x)]]W(P_r, P_g) = \sup_{\|f\|_L \leq 1} \left[ \mathbb{E}_{x \sim P_r}[f(x)] - \mathbb{E}_{x \sim P_g}[f(x)] \right]
ثنائية كانتوروفيتش-روبنشتاين — صياغة الناقدf = دالة تقييم تحقق شرط ليبشيتز من الرتبة 1 (الناقد) · الحدّ الأعلى يبحث عن الدالة f التي تعظّم الفجوة بين متوسط الدرجات على البيانات الحقيقية والمُولَّدة · هذه الفجوة القصوى تساوي مسافة واسرشتاين
افتح في المختبر
اسحب سقف الميل وراقب كيف يتحكّم قيد ليبشيتز في قدرة الناقد على الفصل بين درجات العيّنات الحقيقية والمزيّفة.
تستيقظ التجربة عند وصولك…

الخوارزمية: الناقد وقصّ الأوزان وحلقة التدريب

حلقة تدريب WGAN تختلف عن الشبكة التوليدية التقليدية في ثلاث نقاط محورية:

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

  • قصّ الأوزان. بعد كل تحديث للناقد، تُحصر جميع الأوزان ضمن المجال [c,c][-c, c] (عادةً c=0.01c = 0.01). الفكرة بسيطة: تقييد الأوزان يمنع الدالة من الانحدار بميل حاد، وبالتالي يفرض شرط ليبشيتز بشكل تقريبي. الطريقة بدائية بلا شك — المؤلفون أنفسهم وصفوها بأنها «طريقة سيئة بوضوح لفرض قيد ليبشيتز» — لكنها أعطت نتائج قوية رغم بساطتها.

  • تكرارات أكثر للناقد مقابل كل خطوة للمُولِّد. يُدرَّب الناقد ncriticn_\text{critic} مرة (عادةً 5) مقابل تحديث واحد لـالمُولِّد. المنطق واضح: كلما كان الناقد أدقّ، كان تقديره لمسافة واسرشتاين أفضل، وبالتالي تحصل إشارة التدرّج الواصلة إلى المُولِّد على معلومات أغنى.

افتح في المختبر
تابع حلقة تدريب WGAN خطوة بخطوة. شاهد الناقد يتدرّب 5 مرات ثم يُحدَّث المُولِّد مرة واحدة. لاحظ كيف يبقى منحنى الخسارة سلساً.
تستيقظ التجربة عند وصولك…

الناقد مقابل المُميِّز: ما الذي تغيّر

في الشبكة التوليدية التقليدية، يمرّر المُميِّز مخرجاته عبر سيغمويد ليُعطي احتمالاً — «هذه العيّنة حقيقية بنسبة 70%». وظيفته تصنيف. لكن حين يصبح واثقاً جداً، يتشبّع السيغمويد وتحدث مشكلة .

ناقد WGAN يعمل بطريقة مختلفة: يُخرج درجة مفتوحة — «هذه الصورة تحصل على 3.7 على مقياس الواقعية». الجودة تُقاس على مقياس مستمر لا سقف له. إشارة التدريب هي ببساطة الفارق في متوسط الدرجات بين الدُفعة الحقيقية والمُولَّدة: المُولِّد يسعى لرفع درجاته، والناقد يسعى لتوسيع الفجوة بينهما.

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

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

فرض قيد ليبشيتز: قصّ الأوزان وحدوده

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

الحل الذي اقترحته WGAN هو قصّ الأوزان: بعد كل خطوة تحديث، تُحصر قيمة كل وزن ww ضمن المجال [c,c][-c, c]. الفكرة أن الأوزان المحدودة في شبكة تغذية أمامية تنتج ميلاً محدوداً، وهذا يفرض قيد ليبشيتز بشكل تقريبي.

لكن هذا الحل ليس بلا ثمن. إذا كانت cc صغيرة جداً، تتقلّص قدرة الناقد التعبيرية بشدة وقد تتلاشى التدرّجات. وإذا كانت cc كبيرة جداً، يصبح القيد بلا أثر فعلي ويفقد التدريب استقراره. المؤلفون أنفسهم أقرّوا بهذه المقايضة وأوضحوا أنهم اختاروا القصّ لبساطته لا لكونه الأفضل. هذا التحفّظ هو ما دفع مباشرةً إلى ظهور WGAN-GP في نفس العام، حيث استُبدل القصّ بعقوبة على معيار التدرّج — وهو حل أنظف من الناحية النظرية.

افتح في المختبر
غيّر حدّ القصّ c وراقب الأثر. إن صَغُر كثيراً: تتكدّس الأوزان عند ±c ويفقد الناقد قدرته التعبيرية. وإن كَبُر كثيراً: يكاد قيد ليبشيتز لا يُفرض.
تستيقظ التجربة عند وصولك…

منحنى خسارة له معنى

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

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

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

انهيار الأنماط: لماذا تقاومه WGAN

انهيار الأنماط يحدث حين يكتشف المُولِّد بضع مخرجات «آمنة» تنجح في خداع المُميِّز، فيتوقّف عن البحث عن أي شيء آخر. في الشبكات التوليدية التقليدية، تبايُن جنسن-شانون لا يعاقب على الأنماط المفقودة — لو أتقن المُولِّد 3 أنماط من أصل 10، لن يستطيع المُميِّز كشفها ولن يجد المُولِّد أي دافع لاستكشاف السبعة المتبقية.

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

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

الخوارزمية في شيفرة برمجية

حلقة تدريب WGAN — الفرق الجوهريpython

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

import torch

def train_wgan(generator, critic, data_loader, n_critic=5, clip_value=0.01):
    opt_g = torch.optim.RMSprop(generator.parameters(), lr=5e-5)
    opt_c = torch.optim.RMSprop(critic.parameters(), lr=5e-5)

    for real_batch in data_loader:
        # ── تدريب الناقد n_critic مرة ──────────────────────
        for _ in range(n_critic):
            z = torch.randn(real_batch.size(0), latent_dim)
            fake = generator(z).detach()

            # خسارة الناقد: الفرق بين متوسط الدرجات الحقيقية والمزيفة
            loss_c = -(critic(real_batch).mean() - critic(fake).mean())
            opt_c.zero_grad()
            loss_c.backward()
            opt_c.step()

            # قصّ الأوزان: فرض قيد ليبشيتز
            for p in critic.parameters():
                p.data.clamp_(-clip_value, clip_value)

        # ── تدريب المُولِّد مرة واحدة ─────────────────────
        z = torch.randn(real_batch.size(0), latent_dim)
        fake = generator(z)
        loss_g = -critic(fake).mean()   # تعظيم درجة الناقد
        opt_g.zero_grad()
        loss_g.backward()
        opt_g.step()

الأثر والمسار الذي رسمته

  1. 2014

    الشبكة التوليدية الأصلية (غودفيلو وآخرون)

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

  2. 2016

    DCGAN (رادفورد وآخرون)

    قدّم إرشادات معمارية باستخدام الطبقات الالتفافية حسّنت استقرار التدريب عملياً، لكنها لم تعالج جذر المشكلة: مقياس المسافة نفسه.

  3. 2017

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

    استبدلت تبايُن جنسن-شانون بمسافة واسرشتاين، وقدّمت مفهوم الناقد وتقنية قصّ الأوزان ومنحنيات خسارة ذات دلالة. حوّلت تدريب الشبكات التوليدية من فنّ إلى منهج.

  4. 2017

    WGAN-GP (غولراجاني وآخرون)

    استبدل قصّ الأوزان بعقوبة التدرّج — طريقة أنظف لفرض قيد ليبشيتز تتجنب مشاكل السعة.

  5. 2018

    الشبكة التوليدية التصاعدية (كاراس وآخرون)

    وظّفت استقرار تدريب WGAN-GP لتنمية دقة الصور تدريجياً من 4×4 إلى 1024×1024 — وكانت أول من أنتج وجوهاً بجودة تقارب الصور الحقيقية.

  6. 2019

    StyleGAN (كاراس وآخرون)

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

حكاية WGAN في جوهرها حكاية سؤال أفضل. بدلاً من أن تسأل «هل تستطيع التمييز بين الحقيقي والمزيّف؟» اسأل «كم يكلّفك تحويل أحدهما إلى الآخر؟» هذا السؤال لا يخذلك أبداً — دائماً له إجابة مفيدة، والإجابات المفيدة تنتج تدرّجات مفيدة.

المرجعArjovsky, Chintala, Bottou. Wasserstein GAN. ICML, 2017.

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