Yolo فيجن شنتشن
شنتشن
انضم الآن
مسرد المصطلحات

بنك الذاكرة

بنك الذاكرة هو بنية بيانات تُستخدم في خوارزميات التعلم الآلي لتخزين المعلومات من التكرارات السابقة أو العينات المعالجة والرجوع إليها، مما يؤدي إلى فصل سعة ذاكرة النموذج بشكل فعال عن قيوده الحسابية المباشرة . في سياق التعلم العميق (DL)، يعمل بنك الذاكرة عادةً كمستودع للتضمينات أو متجهات الميزات. وهذا يسمح للنموذج بمقارنة المدخلات الحالية مع سجل واسع من المدخلات السابقة دون الحاجة إلى إعادة معالجة أو الاحتفاظ بجميع تلك البيانات في ذاكرة الوصول العشوائي النشطة (RAM) في وقت واحد. من خلال الحفاظ على مخزن مؤقت للتمثيلات، يمكن للنماذج التعلم من سياق أوسع، مما يحسن الأداء في المهام التي تتطلب اتساقًا طويل الأمد أو مقارنة مع مجموعات بيانات كبيرة.

آليات عمل بنك الذاكرة

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

هذه الآلية مهمة بشكل خاص لأن GPU محدودة. بدون بنك ذاكرة ، فإن مقارنة صورة واحدة بمليون صورة أخرى تتطلب حجم دفعة لا يمكن أن يتناسب مع الأجهزة القياسية . مع وجود بنك ذاكرة، يمكن للنموذج تخزين متجهات خفيفة الوزن لتلك الملايين من الصور والرجوع إليها بكفاءة باستخدام تقنيات البحث عن التشابه، مثل المنتج القياسي أو تشابه جيب التمام.

تطبيقات واقعية

أصبحت بنوك الذاكرة حجر الزاوية في العديد من عمليات الرؤية الحاسوبية (CV) واللغة الطبيعية المتقدمة:

  • التعلم التبايني (التعلم الذاتي): أحد أشهر التطبيقات هو التعلم التبايني، وتحديداً في خوارزميات مثل Momentum Contrast (MoCo). هنا، الهدف هو تعليم النموذج التمييز بين صورة معينة و العديد من العينات "السلبية" (صور مختلفة). يخزن بنك الذاكرة آلاف من تمثيلات العينات السلبية ، مما يسمح للنموذج بتعلم ميزات قوية دون الحاجة إلى بيانات تدريب مصنفة. للحصول على تفاصيل تقنية عميقة، غالبًا ما يشير الباحثون إلى ورقة MoCo التي شاعت هذا النهج.
  • تتبع الكائنات على المدى الطويل: في تحليل الفيديو، قد يتم حجب كائن (مثل سيارة أو شخص) مؤقتًا بواسطة عائق. قد تفقد أجهزة التتبع القياسية هوية الكائن (ID) أثناء هذا الحجب. تستخدم أجهزة التتبع المتقدمة بنك ذاكرة لتخزين السمات البصرية للأجسام التي تم اكتشافها في الماضي. عندما يظهر الجسم مرة أخرى، يستعلم النظام عن البنك لإعادة تحديد الهوية الصحيحة. يستفيد المستخدمون الذين يستخدمون Ultralytics لتتبع الأجسام من منطق داخلي مشابه يحافظ على اتساق الهوية عبر الإطارات.
  • فهم الفيديو: للتعرف على الإجراءات التي تمتد لعدة ثوانٍ أو دقائق، تحتاج النماذج إلى سياق زمني. يعمل بنك الذاكرة كعازل للإطارات أو المقاطع السابقة، مما يمكّن الشبكة من "تذكر" ما حدث في بداية الفيديو أثناء معالجة النهاية. وهذا أمر بالغ الأهمية من أجل التعرف الدقيق على الإجراءات.

التمييز بين المفاهيم ذات الصلة

من المفيد التمييز بين بنك الذاكرة ومفاهيم التخزين والمعالجة الأخرى الموجودة في المسرد:

  • بنك الذاكرة مقابل قاعدة البيانات المتجهة: كلاهما يخزن التضمينات لاسترجاعها. ومع ذلك، فإن بنك الذاكرة هو عادةً بنية مؤقتة في الذاكرة تُستخدم بشكل ديناميكي أثناء التدريب أو الاستدلال النشط لجلسة نموذج واحد. قاعدة البيانات المتجهة (مثل تلك المستخدمة في RAG) هي حل تخزين دائم وقابل للتطوير مصمم ليدوم إلى أجل غير مسمى ويخدم تطبيقات متعددة.
  • بنك الذاكرة مقابل نافذة السياق: تحدد نافذة السياق (شائعة في محولات) الحد الأقصى لطول تسلسل الإدخال الذي يعالجه النموذج في المرة الواحدة (على سبيل المثال، 32 ألف رمز). بنك الذاكرة هو مخزن مؤقت خارجي يخزن التمثيلات المضغوطة خارج نافذة المعالجة النشطة ، مما يسمح نظريًا بعمق ذاكرة لا نهائي، كما هو موضح في بنى مثل Transformer-XL.
  • بنك الذاكرة مقابل حجم الدفعة: يحدد حجم الدفعة عدد العينات التي تتم معالجتها بالتوازي لتحديثات التدرج. يزيد بنك الذاكرة من عدد العينات الفعال الذي يمكن للنموذج "رؤيته" لأغراض المقارنة دون زيادة التكلفة الحسابية للمرور الأمامي والخلفي.

مثال على الكود: محاكاة بنك الميزات

ما يلي 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])

التحديات والاعتبارات

على الرغم من قوة بنوك الذاكرة، إلا أنها تطرح تحدي "انحراف التمثيل". نظرًا لأن شبكة التشفير تتغير قليلاً مع كل خطوة تدريب، فقد تكون الميزات المخزنة في البنك منذ 100 خطوة "قديمة" أو غير متسقة مع حالة النموذج الحالية. تساعد تقنيات مثل استخدام مشفر الزخم (متوسط تحديث بطيء للنموذج) في التخفيف من هذه المشكلة.

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

انضم إلى مجتمع Ultralytics

انضم إلى مستقبل الذكاء الاصطناعي. تواصل وتعاون وانمو مع المبتكرين العالميين

انضم الآن