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