ホームページ > 記事 > テクノロジー周辺機器 > 「位置情報の埋め込み」: Transformer の秘密
翻訳者 | Cui Hao
査読者 | Sun Shujuan
ディープ ラーニングの分野における Transformer アーキテクチャの導入は、間違いなく、静かな革命 道路を滑らかにすることは、NLP の支部にとって特に重要です。 Transformer アーキテクチャの最も重要な部分は「位置埋め込み」です。これにより、ニューラル ネットワークは長文内の単語の順序と単語間の依存関係を理解できるようになります。
RNN と LSTM は Transformer よりも前に導入されており、位置埋め込みを使用しなくても単語の順序を理解する機能があることはわかっています。そうなると、なぜこの概念が Transformer に導入され、この概念の利点がそれほど強調されているのかという明らかな疑問が生じるでしょう。この記事では、これらの原因と結果について説明します。NLP における埋め込みの概念
埋め込みは、生のテキストを数学ベクトルに変換するために使用される自然言語処理のプロセスです。これは、機械学習モデルがテキスト形式を直接処理して、さまざまな内部コンピューティング プロセスに使用することができないためです。Word2vec や Glove などのアルゴリズムの埋め込みプロセスは、単語埋め込みまたは静的埋め込みと呼ばれます。
このようにして、多数の単語を含むテキスト コーパスをトレーニング用のモデルに渡すことができます。モデルは、より頻繁に出現する単語が類似していると仮定して、各単語に対応する数学的値を割り当てます。このプロセスの後、結果の数学的値はさらなる計算に使用されます。
たとえば、テキスト コーパスには次のような 3 つの文があるとします。
画像出典:著者提供イラスト
「道」という言葉がもう一つあると仮定して、論理的に言うと、この大規模なテキスト コーパスでは、「king」や「queen」ほど頻繁には現れません。したがって、この言葉は「キング」や「クイーン」から遠く離れた空間のどこか遠くに配置されることになります。
画像出典: 著者提供のイラスト数学では、ベクトルは一連の数値で表され、各数値は単語のサイズを表します。特定の次元。例:ここでは
と入れていますので、「王」は 3 次元空間では [0.21, 0.45, 0.67] という形で表現されます。
「女王」という単語は、[0.24,0.41,0.62]と表すことができます。
「道路」という単語は、[0.97,0.72,0.36]と表現できます。
Transformer における位置埋め込みの必要性
導入セクションで説明したように、位置埋め込みの必要性は、ニューラル ネットワークが文内の順序と位置の依存関係を理解するためです。
文 1--「サチン テンドゥルカールは今日 100 得点を記録できませんでしたが、彼はチームを勝利に導きました。」
文 2--「サチン テンドゥルカールは今日 100 得点を記録しましたが、チームを勝利に導くことができませんでした。」
この 2 つの文は、ほとんどの単語を共有しているため似ていますが、根底にある意味は大きく異なります。 「いいえ」のような単語の順序と配置により、メッセージが伝わる文脈が変わりました。
したがって、NLP プロジェクトでは、位置情報を理解することが非常に重要です。モデルが多次元空間で単純に数値を使用し、コンテキストを誤解すると、特に予測モデルにおいて深刻な結果を招く可能性があります。
この課題を克服するために、RNN (リカレント ニューラル ネットワーク) や LSTM (長期短期記憶) などのニューラル ネットワーク アーキテクチャが導入されました。これらのアーキテクチャは、位置情報を理解することにある程度成功しています。彼らの成功の主な秘密は、単語の順序を保って長文を学習することです。これに加えて、「注目の単語」に近い単語、「注目の単語」から遠い単語の情報も持っています。
たとえば、次の文について考えてみましょう--
「サチンは史上最も偉大なクリケット選手です。」
画像出典:著者提供イラスト
赤下線部がこれです。ここでは、「注目の単語」が原文の順序でたどられていることがわかります。
さらに、覚えて学習することもできます
画像出典: 著者提供のイラスト
これらのテクニックを通じて、RNN / LSTM は、大規模なテキスト コーパス内の位置情報を理解できます。ただし、本当の問題は、大規模なテキスト コーパス内の単語を順次走査することです。 100 万語を含む非常に大きなテキスト コーパスがあり、各単語を順番に調べるには非常に長い時間がかかると想像してください。場合によっては、モデルのトレーニングにそれほど多くの計算時間を費やすことが現実的ではないことがあります。
この課題を克服するために、新しい高度なアーキテクチャである「Transformer」が導入されました。
Transformer アーキテクチャの重要な特徴は、すべての単語を並行して処理することでテキスト コーパスを学習できることです。テキスト コーパスに 10 単語が含まれているか、100 万単語が含まれているかは、Transformer アーキテクチャでは関係ありません。
#画像出典: 著者提供イラスト##画像出典: 著者提供イラスト
次に、単語を並列処理するという課題に直面する必要があります。すべての単語が同時にアクセスされるため、単語間の依存関係に関する情報は失われます。したがって、モデルは特定の単語の関連情報を記憶できず、正確に保存できません。この疑問は、モデルの計算/トレーニング時間を大幅に短縮したにもかかわらず、コンテキストの依存関係を維持するという元の課題に再びつながります。
では、上記の問題を解決するにはどうすればよいでしょうか?解決策は、
継続的な試行錯誤です。
でした。ここでのアイデアは、単語のインデックスを含む単語ベクトルを使用しながら、新しい数学的ベクトルを導入することです。
#画像ソース: 著者提供のイラスト
次の図は多次元空間内の単語の表現であると仮定します#画像出典: 著者提供のイラスト
位置ベクトルを追加すると、そのサイズと方向により、以下に示すように各単語の位置が変化する場合があります。
画像出典: 著者提供のイラストこの手法の欠点は、文が特に長い場合、位置ベクトルが比例して増加することです。文に 25 個の単語があるとします。最初の単語には大きさ 0 が追加された位置ベクトルが含まれ、最後の単語には大きさ 24 が追加された位置ベクトルが含まれます。この大きな不確実性は、これらの値を高次元に投影するときに問題を引き起こす可能性があります。
位置ベクトルを削減するために使用される別の手法は、
です。ここでは、文の長さに対する各単語の小数値が位置ベクトルの大きさとして計算されます。
スコア値は、
Value=1/N-1
として計算されます。ここで、「N」は特定の単語の位置です。
たとえば、以下に示す例を考えてみましょう-
#画像出典: 著者提供のイラスト
この手法では、文の長さに関係なく、位置ベクトルの最大の大きさは 1 に制限できます。ただし、大きな抜け穴があります。長さの異なる 2 つの文を比較すると、特定の位置の単語の埋め込み値が異なります。特定の単語またはその対応する位置は、そのコンテキストの理解を容易にするために、テキスト コーパス全体で同じ埋め込み値を持つ必要があります。異なる文内の同じ単語が異なる埋め込み値を持つ場合、多次元空間でテキスト コーパスの情報を表現することは非常に複雑な作業になります。このような複雑な空間を実装したとしても、過剰な情報の歪みによりモデルはいつか崩壊する可能性が非常に高いです。したがって、この手法は Transformer の位置埋め込みの開発から除外されました。
最後に、研究者らは Transformer アーキテクチャを提案し、有名なホワイトペーパーで「必要なのは注意だけです」と述べました。
この技術によれば、研究者らは次の式を使用した波の周波数ベースのテキスト埋め込み方法を推奨しています---
##画像出典:イラスト提供:著者提供「pos」は文中の特定の単語の位置またはインデックス値です。 "d " は、文内の特定の単語を表すベクトルの最大長/次元です。 "i " は、各位置の埋め込み次元のインデックスを表します。周波数という意味もあります。 i=0 の場合、それは最高の周波数であると見なされ、それ以降の値では、周波数は大きさが減少すると見なされます。#画像出典: 著者提供イラスト
##画像出典: 著者提供イラスト
画像出典:作者提供イラスト
曲線の高さはX軸に記述された単語の位置に依存するため、曲線の高さを利用することができます。単語の位置の代理として。 2 つの単語が非常に類似している場合、文内でのそれらの近接性は非常に高いと考えることができます。同様に、2 つの単語の高さが大きく異なる場合、文内でのそれらの近接性は低いと考えることができます。 サンプル テキストに基づく -- 「サチンは偉大なクリケット選手です」。 Forpos = 0 d = 3i[0] = 0.21、i[1] = 0.45、i[2] = 0.67 式を適用しているとき。画像出典:著者提供イラスト
When i =0,PE(0,0) = sin(0 / 10000^2(0)/3)PE(0,0) = sin(0)PE(0,0) = 0When 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
for
pos = 3
d = 3
i[0] = 0.78、i[1] = 0.64、i[2] = 0.56
式を適用しながら。
画像出典:著者提供イラストWhen 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」を参照してください。
翻訳者紹介
元のタイトル: 位置埋め込み: トランスフォーマー ニューラル ネットワークの精度の秘密 、著者: Sanjay Kumar
以上が「位置情報の埋め込み」: Transformer の秘密の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。