メモリバンクは、機械学習アルゴリズムで使用されるデータ構造であり、過去のイテレーションや処理されたサンプルからの情報を保存および参照し、モデルのメモリ容量をその直接的な計算制約から効果的に切り離します。ディープラーニング(DL)の文脈では、メモリバンクは通常、埋め込み(embeddings)または特徴ベクトルのリポジトリとして機能します。これにより、モデルは現在の入力を過去の膨大な入力履歴と比較することができ、そのすべてのデータを同時にアクティブなランダムアクセスメモリ(RAM)に再処理したり保持したりする必要がありません。表現のバッファを維持することにより、モデルはより広いコンテキストから学習し、長期的な一貫性や大規模なデータセットとの比較を必要とするタスクでのパフォーマンスを向上させることができます。
メモリバンクの主な機能は、現在のバッチサイズを超えて利用可能な情報を拡張することです。トレーニング中、データがニューラルネットワークを流れると、結果として得られる特徴表現がバンクにプッシュされます。バンクが最大容量に達すると、通常、最も古い特徴が新しい特徴のために削除されます。これは先入れ先出し (FIFO) キューとして知られるプロセスです。
このメカニズムは、GPUメモリが有限であるため、特に重要です。メモリバンクがない場合、1枚の画像を他の100万枚の画像と比較するには、標準的なハードウェアでは収まらないバッチサイズが必要になります。メモリバンクがあれば、モデルはそれらの100万枚の画像の軽量なベクトルを保存し、ドット積やコサイン類似度などの類似度検索技術を使用して効率的に参照できます。
メモリバンクは、いくつかの高度なコンピュータービジョン (CV)および自然言語ワークフローにおいて礎となっています。
メモリバンクを用語集にある他のストレージおよび処理の概念と区別することは、その理解を深める上で役立ちます。
以下の通りである。 Python このスニペットは、〜を使用してFirst-In, First-Out (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 Platformは、データを整理し、実験をtrackし、モデルを効率的にデプロイするための集中ハブを提供します。特徴量の保存と取得の複雑さを管理することは、実験的な人工知能 (AI)から堅牢な本番システムへの移行に不可欠です。

未来の機械学習で、新たな一歩を踏み出しましょう。