تعلم التمثيلات2017متوسط10 دقيقة قراءة

تعلُّم التمثيلات المنفصلة بالشبكات العصبية

Neural Discrete Representation Learning

van den Oord, A. · Vinyals, O. · Kavukcuoglu, K. — NeurIPS

المشكلة

المرمّز التلقائي المتغيّر (VAE) يمثّل البيانات باستخدام متغيّرات كامنة متصلة، أي متّجهات بقيم حقيقية ناعمة. لكن أنماطاً كثيرة من بيانات العالم الحقيقي منفصلة في جوهرها: اللغة سلسلة رموز، والكلام سلسلة وحدات صوتية، وحتى الصور يمكن وصفها بكلمات. المشكلة الأخطر أنّ هذه المتغيّرات المتصلة تعاني من ظاهرة «انهيار التوزيع الخلفي»: حين يكون فاكّ الترميز نموذجاً قوياً، يتعلّم توليد البيانات من الصفر متجاهلاً الشفرة الكامنة كلّياً — فيفقد معناه. المحاولات السابقة لاعتماد متغيّرات كامنة منفصلة — مثل Gumbel Softmax وNVIL وVIMCO — عانت من تدرّجات شديدة التذبذب ولم تقترب من أداء الأنظمة المتصلة.

الإسهام

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

الأثر

أثبت VQ-VAE أنّ الفضاءات الكامنة المنفصلة بديل عملي وفعّال للمتصلة، وتحوّل إلى لبنة أساسية في بنية الذكاء الاصطناعي التوليدي الحديث. DALL·E اعتمد عليه لتحويل الصور إلى رموز منفصلة قبل توليدها بمحوِّل. Jukebox نقل الفكرة نفسها إلى عالم الموسيقى. BEiT وظّف شفرات VQ-VAE رموزاً بصرية للتعلّم الذاتي الإشراف في محوِّلات الرؤية. نماذج الانتشار الكامن تضغط الصور في فضاء كامن مستوحًى من VQ-VAE ثمّ تُجري عملية الانتشار فيه — وهذه هي البنية خلف Stable Diffusion. الفكرة الجوهرية — أنّ أيّ إشارة متصلة يمكن تحويلها إلى سلسلة رموز منفصلة — هي الجسر الذي ربط النماذج اللغوية ببقية أنماط البيانات.

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

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

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

المشكلة: الفضاءات الكامنة المتصلة ناعمة أكثر من اللازم

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

  • . حين يكون فاكّ الترميز قوياً بما يكفي — مثل PixelCNN — يتعلّم أن يولّد البيانات وحده دون الرجوع إلى إطلاقاً. عندها تُهمَل مخرجات المُرمِّز ويفقد الفضاء الكامن أيّ معنى — «ينهار» إلى .

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

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

الفكرة: القفز إلى أقرب عنصر في دفتر الشفرات

يحتفظ VQ-VAE ببنية المُرمِّز وفاكّ الترميز الموجودة في VAE، لكنّه يُدخِل خطوة وسطى حاسمة: التكميم المتجهي. لنتتبّع المسار كاملاً:

  1. المُرمِّز يستقبل المُدخل xx — سواء كان صورة أو مقطعاً صوتياً أو إطار فيديو — ويُخرج شبكة من المتجهات المتصلة ze(x)z_e(x)، متجه واحد لكلّ موضع مكاني.

  2. كلّ متجه يُقارَن بجميع عناصر المُتعلَّم eRK×De \in \mathbb{R}^{K \times D} — حيث KK عدد العناصر (مثلاً 512) وDD بُعد — ويُربَط بأقرب عنصر إليه. فهرس ذلك العنصر يصبح الشفرة المنفصلة لهذا الموضع.

  3. فاكّ الترميز يستقبل متجهات دفتر الشفرات المقابلة zq(x)z_q(x) ويعيد بناء المُدخل الأصلي. بما أنّ فاكّ الترميز لا يرى إلا عناصر دفتر الشفرات، فهو مُضطر لاستخدامها — وبهذا يُزال انهيار التوزيع الخلفي من التصميم ذاته.

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

التكميم المتجهي: من المتصل إلى المنفصل

