トランスフォーマーエンコーダー | 自然言語処理の核心の問題
Transformer Encoder | Core Issues in Natural Language Processing
イントロダクション
非常に簡単な方法でトランスフォーマーエンコーダーを説明します。トランスフォーマーの学習に苦労している人は、このブログ投稿を最後まで読んでください。自然言語処理(NLP)の分野で働く興味がある方は、トランスフォーマーについて少なくとも基本的な知識を持っておくべきです。ほとんどの産業はこの最新のモデルをさまざまな仕事に使用しています。トランスフォーマーは、「Attention Is All You Need」という論文で紹介された最新のNLPモデルであり、従来のRNNやLSTMを上回っています。トランスフォーマーは再帰ではなくセルフアテンションに頼ることで、長期的な依存関係の捉える課題を克服しています。トランスフォーマーはNLPを革新し、BERT、GPT-3、T5などのアーキテクチャの道を開いています。
学習目標
この記事では、以下を学びます:
- トランスフォーマーがなぜ人気になったのか?
- NLPの分野でのセルフアテンションメカニズムの役割。
- 自分自身の入力データからキー、クエリ、バリューの行列を作成する方法。
- キー、クエリ、バリューの行列を使用してアテンション行列を計算する方法。
- メカニズムにおけるソフトマックス関数の適用の重要性。
この記事は、データサイエンスブログマラソンの一部として公開されました。
トランスフォーマーがRNNやLSTMモデルを上回る要因は何か?
RNNやLSTMでは、長期的な依存関係を理解することができず、複雑なデータを扱う際に計算量が増えるという問題に直面しました。「Attention Is All You Need」という論文では、トランスフォーマーという新しいデザインが従来の順次ネットワークの制約を克服するために開発され、NLPアプリケーションの最先端モデルとなりました。
- RNNやLSTMでは、入力とトークンは一度に1つずつ与えられ、トランスフォーマーではデータを並列に処理します。
- トランスフォーマーモデルは再帰プロセスを完全に排除し、アテンションメカニズムに完全に依存しています。セルフアテンションという独特のアテンションメカニズムを使用します。
トランスフォーマーの構成と動作
多くのNLPタスクでは、トランスフォーマーモデルが現在の最先端モデルです。トランスフォーマーの導入により、NLPの分野での大きな進歩があり、BERT、GPT-3、T5などの先端システムの道を開きました。
言語翻訳のタスクでトランスフォーマーとセルフアテンションがどのように機能するかを理解しましょう。トランスフォーマーはエンコーダーデコーダーアーキテクチャで構成されています。入力文(ソース文)をエンコーダーに与えます。エンコーダーは入力文の表現を学習し、その表現をデコーダーに送ります。デコーダーはエンコーダーから受け取った表現を入力とし、出力文(ターゲット文)を生成します。
例えば、英語からフランス語へのフレーズの翻訳を行いたいとします。以下の図に示すように、エンコーダーには英語の文が入力として必要です。エンコーダーは与えられた英語の文の表現を学習し、その表現をデコーダーにフィードします。デコーダーはエンコーダーの表現を入力とし、フランス語の文を出力します。
すべてうまくいっていますが、ここで具体的に何が起こっているのでしょうか?トランスフォーマーのエンコーダーとデコーダーは、英語の文(ソース文)をフランス語の文(ターゲット文)にどのように翻訳しているのでしょうか?エンコーダーとデコーダー内で具体的に何が起こっているのでしょうか?そのため、この記事ではエンコーダーネットワークに焦点を当て、簡潔に保つためにデコーダーコンポーネントは今後の記事でカバーします。次のセクションで詳しく見ていきましょう。
トランスフォーマーのエンコーダーを理解する
エンコーダーは、入力を受け取り、機械が理解できる異なる表現/形式に変換するニューラルネットワークです。トランスフォーマーはN個のエンコーダーからなるスタックで構成されています。1つのエンコーダーの出力は、それより上のエンコーダーに入力として送られます。以下の図に示すように、N個のエンコーダーのスタックがあります。各エンコーダーはその出力を上のエンコーダーに送ります。最終的なエンコーダーは与えられたソース文の表現を出力として返します。ソース文をエンコーダーに入力し、ソース文の表現を出力として取得します。
元の論文「Attention Is All You Need」の著者は、N = 6を選択し、つまり6つのエンコーダを積み重ねました。ただし、Nの値を他の値で実験することもできます。単純さと理解のためにN = 2を維持しましょう。
では、エンコーダは具体的にどのように機能するのでしょうか?与えられたソース文(入力文)に対してどのように表現を生成しているのでしょうか?エンコーダにはどのような要素があるのか見てみましょう。
上の図から、すべてのエンコーダブロックが同一であることがわかります。また、各エンコーダブロックは2つの要素で構成されていることもわかります。
- マルチヘッドアテンション
- フィードフォワードネットワーク
詳細に入り、これら2つの要素が実際にどのように機能するのか学んでみましょう。マルチヘッドアテンションがどのように機能するかを理解するために、まずはセルフアテンションメカニズムを理解する必要があります。
セルフアテンションメカニズム
以下の例を使ってセルフアテンションメカニズムを理解しましょう。
私は川を泳いで向こう岸にたどり着きました
例1
上記の例1では、私がここで「bank」の意味を尋ねると、周囲の単語を理解する必要があります。
つまり、それは:
銀行=金融機関ですか?
銀行=川のほとりの地面ですか?
文を読むことで、単語「銀行」は川のほとりの地面を意味することが容易にわかります。
文脈が重要です!
他の例を見てみましょう。
犬が食べ物を食べましたそれはお腹が空いていたからです
例2
機械は、与えられた文でこれらの未知の単語が何を指しているのかをどのように理解するのでしょうか?ここでセルフアテンションメカニズムが機械の理解を助けます。
与えられた文「犬が食べ物を食べましたそれはお腹が空いていたからです」では、まずモデルは単語「A」の表現を計算し、次に単語「犬」の表現を計算し、その後単語「食べ物」の表現を計算します。これを繰り返します。各単語の表現を計算する際に、モデルは文中のすべての単語と関連付けて、単語についての詳細を理解します。
たとえば、単語「それ」の表現を計算する際、モデルは文中のすべての単語と単語「それ」との関連性を理解するために接続します。
下の画像では、モデルが単語「それ」をフレーズ内のすべての単語に接続してその表現を計算します。これにより、モデルは与えられた文の中で「それ」が「犬」と関連しており、「食べ物」と関連していないことを理解します。線の太さが大きいほど、スコアが高く関係が強いことを示しています。これにより、機械は高いスコアに基づいて予測を行うことができます。
では、具体的にはどのように動作するのでしょうか?基本的な理解ができたので、セルフアテンションプロセスについて詳しく学びましょう。
仮定として、以下の内容があるとします:
SourceSentence = 私は良いです
Tokenized = [‘私’, ‘は’, ‘良い’]
ここで、representationは単語埋め込みモデルを指します。
入力行列(埋め込み行列)
上記の入力行列(埋め込み行列)から、行列の最初の行は単語「私」の埋め込みを示し、2行目は単語「は」の埋め込みを示し、3行目は単語「良い」の埋め込みを示します。したがって、入力行列の次元は[文の長さ x 埋め込み次元]となります。文の中の単語の数(文の長さ)は3です。説明のために、埋め込み次元を3とします。そのため、入力行列(入力埋め込み)の次元は[3,3]となります。したがって、次元を512とする場合、形状は[3×512]となります。簡単のために[3,3]とします。
上記の行列Xから、クエリ行列Q、キー行列K、および値行列Vの3つの新しい行列を生成します。これらの3つの行列は何であり、なぜ必要なのでしょうか?それらは自己注意メカニズムで使用されます。すぐにこれらの3つの行列がどのように使用されるかを見てみましょう。
自己注意を理解し、想像するための例を提供しましょう。データサイエンスを学ぶための良いチュートリアルを探しています。YouTubeのデータベースが非常に大きいにもかかわらず、クエリを挿入すると、さまざまなデータの中から結果を提供してくれます。したがって、クエリ「データサイエンスチュートリアル」と提供すると、他のデータシーケンス(キー)とのスコアを計算し、関連するデータ(スコアが高いもの)を返します。
注:上記の説明は、自分のクエリが他の単語/シーケンスとどのように比較されるかを視覚化するための例です。
次に、[キー、クエリ、値]の概念に戻りましょう。これらの3つの行列を自己注意メカニズムのためにどのように生成できるか考えてみましょう。これらの3つの行列を生成するために、新しい重みW[Q]、W[K]、およびW[V]を追加します。入力行列XをW[Q]、W[K]、およびW[V]で乗算することにより、クエリQ、キーK、および値Vの行列を得ることができます。
注:W[Q]、W[K]、およびW[V]の重み行列はランダムに初期化され、最適な値はトレーニング中に学習されます。最適な重みを学習することで、より正確なクエリ、キー、および値の行列を得ることができます。
以下の図に示されているように、入力行列(X)を重み行列W[Q]、W[K]、およびW[V]で乗算することで、クエリ、キー、および値が得られます。さらに、これらは正確な埋め込みではなく、理解のための任意の値です。
自己注意メカニズムの理解
なぜクエリ、キー、値の行列を計算したのか?これを4つのステップで理解しましょう:
ステップ1
- セルフアテンションのプロセスでは、クエリ行列Qとキー行列K(転置)のドット積が最初のステップとして計算されます。
- 以下は、クエリ行列Qとキー行列K(転置)のドット積の結果を示しています
- しかし、クエリとキー行列のドット積を計算することの利点は何でしょうか?Q.K(転置)は具体的に何を意味するのでしょうか?それでは、Q.K(転置)の結果を詳しく見てみましょう。
- 以下の図に示すように、Q.K(転置)行列の最初の行を見てみましょう。クエリベクトルq1(I)とすべてのキーベクトル(k1(I)、k2(am)、k3(good))のドット積が計算されていることがわかります。
注:ドット積の計算は、それらがどれだけ比較可能かを示しています。関係が強ければスコアが高くなります。
- とにかく、ドット積はクエリベクトルとキーベクトルの類似性を計算し、注意スコアを算出します。
- 同様に、他の行のドット積も計算します。
ステップ2
- セルフアテンションのプロセスでは、Q.K(転置)行列はキーベクトルの次元の平方根で割られます。しかし、なぜこのようなスケーリングを行わなければならないのでしょうか?
この種のスケーリングを行わない場合、ドット積の大きさはキーベクトルのサイズによって異なる可能性があります。
キーベクトルが大きい場合、ドット積も大きくなる可能性があります。これにより、勾配がトレーニング中に速やかに拡大または収縮しすぎ、最適化プロセスが不安定になり、モデルのトレーニングが困難になる可能性があります。
- dkをキーベクトルの次元とします。したがって、埋め込みサイズが512の場合、キーベクトルの次元を64と仮定します。その場合、その平方根を取ると8になります。
ステップ3
- 上記の類似スコアは正規化されていない形式であることがわかります。したがって、ソフトマックス関数を使用して正規化します。ソフトマックス関数はスコアを0から1の範囲に取り、スコアの合計が1になるように補正します。
- 以前の行列をスコアリング行列として参照し、それぞれの単語間の相互関連性をスコアを分析して理解することができます。スコア行列の最初の行を調べると、単語「I」が自身に90%の関連性があり、単語「am」に7%の関連性があり、単語「good」に3%の関連性があることがわかります。私の言葉に対するこの新たな注目は確かに喜ばしいです。
STEP 4
- では、次は何ですか? クエリ行列とキー行列のドット積を生成し、スコアを計算し、スコアをsoftmax関数を使用して正規化しました。セルフアテンションメカニズムの最終ステップとして、アテンション行列Zを計算します。
- フレーズ内の各単語は、アテンション行列Z内で独自のアテンション値を持っています。アテンション行列Zは、スコア行列と値行列Vを掛け合わせて計算されます。
- その結果、私たちのシーケンスは次のようなアテンション行列になります。
- アテンション行列は、値ベクトルの加重和を計算することで求められます。これをより理解するために、行ごとに分解して考えてみましょう。まず、最初の行で単語「I」のセルフアテンションがどのように計算されるか考えてみましょう:
- 前の画像から、単語「I」のセルフアテンションの計算は、値ベクトルのスコアによる重み付けとそれらの合計によって行われることが推測されます。その結果、値は値ベクトルv1(I)の値の90%、値ベクトルv2(am)の値の7%、値ベクトルv3(good)の値の3%など、他の値になります。
このように、セルフアテンションメカニズムはTransformerベースのエンコーダで動作します。
結論
結果として、Transformerのエンコーダとセルフアテンションアプローチの動作方法について包括的な理解が得られました。さまざまなフレームワークのアーキテクチャを理解し、それらをNLPベースのタスクに効果的に統合することは、この仕事の重要な側面です。将来的には、デコーダ、Bert、大規模言語モデルなどについてさらに詳細なセクションを追加する予定です。そして、他の場所で展開する前に、このようなアーキテクチャを理解することを提案します。それにより、より知識を深め、データサイエンスにより参加できるようになります。
- 複雑なアーキテクチャに取り組む際には、何も難しいものはないというマインドセットでアプローチすることが重要です。正しい知識、献身、才能の活用により、これらのアーキテクチャを効果的に簡素化し、データサイエンスの仕事をより有用にすることができます。
- Transformerのエンコーダやセルフアテンションアプローチなどのフレームワークのアーキテクチャを理解することは、NLPベースの活動で効果的に作業するために重要です。これにより、これらのモデルの基本原理とメカニズムを把握することができます。
- フレームワークのアーキテクチャを正しく統合することは、任意のタスクで重要なスキルです。フレームワークの機能を効果的に活用し、NLPタスクでより良い結果を得ることができます。
よくある質問
この記事で表示されるメディアはAnalytics Vidhyaの所有物ではありません。著者の裁量で使用されています。
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