![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
2017 年、研究者グループ (Google とトロント大学) が自然言語処理 (NLP) タスクを処理する新しい方法を発表しました。彼らの革新的な論文「 Attention is All You Need 」では、Transformer モデルが紹介されました。このアーキテクチャは、今日多くの高度な AI システムの基盤となっています。このモデルは、そのパフォーマンス、スケーラビリティ、汎用性により広く採用され、BERT (双方向エンコーダー表現) や GPT (生成的事前トレーニング済みトランスフォーマー) などの最先端モデルのバックボーンを形成しています。
Transformer モデルが登場する前は、言語を処理するほとんどの AI モデルは、リカレント ニューラル ネットワーク (RNN) と呼ばれるタイプのニューラル ネットワーク、またはその改良版である Long Short-Term Memory Network (LSTM) に大きく依存していました。特に、言語モデリングや機械翻訳 (シーケンス トランスダクションとも呼ばれる) などの問題では、これらのモデルは単語を 1 つずつ左から右 (またはその逆) にシーケンスで処理していました。文中の単語は前の単語に依存することが多いため、このアプローチは理にかなっていますが、いくつかの重大な欠点がありました。
重要なアイデア: 建築への注目
Transformer モデルの根底にある考え方は、「アテンション」と呼ばれるものです。簡単に言えば、アテンションは、単語の意味や文脈を理解しようとするときに、モデルが文の特定の部分に集中するのに役立ちます。「ガレージに駐車されていた車は青い」という文を考えてみましょう。青いという言葉について考えるとき、その言葉が青いものを示しているため、文の前のほうにある「車」という単語に自然と注目します。機械翻訳モデルでは、「青い」が車を指しているのかガレージを指しているのかを識別するのに苦労します。これがセルフアテンションの役割です。セルフアテンションは、文のどこにあっても、モデルが関連する単語に集中できるようにします。
注意は新しい概念ではなく、すでに RNN と連携して使用されていたことに注意してください。Transformer は、注意のみに依存する最初の変換モデルであり、ニューラル ネットワークの必要性を排除しました。これにより、次の利点がありました。
ご覧のとおり、新しいモデルはニューラル ネットワークのすべての欠点を解消しただけでなく、実際に機械翻訳のパフォーマンスも向上しました。
元の論文は少し理解しにくいかもしれないので、ここでは論文で説明されているモデルアーキテクチャについて簡単に説明します。
エンコーダー スタックとデコーダー スタック: Transformer は、エンコーダー スタック (左側) とデコーダー スタック (右側) で構成されます。エンコーダー スタックは、入力シーケンス (文など) を一連の連続表現に変換し、デコーダー スタックは、これらの表現を出力シーケンス (翻訳など) に変換します。各スタックについて、下から上に向かって、例を挙げてモデルのコア コンポーネントを説明します。
エンコーダーでの入力文処理
入力: 翻訳したいテキスト。例: 「ガレージに駐車されていた車は青色です。」
入力埋め込み: 単語を埋め込みと呼ばれる固定長の数値表現 (ベクトル) に変換します。これらの埋め込みは、モデルが理解できる方法で単語の意味を捉えます。例では次のようになります。
「その」-> [0.9、-0.4、0.2、...]
「車」-> [0.5、0.1、-0.7、...]
「それ」-> [-0.8、0.2、0.8、...]
上記の文の各単語についても同様です。
位置エンコーディング: モデルは順序付けのない入力埋め込みを処理するため、文中の単語の順序を理解する方法が必要です。位置エンコーディングは、シーケンス内の各単語の位置に関する情報を埋め込みに追加します。
位置 1 の「The」は [0.9 + P1、-0.4 + P1、0.2 + P1、...] に調整される可能性があります。ここで、P1 は最初の位置の位置エンコーディングを表し、位置 P1 に固有の新しい埋め込みが生成されます。
自己注意メカニズム: 前述のように、これによりモデルはコンテキストに応じて文中のさまざまな単語に焦点を合わせることができます。自己注意メカニズムは、各単語に対して、現在の単語をエンコードするときに他の単語にどの程度焦点を当てるべきかを表すスコアを計算します。
「車」という単語の場合、自己注意は「駐車中」、「ガレージ」、「青」が文脈を理解する上で特に関連性があると判断するかもしれません。
マルチヘッド アテンション: トランスフォーマー モデルの新しい部分。マルチヘッド アテンションは、単純に複数の自己アテンション レイヤー/操作が並列に実行され、線形に連結されたものです。
たとえば、1 つのヘッドは主題 (「車」) とその特性 (「青」) に焦点を当てている一方で、別のヘッドは関係節 (「ガレージに駐車されていた」) に焦点を当てている可能性があります。
マルチヘッド アテンション モジュールにより、モデルは「青」がガレージよりも車に関連性が高いことを理解できるようになります。
フィードフォワード ニューラル ネットワーク: 自己注意層の後、出力はフィードフォワード ニューラル ネットワークを通過し、各位置に個別に同一に適用されます (この場合も、並列実行が可能です)。これは、間に ReLU アクティベーションを挟んだ 2 つの線形変換で構成されます。
追加と正規化: 残差接続 (追加) は、レイヤーの入力をその出力に追加するために使用され、その後、正規化されます (正規化)。これにより、勾配が消失したり爆発したりするのを防ぎ、ディープ ネットワークのトレーニングに役立ちます。
デコーダーでの翻訳の生成
NLP では、シーケンス開始トークンの開始を特殊文字 <SOS> で示し、シーケンスの終了を <EOS> で示すのが一般的です。デコーダーはエンコーダーから処理された入力を受け取り、フランス語の翻訳「ガレージで駐車中の車は青い」を生成します。この部分の動作は次のとおりです。
デコーダーへの入力: デコーダーは、エンコーダーからの英語の文章のエンコードされた表現から開始します。お気づきかもしれませんが、デコーダーは自身の出力も入力として受け取ります。最初の単語の入力がないため、先頭に <SOS> トークンを挿入し (したがって右にシフト)、最後の単語を削除します。このシフトされたシーケンスがデコーダーに入力されます。
マスクされた自己注意: デコーダーでは、マスクされた自己注意メカニズムにより、出力シーケンス内の各単語がその前の単語にのみ注意を向けることができます。これにより、モデルが先を見通すことがなくなり、左から右へ 1 単語ずつ翻訳が生成されます。
たとえば、デコーダーが「La」(フランス語の最初の単語)という単語を生成しようとしているとき、デコーダーは <SOS> からのコンテキストしか認識せず、「Voiture」などの将来の単語は認識しません。
フィードフォワード ニューラル ネットワーク: デコーダーは別のフィードフォワード ニューラル ネットワークを適用してこの情報をさらに処理し、翻訳を段階的に改良します。
デコーダーでは、マスクされた自己注意、エンコーダー-デコーダー注意、フィードフォワード ネットワークの複数のレイヤーを介して入力文を処理した後、ターゲット文 (この場合はフランス語) の各位置の連続表現のシーケンス (浮動小数点のベクトル) を取得します。これらの表現は実際の単語に変換する必要があります。ここで、最後の線形レイヤーとソフトマックス レイヤーが機能します。
デコーダーは基本的に次のことを行います:
これらのステップを組み合わせることで、Transformer は以前のモデルよりも効果的に文章全体の構造と意味を理解できます。自己注意メカニズムと並列処理により、Transformer はソース言語とターゲット言語の両方のニュアンスと構造を効果的に捉えることができるため、機械翻訳などのタスクに非常に優れています。