Memory Bank
تعرف على ما هو بنك الذاكرة في التعلم العميق. استكشف كيف تخزن بنوك الذاكرة التضمينات للتعلم التبايني، وتتبع الكائنات، وفهم الفيديو.
بنك الذاكرة هو هيكل بيانات يُستخدم في خوارزميات تعلم الآلة لتخزين ومرجعية المعلومات من التكرارات السابقة أو العينات المعالجة، مما يؤدي بفعالية إلى فصل سعة ذاكرة النموذج عن قيود الحوسبة الفورية الخاصة به. في سياق التعلم العميق (DL)، يعمل بنك الذاكرة عادةً كمستودع لـ التضمينات أو متجهات الميزات. وهذا يسمح للنموذج بمقارنة المدخلات الحالية بسجل واسع من المدخلات السابقة دون الحاجة إلى إعادة معالجة أو الاحتفاظ بكل تلك البيانات في ذاكرة الوصول العشوائي (RAM) النشطة في وقت واحد. من خلال الحفاظ على مخزن مؤقت للتمثيلات، يمكن للنماذج التعلم من سياق أوسع، مما يحسن الأداء في المهام التي تتطلب اتساقاً طويل الأمد أو مقارنة عبر مجموعات بيانات كبيرة.
Link to this sectionآليات بنك الذاكرة#
تتمثل الوظيفة الأساسية لبنك الذاكرة في توسيع نطاق المعلومات المتاحة لما يتجاوز حجم الدفعة الحالي. أثناء التدريب، وبينما تتدفق البيانات عبر الشبكة العصبية، يتم دفع تمثيلات الميزات الناتجة إلى البنك. إذا وصل البنك إلى سعته القصوى، فإنه عادةً ما تتم إزالة أقدم الميزات لإفساح المجال لميزات جديدة، وهي عملية تُعرف باسم طابور "الأول في الداخل، الأول في الخارج" (FIFO).
هذه الآلية حيوية بشكل خاص لأن ذاكرة GPU محدودة. بدون بنك الذاكرة، فإن مقارنة صورة واحدة بمليون صورة أخرى تتطلب حجم دفعة لا يمكن ملاءمته في الأجهزة القياسية. مع بنك الذاكرة، يمكن للنموذج تخزين متجهات خفيفة الوزن لتلك المليون صورة ومرجعيتها بكفاءة باستخدام تقنيات البحث عن التشابه، مثل الضرب النقطي أو تشابه جيب التمام (cosine similarity).
Link to this sectionتطبيقات العالم الحقيقي#
أصبحت بنوك الذاكرة حجر الزاوية في العديد من مهام الرؤية الحاسوبية (CV) ومعالجة اللغات المتقدمة:
- التعلم التبايني (التعلم ذاتي الإشراف): أحد أشهر التطبيقات هو في التعلم التبايني، وتحديداً في خوارزميات مثل Momentum Contrast (MoCo). هنا، الهدف هو تعليم النموذج تمييز صورة محددة عن العديد من العينات "السلبية" (صور مختلفة). يخزن بنك الذاكرة آلاف تمثيلات العينات السلبية، مما يسمح للنموذج بتعلم ميزات قوية دون الحاجة إلى بيانات تدريب مصنفة. للحصول على تفاصيل تقنية عميقة، غالباً ما يرجع الباحثون إلى ورقة MoCo التي جعلت هذا النهج شائعاً.
- تتبع الكائنات طويل الأمد: في تحليل الفيديو، قد يتم حجب كائن (مثل سيارة أو شخص) مؤقتاً بواسطة عائق. قد تفقد أدوات التتبع القياسية هوية (ID) الكائن أثناء هذا الحجب. تستخدم أدوات التتبع المتقدمة بنك الذاكرة لتخزين الميزات المرئية للكائنات التي تم اكتشافها في الماضي. عندما يظهر الكائن مرة أخرى، يستعلم النظام عن البنك لإعادة إنشاء الهوية الصحيحة. يستفيد المستخدمون الذين يستغلون Ultralytics YOLO26 لـ تتبع الكائنات من منطق داخلي مماثل يحافظ على اتساق الهوية عبر الإطارات.
- فهم الفيديو: للتعرف على الإجراءات التي تمتد لعدة ثوانٍ أو دقائق، تحتاج النماذج إلى سياق زمني. يعمل بنك الذاكرة كمخزن مؤقت للإطارات أو المقاطع السابقة، مما يتيح للشبكة "تذكر" ما حدث في بداية الفيديو أثناء معالجة نهايته. هذا أمر بالغ الأهمية لـ التعرف على الإجراءات بدقة.
Link to this sectionالتمييز بين المفاهيم ذات الصلة#
من المفيد تمييز بنك الذاكرة عن مفاهيم التخزين والمعالجة الأخرى الموجودة في المسرد:
- بنك الذاكرة مقابل قاعدة بيانات المتجهات: كلاهما يخزن التضمينات للاسترجاع. ومع ذلك، عادة ما يكون بنك الذاكرة هيكلاً مؤقتاً في الذاكرة يُستخدم ديناميكياً أثناء التدريب أو الاستنتاج النشط لجلسة نموذج واحدة. قاعدة بيانات المتجهات (مثل تلك المستخدمة في RAG) هي حل تخزين دائم وقابل للتطوير يهدف إلى البقاء إلى أجل غير مسمى وخدمة تطبيقات متعددة.
- بنك الذاكرة مقابل نافذة السياق: تحدد نافذة السياق (الشائعة في نماذج Transformer) الحد الأقصى لطول تسلسل الإدخال الذي يعالجه النموذج في وقت واحد (على سبيل المثال، 32 ألف رمز). بنك الذاكرة هو مخزن مؤقت خارجي يخزن تمثيلات مضغوطة خارج نافذة المعالجة النشطة، مما يسمح نظرياً بعمق ذاكرة غير محدود، كما هو الحال في بنيات مثل Transformer-XL.
- بنك الذاكرة مقابل حجم الدفعة: يحدد حجم الدفعة عدد العينات التي تتم معالجتها بالتوازي لتحديثات التدرج. يزيد بنك الذاكرة العدد الفعلي للعينات التي يمكن للنموذج "رؤيتها" لأغراض المقارنة دون زيادة التكلفة الحسابية لعمليات المرور الأمامي والخلفي.
Link to this sectionمثال برمجي: محاكاة بنك الميزات#
يوضح مقتطف Python التالي مفهوم بنك الذاكرة من نوع "الأول في الداخل، الأول في الخارج" (FIFO) باستخدام torch. غالباً ما يُستخدم هذا الهيكل للحفاظ على سجل متجدد لمتجهات الميزات أثناء حلقات التدريب المخصصة أو مهام الاستنتاج المعقدة.
import torch
# Initialize a memory bank (Capacity: 100 features, Vector Dim: 128)
# In a real scenario, these would be embeddings from a model like YOLO26
memory_bank = torch.randn(100, 128)
# Simulate receiving a new batch of features (e.g., from the current image batch)
new_features = torch.randn(10, 128)
# Update the bank: Enqueue new features, Dequeue the oldest ones
# This maintains a fixed size while keeping the memory 'fresh'
memory_bank = torch.cat([memory_bank[10:], new_features], dim=0)
print(f"Updated Memory Bank Shape: {memory_bank.shape}")
# Output: Updated Memory Bank Shape: torch.Size([100, 128])Link to this sectionالتحديات والاعتبارات#
على الرغم من قوتها، تقدم بنوك الذاكرة تحدي "انحراف التمثيل". نظراً لأن شبكة التشفير تتغير قليلاً مع كل خطوة تدريب، فقد تكون الميزات المخزنة في البنك منذ 100 خطوة "قديمة" أو غير متسقة مع حالة النموذج الحالية. تساعد تقنيات مثل استخدام مشفر الزخم (متوسط التحديث البطيء للنموذج) في التخفيف من هذه المشكلة.
بالنسبة للفرق التي تتطلع إلى إدارة إصدارات مجموعات البيانات وأدوات النماذج التي تستخدم هذه التقنيات المتقدمة، توفر Ultralytics Platform مركزاً موحداً لتنظيم البيانات، وتتبع التجارب، ونشر النماذج بكفاءة. تعد إدارة تعقيد تخزين الميزات واسترجاعها ضرورية للانتقال من الذكاء الاصطناعي (AI) التجريبي إلى أنظمة إنتاج قوية.






