النماذج التوليدية2015متوسط12 دقيقة قراءة
تعلُّم التمثيلات بدون إشراف باستخدام الشبكات التوليدية التنافسية الالتفافية العميقة
Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
Radford, A. · Metz, L. · Chintala, S. — ICLR
المشكلة
حين ظهرت على يد غودفيلو عام 2014، بدت فكرة واعدة جداً لتوليد الصور. لكن المشكلة أن تدريبها كان غير مستقر بشكل محبط. كل محاولة لتوسيعها باستخدام شبكات التفافية عميقة كانت تنتهي ، أو تذبذب لا ينتهي، أو فشل تام في التقارب. ببساطة، لم تكن هناك وصفة واضحة يمكن لأي باحث اتّباعها لبناء شبكة توليدية التفافية تعمل بثبات على مجموعات بيانات مختلفة وبدقّات أعلى.
الإسهام
قدّمت DCGAN عائلة من البُنى المعمارية تقوم على أربع قواعد واضحة: استبدال التجميع بالتفافات ذات خطوة والتفافات منقولة، واستخدام تسوية الدُّفعات في الشبكتين معاً، وإزالة الطبقات المخفية كاملة الاتصال، واستخدام دوال تنشيط ReLU وLeakyReLU. هذه القواعد ثبّتت على مجموعات بيانات متنوعة كغرف نوم LSUN ووجوه CelebA. كما أظهرت الورقة أن الشبكة لا تولّد صوراً جميلة فحسب، بل تبني فضاءً كامناً منظَّماً: انتقالات سلسة بين الصور، وحساب متجهي على الوجوه (رجل بنظارة − رجل + امرأة = امرأة بنظارة)، واستخلاص سمات بدون إشراف ينافس الأساليب الأخرى في .
الأثر
أصبحت DCGAN البنية المرجعية التي ينطلق منها أي باحث يريد العمل مع الشبكات التوليدية التنافسية. مبادئها — بلا تجميع، مع تسوية الدُّفعات، وتصميم التفافي بالكامل — صارت الوصفة التي يبدأ بها الجميع. تأثيرها واضح في Progressive GAN وWGAN وStyleGAN وعشرات البُنى اللاحقة. لكن الأثر الأعمق هو أنها أثبتت أن قادر على إنتاج تمثيلات ذات بنية ومعنى — وليس مجرد صور جميلة.
تخيّل مُزوِّراً ومحقّقاً يتنافسان. المزوِّر يبدأ بخربشات عشوائية ويعرضها على المحقّق: «هل هذه ورقة نقدية حقيقية؟» المحقّق يرفضها ويشرح السبب — الملمس غلط، الألوان مختلفة، النسب غير صحيحة.
في الشبكة التوليدية التنافسية الأصلية، كان كلاهما هاوياً يعمل بأدوات بدائية. ما فعلته DCGAN هو ترقية الأدوات: المزوِّر حصل على مطبعة بأسطوانات مصمَّمة بدقة (التفافات منقولة)، والمحقّق حصل على عدسة مكبِّرة متعددة المستويات ( ذات خطوة). والعنصر الحاسم أن كليهما يُعيد معايرة أدواته بعد كل مرحلة () حتى لا تنحرف عن المسار.
بعد جولات كافية، يُنتج المزوِّر أوراقاً نقدية لا يكاد المحقّق يميّزها — وتتحوّل عين المحقّق المدرَّبة إلى أداة قوية قادرة على التعرّف على أنماط لم تُعلَّمها صراحةً.
المشكلة: الشبكات التوليدية التنافسية كانت قوية نظرياً لكنها هشّة عملياً
حين قدّم غودفيلو الشبكات التوليدية التنافسية عام 2014، كان و عبارة عن . كانت تعمل بشكل مقبول على صور صغيرة مثل MNIST وCIFAR-10، لكنها تنهار مع أي شيء أكبر. ثلاث مشكلات أساسية كانت تتكرر:
-
انهيار الأنماط — المولِّد يكتشف مخرَجاً واحداً «آمناً» يخدع المميِّز فيتمسك به ولا يُنتج سواه. تخيّل مزوِّراً أتقن رسم ورقة نقدية واحدة فقط وقرر أن يطبع منها ملايين النسخ.
-
تذبذب التدريب — المولِّد والمميِّز يلاحق كل منهما الآخر دون أن يستقرا. أحدهما يتفوّق فينهار الآخر، ثم تنعكس الأدوار وتتكرر الدورة بلا نهاية.
-
غياب الفهم المكاني — الشبكات كاملة الاتصال تتعامل مع كل منفرداً بمعزل عن جيرانه، فلا مفهوم للحواف أو الملمس أو البنية المكانية. توليد صورة 64×64 من يعني تعلّم 12,288 مخرَجاً مستقلاً — رقم يفوق قدرة التدريب المستقر بكثير.
وصفة DCGAN: أربع قواعد معمارية غيَّرت كل شيء
بعد تجريب مكثّف، توصّل رادفورد وميتز وشينتالا إلى أربع قواعد معمارية إذا طُبِّقت معاً أنتجت تدريباً مستقراً مهما اختلفت مجموعة البيانات أو الدقّة المطلوبة. فكّر فيها كأعمدة جسر أربعة — لو أزلت أيّ عمود قد ينهار الجسر بأكمله:
داخل المولِّد: من الضجيج إلى الصورة
مهمة المولِّد هي تحويل كامن من 100 بُعد — مأخوذ من منتظم — إلى صورة ملوّنة واقعية بأبعاد 64×64. تصوّره كأنبوب يتّسع تدريجياً: يبدأ ضيقاً جداً (خريطة سمات صغيرة وكثيفة) ويتّسع عند كل مرحلة (طبقة التفاف منقولة)، فيضيف تفاصيل مكانية جديدة ويُقلّل عدد في الوقت نفسه.
المراحل بالتفصيل:
- الإسقاط وإعادة التشكيل: (100 قيمة) → 1024 خريطة سمات بدقة مكانية 4×4.
- التفاف منقول 1: من 4×4 إلى 8×8، بـ 512 قناة. تسوية دُفعات + ReLU.
- التفاف منقول 2: من 8×8 إلى 16×16، بـ 256 قناة. تسوية دُفعات + ReLU.
- التفاف منقول 3: من 16×16 إلى 32×32، بـ 128 قناة. تسوية دُفعات + ReLU.
- التفاف منقول 4: من 32×32 إلى 64×64، بـ 3 قنوات (RGB). خرج tanh.
لاحظ النمط: في كل مرحلة تتضاعف الدقة المكانية ويقلّ عدد القنوات إلى النصف. الشبكة تتعلم ماذا تضيف في كل مستوى — البنية العامة في المراحل الأولى، والتفاصيل الدقيقة كالملمس في المراحل الأخيرة.
داخل المميِّز: من الصورة إلى الحكم
المميِّز هو المقابل المعكوس للمولِّد — قمع يضغط صورة 64×64 حتى يختزلها في رقم واحد يُجيب عن السؤال: «ما مدى واقعية هذه الصورة؟» بنيته تشبه تقليدياً، لكن بدون وبدون طبقات كاملة الاتصال:
- التفاف بخطوة 1: من 64×64 إلى 32×32، بـ 128 قناة. LeakyReLU (بدون تسوية دُفعات على المدخل).
- التفاف بخطوة 2: من 32×32 إلى 16×16، بـ 256 قناة. تسوية دُفعات + LeakyReLU.
- التفاف بخطوة 3: من 16×16 إلى 8×8، بـ 512 قناة. تسوية دُفعات + LeakyReLU.
- التفاف بخطوة 4: من 8×8 إلى 4×4، بـ 1024 قناة. تسوية دُفعات + LeakyReLU.
- تسطيح + سيغمويد: 1024×4×4 → احتمال واحد ∈ [0, 1].
في كل مرحلة تتقلص الأبعاد المكانية إلى النصف ويتضاعف عدد القنوات — كأنك تستبدل مجال الرؤية الواسع بتفاصيل أدق وأعمق. واللافت أن التي تتعلمها الشبكة عند كل مستوى تبيّن أنها تمثيلات ممتازة صالحة لمهام متنوعة تتجاوز التمييز بكثير.
اللعبة التنافسية: هدف الحد الأقصى والأدنى
قبل الصيغة الرياضية، لنبدأ بالحدس. المميِّز هدفه واضح: أن يمنح الصور الحقيقية درجات عالية والصور المُولَّدة درجات منخفضة. المولِّد يريد العكس تماماً — يريد خداع المميِّز ليمنح مُزيَّفاته درجات عالية. هذا يُنشئ : المميِّز يحاول تعظيم الهدف والمولِّد يحاول تصغيره، والتدريب يتناوب بين تحديث كل لاعب. في حالة المثالية، يُنتج المولِّد صوراً لا يمكن تمييزها عن الحقيقية، ويعجز المميِّز عن الحكم فيُخرج 0.5 لكل صورة — أي حيرة تامة.
من الناحية العملية، تستخدم DCGAN بـ قدره 0.0002 و بدلاً من القيمة المعتادة 0.9. الزخم المنخفض يمنع المُحسِّن من بناء سرعة مفرطة في أي اتجاه — وهذا حيوي في لعبة يتغيّر فيها سطح عند كل خطوة لأن اللاعبَين يُحدَّثان معاً. كذلك تهيئة من توزيع تضمن أن يبدأ كلا اللاعبَين في نطاق معتدل لا يُسبّب تشبّعاً مبكراً.
الآلية المحورية: الالتفاف المنقول
الالتفاف العادي يُمرّر صغيرة على الصورة ويُنتج مخرَجاً أصغر — أي أنه يُصغّر الأبعاد المكانية. الالتفاف المنقول يعمل بالاتجاه المعاكس: يأخذ كل قيمة من المدخل ويبثّها عبر نمط النواة إلى مخرَج أكبر. تصوّره هكذا: الالتفاف العادي يجمع المعلومات ويلخّصها، أما المنقول فيأخذ الملخّص وينثره ليُعيد بناء التفاصيل المكانية.
من الناحية الرياضية، إذا عبّرنا عن الالتفاف العادي بضرب في ، فإن الالتفاف المنقول يضرب في . الاسم «منقول» يعني حرفياً أننا نستخدم المصفوفة المنقولة لمصفوفة الالتفاف الأصلية.
بـ مقدارها 2، يكون حجم المخرَج ضعف حجم المدخَل تماماً. مولِّد DCGAN يربط أربع طبقات من هذا النوع على التوالي، فيتضاعف الحجم المكاني عند كل واحدة: 4→8→16→32→64. كل طبقة تُضيف مستوى جديداً من التفاصيل إلى الصورة أثناء تشكّلها.
الفضاء الكامن: عالم مُنظَّم من الصور
أكثر ما فاجأ الباحثين لم يكن جودة الصور بحد ذاتها — بل ما اكتشفوه عن بنية . حين نتحرك تدريجياً بين متجهَي ضجيج عشوائيَّين و، نحصل على انتقال سلس بين الصورتين المُولَّدتين — لا قفزات مفاجئة ولا إطارات بينية غير منطقية. غرف نوم تتحوّل بنعومة إلى غرف أخرى: نافذة تصبح تلفازاً، ومصباح يتحوّل إلى لوحة فنية.
ماذا يعني هذا؟ يعني أن المولِّد لم يحفظ صور التدريب عن ظهر قلب. بل تعلَّم تعييناً متصلاً ومنظَّماً من فضاء الضجيج إلى فضاء الصور. كل نقطة في الفضاء الكامن ذي المئة بُعد تُنتج صورة معقولة، والنقاط القريبة من بعضها تُنتج صوراً متشابهة.
الحساب المتجهي: جبر في فضاء الصور
كما أثبت Word2Vec أن ملك − رجل + امرأة = ملكة في ، أثبتت DCGAN أن الحساب نفسه يعمل مع صور الوجوه:
رجل بنظارة − رجل بلا نظارة + امرأة بلا نظارة = امرأة بنظارة
هذه ليست نتائج مُنتقاة بعناية لتبدو مبهرة. السبب أن الفضاء الكامن يفصل المفاهيم البصرية على اتجاهات مستقلة: «النظارة» تقع على اتجاه، و«الجنس» على اتجاه آخر، و«الابتسامة» على ثالث. يمكنك جمع هذه الاتجاهات وطرحها كأنها مُركَّبات متجهية عادية. بل إن المؤلفين أظهروا «متجه الدوران» بحساب متوسط المتجهات الكامنة لوجوه تنظر يساراً مطروحاً منه وجوه تنظر يميناً، وبذلك أصبح ممكناً التحكم في وضعية الوجه بالجمع والطرح.
تعلُّم السمات: المميِّز كمستخلص سمات
من الإسهامات التي لا تحظى بالتقدير الكافي أن السمات التي يتعلمها المميِّز يمكن نقلها بنجاح إلى مهام التصنيف. على مجموعة CIFAR-10 مثلاً، حققت سمات مميِّز DCGAN معدل خطأ 17.2% حين استُخدمت مع مُصنِّف L2-SVM بسيط — وهو أداء يُنافس الأساليب الأخرى غير الموجَّهة كالسمات المبنية على k-means. ليس الأفضل على الإطلاق، لكن تذكّر: هذه السمات تعلّمتها الشبكة دون أن ترى تسمية واحدة.
والأمر الأكثر دلالةً أن المولِّد نفسه تعلّم على مستوى الأشياء. حين أزال الباحثون المسؤولة عن رسم النوافذ في مشاهد غرف النوم، لم تختفِ تلك المنطقة من الصورة — بل استبدلها المولِّد بأشياء أخرى كالأبواب أو الستائر. هذا يعني أن مرشّحات بعينها ترمّز مفاهيم دلالية محددة وليست مجرد أنماط ملمسية.
وصفة التدريب: المعاملات الفائقة وحيل الاستقرار
إلى جانب الركائز المعمارية الأربع، هناك خيارات تدريبية لا تقل أهمية:
- معدَّل التعلُّم: 0.0002 — أصغر من القيمة المعيارية آنذاك 0.001.
- لـAdam: 0.5 — زخم أقل يمنع التذبذب في ديناميكيات التنافس.
- تهيئة الأوزان: — أوزان صغيرة تمنع تشبّع مبكراً.
- بلا معالجة مسبقة: الصور تُقيَّس إلى [−1, 1] لتتطابق مع مدى tanh.
- حجم الدفعة الصغيرة: 128.
درَّب المؤلفون النموذج على غرف نوم LSUN (نحو 3 ملايين صورة) ووجوه CelebA (نحو 200 ألف صورة) وImagenet-1K. اللافت أن النموذج لم يُظهر أي علامة على الحفظ: بعد واحدة فقط كانت غرف النوم المُولَّدة واقعية بالفعل، ومواصلة التدريب حسّنت الجودة أكثر. والاستيفاء في الفضاء الكامن أكّد أن المولِّد بنى تعييناً متصلاً فعلاً، وليس مجرد جدول بحث.
مولِّد DCGAN في شيفرة برمجية
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
import torch.nn as nn
class DCGANGenerator(nn.Module):
"""المولِّد: متجه ضجيج z → صورة RGB بأبعاد 64×64.
القواعد الأربع مُطبَّقة:
1. بدون تجميع — التفافات منقولة فقط
2. تسوية دُفعات على كل طبقة ما عدا الخرج
3. بدون طبقات مخفية كاملة الاتصال
4. ReLU في كل مكان، وtanh على الخرج
"""
def __init__(self, nz=100, ngf=64, nc=3):
super().__init__()
self.main = nn.Sequential(
# الإسقاط وإعادة التشكيل: z → (ngf*16) × 4 × 4
nn.ConvTranspose2d(nz, ngf*16, 4, 1, 0, bias=False),
nn.BatchNorm2d(ngf*16),
nn.ReLU(True),
# 4×4 → 8×8
nn.ConvTranspose2d(ngf*16, ngf*8, 4, 2, 1, bias=False),
nn.BatchNorm2d(ngf*8),
nn.ReLU(True),
# 8×8 → 16×16
nn.ConvTranspose2d(ngf*8, ngf*4, 4, 2, 1, bias=False),
nn.BatchNorm2d(ngf*4),
nn.ReLU(True),
# 16×16 → 32×32
nn.ConvTranspose2d(ngf*4, ngf*2, 4, 2, 1, bias=False),
nn.BatchNorm2d(ngf*2),
nn.ReLU(True),
# 32×32 → 64×64 (الخرج: nc قناة، بدون تسوية دُفعات)
nn.ConvTranspose2d(ngf*2, nc, 4, 2, 1, bias=False),
nn.Tanh() # البكسلات ∈ [-1, 1]
)
def forward(self, z):
return self.main(z.view(-1, 100, 1, 1))
# الاستخدام:
# z = torch.randn(64, 100) # دفعة من 64 متجه ضجيج
# G = DCGANGenerator()
# fake_images = G(z) # الشكل: (64, 3, 64, 64)لماذا كانت مفصلية — البنية التي أطلقت عنان الشبكات التوليدية التنافسية
قبل DCGAN، كانت الشبكات التوليدية التنافسية فكرة نظرية مثيرة لكنها نادراً ما تعمل خارج مجموعات البيانات البسيطة. بعدها، تحوّلت إلى أداة عملية يعتمد عليها الباحثون يومياً. إسهام الورقة لم يكن جديدة أو نظرية جديدة — بل وصفة هندسية تعمل فعلاً، مدعومة بتجريب مكثّف ودراسات استئصال واضحة. الرسالة الضمنية كانت بليغة: الخيارات المعمارية لا تقلّ أهمية عن الصياغات الرياضية.
خاصيتان جعلتا DCGAN حجر أساس:
-
قابلية التكرار: القواعد الأربع كانت بسيطة بما يكفي ليُطبّقها أي شخص. مستودع الشيفرة الرسمي أصبح من أكثر مشاريع GAN تفرّعاً على GitHub.
-
تعلُّم التمثيل: إثبات أن التدريب التنافسي يُنتج سمات قابلة للنقل فتح مساراً جديداً ، مستقلاً عن وأساليب .
2014
الشبكة التوليدية التنافسية (غودفيلو وآخرون)
الإطار التنافسي الأصلي بشبكات كاملة الاتصال. أثبت الفكرة لكنه كان غير مستقر ومقتصراً على الصور الصغيرة.
2015
DCGAN (رادفورد وآخرون)
الوصفة الالتفافية التي جعلت التدريب التنافسي يعمل بثبات. صارت البنية المرجعية وقاعدة الشيفرة لأبحاث الشبكات التوليدية التنافسية.
2017
WGAN (أرجوفسكي وآخرون)
استبدلت دالة الخسارة بمسافة واسرشتاين، فزاد استقرار التدريب وظهر مقياس ذو معنى يمكن تتبّعه. بُنيت مباشرةً فوق بنية DCGAN.
2018
الشبكة التوليدية المتدرِّجة (كارّاس وآخرون)
نمّت المولِّد والمميِّز تدريجياً من دقة 4×4 إلى 1024×1024، فأنتجت وجوهاً واقعية تصويرياً. انطلقت من تصميم DCGAN الالتفافي بالكامل كأساس.
2019
StyleGAN (كارّاس وآخرون)
أضافت تحكّماً قائماً على الأنماط للمولِّد، فأصبح ممكناً التعديل الدقيق على ملامح الوجوه المُولَّدة. الهيكل الأساسي ظل كتلاً التفافية مستوحاة من DCGAN.
2020
StyleGAN2 وما بعدها
حسّنت التدريب المتدرّج وأزالت التشوّهات ودفعت الجودة إلى حد لا يكاد يُميَّز عن الصور الحقيقية. مبادئ DCGAN الجوهرية — التصميم الالتفافي والتثبيت بتسوية الدُّفعات — بقيت حاضرة في كل جيل لاحق.
المرجعRadford, Metz, Chintala. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks. ICLR, 2016.
مصطلحات هذه الورقة
- الشبكات التوليدية التنافسيةGenerative Adversarial Network (GAN)
- الموّلد التخليقيGenerator
- الـمُميِّز الحاكمDiscriminator
- التفاف معكوسTransposed Convolution
- تسوية الدفعات الحسابيةBatch Normalization
- الفضاء الكامنLatent Space
- المتجه الكامنLatent Vector
- انهيار الأنماطMode Collapse
- استخلاص السماتFeature Extraction
- التعلّم غير الخاضع للإشرافUnsupervised Learning
- الالتفاف ذو الخطوةStrided Convolution
- تعلم التمثيلات الرقميةRepresentation Learning
- التدريب التنافسيAdversarial Training