『トランスフォーマーの位置符号化の解説』
『トランスフォーマーの位置符号化の解説』の魅力的な解説
元のTransformerアーキテクチャでは、位置エンコーディングが入力と出力の埋め込みに追加されました。

位置エンコーディングは、トランスフォーマーにおいて単語やトークンの順序を捉えるために重要な役割を果たします。
位置情報がない場合、トランスフォーマーの出力は入力の単語の順序を混ぜた場合に変化しないことに留意する価値があります。
ただし、位置エンコーディングは処理できるテキストの最大長に制限を課すこともあります。
トランスフォーマーアーキテクチャでは、入力テキストはトークンのシーケンスに分割され、各トークンは学習可能な位置埋め込みベクトルと関連付けられます。
トークンと位置の埋め込みを関連付けるための通常の手順は、以下の画像に示すように、それらを単純に追加することです。

このブログ記事の以下のセクションでは、これらの埋め込みの取得方法について見ていきます。
絶対位置埋め込み
絶対位置埋め込みは、理解しやすいタイプの埋め込みであり、それで始めましょう。
BERTとGPT-2(ChatGPTの祖先)の両方が、このタイプの学習済み位置埋め込みを使用しました。
トークン/単語の埋め込みを理解していれば、この概念は同じです:モデルが入力のすべての可能なトークンを表すトークン埋め込みテーブルを持っているように、モデルはサポートする可能なトークン位置すべてを持つ位置埋め込みテーブルも持っています。

これら絶対位置埋め込みはモデルによって学習されます。これはアーキテクチャへの厳しい制約を追加します:位置埋め込みテーブルには行の制限があり、つまり、モデルは最大入力サイズに制限があるということです!
正弦波位置埋め込み
Attention Is All You Needで提案された最初のトランスフォーマーは、正弦波および余弦波の位置埋め込みを使用します。

正弦波位置埋め込みがどのように構築されるかについての優れた説明は、この素晴らしい動画 by Batool Arhamna Haider をぜひお勧めします。
重要な点は、これらの正弦波および余弦波の位置エンベディングはモデルによって学習されない、しかし、大きな入力サイズの処理には適していないということです。
シーケンスの長さが増すにつれて、位置エンベディングに使用される正弦波関数の周波数が高すぎるため、非常に短い周期になります。これにより、長距離の依存関係の不適切な表現や、精緻な位置情報のキャプチャに苦労する可能性があります。
相対位置エンベディング
相対位置エンベディングは、最初に「Self-Attention with Relative Position Representations」という論文で提案されました。
この論文では、著者らは相対的な位置エンベディングの作成方法として、ペアワイズ距離の使用を導入しました。
理論的には、位置エンベディングは未知の長さのシーケンスにも汎化できます。なぜなら、それがエンコードする唯一の情報は2つのトークン間の相対的なペアワイズ距離だからです。
このタイプの位置エンベディングはT5でも使用され、著者らによって新しい単純化されたペアワイズ距離の計算方法が導入されました。
執筆時点では、相対位置エンベディングの中で最も広く使用されている2つのタイプがあります: RoPE および ALiBiです。
これらの新しいアプローチの主な傾向は、スケーリングされたドット積注意機構で使用されるクエリ(Q)とキーベクトル(K)に位置情報を埋め込むことです。つまり、トークンのエンベディングには位置エンベディングは追加されません!

Rotal Positional Embeddings (RoPE)
ローティング位置エンベディングは、モデルに追加のトレーニング可能なパラメータを追加しない一種の相対位置エンベディングです。
Llama、Llama 2、およびFalconは、このタイプの位置エンベディングを使用しています!
RoPEを使用する場合、QベクトルとKベクトルは、位置情報をエンコードするために個別に変更されます。この変更は、下記のギフで示されるように、事前に計算された固定の回転行列を使用して行われます。

最近、これらのエンベディングは、(微調整なしで)より長いシーケンスにも適用できることがわかりました。この技術はRoPEスケーリングと呼ばれました。
アイデアは、推論時に、mθを回転させる代わりに、この回転をより小さくスケーリングし、より長いシーケンスサイズに対応することです。
回転をスケーリングする方法は多数ありますが、もっとも一般的な方法は線形スケーリングmθ/Nです。
RoPEスケーリングがどのように機能するかについての詳細を深堀りするには、「Large Language Models via Positional Interpolationの文脈窓の拡張」論文と元のRedditスレッドをおすすめします。
Attention with Linear Biases (ALiBi)
「Train Short, Test Long: Attention with Linear Biases Enables Input Length Extrapolation」では、この位置エンコーディング手法が、クエリ-キーの注意スコアにその距離に比例したペナルティを与え、入力の長さを推定可能にしていることが紹介されています。
実際には、これはスケーリングされたドット積注意をわずかに変更して、一定の位置バイアスを追加することです。この定数はネットワークによって学習されません!

位置バイアスは次のように単純に計算されます:

ここで、mは各注意ヘッドごとに独立に設定される特定のスカラーです。
BLOOM、BloombergGPT、およびMPTは、このタイプの位置エンコーディングを使用しており、結果は非常に印象的です!


結論 – 最良の位置エンコーディングは何ですか?
ALiBiは、訓練されたモデルのコンテキスト長の2倍に対してのみ優れており、より長いシーケンスにはスケーリングできません。
最近、RoPEの推定の制限に対処し、より大きなシーケンスにスケーリングできるようにするための多くのRoPEスケーリング方法が提案されています:
- 線形スケーリング
- Rectified RoPE
- NTK-aware RoPEスケーリング(Code Llama 🦙で使用)
- Truncated basis
ただし、ALiBiもRoPEも、言語モデルの現在の入力サイズの制限を解決するのに十分ではありません。
また、注意も言語モデルが長いシーケンスを処理する能力を制限する上で重要な役割を果たしていますが、このトピックは別のブログ記事に譲りましょう! 📚
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- 「ChatGPTのような大規模言語モデルによる自己説明は感情分析にどれほど効果的か?パフォーマンス、コスト、解釈可能性に迫る深い探求」
- ニューラルネットワークにおける系統的組み合わせ可能性の解除:組み合わせ可能性のためのメタラーニング(MLC)アプローチによるブレイクスルー
- 「ULTRAに会おう:あらゆるグラフで機能する事前学習済みの知識グラフ推論用基礎モデルで、50以上のグラフで教師あり最先端モデルを上回るパフォーマンスを発揮します」
- 「Amazon Bedrockへのプライベートアクセスを設定するために、AWS PrivateLinkを使用してください」
- 「Amazon SageMaker JumpStartを使用して、2行のコードでファウンデーションモデルを展開して微調整する」
- Pythonでの機械学習のためのテキストの前処理−自然言語処理
- 「Xenovaのテキスト読み上げクライアントツール:自然な音声合成を実現する頑強で柔軟なAIプラットフォーム」