ViT: Vision トランスフォーマーにおける cls トークンの役割は何ですか?

Zhihu: Vision Transformer 超詳細解釈(原理解析+コード解釈) 

CSDN: vit の cls_token とposition_embed についての理解

CSDN: ViT が cls_token を導入した理由

CSDN: ViT の特殊クラス トークンに関するいくつかの問題


Vision  Transformer は、一部のタスクでは CNN を上回り、グローバル情報の集約の恩恵を受けています。ViT の論文では、著者は分類機能としてクラス トークンを導入しました。

cls_token がない場合、分類にはどのパッチ トークンを使用しますか?

セルフ アテンション メカニズムによれば、各パッチ トークンはある程度のグローバル情報を集約しますが、主に独自の特性を集約します。ViT の論文では、すべてのトークンの平均法も使用されています。これは、各パッチが予測に同じように寄与することを意味しますが、これは不合理に思えます。実際、これを実行した場合の効果は、基本的に cls_token を導入した場合と同じです。

ViT はクラス トークン メカニズムを導入しています。その理由は次のとおりです。

Transformer の入力は一連のパッチ エンベ​​ディングであり、出力も同じ長さの一連のパッチ特徴ですが、最終的にはカテゴリの判断として要約する必要があります。

  • avg プールを使用すると、すべてのパッチの特徴を考慮してイメージの特徴を計算できますが、これは前述したように不合理です。
  • 著者はflag に似たクラス トークンを引用しており、その出力特徴は線形分類器を追加することで分類できます。
  • トレーニング中に、クラス トークンの埋め込みがランダムに初期化され、pos 埋め込みに追加されるため、図から、トランスフォーマーの入力時に [0] に新しい埋め込みが追加され、最終的な入力長が N になることがわかります。 +1。


n+1 番目のトークン (クラス埋め込み) の主な特徴は、画像コンテンツに基づいていないこと、位置コードが固定されていることです。

アドバンテージ:

  • トークンは、ネットワークのトレーニングに応じてランダムに初期化および更新され、データセット全体の統計的特性をエンコードできます。
  • このトークンは他のすべてのトークンに関する情報を集約し (グローバル特徴集約)、画像コンテンツに基づいていないため、シーケンス内の特定のトークンへの偏りを回避できます。
  • このトークンに固定の位置エンコーディングを使用すると、出力が位置エンコーディングによって妨げられるのを防ぎます。

ViT では、著者はクラスの埋め込みをシーケンスの末尾ではなく先頭、つまり位置が 0 であるとみなします。このように、シーケンスの長さ n が変化しても、クラス埋め込みの位置コードは固定されるため、クラス埋め込みは n+1 番目のトークンではなく 0 番目のトークンであるべきであると言ったほうが正確です。

さらに、「分類される特徴として最初の n 個のトークンを平均することは可能ですか?」これもグローバル特徴集約の方法ですが、グローバル特徴集約にアテンション メカニズムを使用するよりも表現力が劣ります。特徴の集約にはアテンション メカニズムが使用されるため、特徴の集約の重みはクエリとキーの関係に応じて適応的に調整できますが、平均法ではすべてのキーに同じ重みを与えるため、モデルの表現能力が制限されます。

クラス トークン:入力トークンとともに Transformer ブロックに入力されるベクトル。最終出力はカテゴリの予測に使用されます。このように、Transformer は次元 D の合計 N+1 トークンを処理するのと同等であり、最後のトークンの出力のみがカテゴリの予測に使用されます。このアーキテクチャでは、パッチ トークンとクラス トークンの間で情報が強制的に伝播されます。

遺産:

  • クラスの埋め込みは、n+1 番目のトークンではなく 0 番目のトークンである必要があります。
  • 最後のトークンの出力のみがクラスの予測に使用されます。
  • この二つは矛盾していますか?どうやって理解できますか?

おすすめ

転載: blog.csdn.net/MengYa_Dream/article/details/126600748