有名な研究論文「Attention Is All You Need」から、変圧器モデルの「位置埋め込み」の背後にある直感を説明する記事。
ディープ ラーニングの分野でのトランスフォーマー アーキテクチャの導入は、特に NLP の分野でサイレント革命への道を開いたことは疑いの余地がありません。 Transformer アーキテクチャの最も重要な部分の 1 つは「位置埋め込み」です。これにより、ニューラル ネットワークは、長い文の単語の順序とその依存関係を理解することができます。
ただし、トランスフォーマーよりもずっと前に導入された RNN と LSTM には、位置埋め込みがなくても単語の順序を理解する機能があることがわかっています。そうすれば、なぜこの概念がトランスフォーマーに導入されたのか、そしてこの概念を扇動する背後にある真の優位性について、明らかな疑問を抱くでしょう.この記事では、このすべての情報を概念化しましょう。
埋め込みは、生のテキストを数学的ベクトルに変換するために自然言語処理で使用されるプロセスです。これは、機械学習モデルがさまざまな内部計算プロセスのためにテキスト形式の入力を直接使用できないためです。
Word2vec、Glove などのアルゴリズムによって実行される埋め込みプロセスは、単語埋め込みまたは静的埋め込みと呼ばれます。
ここでは、多くの単語を含む大きなテキスト コーパスが、トレーニング プロセス用のモデル内で渡されます。モデルは、より頻繁に互いに近くに現れる単語が類似していると仮定することにより、対応する数学的値を各単語に割り当てます。このプロセスの後、導出された数学的値がさらなる計算に使用されます。
例えば、
ここで述べたように、テキスト コーパスに 3 つの文があるとします。
ここでは、 「King」と「Queen」という言葉が頻繁に出てきていることがわかります。したがって、モデルは、これらの単語の間にいくつかの類似点がある可能性があると想定します。これらの単語が数値に変換されると、多次元空間で表されるときにそれらは小さな距離に配置されます。
画像ソース:著者によるイラスト
「Road」という別の単語があると想像してください。論理的には、大きなテキスト コーパスで「King」や「Queen」と一緒に頻繁に表示されることはありません。したがって、その単語はスペース内で遠く離れて配置されます。
画像ソース:著者によるイラスト
数学的には、ベクトルは一連の数値を使用して表され、各数値は特定の次元での単語の大きさを表します。
例えば、
ここでは、 「King」という言葉を 3 次元で表現しました。したがって、空間[0.21,0.45,0.67]で仮想的に表すことができます。
「Queen」という単語は、仮説的に[0.24,0.41,0.62]として表すことができます。
「Road」という単語は、仮説的に[0.97,0.72,0.36]として表すことができます。
導入部分で説明したように、位置埋め込みの必要性は、ニューラル ネットワークに文の順序と位置依存性を理解させることです。
たとえば、次の文を考えてみましょう。
文 1 - 「今日、サチン テンドルカールは 1 世紀に到達しませんでしたが、彼はチームを勝利の座に導きました」.
文 2 - 「今日、サチン テンドルカールは 1 世紀を迎えましたが、チームを勝利の座に導くことはできませんでした」.
両方の文はほとんどの単語を共有しているため似ていますが、両方の本質的な意味は大きく異なります。 「not」などの単語の順序と位置により、ここで伝えられる情報の文脈全体が変わりました。
したがって、NLP プロジェクトに取り組んでいる間は、位置情報を理解することが非常に重要です。モデルが多次元空間の数値を使用するだけでコンテキストを誤解した場合、特に予測モデルでは深刻な結果につながる可能性があります。
この課題を克服するために、RNN (リカレント ニューラル ネットワーク) や LSTM (長期短期記憶) などのニューラル ネットワーク アーキテクチャが導入されました。ある程度まで、これらのアーキテクチャは位置情報の理解に非常に成功していました。彼らの成功の背後にある主な秘密は、単語の順序を維持することによって長い文章を学ぼうとすることです。それに加えて、 「関心のある単語」に非常に近い単語と、「関心のある単語」から非常に離れた単語に関する情報が得られます。
例えば、
次の文を考えてみてください。
「サチンは史上最高のクリケット選手です。」
画像ソース:著者によるイラスト
赤い下線が引かれている単語が「興味のある単語」です。これは、ニューラル ネットワーク (RNN/LSTM) が埋め込みなどの複雑な数学的プロセスを通じて学習しようとする単語です。ここでは、「関心のある単語」が元のテキストに従って順番にトラバースされていることがわかります。
また、 「文脈語」を覚えることで、単語間の依存関係を覚えることができます。ここで、文脈語とは「興味のある語」の近くに配置された語である。簡単なデモンストレーションとして、各「関心のある単語」を学習しながら、コンテキスト単語を次の画像で緑色の下線が引かれている単語と見なすことができます。
画像ソース:著者によるイラスト
これらの手法により、RNN/LSTM は大規模なテキスト コーパス内の位置情報を理解できます。
すべて順調です。右?
では、ここでの本当の問題は何ですか?
本当の問題は、大きなテキスト コーパス内の単語を順次トラバースすることです。 100 万語の非常に大きなテキスト コーパスがあると想像してください。各単語を順番にトラバースするには非常に長い時間がかかります。場合によっては、モデルをトレーニングするための十分な計算時間を確保できないことがあります。
この課題を克服するために、新しい高度なアーキテクチャ「トランスフォーマー」が導入されました。
Transformer アーキテクチャの重要な特徴の 1 つは、すべての単語を並列処理してテキスト コーパスを学習できることです。 10 語でも 100 万語でも、コーパスの長さはあまり気にしません。
画像ソース:著者によるイラスト
画像ソース:著者によるイラスト
さて、この単語の並列処理に関連する課題が 1 つあります。すべてのワードが同時にアクセスされるため、依存情報は失われます。したがって、モデルは特定の単語の「文脈」を記憶できず、単語間の関係に関する情報を正確に保存できません。この問題により、モデルの計算/トレーニング時間は大幅に短縮されますが、コンテキストの依存関係を維持するという最初の課題に再びつながります。
さて、この状況にどう立ち向かうか。
解決策は「位置埋め込み」です。
当初、この概念が導入されたとき、研究者は変圧器アーキテクチャで位置情報を保存できる最適化された方法を導出することに非常に熱心でした。
この試行錯誤実験の一環として試みた最初の方法は、「単語のインデックスに基づく位置埋め込み」でした。
ここでのアイデアは、特定の単語のインデックスを含むことができるこの単語ベクトルと共に、新しい数学的ベクトルを導入することでした。
画像ソース:著者によるイラスト
これが多次元空間における単語の表現であると仮定します-
画像ソース:著者によるイラスト
位置ベクトルを追加した後、マグニチュードと方向によって各単語の位置が次のように変わる場合があります。
画像ソース:著者によるイラスト
この手法に伴う大きな欠点の 1 つは、文の長さが非常に長い場合、位置ベクトルの大きさも比例して増加することです。文に 25 の単語があるとします。この場合、最初の単語には大きさ 0 の位置ベクトルが追加され、最後の単語には大きさ 24 の位置ベクトルが追加されます。この大きな不一致は、次の場合に問題を引き起こす可能性があります。これらの値をより高い次元で投影しています。
位置ベクトルの大きな大きさを減らすために試みられた別の手法は、「文の長さの分数に基づく位置埋め込み」です。
ここでは、文章の長さに対する各単語の端数を位置ベクトルの大きさとして計算する。
分数値は、次の式を使用して計算されます。
値 = 1/N-1
例えば、
この文を考えてみましょう -
画像ソース:著者によるイラスト
この手法では、文の長さに関係なく、位置ベクトルの最大の大きさを 1 に制限できます。しかし、このシステムには大きな抜け穴があります。
長さが異なる 2 つの文を比較する場合、特定の位置にある単語の埋め込み値は異なります。特定の単語または位置は、そのコンテキストを簡単に理解できるように、テキスト コーパス全体で同じ埋め込み値を持つ必要があります。さまざまな文の同じ単語が異なる埋め込み値を持っている場合、テキスト コーパス全体の情報を多次元空間で表現することは非常に複雑な作業になります。このような複雑な空間を実現できたとしても、あまりにも多くの情報が歪められて、ある時点でモデルが崩壊する可能性が高くなります。したがって、この手法は、トランスフォーマーへの位置埋め込みのさらなる進歩から除外されました。
最後に、研究者は「周波数ベースの位置埋め込み」のシステムを思いつきました。これは世界中で批評家の称賛を受け、最終的にトランス アーキテクチャに組み込まれ、有名なホワイト ペーパー「Attention is all you need.」で言及されました。
この手法によると、研究者は、次の式を使用して、波の周波数に基づいて単語を埋め込む独自の方法を推奨しています。
画像ソース:著者によるイラスト
どこ、
画像ソース:著者によるイラスト
画像ソース:著者によるイラスト
画像ソース:著者によるイラスト
曲線の高さは x 軸上の単語の位置に依存するため、曲線の高さを単語の位置の代用として使用できます。
2 つの単語が同様の高さである場合、文内での近接度が非常に高いと見なすことができます。
同様に、2 つの単語の高さが大幅に異なる場合、文中での近接度が非常に低いと見なすことができます。
私たちの例のテキストによると - 「サチンは偉大なクリケット選手です」 ,
「さちん」という言葉には、
式を当てはめながら、
画像ソース:著者によるイラスト
i =0 の場合、
PE(0,0) = sin(0/10000^2(0)/3)
PE(0,0) = 罪(0)
PE(0,0) = 0
i =1 の場合、
PE(0,1) = cos(0/10000^2(1)/3)
PE(0,1) = cos(0)
PE(0,1) = 1
i =2 の場合、
PE(0,2) = sin(0/10000^2(2)/3)
PE(0,2) = sin(0)
PE(0,2) = 0
「素晴らしい」という言葉に対して、
式を当てはめながら、
画像ソース:著者によるイラスト
i =0 の場合、
PE(3,0) = sin(3/10000^2(0)/3)
PE(3,0) = sin(3/1)
PE(3,0) = 0.05
i =1 の場合、
PE(3,1) = cos(3/10000^2(1)/3)
PE(3,1) = cos(3/436)
PE(3,1) = 0.99
i =2 の場合、
PE(3,2) = sin(3/10000^2(2)/3)
PE(3,2) = sin(3/1.4)
PE(3,2) = 0.03
画像ソース:著者によるイラスト
ここでは、最大値は 1 に制限されます (sin/cos 関数を使用しているため)。したがって、以前の技術で問題であった大規模な位置ベクトルの範囲はありません。
さらに、互いに非常に近接している単語は、低周波数では同様の高さになる可能性があり、高周波数では高さが少し異なります。
単語が互いに近接していない場合、それらの高さは低い周波数でも大きく異なり、周波数が高くなるにつれて高さの差が大きくなります。
例えば、
「キングとクイーンが道を歩いている」という文を考えてみましょう。
「King」と「Road」の文字が離れて配置されています。
これらの 2 つの単語は、波動周波数の式を適用した後、ほぼ同じ高さになっていると考えてください。より高い周波数 (0 など) に達すると、それらの高さはさらに異なります。
画像ソース:著者によるイラスト
画像ソース:著者によるイラスト
画像ソース:著者によるイラスト
「King」と「Queen」の文字が近くに配置されています。
これらの 2 つの単語は、低い周波数 (ここでは 2 など) で同様の高さに配置されます。より高い周波数 (0 など) に達すると、それらの高さの差は区別のために少し大きくなります。
画像ソース:著者によるイラスト
ただし、単語の近接性が低い場合、より高い周波数に進むと、単語の高さが大幅に異なることに注意する必要があります.単語が非常に近接している場合、より高い周波数に進んでいるとき、単語の高さはわずかに異なります.
この記事を通じて、機械学習における位置埋め込みの背後にある複雑な数学的計算を直感的に理解していただければ幸いです。要するに、「埋め込み」の概念の背後にある仮定、そのさまざまなタイプのいくつか、および特定の目的を達成するために位置埋め込みを実装する必要性について説明しました。
「自然言語処理」に関心のある技術愛好家にとって、このコンテンツは、高度な計算のいくつかを簡単に理解するのに役立つと思います。詳細については、有名な研究論文「Attention is all you need」を参照してください (参照セクションにこの研究論文にアクセスするための ul を追加しました)。