خطوة التكميم تبدو بسيطة لكنّ فيها تفصيلاً دقيقاً. الفكرة: بمعلومية مخرج المُرمِّز ze(x)z_e(x)، نبحث عن العنصر eke_k في دفتر الشفرات الذي يُعطي أصغر مسافة إقليدية:

zq(x)=ek,where k=argminjze(x)ej2z_q(x) = e_k, \quad \text{where } k = \arg\min_j \| z_e(x) - e_j \|_2
البحث عن أقرب جار — خطوة التكميممخرج المُرمِّز المتصل يُستبدل بأقرب متجه في دفتر الشفرات. العملية حتمية: كلّ موضع يحصل على شفرة واحدة بالضبط.

تخيّل العملية كـآلة فرز في مكتب بريد: كلّ طرد (مخرج المُرمِّز) ينزلق على سير ويسقط في أقرب صندوق (عنصر من دفتر الشفرات). هوية الطرد صارت الآن رقم الصندوق — أي شفرة منفصلة.

من الناحية الرياضية، التوزيع الخلفي q(zx)q(z|x) يصبح أحادياً (one-hot): احتمال 1 لأقرب عنصر في دفتر الشفرات و0 لكلّ ما عداه. وإذا كان التوزيع المسبق p(z)p(z) منتظماً، فإنّ يصبح ثابتاً (logK\log K) ويمكن تجاهله أثناء التدريب — وهذا تبسيط كبير مقارنةً بنماذج VAE المعتادة.

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

معضلة التدرّج: كيف نتعلّم عبر قفزة غير ناعمة

العقبة هنا أنّ عملية البحث عن أقرب جار غير قابلة للاشتقاق — لا يمكن حساب تدرّج سلس عبر عملية argmin\arg\min. وإن لم نستطع تمرير التدرّجات خلال خطوة التكميم عبر ، فإنّ المُرمِّز لن يتلقّى أيّ إشارة تعلّم من . الحلّ الذي يقترحه VQ-VAE هو مُقدِّر المرور المباشر: في نستخدم الشفرات المُكمَّمة zq(x)z_q(x) بشكلٍ عادي، أمّا في فننسخ التدرّج مباشرةً من zq(x)z_q(x) إلى ze(x)z_e(x)، وكأنّ التكميم لم يحدث.

لماذا ينجح هذا الأسلوب؟ لأنّ ze(x)z_e(x) وzq(x)z_q(x) يقعان في الفضاء ذاته بأبعاد DD. zL\nabla_z L يُخبر المُرمِّز: «حرّك مخرجك في هذا الاتجاه لتقليل خطأ إعادة البناء.» وبما أنّ zez_e وzqz_q جاران قريبان في الفضاء نفسه، فإنّ اتجاه التدرّج يظلّ ذا معنى لكليهما.

افتح في المختبر
التمرير الأمامي (الأسهم الزرقاء) يمرّ عبر التكميم. التمرير الخلفي (الأسهم الحمراء) ينسخ التدرّج مباشرةً متجاوزاً القفزة.
تستيقظ التجربة عند وصولك…

الخسارة الثلاثية: فاكّ الترميز ودفتر الشفرات والالتزام

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

L=logp(xzq(x))reconstruction+sg[ze(x)]e22codebook+βze(x)sg[e]22commitmentL = \underbrace{\log p(x | z_q(x))}_{\text{reconstruction}} + \underbrace{\| \text{sg}[z_e(x)] - e \|_2^2}_{\text{codebook}} + \underbrace{\beta \| z_e(x) - \text{sg}[e] \|_2^2}_{\text{commitment}}
خسارة VQ-VAE — ثلاثة حدود لثلاثة متعلّمينsg = إيقاف التدرّج (معاملة المُعامَل كثابت). الحدّ الأول يُدرِّب فاكّ الترميز والمُرمِّز. الحدّ الثاني يحرّك عناصر دفتر الشفرات نحو مخرجات المُرمِّز. الحدّ الثالث يمنع المُرمِّز من الابتعاد عن دفتر الشفرات. β ≈ 0.25 عملياً.

