Memory Bank
Derin öğrenmede bellek bankasının ne olduğunu öğren. Bellek bankalarının karşıt öğrenme, nesne takibi ve video anlama için yerleştirmeleri nasıl depoladığını incele.
Bir memory bank, makine öğrenmesi algoritmalarında geçmiş iterasyonlardan veya işlenen örneklerden gelen bilgileri depolamak ve bunlara başvurmak için kullanılan bir veri yapısıdır; modelin bellek kapasitesini anlık hesaplama kısıtlamalarından etkili bir şekilde soyutlar. deep learning (DL) bağlamında, bir memory bank genellikle embeddings veya öznitelik vektörleri için bir depo görevi görür. Bu, bir modelin tüm bu verileri aynı anda aktif rastgele erişimli bellekte (RAM) yeniden işlemeye veya tutmaya gerek kalmadan, mevcut girdiyi önceki girdilerin geniş bir geçmişiyle karşılaştırmasına olanak tanır. Modeller, bir temsil arabelleği koruyarak daha geniş bir bağlamdan öğrenebilir ve uzun vadeli tutarlılık veya büyük veri kümeleriyle karşılaştırma gerektiren görevlerde performansı artırabilir.
Bellek Bankasının Mekaniği#
Bir memory bank'in birincil işlevi, mevcut batch size sınırının ötesindeki bilgileri genişletmektir. Eğitim sırasında, veriler sinir ağından geçerken, ortaya çıkan öznitelik temsilleri bankaya itilir. Banka maksimum kapasitesine ulaşırsa, yeni olanlara yer açmak için genellikle en eski öznitelikler kaldırılır; bu süreç First-In, First-Out (FIFO) kuyruğu olarak bilinir.
Bu mekanizma özellikle GPU belleği sınırlı olduğu için hayati önem taşır. Bir memory bank olmadan, tek bir görseli milyonlarca başka görselle karşılaştırmak, standart donanıma sığdırılması imkansız bir batch size gerektirirdi. Bir memory bank ile model, bu milyonlarca görselin hafif vektörlerini depolayabilir ve nokta çarpımı veya kosinüs benzerliği gibi similarity search tekniklerini kullanarak bunlara verimli bir şekilde başvurabilir.
Gerçek Dünya Uygulamaları#
Memory bank'ler, çeşitli gelişmiş computer vision (CV) ve doğal dil iş akışlarında bir temel taş haline gelmiştir:
- Karşılaştırmalı Öğrenme (Öz Denetimli Öğrenme): En ünlü uygulamalardan biri contrastive learning, özellikle Momentum Contrast (MoCo) gibi algoritmalardadır. Burada amaç, modele belirli bir görseli birçok "negatif" örnekten (farklı görsellerden) ayırt etmeyi öğretmektir. Bir memory bank, binlerce negatif örnek temsilini depolayarak modelin etiketli training data gerektirmeden sağlam öznitelikler öğrenmesini sağlar. Derin teknik detaylar için araştırmacılar genellikle bu yaklaşımı popülerleştiren MoCo paper çalışmasına başvururlar.
- Uzun Vadeli Nesne Takibi: Video analizinde, bir nesne (araba veya insan gibi) bir engel tarafından geçici olarak gizlenebilir. Standart takipçiler bu tıkanıklık sırasında nesnenin kimliğini (ID) kaybedebilir. Gelişmiş takipçiler, geçmişte tespit edilen nesnelerin görsel özniteliklerini depolamak için bir memory bank kullanır. Nesne yeniden ortaya çıktığında, sistem doğru kimliği yeniden oluşturmak için bankayı sorgular. object tracking için Ultralytics YOLO26 kullanan kullanıcılar, kareler arasında kimlik tutarlılığını koruyan benzer bir dahili mantıktan faydalanır.
- Video Anlama: Birkaç saniye veya dakika süren eylemleri tanımak için modellerin zamansal bağlama ihtiyacı vardır. Bir memory bank, geçmiş kareler veya klipler için bir arabellek görevi görerek ağın, sonunu işlerken videonun başında ne olduğunu "hatırlamasını" sağlar. Bu, doğru action recognition için çok önemlidir.
İlgili Kavramları Ayırt Etme#
Bellek bankasını sözlükte bulunan diğer depolama ve işleme kavramlarından ayırt etmek yararlıdır:
- Memory Bank ile Vector Database Karşılaştırması: Her ikisi de geri alma için embedding'leri depolar. Bununla birlikte, bir memory bank genellikle tek bir model oturumunun eğitimi veya aktif çıkarımı sırasında dinamik olarak kullanılan geçici, bellek içi bir yapıdır. (RAG içinde kullanılanlar gibi) bir vektör veritabanı, süresiz olarak kalması ve birden fazla uygulamaya hizmet etmesi amaçlanan kalıcı, ölçeklenebilir bir depolama çözümüdür.
- Memory Bank ile Context Window Karşılaştırması: Bir bağlam penceresi (Transformer'larda yaygındır), modelin aynı anda işlediği maksimum girdi dizisi uzunluğunu tanımlar (ör. 32k token). Bir memory bank, aktif işleme penceresinin dışında sıkıştırılmış temsilleri depolayan harici bir arabellektir ve Transformer-XL gibi mimarilerde görüldüğü gibi teorik olarak sonsuz bellek derinliğine izin verir.
- Memory Bank ile Batch Size Karşılaştırması: Batch size, gradyan güncellemeleri için kaç örneğin paralel olarak işleneceğini belirler. Bir memory bank, ileri ve geri geçişlerin hesaplama maliyetini artırmadan, modelin karşılaştırma amacıyla "görebileceği" etkili örnek sayısını artırır.
Kod Örneği: Bir Öznitelik Bankasının Simülasyonu#
Aşağıdaki Python kod parçacığı, torch kullanarak bir First-In, First-Out (FIFO) memory bank konseptini göstermektedir. Bu yapı, özel eğitim döngüleri veya karmaşık çıkarım görevleri sırasında öznitelik vektörlerinin kayan bir geçmişini korumak için sıklıkla kullanılır.
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])Zorluklar ve Hususlar#
Bellek bankaları güçlü olsalar da "temsil kayması" zorluğunu beraberinde getirirler. Kodlayıcı ağı her eğitim adımında biraz değiştiğinden, 100 adım önce bankada depolanan öznitelikler "eski" olabilir veya mevcut model durumuyla tutarsızlık gösterebilir. Momentum kodlayıcısı (modelin yavaş güncellenen bir ortalaması) kullanmak gibi teknikler bu sorunu hafifletmeye yardımcı olur.
Bu gelişmiş teknikleri kullanan veri kümesi sürümlerini ve model yapı taşlarını yönetmek isteyen ekipler için Ultralytics Platform, verileri organize etmek, deneyleri takip etmek ve modelleri verimli bir şekilde dağıtmak için merkezi bir merkez sağlar. Öznitelik depolama ve alma karmaşıklığını yönetmek, deneysel artificial intelligence (AI) sistemlerinden sağlam üretim sistemlerine geçiş yapmak için esastır.






