Memory Bank
Erfahre, was ein Memory-Bank im Deep Learning ist. Erkunde, wie Memory-Banks Einbettungen für kontrastives Lernen, Objektverfolgung und Videoverständnis speichern.
Ein Memory Bank ist eine Datenstruktur, die in Algorithmen des maschinellen Lernens verwendet wird, um Informationen aus vergangenen Iterationen oder verarbeiteten Stichproben zu speichern und darauf zu verweisen. Dies entkoppelt effektiv die Speicherkapazität des Modells von seinen unmittelbaren rechnerischen Einschränkungen. Im Kontext von Deep Learning (DL) dient eine Memory Bank typischerweise als Speicher für Embeddings oder Merkmalsvektoren. Dies ermöglicht es einem Modell, den aktuellen Input mit einer riesigen Historie früherer Inputs zu vergleichen, ohne dass alle diese Daten gleichzeitig im aktiven Arbeitsspeicher (RAM) neu verarbeitet oder gehalten werden müssen. Durch die Aufrechterhaltung eines Puffers an Repräsentationen können Modelle aus einem breiteren Kontext lernen, was die Leistung bei Aufgaben verbessert, die eine langfristige Konsistenz oder den Vergleich mit großen Datensätzen erfordern.
Link to this sectionDie Funktionsweise einer Memory Bank#
Die primäre Funktion einer Memory Bank besteht darin, die verfügbaren Informationen über die aktuelle Batch Size hinaus zu erweitern. Während des Trainings, wenn Daten durch das neuronale Netzwerk fließen, werden die resultierenden Merkmalsrepräsentationen in die Bank geschoben. Wenn die Bank ihre maximale Kapazität erreicht, werden normalerweise die ältesten Merkmale entfernt, um Platz für neue zu schaffen – ein Prozess, der als First-In, First-Out (FIFO) Warteschlange bekannt ist.
Dieser Mechanismus ist besonders wichtig, da der GPU Speicher begrenzt ist. Ohne eine Memory Bank würde der Vergleich eines einzelnen Bildes mit einer Million anderer Bilder eine Batch Size erfordern, die auf Standard-Hardware nicht möglich wäre. Mit einer Memory Bank kann das Modell leichtgewichtige Vektoren dieser Millionen Bilder speichern und mithilfe von Similarity Search Techniken, wie dem Skalarprodukt oder der Kosinus-Ähnlichkeit, effizient darauf zugreifen.
Link to this sectionPraxisanwendungen#
Memory Banks sind zu einem Eckpfeiler in mehreren fortschrittlichen Workflows für Computer Vision (CV) und natürliche Sprache geworden:
- Contrastive Learning (Selbstüberwachtes Lernen): Eine der bekanntesten Anwendungen ist das Contrastive Learning, insbesondere bei Algorithmen wie Momentum Contrast (MoCo). Hier besteht das Ziel darin, dem Modell beizubringen, ein bestimmtes Bild von vielen "negativen" Stichproben (verschiedenen Bildern) zu unterscheiden. Eine Memory Bank speichert Tausende von Repräsentationen negativer Stichproben, was es dem Modell ermöglicht, robuste Merkmale zu erlernen, ohne dass gelabelte Training Data erforderlich sind. Für tiefergehende technische Details verweisen Forscher häufig auf das MoCo-Paper, das diesen Ansatz populär gemacht hat.
- Langzeit-Objektverfolgung (Object Tracking): Bei der Videoanalyse kann ein Objekt (wie ein Auto oder eine Person) vorübergehend durch ein Hindernis verdeckt werden. Standard-Tracker könnten die Identität (ID) des Objekts während dieser Verdeckung verlieren. Fortschrittliche Tracker verwenden eine Memory Bank, um die visuellen Merkmale von Objekten zu speichern, die in der Vergangenheit erkannt wurden. Wenn das Objekt wieder erscheint, fragt das System die Bank ab, um die korrekte ID wiederherzustellen. Nutzer, die Ultralytics YOLO26 für das Object Tracking verwenden, profitieren von einer ähnlichen internen Logik, die die Identitätskonsistenz über Frames hinweg aufrechterhält.
- Videoverständnis: Um Aktionen zu erkennen, die sich über mehrere Sekunden oder Minuten erstrecken, benötigen Modelle einen zeitlichen Kontext. Eine Memory Bank fungiert als Puffer für vergangene Frames oder Clips und ermöglicht es dem Netzwerk, sich daran zu "erinnern", was zu Beginn eines Videos geschah, während es das Ende verarbeitet. Dies ist entscheidend für eine genaue Action Recognition.
Link to this sectionUnterscheidung verwandter Konzepte#
Es ist hilfreich, die Memory Bank von anderen Speicher- und Verarbeitungskonzepten aus dem Glossar zu unterscheiden:
- Memory Bank vs. Vector Database: Beide speichern Embeddings für den Abruf. Eine Memory Bank ist jedoch typischerweise eine flüchtige, speicherinterne Struktur, die dynamisch während des Trainings oder der aktiven Inferenz einer einzelnen Modellsitzung verwendet wird. Eine Vektordatenbank (wie sie in RAG verwendet wird) ist eine persistente, skalierbare Speicherlösung, die dauerhaft bestehen bleibt und mehrere Anwendungen bedienen soll.
- Memory Bank vs. Context Window: Ein Kontextfenster (üblich bei Transformern) definiert die maximale Eingabesequenzlänge, die das Modell gleichzeitig verarbeitet (z. B. 32k Tokens). Eine Memory Bank ist ein externer Puffer, der komprimierte Repräsentationen außerhalb des aktiven Verarbeitungsfensters speichert, was theoretisch eine unendliche Speichertiefe ermöglicht, wie sie bei Architekturen wie Transformer-XL zu sehen ist.
- Memory Bank vs. Batch Size: Die Batch Size bestimmt, wie viele Stichproben parallel für Gradienten-Updates verarbeitet werden. Eine Memory Bank erhöht die effektive Anzahl an Stichproben, die das Modell zum Vergleich "sehen" kann, ohne den rechnerischen Aufwand der Vorwärts- und Rückwärtspässe zu erhöhen.
Link to this sectionCodebeispiel: Simulation einer Feature Bank#
Das folgende Python Code-Snippet demonstriert das Konzept einer First-In, First-Out (FIFO) Memory Bank unter Verwendung von torch. Diese Struktur wird häufig verwendet, um eine rollierende Historie von Merkmalsvektoren während benutzerdefinierter Trainingsschleifen oder komplexer Inferenzaufgaben beizubehalten.
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 sectionHerausforderungen und Überlegungen#
Obwohl Memory Banks leistungsstark sind, bringen sie die Herausforderung der "Repräsentationsdrift" mit sich. Da sich das Encoder-Netzwerk mit jedem Trainingsschritt leicht verändert, könnten die Merkmale, die vor 100 Schritten in der Bank gespeichert wurden, "veraltet" oder inkonsistent mit dem aktuellen Modellzustand sein. Techniken wie die Verwendung eines Momentum-Encoders (ein sich langsam aktualisierender Durchschnitt des Modells) helfen dabei, dieses Problem zu mildern.
Für Teams, die Datensatzversionen und Modellartefakte verwalten möchten, die diese fortschrittlichen Techniken nutzen, bietet die Ultralytics Platform eine zentrale Anlaufstelle, um Daten zu organisieren, Experimente zu verfolgen und Modelle effizient bereitzustellen. Die Beherrschung der Komplexität bei der Speicherung und dem Abruf von Merkmalen ist essenziell für den Übergang von experimenteller Artificial Intelligence (AI) zu robusten Produktionssystemen.






