Hard Negative Mining
يحدد التنقيب عن السلبيات الصعبة العينات السلبية التي يخلط النموذج بينها وبين الإيجابية أكثر من غيرها، ويركز التدريب عليها، ما يقلل الإيجابيات الكاذبة في الكشف والبحث.
التنقيب عن السلبيات الصعبة استراتيجية تدريب تحدد الأمثلة السلبية التي يخطئ النموذج في تصنيفها أكثر من غيرها، وتركز التعلم عليها. المثال السلبي لا ينتمي إلى الفئة المستهدفة، والسالب الصعب هو ما يظل النموذج يمنحه درجة تشبه الإيجابي: كرقعة خلفية يحددها الكاشف على أنها جسم، أو صورة غير ذات صلة يضعها نموذج التضمين بجوار الاستعلام. معظم الأمثلة السلبية سهلة، وبعد أن يتعامل النموذج معها لا تكاد تقدم أي إشارة تعلم؛ لذا يؤدي اختيار الأمثلة الصعبة إلى تحسين حدود القرار وتقليل الإيجابيات الكاذبة.
آلية عمل التنقيب عن السلبيات الصعبة#
يختلف معنى الصعب باختلاف المهمة:
- في كشف الأجسام، تكون المنطقة الخلفية صعبة عندما يمنحها الكاشف درجة جسم.
- في التصنيف، يكون السالب الصعب مثالًا من فئة خاطئة يُمنح ثقة عالية للفئة المستهدفة.
- في الاسترجاع وأنظمة التوصية، يكون العنصر غير ذي الصلة مرتفع الترتيب وقريبًا من الاستعلام، وللأمثلة السلبية ذات الدرجات العالية أكبر تأثير في التدرج.
- في تعلم المقاييس، يكون المثال السلبي أقرب إلى نقطة ارتكاز من المثال الإيجابي المطابق، وتعاقبه خسارة هامش الثلاثيات.
يجري التنقيب إما دون اتصال أو عبر الإنترنت. يشغّل التنقيب دون اتصال نموذجًا مدرّبًا على مجموعة كبيرة من البيانات السلبية فقط، ويجمع إيجابياته الكاذبة، ويضيفها إلى مجموعة التدريب، ثم يعيد التدريب. وقد دُرّبت كواشف المشاة التقليدية ذات النافذة المنزلقة بهذه الطريقة، إذ كانت تمسح صورًا خالية من الأشخاص بحثًا عن إنذارات كاذبة ثم تعيد التدريب عليها. أما التنقيب عبر الإنترنت فيختار الأمثلة الصعبة داخل كل دفعة تدريب. يرتب SSD مربعاته الافتراضية السلبية وفق خسارة التصنيف، ويحتفظ بالأعلى خسارة فقط، وبحد أقصى ثلاثة أمثلة سلبية لكل إيجابي، ويطبق التنقيب عبر الإنترنت عن الأمثلة الصعبة (OHEM) الفكرة نفسها على مقترحات المناطق في الكواشف ذات المرحلتين. ولا يستغرق اختيار SSD سوى بضعة أسطر:
import torch
import torch.nn.functional as F
torch.manual_seed(0)
# Simulated objectness logits for 8,400 candidate boxes: 20 cover an object, the rest are background
logits = torch.randn(8400) - 3
labels = torch.zeros(8400)
labels[:20] = 1
loss = F.binary_cross_entropy_with_logits(logits, labels, reduction="none")
# Keep every positive plus only the highest-loss negatives, at most 3 per positive
positives = labels == 1
negative_loss = loss.masked_fill(positives, 0)
hard_negatives = negative_loss.topk(3 * int(positives.sum())).indices
kept = torch.cat([positives.nonzero().squeeze(1), hard_negatives])
print(f"boxes in the loss: {len(kept)} of {len(loss)}")
print(f"mean negative loss: all {loss[~positives].mean():.3f}, mined {loss[hard_negatives].mean():.3f}")تحتفظ الخسارة بـ80 من أصل 8,400 مربع: الإيجابيات العشرين والسلبيات الستين التي يمنحها النموذج درجات تشبه الأجسام أكثر من غيرها. ويبلغ متوسط خسارة هذه السلبيات الستين المستخرجة 0.648، مقابل 0.075 لجميع السلبيات البالغ عددها 8,380، لذا يتركز التدرج على الخلفية التي يخلط النموذج بينها وبين الأجسام فعلًا.
التنقيب عن السلبيات الصعبة والتقنيات ذات الصلة#
- أخذ عينات سلبية: يختار مجموعة فرعية قابلة للإدارة من جميع الأمثلة السلبية، وغالبًا ما يكون الاختيار عشوائيًا. أما التنقيب عن السلبيات الصعبة فيختار الأمثلة الأكثر إرباكًا.
- الخسارة البؤرية: تُبقي كل مثال ضمن الخسارة، لكنها تخفض وزن الأمثلة المصنّفة تصنيفًا صحيحًا، ما أتاح للكواشف أحادية المرحلة مثل RetinaNet التدريب على جميع المربعات المرشحة دون أخذ عينات صريح.
- التعلم النشط: يختار أمثلة غير معنونة وغير مؤكدة لإسنادها إلى البشر، بما يشمل الإيجابيات المحتملة. أما التنقيب عن السلبيات الصعبة فيستهدف أمثلة تأكد مسبقًا أنها سلبية.
- موازنة الفئات: تصحح تفاوت تواتر الفئات عبر تقليل العينات وزيادة الأوزان. ولا تعني كثرة فئة سلبية بالضرورة أنها صعبة.
- زيادة البيانات: تنشئ تنويعات من العينات الموجودة، ولا يمكنها إدخال جسم مربك لم تتضمنه مجموعة البيانات من قبل.
تطبيقات عملية#
- كشف السلامة في المستودعات: يفقد مشغّلو الكاشف الذي يكرر الإبلاغ عن عربات نقل المنصات وانعكاسات الأرفف والرافعات المقصية ثقتهم به بسبب الإنذارات الكاذبة. ويعلّم جمع هذه المشاهد كصور سلبية وإعادة التدريب الكاشف السمات التي تميّز الرافعة الشوكية عن المعدات المشابهة.
- البحث البصري عن المنتجات: عندما يرتب البحث عن حذاء جري أسود محدد أحذية مشابهة من خطوط منتجات أخرى في مواضع عالية جدًا، تصبح تلك المنتجات أمثلة سلبية صعبة. ويعلّم التدريب عليها، مثل استخدامها أمثلة سلبية في ثلاثيات نقطة الارتكاز والإيجابي والسلبي لشبكة سيامية، نموذج التضمين الحفاظ على الفروق الدقيقة مثل شكل النعل وموضع الشعار والخامة.
سير عمل التنقيب دون اتصال#
تشغّل كل جولة من التنقيب دون اتصال النموذج الحالي، وتتحقق مما أشار إليه، ثم تضيف الحالات المؤكدة إلى التدريب:
تكتسب خطوة المراجعة أهميتها لأن «الإيجابية الكاذبة» قد تكون جسمًا حقيقيًا أغفله القائمون بالتعليق، وإضافته مثالًا سلبيًا ستعلّم النموذج كبت الاكتشافات الصحيحة. يتعامل Ultralytics YOLO مع صورة التدريب التي يفتقد ملف تسميتها أو يكون فارغًا بوصفها صورة خلفية، فتتلقى كل نقطة ارتكاز عليها درجة هدف تساوي صفرًا، وتُعاقب أي تنبؤات واثقة عليها؛ لذا لا يتطلب إدراج السلبيات المستخرجة في مجموعة بيانات YOLO26 سوى نسخ الصور إليها دون تسميات. ويظهر التقدم في ارتفاع الدقة الإيجابية عند مستوى الاستدعاء نفسه، مع تتبعه على مجموعة الاختبار الكاملة وعلى شريحة مخصصة للسلبيات الصعبة.
قد يؤدي التدريب على أصعب السلبيات وحدها إلى نتائج عكسية. ففي تدريب تضمينات الوجوه باستخدام FaceNet، قد يؤدي اختيار أصعب السلبيات مبكرًا إلى انهيار النموذج وجعله يعيّن الوجه نفسه لكل الصور؛ لذا درّب المؤلفون النموذج على السلبيات شبه الصعبة، التي تكون أبعد عن نقطة الارتكاز من الإيجابي، لكنها تظل داخل هامش الثلاثية.










