الرؤية الحاسوبية2020متوسط11 دقيقة قراءة
تباين الزخم للتعلّم التمثيلي البصري غير الخاضع للإشراف
Momentum Contrast for Unsupervised Visual Representation Learning
He, K. · Fan, H. · Wu, Y. · Xie, S. · Girshick, R. — CVPR
المشكلة
حقّق تعلّم التمثيلات بلا إشراف نجاحات كبيرة في معالجة اللغة الطبيعية (word2vec وBERT)، لكن في الرؤية الحاسوبية ظلّ الخاضع للإشراف على ImageNet هو المهيمن. أظهر التعلّم التبايُني نتائج واعدة لكنه اصطدم بمعضلة أساسية: النموذج يحتاج عدداً كبيراً من العيّنات السلبية المتسقة ليتعلّم جيداً. الأساليب من طرف لطرف (مثل SimCLR) تتطلب دُفعات ضخمة — غالباً 4096 أو 8192 — لأن العيّنات السلبية تأتي من الدُّفعة الحالية فقط. أما أساليب بنك الذاكرة فتُخزّن تمثيلات من دورات تدريبية سابقة، لكنها تتقادم بسرعة مع تحديث فتفقد اتساقها. لا الأسلوب الأول يحلّ المشكلة دون تكلفة حوسبية هائلة، ولا الثاني يضمن جودة العيّنات.
الإسهام
يُعيد MoCo صياغة التعلّم التبايُني بوصفه عملية بحث في قاموس: مُرمِّز للاستعلام، ومُرمِّز مفاتيح يُحدَّث ، وطابور من المفاتيح المُرمَّزة يفصل حجم القاموس عن حجم الدُّفعة. أوزان مُرمِّز المفاتيح هي متوسط متحرك أُسِّي لأوزان مُرمِّز الاستعلام (بزخم مقداره 0.999)، مما يحافظ على اتساق المفاتيح حتى مع تقدّم التدريب. يتّسع لـ 65,536 مفتاحاً ويتخلّص من الأقدم أولاً بأسلوب FIFO — أي عيّنات سلبية أكثر بكثير مما تستوعبه أي دُفعة. بهذا التصميم البسيط ضاهى MoCo التدريب المسبق الخاضع للإشراف أو تفوّق عليه في 7 مهام رصد وتجزئة، مُقلّصاً الفجوة بين التعلّم بإشراف والتعلّم بلا إشراف في تمثيل الصور.
الأثر
أثبت MoCo أن السمات البصرية المُتعلَّمة بلا إشراف تنتقل بكفاءة مكافئة — أو أعلى — من نظيراتها الخاضعة للإشراف في مهام الرصد والتجزئة. قدّم فكرة التي تبنّتها لاحقاً BYOL وSimSiam وDINO. كما ألهمت آلية الطابور أساليب أخذ عيّنات سلبية فعّالة في المجال بأسره. امتدّت الفكرة في MoCo v2 وv3 لتشمل محوِّلات الرؤية. وبالتوازي مع SimCLR، أطلق MoCo ثورة التعلّم ذاتي الإشراف في الرؤية الحاسوبية التي جعلت التسميات اختيارية في التدريب المسبق.
تخيّل محققة تتعلّم التعرّف على المشتبه بهم دون أن يُخبرها أحد بأسمائهم. أداتها الوحيدة: ألبوم صور تحمله معها (الطابور). عندما يدخل مشتبه به جديد تلتقط صورتين من زاويتين مختلفتين. تُعطي صورة لشريكها الحادّ الملاحظة (مُرمِّز الاستعلام) وصورة أخرى لشريك ثانٍ أكثر ثباتاً ومنهجية (مُرمِّز الزخم) يُحدِّث أسلوبه ببطء شديد فتبقى أوصافه مستقرة. يسأل الشريك الأول: «أي صورة في الألبوم تُطابق هذا الشخص؟» — ويتعلّم من كل تطابق صحيح وكل خطأ. كل يوم تُضاف أحدث صورة إلى الألبوم وتُحذف الأقدم. مع مرور الوقت يصبح الشريكان بارعَين في التعرّف على الأشخاص — دون أن يعرف أيٌّ منهما اسماً واحداً.
الفجوة: الرؤية الحاسوبية لم تشهد بعد لحظتها الفارقة كما فعلت اللغة مع BERT
بحلول عام 2019 كانت معالجة اللغة الطبيعية قد عبرت عتبة مهمة: نماذج مثل BERT تعلّمت تمثيلات قوية من نصوص بلا تسميات، ثم نُقلت هذه التمثيلات إلى مهام أخرى مع قدر ضئيل من . في المقابل، ظلّت الرؤية الحاسوبية تراوح مكانها: الوصفة السائدة كانت لا تزال «درِّب مسبقاً على ImageNet بتسميات بشرية ثم اضبط النموذج». وتسمية ملايين الصور عملية مكلفة وبطيئة ومحصورة بفئات محددة سلفاً.
قدّم مخرجاً واعداً — والفكرة بسيطة: قرِّب تمثيلات الأشياء المتشابهة من بعضها وأبعِد تمثيلات الأشياء المختلفة في فضاء . لكن مشكلتين عمليتين حالتا دون مجاراة التدريب المسبق الخاضع للإشراف:
- قلّة العيّنات السلبية. الأساليب من طرف لطرف مثل SimCLR تستخدم الدُّفعة الحالية فقط كعيّنات سلبية. للحصول على عدد كافٍ تحتاج آلاف العيّنات في كل دُفعة — مما يستلزم عدداً كبيراً من المعالجات الرسومية وذاكرة هائلة.
- تقادم العيّنات السلبية. أساليب بنك الذاكرة تُخزّن تمثيلات سابقة، لكن هذه التمثيلات رُمِّزت بنُسخ أقدم من الشبكة. ومع تطوّر المُرمِّز تصبح المفاتيح القديمة غير متسقة مع الجديدة، فيتدرّب النموذج على إشارات متناقضة.
فكرة MoCo: قاموس ديناميكي مع مُرمِّز زخم
يُعيد MoCo صياغة التعلّم التبايُني بوصفه عملية . تخيّله كأنك تبني محرك بحث للصور:
لديك استعلام (تمثيل لصورة جديدة) وقاموس من المفاتيح (تمثيلات لصور أخرى). المطلوب أن يتطابق الاستعلام مع المفتاح الوحيد الذي يمثّل الصورة نفسها (لكن بتعزيز مختلف) وألّا يتطابق مع أي مفتاح آخر. وكلّما كان القاموس أكبر وأكثر اتساقاً، كانت التمثيلات المُتعلَّمة أجود.
يُحقّق MoCo ذلك بثلاثة مكوّنات:
- مُرمِّز الاستعلام — يُدرَّب بالطريقة المعتادة عبر .
- مُرمِّز الزخم — أوزانه لا تُحدَّث بالتدرّجات، بل هي لأوزان مُرمِّز الاستعلام.
- طابور من المفاتيح المُرمَّزة — مخزن مؤقت يعمل بنظام يحتفظ بمفاتيح من الدُّفعات الأخيرة، فيفصل حجم القاموس عن .
مُرمِّز الزخم: التحديث البطيء هو سرّ الاتساق
النقطة الجوهرية هنا: لو حدّثت مُرمِّز المفاتيح بالسرعة نفسها التي يتحدّث بها مُرمِّز الاستعلام (كما يحدث في التدريب من طرف لطرف)، فإن المفاتيح في قاموسك تفقد اتساقها — المفاتيح القديمة أنتجها مُرمِّز يختلف كثيراً عن المُرمِّز الذي أنتج المفاتيح الجديدة. الأمر أشبه بقاموس نصف مُدخلاته مكتوب بلهجة قديمة والنصف الآخر بلغة معاصرة.
حلّ MoCo: حدِّث مُرمِّز المفاتيح ببطء شديد باستخدام المتوسط المتحرك الأُسِّي. بعد كل خطوة تدريبية تصبح مُعاملات مُرمِّز المفاتيح مزيجاً مُرجَّحاً من قيمها السابقة ومُعاملات مُرمِّز الاستعلام الجديدة :
الطابور: ذاكرة متجدّدة من العيّنات السلبية
التعلّم التبايُني يحتاج عيّنات سلبية — وبأعداد كبيرة. كلّما زاد عدد العيّنات السلبية صعبت مهمة التمييز، مما يُجبر المُرمِّز على تعلّم سمات أفضل وأغنى. لكن كيف تحصل على 65,536 عيّنة سلبية حين حجم دُفعتك 256 فقط؟
جواب MoCo: طابور. كل دُفعة تُنتج مفاتيح مُرمَّزة عبر مُرمِّز الزخم، فتُدرَج هذه المفاتيح في الطابور وتُزال الأقدم. حجم الطابور مستقل تماماً عن حجم الدُّفعة — يمكنك بناء قاموس يضمّ 65,536 مفتاحاً بينما تتدرّب بدُفعة من 256 عيّنة على معالج رسومي واحد.
الأمر أشبه بأرشيف كاميرات مراقبة: تحتفظ بتسجيلات الأيام القليلة الأخيرة (الطابور)، وكلّما وصلت تسجيلات جديدة حذفت الأقدم. في أي لحظة يمكنك البحث في تسجيلات أكثر بكثير ممّا يُسجَّل الآن.
دالة خسارة InfoNCE: اعثر على المفتاح الصحيح
بعد اكتمال البنية يحتاج النموذج إلى إشارة تدريبية تُوجّهه. يستخدم MoCo دالة خسارة — وهي شكل من أشكال الخسارة التبايُنية يُشبه مسألة تصنيف. لدينا استعلام ومفتاح إيجابي واحد (الصورة نفسها لكن بتعزيز مختلف) و مفتاح سلبي من الطابور. على النموذج أن يُحدّد المفتاح الإيجابي من بينها. هي ببساطة بأسلوب على درجات التشابه:
كيف نقرأ هذه الصيغة بشكل حدسي؟ تقول : «اجعل بين الاستعلام ومفتاحه المطابق أكبر ما يمكن، واجعله مع جميع المفاتيح الأخرى أصغر ما يمكن.» مُعامل يتحكّم في مدى حدّة التوزيع — قيمة منخفضة (0.07) تجعل النموذج أكثر حسماً فلا يقبل إلا بفائز واضح.
هذا في جوهره تصنيف Softmax بين فئة، حيث «الفئة» الصحيحة هي المفتاح الإيجابي بين مفتاح سلبي. مع على النموذج أن يختار الصورة الصحيحة من بين 65,537 مُرشّحاً — مهمة تمييز بالغة الصعوبة تستلزم سمات غنية وتفصيلية.
دورة التدريب الكاملة
لنستعرض الآن المراحل الكاملة لتدريب MoCo. في كل دُفعة:
الخطوة 1 — التعزيز. خذ كل صورة وأنشئ نسختين مُعزَّزتين عشوائياً: لمُرمِّز الاستعلام و لمُرمِّز الزخم. تشمل عمليات القصّ العشوائي واضطراب الألوان والانعكاس الأفقي والتحويل إلى التدرّج الرمادي.
الخطوة 2 — الترميز. مرِّر عبر مُرمِّز الاستعلام للحصول على الاستعلام . ومرِّر عبر مُرمِّز الزخم للحصول على المفتاح . مُرمِّز المفاتيح يعمل بدون حساب تدرّجات — لا تمرّ عبره أي تدرّجات.
الخطوة 3 — المقارنة. احسب خسارة InfoNCE: يجب أن يتطابق مع ولا يتطابق مع أي من مفاتيح الطابور الـ .
الخطوة 4 — تحديث مُرمِّز الاستعلام. نفِّذ الانتشار العكسي عبر دالة الخسارة وحدِّث بالانحدار التدريجي العشوائي (SGD).
الخطوة 5 — تحديث مُرمِّز الزخم. طبِّق تحديث المتوسط المتحرك الأُسِّي: .
الخطوة 6 — تحديث الطابور. أدرِج المفاتيح الجديدة من هذه الدُّفعة، وأزل المفاتيح الأقدم.
الفكرة نفسها بلغة الكود
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
# f_q: مُرمِّز الاستعلام f_k: مُرمِّز الزخم (نفس البنية)
# queue: مصفوفة بأبعاد [K, C] K = 65536, C = 128
# m: الزخم = 0.999 tau: الحرارة = 0.07
for x in loader: # كل صورة
x_q = augment(x) # قصّ عشوائي + اضطراب ألوان + ...
x_k = augment(x) # تعزيز عشوائي مختلف
q = f_q(x_q) # الاستعلام: [N, C]، التدرّجات مُفعَّلة
q = normalize(q, dim=1)
with torch.no_grad():
k = f_k(x_k) # المفتاح: [N, C]، بلا تدرّجات
k = normalize(k, dim=1)
# التشابه الإيجابي: Nx1
l_pos = torch.bmm(q.unsqueeze(1), k.unsqueeze(2)).squeeze(-1)
# التشابه السلبي: NxK (الطابور يحوي K مفتاحاً من دُفعات سابقة)
l_neg = q @ queue.clone().T
logits = torch.cat([l_pos, l_neg], dim=1) / tau # Nx(1+K)
labels = torch.zeros(N, dtype=torch.long) # الإيجابي في الموضع 0
loss = F.cross_entropy(logits, labels)
loss.backward() # تحديث f_q فقط
optimizer.step()
# تحديث الزخم لـ f_k
for p_q, p_k in zip(f_q.parameters(), f_k.parameters()):
p_k.data = m * p_k.data + (1 - m) * p_q.data
# تحديث الطابور (FIFO)
queue = torch.cat([k, queue[:K - N]], dim=0)النتائج: الفجوة تتقلّص
قُيِّم MoCo بأسلوبين: (تجميد المُرمِّز وتدريب مُصنِّف خطي فوقه فقط) و**** (الضبط الدقيق على مهام لاحقة مثل و على PASCAL VOC وCOCO).
في التقييم الخطي على ImageNet بهيكل ResNet-50 حقّق MoCo دقة 60.6% — وهي نتيجة مُنافِسة لـ SimCLR الذي احتاج 8 أضعاف حجم الدُّفعة.
المفاجأة الحقيقية جاءت من نقل التعلّم: في رصد الكائنات على PASCAL VOC تفوّق تدريب MoCo المسبق على التدريب المسبق الخاضع للإشراف بفارق +0.5 AP. وفي مهام الرصد والتجزئة على COCO ضاهى MoCo التدريب الخاضع للإشراف أو تجاوزه في جميع المقاييس. كان هذا أول دليل مُقنع على أن التدريب المسبق البصري بلا إشراف قد يتفوّق على التدريب بإشراف في المهام التطبيقية.
دراسات الاستئصال: ما العوامل المؤثرة فعلاً؟
أجرى المؤلفون دراسة استئصال منهجية لثلاثة عوامل رئيسية:
- حجم الطابور (K). زيادة الطابور من 1024 إلى 65,536 تُحسّن الدقة باطراد. عيّنات سلبية أكثر تعني مهمة أصعب، ومهمة أصعب تعني سمات أفضل. بعد 65 ألفاً تستقرّ المكاسب.
- الزخم (m). القيمة المُثلى هي . قيمة منخفضة جداً (0.9) تُفقد المفاتيح اتساقها فينهار التدريب. قيمة مرتفعة جداً (0.9999) تجعل مُرمِّز المفاتيح بالكاد يتحرّك فيفقد القدرة على التكيّف.
- جدول التدريب. 200 تُعطي نتائج أفضل بكثير من 100. السبب أن التحديث البطيء بالزخم يعني أن مُرمِّز المفاتيح يحتاج وقتاً أطول حتى يتقارب.
الأثر: ما الذي أشعله MoCo
امتدّ أثر أفكار MoCo في المجال بطرق لم يتوقّعها مؤلفوه:
BYOL طرح سؤالاً جريئاً: ماذا لو استغنينا عن العيّنات السلبية تماماً؟ أبقى على مُرمِّز الزخم لكنه أزال الطابور، وأثبت أن عدم التماثل بين المُرمِّزَين وحده يكفي لمنع الانهيار.
SimCLR سلك الطريق المعاكس — لا مُرمِّز زخم ولا طابور، بل دُفعات ضخمة فقط. التوتّر بين كفاءة MoCo وبساطة SimCLR دفع المجال إلى تقدّم سريع.
MoCo v2 (2020) تبنّى تعزيزات SimCLR الأقوى ورأس إسقاط MLP، فارتفعت دقة ImageNet إلى 71.1%. ثم مدّد MoCo v3 (2021) الإطار ليشمل . وبنت DINO وSwAV وVICReg وBarlow Twins جميعها على رؤى مستقاة من MoCo.
2018
تمييز الحالات (InstDisc)
اقترح Wu وآخرون معاملة كل صورة بوصفها فئة مستقلة — وكان هذا أول أسلوب يعتمد بنك الذاكرة. أثبت نجاح الفكرة لكن المفاتيح كانت تتقادم مع تحديث المُرمِّز.
2018
التشفير التنبُّئي التبايُني (CPC)
قدّم Van den Oord وآخرون دالة خسارة InfoNCE وفكرة التنبّؤ بالتمثيلات المستقبلية عبر المقارنة التبايُنية. نجح الأسلوب عبر الصوت والنص والصور.
2020
MoCo (هذه الورقة)
مُرمِّز الزخم + الطابور = قاموس كبير ومتسق. أول عمل يُضاهي التدريب المسبق الخاضع للإشراف في نقل التعلّم لمهام الرصد والتجزئة.
2020
SimCLR
أثبت Chen وآخرون أن التعلّم التبايُني البسيط يعمل بشكل مُبهر — لكنه يحتاج دُفعات بحجم 4096 أو أكثر. قدّموا تعزيزات أقوى ورأس إسقاط MLP.
2020
BYOL
تخلّص Grill وآخرون من العيّنات السلبية كلياً. أبقوا على مُرمِّز الزخم وأضافوا رأس تنبّؤ إلى فرع الاستعلام. وأثبتوا أن عدم التماثل يمنع الانهيار.
2021
DINO
دمج Caron وآخرون التقطير الذاتي مع مُعلّم الزخم على محوِّلات الرؤية. واكتشفوا أن محوِّلات الرؤية ذاتية الإشراف تتعلّم التجزئة الدلالية تلقائياً دون توجيه.
لماذا يُعدّ هذا العمل مهماً
المرجعHe, Fan, Wu, Xie, Girshick. Momentum Contrast for Unsupervised Visual Representation Learning. CVPR, 2020.
مصطلحات هذه الورقة
- التعلم التبايُنيContrastive Learning
- مُرمِّز الزخمMomentum Encoder
- الطابورQueue
- خسارة InfoNCEInfoNCE Loss
- البحث في القاموسDictionary Look-up
- المتوسط المتحرك الأُسّيExponential Moving Average
- الوارد أولاً يخرج أولاًFIFO
- الاختبار الخطيLinear Probing