تخيّل الأمر كـمفاوضة بين ثلاثة أطراف:

  • فاكّ الترميز يقول: «أحتاج شفرات تمكّنني من إعادة بناء البيانات بدقّة» ← وهذا دور خسارة إعادة البناء.
  • دفتر الشفرات يقول: «سأحرّك عناصري نحو المواضع التي يشير إليها المُرمِّز» ← وهذا دور خسارة دفتر الشفرات (تشبه عمل خوارزمية k-means).
  • المُرمِّز يقول: «ألتزم بألّا أبتعد كثيراً عن أقرب عنصر في دفتر الشفرات» ← وهذا دور .

عامل إيقاف التدرّج sg[·] هو ما يضمن ألّا يتداخل الحدود مع بعضها: خسارة دفتر الشفرات تحرّك دفتر الشفرات فقط دون المساس بـالمُرمِّز، وخسارة الالتزام تقيّد المُرمِّز فقط دون المساس بـدفتر الشفرات.

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

تعلّم التوزيع المسبق: من الضغط إلى التوليد

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

  • للصور: نموذج PixelCNN يعمل على الشبكة ثنائية البُعد من الشفرات الكامنة. ولأنّ الشبكة صغيرة (مثلاً 32×32 بدلاً من 128×128 بكسل)، يستطيع PixelCNN أن يلتقط البنية العامّة للصورة بكفاءة عالية.
  • للصوت: نموذج WaveNet يعمل على السلسلة أحادية البُعد من الشفرات الكامنة. مع ضغط بمقدار 64 ضعفاً، يلتقط WaveNet أنماطاً بعيدة المدى على مستوى الوحدات الصوتية لا تظهر في الموجة الصوتية الخام.

نهج المرحلتين هذا — تعلّم دفتر شفرات مضغوط أولاً ثمّ نمذجة توزيع الشفرات — هو الوصفة ذاتها التي تبنّاها لاحقاً DALL·E وJukebox.

طبقة التكميم المتجهي في شيفرة برمجية

التكميم المتجهي — الآلية الجوهريةpython

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

import numpy as np

class VectorQuantizer:
    """دفتر شفرات يضمّ K متجه، كلٌّ منها بأبعاد D."""
    def __init__(self, K=512, D=64, beta=0.25):
        self.codebook = np.random.randn(K, D) * 0.1   # K عنصر
        self.beta = beta                                # وزن الالتزام

    def forward(self, z_e):
        """z_e: (N, D) — مخرج مُرمِّز واحد لكلّ موضع مكاني."""
        # 1. ابحث عن أقرب عنصر في دفتر الشفرات لكلّ مخرج
        dists = np.sum((z_e[:, None] - self.codebook[None]) ** 2, axis=-1)  # (N, K)
        indices = np.argmin(dists, axis=-1)                                  # (N,)
        z_q = self.codebook[indices]                                          # (N, D)

        # 2. احسب الخسائر
        codebook_loss = np.mean((z_e.copy() - z_q) ** 2)  # أوقف تدرّج z_e: حرّك دفتر الشفرات
        commit_loss   = np.mean((z_e - z_q.copy()) ** 2)  # أوقف تدرّج e: قيّد المُرمِّز

        loss = codebook_loss + self.beta * commit_loss

        # 3. المرور المباشر: مرّر z_q للأمام، لكنّ التدرّج يعود إلى z_e
        z_q_st = z_e + (z_q - z_e)   # أمامياً: z_q، خلفياً: التدرّج ← z_e

        return z_q_st, loss, indices

ماذا تعلّم VQ-VAE: صور وكلام وفيديو

اختبرت الورقة VQ-VAE على ثلاثة أنماط من البيانات، وكلّ نمط كشف عن جانب مختلف من قوة :

الصور (ImageNet بدقّة 128×128). المُرمِّز يضغط صوراً بأبعاد 128×128×3 إلى شبكة شفرات منفصلة بأبعاد 32×32×1 مع K=512K=512 — أي تقليص بمعامل 42.6 في عدد البتات. الصور المُعاد بناؤها أكثر ضبابية بشكل طفيف فقط مقارنة بالأصل. نموذج PixelCNN بوصفه توزيعاً مسبقاً على شبكة 32×32 الكامنة يولّد صوراً كاملة متماسكة تحافظ على البنية العامّة.

