Multimodal & Vision2022متقدم13 دقيقة قراءة
Flamingo: نموذج لغوي بصري للتعلّم بأمثلة قليلة
Flamingo: a Visual Language Model for Few-Shot Learning
Alayrac, J.-B. · Donahue, J. · Luc, P. · Miech, A. · Barr, I. · Hasson, Y. · Lenc, K. · Mensch, A. · Millican, K. · Reynolds, M. · Ring, R. · Rutherford, E. · Cabi, S. · Han, T. · Gong, Z. · Samangooei, S. · Monteiro, M. · Menick, J. · Borgeaud, S. · Brock, A. · Nematzadeh, A. · Sharifzadeh, S. · Binkowski, M. · Barreira, R. · Vinyals, O. · Zisserman, A. · Simonyan, K. — NeurIPS
المشكلة
بحلول 2022 كان لدينا نماذج بصرية قوية مثل CLIP ونماذج لغوية ضخمة مثل Chinchilla، لكن الجمع بينهما لم يكن سهلاً. لو حاولت إعادة النموذج اللغوي على مهام بصرية، فإنك تخاطر بأن ينسى قدراته اللغوية نسياناً كارثياً. وفوق ذلك، كل مهمة بصرية جديدة — أو الإجابة عن أسئلة بصرية أو — كانت تحتاج بيانات مُعنونة ضخمة وبنية مصمّمة خصيصاً لها. ببساطة، لم يكن هناك ما يقابل قدرة GPT-3 على التعلّم من أمثلة قليلة داخل المحثّ، لكن في عالم الصور.
الإسهام
قدّم Flamingo عائلة من النماذج اللغوية البصرية بثلاثة أحجام (3 و9 و80 مليار معامل) تصل بين مُجمَّد ونموذج لغوي مُجمَّد من خلال ابتكارين أساسيين: الأول هو Perceiver Resampler الذي يضغط السمات البصرية مهما كان عددها إلى 64 رمزاً ثابتاً، والثاني هو طبقات Gated Cross-Attention التي تسمح للنموذج اللغوي باستقبال المعلومات البصرية دون أن تتشوّه تمثيلاته الأصلية. بتدريبه على بيانات ويب تتشابك فيها الصور والنصوص بشكل طبيعي، حقّق Flamingo أفضل أداء بأمثلة قليلة على 16 معياراً ، متفوّقاً على نماذج دُرِّبت بآلاف أضعاف البيانات.
الأثر
أثبت Flamingo أن بالإمكان إضافة فهم بصري لنموذج لغوي مُجمَّد دون أن يفقد قدراته اللغوية، وبذلك أسّس نمط «التجميد مع الربط» الذي أصبح الأسلوب السائد في بناء النماذج متعددة الوسائط. ألهمت آلية Perceiver Resampler بشكل مباشر وحدة Q-Former في BLIP-2، كما أثّر مبدأ تشابك الصور والنصوص على بنية Gemini. واليوم يُعدّ الانتباه التقاطعي المُبوَّب الطريقة المعيارية لوصل المرمِّزات البصرية بالنماذج اللغوية الكبيرة، وهو ما نراه في LLaVA وPaLM-E وغيرها.
تخيّل محاضراً بارعاً يُلقي شروحات ممتازة لكنه لم يرَ صورة في حياته. وظِّف بجانبه مساعداً بصرياً يُشاهد الشرائح، وبعد كل شريحة يكتب ملاحظة لاصقة موجزة عمّا رآه ويدسّها بين صفحات نصّ المحاضرة. المحاضر لا يُعدِّل نصّه أبداً — كل ما يفعله هو أن يتعلّم قراءة هذه الملاحظات ودمج تفاصيلها في حديثه. عند المساعد أيضاً أداة ضغط تُحوِّل أي صورة، مهما كان حجمها، إلى عدد ثابت من النقاط المختصرة في كل مرة. هذا هو Flamingo بالضبط: المحاضر هو النموذج اللغوي الذي لا تتغيّر أوزانه، أداة الضغط هي Perceiver Resampler، والملاحظات اللاصقة تتدفّق عبر طبقات المُبوَّب.
المشكلة: الرؤية واللغة عاشتا في عالمين منفصلين
بحلول 2022 كان لدى مجتمع الذكاء الاصطناعي نوعان من النماذج القوية لا يكاد أحدهما يتحدّث مع الآخر. من ناحية، نماذج مثل CLIP تستطيع مطابقة الصور مع النصوص من خلال فضاء مشترك — لكنها عاجزة عن توليد جملة واحدة. ومن الناحية الأخرى، النماذج اللغوية الكبيرة مثل Chinchilla تكتب فقرات بطلاقة — لكنها لا ترى شيئاً، فهي لا تعالج إلا النصية.
أول ما يتبادر إلى الذهن هو النموذج اللغوي على بيانات بصرية، لكن هذا المسار كان يصطدم بعقبة خطيرة: . حين تُعيد تدريب نموذج بـ70 مليار معامل على بيانات وصف صور، قد يفقد قدراته اللغوية الأصلية. وحتى لو نجوت من النسيان، ستظلّ بحاجة إلى بيانات مُعنونة ضخمة لكل مهمة بصرية جديدة. تريد الإجابة عن أسئلة حول الصور؟ درِّب على بيانات VQA. تريد وصف الصور؟ درِّب على بيانات وصف. لم يكن هناك ما يقابل الذي يقدّمه GPT-3 — حيث تعرض بضعة أمثلة في المحثّ فيُعمِّم النموذج فوراً — لكن في عالم الرؤية.
حل Flamingo: اربط ولا تدمج
الفكرة المحورية في Flamingo هي ضبط النفس في التصميم. بدلاً من صهر الرؤية واللغة في نموذج واحد، يحتفظ Flamingo بكلٍّ من المرمِّز البصري والنموذج اللغوي مُجمَّدَين كما هما، ويبني جسراً خفيفاً بينهما. هذا الجسر يتكوّن من مكوّنين:
- Perceiver Resampler — يأخذ السمات البصرية من الصور أو إطارات الفيديو، مهما كان عددها، ويضغطها إلى 64 رمزاً بصرياً ثابتاً.
- طبقات GATED XATTN-DENSE — طبقات انتباه تقاطعي جديدة تُدرَج بين طبقات النموذج اللغوي المُجمَّدة، تتيح لكل رمز نصّي أن «ينظر» إلى الرموز البصرية ويستفيد منها.
المكوّنات المُجمَّدة — أي المرمِّز البصري والنموذج اللغوي — تشكّل أكثر من 90% من المعاملات ولا يُعاد تدريبها أبداً. ما يُدرَّب من الصفر هو الجسر فقط. بهذه الطريقة تبقى قدرات النموذج اللغوي سليمة، ويكتسب في الوقت نفسه القدرة على فهم المعلومات البصرية.
مُعيد التشكيل الإدراكي: ضغط بصري بمقاس واحد
صورة واحدة تُنتج من المرمِّز البصري مئات السمات (شبكة مكانية ثنائية الأبعاد من NFNet مثلاً)، والفيديو يُنتج آلافاً — شبكة لكل إطار. لو مرّرنا كل ذلك مباشرة إلى النموذج اللغوي لأصبحت التكلفة باهظة، لأن يتناسب تربيعياً مع طول التسلسل.
هنا يأتي Perceiver Resampler بفكرة أنيقة مستوحاة من Perceiver: يُعرِّف 64 استعلاماً كامناً مُتعلَّماً تعمل كلجنة من المحلّلين — كل محلّل ينظر إلى كامل المدخل البصري عبر انتباه تقاطعي ثم يُخرج متّجهاً واحداً يلخّص ما رآه. سواء كان المدخل صورة واحدة أو فيديو من 30 إطاراً، الناتج دائماً 64 رمزاً بصرياً بالضبط. بهذا يرى النموذج اللغوي سياقاً بصرياً بحجم ثابت مهما تغيّر المدخل.
تقنياً، Perceiver Resampler هو صغير: الاستعلامات الكامنة المُتعلَّمة تمثّل الـqueries، وسمات المرمِّز البصري (مع تضمينات زمنية مُتعلَّمة في حالة الفيديو) تمثّل الـkeys والvalues. حجمه 194 مليون معامل فقط — أقل من 0.3% من حجم النموذج اللغوي ذي الـ70 مليار.
الانتباه التقاطعي المُبوَّب: حقن بصري آمن
الآن لدينا 64 رمزاً بصرياً لكل صورة. السؤال هو: كيف يستفيد منها النموذج اللغوي فعلياً؟ الإجابة هي طبقات GATED XATTN-DENSE.
الفكرة بسيطة: تُدرَج طبقات انتباه تقاطعي جديدة بين طبقات النموذج اللغوي المُجمَّدة. في كل طبقة منها، يأتي الاستعلام من الحالات الخفية للنموذج اللغوي — أي ما «يفكّر» فيه النموذج في تلك اللحظة — بينما يأتي المفتاح والقيمة من الرموز البصرية. بعبارة أخرى، كل رمز نصّي يسأل: «هل في الصورة ما يخصّ ما سأقوله الآن؟»
لكن المسألة فيها دقّة مهمة: لو أضفت ناتج الانتباه التقاطعي مباشرة إلى تمثيلات النموذج اللغوي منذ اللحظة الأولى، فإنك ستُفسد ما تعلّمه النموذج سابقاً وينهار الأداء. الحل الذي ابتكره Flamingo هو بوابة tanh: ناتج كل طبقة جديدة يُضرب في ، حيث معامل قابل للتعلّم يبدأ من صفر. عند البداية ، أي أن الإشارة البصرية مكتومة تماماً والنموذج يتصرّف وكأن شيئاً لم يتغيّر. مع تقدّم التدريب، تنمو قيمة تدريجياً فتنفتح البوابة ببطء وتسمح للمعلومات البصرية بالتسرّب بأمان — كصنبور تفتحه شيئاً فشيئاً بدلاً من أن تُطلق السيل دفعة واحدة.
المدخل المتشابك: صور ونصوص في تيار واحد
معظم نماذج الرؤية واللغة في تلك الفترة كانت تتعامل مع صورة واحدة ونصّ واحد في كل مرة. Flamingo يتجاوز هذا القيد ويقبل تسلسلات متشابكة بحرّية من صور أو فيديوهات ونصوص، بالضبط كما نراها في صفحة ويب عادية: صورة، فقرة، صورة أخرى، فقرة أخرى.
يُحدَّد كل عنصر برموز خاصة: <image> يسبق كل مدخل بصري، و<EOC> (نهاية المقطع) يُنهي كل جزء نصّي مرتبط بصورة. هذا التركيب هو ما يجعل ممكناً عملياً: تضع في المحثّ عدة أزواج (صورة، وصف) كأمثلة، ثم تُلحق صورة جديدة وتدع النموذج يولّد الوصف بنفسه.
ولضمان ألّا تؤثّر صور لاحقة على نصّ سابق، يستخدم Flamingo تقنيعاً سببياً للصور في الانتباه التقاطعي: كل رمز نصّي لا يرى إلا الرموز البصرية للصورة التي تسبقه مباشرة، ولا يرى أي صورة لاحقة في التسلسل.
التدريب: أربع مجموعات بيانات وهدف واحد
يُدرَّب Flamingo على أربع مجموعات بيانات يُكمِّل بعضها بعضاً:
- M3W (الويب الضخم المتعدد الوسائط): نصوص وصور من نحو 43 مليون صفحة ويب، مستخرَجة مع الحفاظ على تشابكها الطبيعي. هذه هي المجموعة الأهم لأنها تُعلِّم النموذج كيف يتعلّم من أمثلة متتابعة داخل السياق.
- ALIGN: 1.8 مليار زوج صورة-نص من النصوص البديلة على الويب. حجم ضخم لكن بجودة متفاوتة، ومتوسط طول الوصف 12.4 رمزاً فقط.
- LTIP (أزواج نص طويل وصورة): 312 مليون زوج بجودة أعلى وأوصاف أطول (بمتوسط 20.5 رمز).
- VTP (أزواج فيديو ونص): 27 مليون مقطع فيديو قصير (~22 ثانية) مع أوصاف مرافقة.
دالة الخسارة هي مجموع موزون لاحتمالات اللوغاريتم السالب من كل مجموعة، بأوزان تساوي 1.0 و0.2 و0.2 و0.03 لكلٍّ من M3W وALIGN وLTIP وVTP على الترتيب. لاحظ أن M3W تحصل على أعلى وزن بفارق كبير، لأن بنيتها المتشابكة هي ما يمنح النموذج القدرة على التعلّم في السياق. وقد أكّدت تجارب الحذف ذلك: إزالة M3W وحدها أدّت إلى انخفاض الأداء بنسبة 17% — وهو أكبر أثر لأي مجموعة بيانات منفردة.
التعلّم بأمثلة قليلة: الثمرة النهائية
هنا تظهر الثمرة الحقيقية لكل ما سبق. لنقل إنك تريد نموذجاً يجيب عن أسئلة حول صور طبية — لا تحتاج إلى ضبط دقيق ولا إلى بيانات تدريب جديدة. كل ما تفعله هو بناء محثّ يحتوي على بضعة أمثلة (صورة، سؤال، إجابة)، ثم تُلحق الصورة الجديدة مع سؤالك وتدع Flamingo يولّد الإجابة. البنية المتشابكة التي تدرّبت على صفحات الويب الطبيعية في M3W اكتسبت مهارة فوقية: أن تتعلّم من الأمثلة المعروضة أمامها مباشرة داخل السياق.
يدعم Flamingo التقييم بـ 0 أمثلة (بدون أمثلة مسبقة) وصولاً إلى 32 مثالاً. الأداء يتحسّن بشكل لوغاريتمي-خطّي مع عدد الأمثلة، والمدهش أن 4 أمثلة فقط تكفي في كثير من الحالات لمضاهاة نماذج خضعت لضبط دقيق على عشرات الآلاف من الأمثلة المُعنونة — أو حتى التفوّق عليها.
ثلاثة أحجام: 3 و9 و80 مليار
يتوفّر Flamingo بثلاثة أحجام تتشارك جميعها نفس المرمِّز البصري (435 مليون معامل) ونفس Perceiver Resampler (194 مليون معامل):
- Flamingo-3B: نموذج لغوي مُجمَّد بـ1.4 مليار + 1.2 مليار في طبقات GATED XATTN-DENSE (تُدرَج بعد كل طبقة). المجموع 3.2 مليار معامل.
- Flamingo-9B: نموذج لغوي مُجمَّد بـ7.1 مليار + 1.6 مليار في طبقات الانتباه التقاطعي (تُدرَج كل 4 طبقات). المجموع 9.3 مليار.
- Flamingo-80B: نموذج Chinchilla مُجمَّد بـ70 مليار + 10 مليارات في طبقات الانتباه التقاطعي (تُدرَج كل 7 طبقات). المجموع 80 مليار معامل. استغرق تدريبه 15 يوماً على 1536 شريحة TPU.
ملاحظة تصميمية مهمة: كلما كبر النموذج قلّ تكرار إدراج طبقات الانتباه التقاطعي. في النموذج الأكبر مثلاً تُدرَج طبقة واحدة كل 7 طبقات مُجمَّدة بدلاً من كل طبقة، وهذه مقايضة واعية بين الدقة البصرية والكفاءة الحسابية.
النتائج: أمثلة قليلة تتفوّق على الضبط الدقيق
قُيِّم Flamingo-80B على 16 متعدد الوسائط تغطّي وصف الصور و والتصنيف. النتائج كانت لافتة:
- بـ32 مثالاً فقط وبدون أي ضبط دقيق، حقّق Flamingo أفضل أداء على 6 من 16 معياراً — متجاوزاً نماذج دُرِّبت على آلاف الأمثلة المُعنونة.
- في كل المعايير التي لها نتائج منشورة للتعلّم بأمثلة قليلة، سجّل Flamingo الرقم الأعلى.
- الأداء تناسب بوضوح مع حجم النموذج: Flamingo-80B أفضل من 9B أفضل من 3B في جميع المهام.
- في المهام المفتوحة مثل وصف صور COCO وVQAv2 تحديداً، تفوّق Flamingo بشكل ملحوظ — ما يؤكد أن وجود نموذج لغوي توليدي كركيزة يمنح ميزة حقيقية.
وعند ضبطه لاحقاً على بيانات خاصة بالمهمة، سجّل نتائج غير مسبوقة على 5 معايير إضافية. هذا يعني أن بنية التعلّم بأمثلة قليلة ليست مجرد بديل عن الضبط الدقيق، بل هي أيضاً نقطة انطلاق ممتازة له.
الفكرة في الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
import torch.nn as nn
import torch.nn.functional as F
class PerceiverResampler(nn.Module):
"""اضغط السمات البصرية متغيرة الطول إلى رموز ثابتة."""
def __init__(self, dim=1024, n_latents=64, n_heads=8):
super().__init__()
self.latents = nn.Parameter(torch.randn(n_latents, dim))
self.cross_attn = nn.MultiheadAttention(dim, n_heads, batch_first=True)
self.norm = nn.LayerNorm(dim)
def forward(self, visual_features):
# visual_features: (دفعة, عدد_الرموز, البُعد) — عدد متغير
latents = self.latents.unsqueeze(0).expand(visual_features.shape[0], -1, -1)
# انتباه تقاطعي: الاستعلامات الكامنة تسأل السمات البصرية
out, _ = self.cross_attn(query=latents, key=visual_features, value=visual_features)
return self.norm(out) # (دفعة, 64, البُعد) — دائماً 64 رمزاً
class GatedCrossAttentionDense(nn.Module):
"""طبقة GATED XATTN-DENSE واحدة تُدرَج بين طبقات LM المُجمَّدة."""
def __init__(self, dim=1024, n_heads=8):
super().__init__()
self.cross_attn = nn.MultiheadAttention(dim, n_heads, batch_first=True)
self.ffn = nn.Sequential(nn.Linear(dim, dim * 4), nn.GELU(), nn.Linear(dim * 4, dim))
self.norm1 = nn.LayerNorm(dim)
self.norm2 = nn.LayerNorm(dim)
# البوابات مُهيَّأة عند صفر → tanh(0) = 0 → لا إشارة بصرية في البداية
self.alpha_xattn = nn.Parameter(torch.tensor(0.0))
self.alpha_ffn = nn.Parameter(torch.tensor(0.0))
def forward(self, x, visual_tokens):
# x: حالات خفية نصية من طبقة LM المُجمَّدة
# visual_tokens: ناتج مُعيد التشكيل الإدراكي (دفعة, 64, البُعد)
xattn_out, _ = self.cross_attn(
query=self.norm1(x), key=visual_tokens, value=visual_tokens
)
x = x + torch.tanh(self.alpha_xattn) * xattn_out # اتصال متبقي مُبوَّب
ffn_out = self.ffn(self.norm2(x))
x = x + torch.tanh(self.alpha_ffn) * ffn_out # اتصال متبقي مُبوَّب
return x
# عند البداية: tanh(0) = 0، فالبوابتان مغلقتان.
# الناتج مطابق تماماً لما يُنتجه النموذج اللغوي المُجمَّد.
# أثناء التدريب، تنمو قيم alpha وتفتح بوابات الرؤية ببطء.ما الذي فتحه Flamingo
2021
CLIP — التدريب التبايُني للرؤية واللغة
أثبت أن التدريب التبايُني على أزواج صورة-نص يبني فضاء تمثيل مشتركاً قوياً، لكنه لا يستطيع توليد نصوص.
2022
Chinchilla — النموذج اللغوي الأمثل حسابياً
نموذج لغوي بـ70 مليار معامل دُرِّب بتوازن مثالي بين كمّ البيانات وعدد المعاملات. يعتمده Flamingo كنموذج لغوي أساسي مُجمَّد.
2022
Flamingo — النموذج اللغوي البصري
يصل بين نماذج الرؤية واللغة المُجمَّدة عبر Perceiver Resampler وانتباه تقاطعي مُبوَّب. حقّق أفضل أداء بأمثلة قليلة على 16 معياراً.
2023
BLIP-2 — التدريب البصري اللغوي المُعزَّز
استبدل Perceiver Resampler بوحدة Q-Former الأخف. مستوحى مباشرة من نهج Flamingo القائم على التجميد والربط.
2023
Gemini — نموذج متعدد الوسائط من الأساس
نموذج من Google DeepMind صُمِّم متعدد الوسائط من الأساس. يستلهم مبدأ Flamingo في تشابك الرؤية واللغة، لكنه يُدرِّب الجزأين معاً من الصفر.
الإسهام الأبقى لـ Flamingo هو نمط «جمِّد واربط». قبله كانت النماذج متعددة الوسائط تسلك أحد طريقين: إما تدريب كل شيء من البداية للنهاية (تكلفة عالية وخطر النسيان الكارثي)، أو استخدام طبقات إسقاط بسيطة تُضيع كثيراً من المعلومات البصرية. ما أثبته Flamingo هو أنك تستطيع الاحتفاظ بنماذج قوية مُدرَّبة مسبقاً دون تعديل، ثم وصلها بجسر مُبوَّب يُدرَّب وحده. هذا النمط — مرمِّز بصري مُجمَّد، وحدة ربط، نموذج لغوي مُجمَّد — أصبح الآن الوصفة المعيارية في بناء النماذج متعددة الوسائط، من BLIP-2 إلى LLaVA إلى PaLM-E.
المرجعAlayrac, Donahue, Luc, Miech, et al.. Flamingo: a Visual Language Model for Few-Shot Learning. NeurIPS, 2022.
مصطلحات هذه الورقة
- النموذج اللغوي البصريVisual Language Model
- التعلّم بأمثلة قليلةFew-Shot Learning
- الانتباه التبادليCross-Attention
- بيرسيفرPerceiver
- التعلم في السياقIn-Context Learning
- آلية البواباتGating Mechanism
- مرمِّز بصريVision Encoder
- متعدد الوسائطMultimodal
- التعلم التبايُنيContrastive Learning
- وصف الصورImage Captioning
- الإجابة البصرية عن الأسئلةVisual Question Answering
- التدريب المسبقPretraining
- الضبط الدقيقFine-Tuning
- الأوزان المُجمَّدةFrozen Weights