YOLO Vision Shenzhen
深セン
今すぐ参加
用語集

メモリバンク

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

メモリバンクのメカニズム

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

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

実際のアプリケーション

メモリバンクは、いくつかの高度なコンピュータービジョン (CV)および自然言語ワークフローにおいて礎となっています。

  • 対照学習(自己教師あり学習): 最も有名な応用の一つは対照学習であり、特にMomentum Contrast (MoCo)のようなアルゴリズムにおけるcontrastive learningです。ここでは、モデルに特定の画像を多数の「ネガティブ」サンプル(異なる画像)から区別するように教えることが目標です。メモリバンクは数千のネガティブサンプル表現を保存し、ラベル付きtraining dataを必要とせずにモデルが堅牢な特徴を学習できるようにします。詳細な技術的詳細については、研究者はこのアプローチを普及させたMoCo paperをよく参照します。
  • 長期オブジェクト追跡: ビデオ分析において、オブジェクト(車や人など)は一時的に障害物によって隠されることがあります。標準的なtrackersは、このオクルージョン中にオブジェクトの識別情報 (ID) を失う可能性があります。高度なtrackersは、過去にdetectされたオブジェクトの視覚的特徴を保存するためにメモリバンクを使用します。オブジェクトが再出現すると、システムはバンクを照会して正しいIDを再確立します。Ultralytics YOLO26object trackingに活用するユーザーは、フレーム間で識別情報の一貫性を維持する同様の内部ロジックの恩恵を受けます。
  • ビデオ理解: 数秒または数分にわたる行動を認識するには、モデルは時間的コンテキストを必要とします。メモリバンクは過去のフレームやクリップのバッファとして機能し、ネットワークがビデオの終わりを処理しながら、ビデオの開始時に何が起こったかを「記憶」することを可能にします。これは正確な行動認識にとって不可欠です。

関連概念の区別

メモリバンクを用語集にある他のストレージおよび処理の概念と区別することは、その理解を深める上で役立ちます。

  • メモリバンク vs. ベクトルデータベース: どちらも検索のために埋め込みを保存します。しかし、メモリバンクは通常、単一のモデルセッションの訓練またはアクティブな推論中に動的に使用される一時的なインメモリ構造です。ベクトルデータベース(RAGで使用されるものなど)は、永続的でスケーラブルなストレージソリューションであり、無期限に存続し、複数のアプリケーションにサービスを提供することを意図しています。
  • メモリバンク vs. コンテキストウィンドウ: コンテキストウィンドウ(Transformerで一般的)は、モデルが一度に処理する最大入力シーケンス長(例:32kトークン)を定義します。メモリバンクは、アクティブな処理ウィンドウの外側に圧縮表現を保存する外部バッファであり、Transformer-XLのようなアーキテクチャに見られるように、理論的には無限のメモリ深度を可能にします。
  • メモリバンク vs. バッチサイズ: バッチサイズは、勾配更新のために並行して処理されるサンプルの数を決定します。メモリバンクは、順方向および逆方向パスの計算コストを増加させることなく、モデルが比較目的で「参照」できる有効なサンプル数を増やします。

コード例:特徴量バンクのシミュレーション

以下の通りである。 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)から堅牢な本番システムへの移行に不可欠です。

共にAIの未来を築きましょう!

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