الكلام (مجموعة VCTK، 109 متحدّثين). مع ضغط زمني بمقدار 64 ضعفاً، التقطت الشفرات الكامنة المحتوى على مستوى الوحدات الصوتية وتجاهلت خصائص المتحدّث كحدّة الصوت والجرس. الأمر المثير أنّه عند إعادة البناء بـهوية متحدّث مختلفة تُمرَّر لـفاكّ الترميز، تكون النتيجة تحويلاً للصوت: الكلمات نفسها بصوت شخص آخر. وحين ربطنا الشفرات المنفصلة الـ512 بالوحدات الصوتية حصلنا على دقّة 49.3% — مقابل 7.2% بالتخمين العشوائي — ممّا يُثبت أنّ النموذج اكتشف وحدات شبيهة بالأصوات اللغوية دون أيّ إشراف لغوي.

الفيديو (بيئة DeepMind Lab). يولّد VQ-VAE إطارات فيديو مشروطة بالأفعال بالكامل في الفضاء الكامن، ولا يحوّلها إلى بكسلات إلا في الخطوة الأخيرة. هذا يتفادى تراكم الأخطاء الناتج عن التوليد في فضاء البكسلات، ويحافظ على الجودة البصرية حتى في التسلسلات الطويلة.

افتح في المختبر
شاهد كيف يضغط VQ-VAE صورة 128×128 إلى شبكة 32×32 من فهارس دفتر الشفرات. بدّل بين الأصل والشبكة الكامنة والصورة المُعاد بناؤها.
تستيقظ التجربة عند وصولك…

لماذا غيّرت التمثيلات الكامنة المنفصلة قواعد اللعبة

  1. 2013

    VAE (كينغما ووِلِنغ)

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

  2. 2016

    PixelCNN و WaveNet

    نماذج ذاتية الانحدار قوية للصور والصوت. أنتجت عيّنات عالية الجودة لكنّها كانت بطيئة وتعمل على البكسلات والعيّنات الخام مباشرةً دون ضغط مُتعلَّم.

  3. 2017

    VQ-VAE (هذه الورقة)

    فضاءات كامنة منفصلة عبر التكميم المتجهي. أول نموذج بمتغيّرات كامنة منفصلة يضاهي أداء النماذج المتصلة. اكتشف الوحدات الصوتية من الكلام الخام دون إشراف.

  4. 2019

    VQ-VAE-2

    نسخة هرمية من VQ-VAE بمقاييس متعدّدة لدفتر الشفرات. ولّدت صوراً عالية الدقّة بأبعاد 256×256 نافست شبكات GAN دون الحاجة إلى تدريب تناحري.

  5. 2020

    Jukebox (OpenAI)

    VQ-VAE هرمي لتوليد الموسيقى من الصوت الخام. ولّد دقائق من موسيقى متماسكة بكلمات وأسلوب محدّد، ونقل فكرة الرموز المنفصلة إلى الصوت بمقياس غير مسبوق.

  6. 2021

    DALL·E (OpenAI)

    اعتمد على مرمّز تلقائي متغيّر منفصل (dVAE، وهو متغيّر من VQ-VAE) لتحويل الصور إلى رموز، ثمّ ولّد رموز الصور من وصف نصّي باستخدام محوِّل. توليد صور من نصوص على نطاق واسع.

  7. 2021

    BEiT

    وظّف شفرات VQ-VAE رموزاً بصرية لنمذجة الصور المقنّعة — المكافئ البصري لنمذجة اللغة المقنّعة في BERT. أثبت أنّ تحويل الصور إلى رموز منفصلة يفتح الباب أمام تعلّم ذاتي الإشراف بصري قوي.

  8. 2022

    الانتشار الكامن / Stable Diffusion

    يُجري عملية الانتشار في فضاء كامن مضغوط (مستوحًى من بنية المُرمِّز وفاكّ الترميز في VQ-VAE) بدل العمل في فضاء البكسلات. قلّص الحوسبة المطلوبة بشكل كبير مع الحفاظ على جودة الصور — وهي البنية التي يقوم عليها Stable Diffusion.

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

المرجعvan den Oord, Vinyals, Kavukcuoglu. Neural Discrete Representation Learning. NeurIPS, 2017.

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