ディレクトリ
序文
BERTに精通している友人は、位置エンコーディング(位置表現)に慣れていないとは思いません。位置エンコーディングはBERTの比較的小さな部分にすぎませんが、実際には謎を隠しています。そこで、今日は位置エンコーディングを分離し、包括的な分析を実行します~~
-
なんで?位置エンコーディングが必要な理由
-
え?2つの位置エンコード方式:絶対位置エンコードと相対位置エンコード
-
どうやって?異なる方法の利点と欠点の比較
なぜ
ご存じのとおり、テキストは時系列データであり、単語間の順序関係は文全体の意味に影響を与えることがよくあります。栗を与える:
Xiao Xi /はい/ A / Meng /シスター。A /妹/はい/かわいい/ Xiao Xi??孟/暁西/はい/ A /姉妹??
不必要な誤解を避けるために、テキストデータをモデル化するときは、単語間の順序関係を考慮する必要があります。
ただし、テキストの順序関係をモデル化するために位置エンコーディングを使用する必要はありますか?
答えはノーです!
位置に依存しないモデルを使用してテキストデータをモデル化する場合にのみ、追加の位置エンコーディングが必要です。
位置依存モデルとは何ですか??場所に依存しないモデルとは何ですか??
モデルの出力が入力テキストデータの順序に応じて変化する場合、モデルは位置に依存します。それ以外の場合、位置に依存しません。
説明には、より明確な数学言語を使用してください。モデルを関数とすると、入力は一連の単語で、出力はベクトルです。権利の交換
次に、モデルは場所に影響されません。
一般的に使用されているテキストモデルでは、RNNとtextCNNはどちらも位置に依存します。これらを使用してテキストデータをモデル化する場合、モデル構造はテキスト内の単語間の順序関係を当然考慮します。コアとして注意を払うトランスフォーマーは位置に依存しません。このタイプの位置に依存しないモデルを使用する場合、テキスト内の単語間の順序関係を導入するために、追加の位置エンコードを追加する必要があります。
何
トランスフォーマーモデルの位置エンコーディングには、主に2つの方法があります。
絶対位置コーディング
現在一般的に使用されている方法である学習位置埋め込みは、比較的単純で理解しやすい絶対位置をエンコードします。埋め込み位置を直接異なる位置に直接初期化し、埋め込みに単語に追加して、モデルをトレーニングのパラメーターとして入力します。
相対位置コーディング
絶対位置エンコードを使用すると、異なる位置に対応する位置埋め込みは確かに異なりますが、位置1と位置2の間の距離は位置3と位置10の間の距離より近く、位置1と位置2は位置3と位置4と1だけ異なるだけです。位置について相対的な意味のモデルは、絶対位置エンコーダによってそれに得ることができますか?学習された位置埋め込みコーディングを使用すると、位置間に制約関係はありません。暗黙的に学習することしか期待できません。位置の相対関係を理解するためにモデルを表示するより適切な方法はありますか?
したがって、別のより直感的なメソッド相対位置コーディングがあります。相対位置をエンコードする2つの方法は次のとおりです。正弦波位置エンコードと複素埋め込み。
正弦波位置エンコーディング
正弦関数と余弦関数を使用して絶対位置を表し、2つの積で相対位置を取得します。
この設計の利点は、相対的な位置関係を反映して、位置による位置エンコードが位置によって線形に表現できることです。
正弦波位置エンコーディングは複雑に見えますが、線形に表現できることがわかります。高校の正弦と余弦の式のみが必要です(注:長い式は左右にスライドできます!)
位置の位置エンコーディング
どこに
式(5)と(6)を少し調整して、
相対距離は一定であるため、
その中には定数があります。
したがって、線形に表現できます。
合計の内積を計算するには、
その中で。
合計の内積は、相対位置が増加するにつれて減少し、それによって位置の相対距離を特徴付けます。しかし、距離の対称性により、正弦波位置エンコーディングは相対位置の距離関係を反映できますが、方向を区別できないことを見つけることは難しくありません/(ㄒoㄒ)/ ~~
より直感的に視覚化し[1]、画像が対称的であり、前面と背面を区別できないことがわかります。
複雑な埋め込み
モデルが隣接、優先順位などのより正確な相対位置関係をより適切にキャプチャできるようにするために、ICLR 2020によって公開された記事「Encoding Word Oder In Complex Embeddings」は、複雑なドメインの連続関数を使用して、異なるドメインに単語をエンコードします場所の表現。
学習後位置埋め込みまたは正弦波位置エンコーディングであるかどうかに関係なく、その位置での単語の位置は、対応する位置での単語の埋め込みと埋め込みです。
同じ単語の埋め込みは、整数フィールドから実フィールドへのマッピングです。
単語の埋め込みについては、そのようなデザインは合理的です。異なる単語のインデックスは独立しているため、使用する辞書のソート方法にのみ関係し、単語が別の単語の前にあるか、隣接しているかについての情報はありません。ただし、位置インデックスは独立した仮定を満たしていないため、その順序関係はテキストの正しい理解に非常に重要な影響を与えます。
したがって、posインデックスの位置に依存しない問題を解決するために、記事では位置に関する連続関数を使用して単語の表現を特徴付けます。つまり、
展開式(13)
その中には、複雑なドメインでの位置の関数があります。
上記の関数が位置の相対情報をよりよく特徴付けるために、関数は次の2つのプロパティを満たす必要があります。
-
位置のないオフセット変換
そのような機能があります
理解に影響を与えずに省略します。つまり、posまたはpos + kでの単語の表現は、特定の単語に関係なく、相対位置kのみに関連する変換によって取得できます。
-
有界
関数は制限付きである必要があります。非常に合理的な制限。
最後に、この論文では、複素数フィールドでこれら2つの条件を満たす関数は次の形式でなければならないことを証明しています。
指数の形に書き直してください。
それらの中で、振幅、角周波数、および初期位相はすべて、学習する必要があるパラメータです~~
式(17)を(14)に代入すると、
posへの単語の埋め込みを特徴付けるために、学習されるパラメータは、そしてです。類推して、語彙のすべての単語を表すために、学習されるパラメーターの量は????です。パラメーターの量が多いため、パラメーターの量を減らすためのいくつかの方法も後のペーパーで提案されます。興味のある学生は、詳細については、元のテキストを確認してください~~~
どうやって
上記の3つの位置エンコーディングはすべて異なる程度であり、それぞれテキストデータの順序関係に焦点を当てているので、どちらが優れていますか?通常使用する場合、どのように選択すればよいですか?
結果が正しい場合は、どちらの方法が最善の選択であるか~~「必要なものはすべて注意」[2]で述べたように、学習位置埋め込みと正弦波位置エンコードの効果に明らかな違いはありません。論文[3]では、実験結果は、複雑な埋め込みの使用が以前の2つの方法と比較して大幅に改善されていることを示しています。(ただし、この方法は比較的新しいため、より多くの比較を試すことができます)。
メソッドの了解度の観点から、学習位置埋め込みは、相対位置エンコードの2つの方法よりも単純でわかりやすく、理解しやすいです。パラメータ次元から、正弦波位置エンコーディングを使用しても追加のパラメータは導入されません。学習位置埋め込みのパラメータ量の増加は直線的に増加し、複合埋め込みは最適化なしで単語埋め込みのパラメータ量を3倍増加します。スケーラビリティに関して、Learned Positional Embeddingはスケーラビリティが低く、その中の位置のみを特徴付けることができますが、他の2つの方法にはそのような制限がなく、よりスケーラブルです。
以上、位置符号化については十分ご理解いただけたと思います〜どのように選択するのか、方法の理解に基づいて実際の問題を分析する必要があるのか?
参考文献
[1]視覚化:https://kazemnejad.com/blog/transformer_architecture_positional_encoding/#what-is-positional-encoding-and-why-do-we-need-it-in-the-first-place[2]注意は必要なもの:https://arxiv.org/pdf/1706.03762.pdf
[3]複雑な埋め込み:https://openreview.net/pdf?id=Hke-WTVtwr