Yolo 深圳
深セン
今すぐ参加
用語集

メモリーバンク

メモリバンクは、機械学習アルゴリズムにおいて過去の反復処理や処理済みサンプルからの情報を保存・参照するために用いられるデータ構造であり、モデルの記憶容量をその即時的な計算制約から効果的に切り離す。深層学習(DL)の文脈では、メモリバンクは通常、埋め込み表現や特徴ベクトルのリポジトリとして機能する。 これによりモデルは、 膨大な過去の入力履歴と現在の入力を比較できるため、 全データをアクティブなランダムアクセスメモリ(RAM)に 同時に保持したり再処理したりする必要がなくなる。 表現のバッファを維持することで、モデルはより広範な文脈から学習でき、 長期的な一貫性や大規模データセットとの比較を必要とするタスクにおいて 性能を向上させることができる。

記憶バンクの仕組み

メモリバンクの主な機能は、利用可能な情報を現在のバッチサイズを超えて拡張することである。 学習中、データがニューラルネットワークを通過するにつれ、結果として得られる特徴表現がバンクに押し込まれる。 バンクが最大容量に達した場合、通常は最も古い特徴が新しい特徴のためのスペースを確保するために削除される。 このプロセスは先入れ先出し(FIFO)キューとして知られる。

このメカニズムは特に重要である。なぜなら GPU メモリは有限である。メモリバンクがなければ、 単一の画像を100万枚の画像と比較するには、標準的なハードウェアでは収まりきらないバッチサイズが必要となる。 メモリバンクがあれば、モデルは100万枚の画像の軽量ベクトルを保存し、内積やコサイン類似度などの類似性検索技術を用いて それらを効率的に参照できる。

実際のアプリケーション

メモリバンクは、いくつかの高度な コンピュータビジョン(CV)および自然言語処理 ワークフローの基盤技術となっている:

  • 対照学習(自己教師あり学習):最も有名な応用例の一つが対照学習、特にMomentum Contrast(MoCo)のようなアルゴリズムである。ここでは、特定の画像を多数の「否定的」サンプル(異なる画像)から区別するようモデルを訓練することが目的である。 メモリバンクには数千の否定的サンプル表現が保存され、 モデルはラベル付き訓練データを必要とせずに 頑健な特徴を学習できる。深い技術的詳細については、 この手法を普及させたMoCo論文が 研究者によって頻繁に参照される。
  • 長期物体追跡:動画解析において、物体(自動車や人物など)は障害物によって一時的に遮蔽されることがある。標準的な追跡システムでは、この遮蔽期間中に物体の識別子(ID)を失う可能性がある。 高度なトラッカーは、過去に検出されたオブジェクトの視覚的特徴を記憶バンクに保存します。オブジェクトが再出現すると、システムはバンクを参照して正しいIDを再確立します。Ultralytics オブジェクト追跡では、フレーム間で同一性を維持する同様の内部ロジックの恩恵を受けられます。
  • 動画理解:数秒から数分にわたる動作を認識するには、モデルに時間的文脈が必要です。 メモリバンクは過去のフレームやクリップのバッファとして機能し、ネットワークが動画の終盤を処理しながら 冒頭で起こったことを「記憶」できるようにします。これは正確な動作認識に不可欠です。

関連概念の区別

用語集に記載されている他の記憶装置や処理概念とメモリバンクを区別することは有益である:

  • メモリバンク対ベクトルデータベース どちらも検索用の埋め込みを格納しますただし、メモリバンクは通常、単一モデルセッションの学習または 能動的推論中に動的に使用される一時的なインメモリ構造です。一方、ベクトルデータベース(RAGなどで使用されるもの)は、永続的でスケーラブルなストレージソリューションであり、無期限に存続し複数のアプリケーションにサービスを提供することを目的としています。
  • メモリバンク対コンテキストウィンドウ コンテキストウィンドウ(トランスフォーマーで一般的)は、モデルが一度に処理する最大入力シーケンス長(例:32kトークン)を定義する。メモリバンクは、アクティブな処理ウィンドウ外に圧縮表現を保存する外部バッファであり、理論上は無限のメモリ深さを可能にする。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 、モデルを効率的にデプロイするための 一元化されたハブを提供します。 実験段階の人工知能(AI)から堅牢な本番システムへ移行するには、 特徴量の保存と取得の複雑性を管理することが不可欠です。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加