翻訳者|朱 仙中 レビュー | Chonglou Transformers は 2017 年の発売以来、機械学習の分野で大きな力となり、プロの翻訳や自動補完サービスの機能に革命をもたらしました。 OpenAIのChatGPTやMetaのLLamaなどの大規模言語モデルの登場により、トランスフォーマーの人気は最近急上昇しています。上記のモデルはすべてコンバーターアーキテクチャに基づいており、業界で大きな注目を集めています。これらのモデルは、トランスフォーマーの力を活用することで、自然言語の理解と生成において目覚ましい進歩を遂げました。 コンバーターの仕組みを説明する優れたリソースがWeb 上に多数ありますが、私自身は、コンバーターの仕組みの背後にある数学的な意味は理解しているものの、その仕組みを直感的に説明するのに苦労しています。複数のインタビューを実施し、同僚と話し、この問題についてライトニングトークを行った結果、これは多くの人にとって問題であるように思われます。 このブログ投稿では、コードや数学に頼らずにコンバーターがどのように動作するかを高レベルで説明したいと思います。私の目標は、紛らわしい技術用語を避け、以前のアーキテクチャとの比較を避けることです。できるだけシンプルにしようとは思いますが、コンバーターは非常に複雑なので簡単ではありませんが、コンバーターの機能とその仕組みについて、より直感的に理解していただければ幸いです。 コンバーターとは何ですか?Transformer は、シーケンスを入力として処理するタスクに適したニューラル ネットワーク アーキテクチャです。この文脈では、シーケンスの最も一般的な例はおそらく文であり、これは順序付けられた単語の集合として考えることができます。 これらのモデルの目的は、要素とその隣接するコンテキストに関する重要な情報をカプセル化するシーケンス内の各要素のデジタル表現を作成することです。結果として得られた数値表現は下流のネットワークに渡され、下流のネットワークはこの情報を使用して生成や分類などのさまざまなタスクを実行できます。 このような豊富な表現を作成することにより、これらのモデルは下流のネットワークが入力シーケンスの基本的なパターンと関係をよりよく理解できるようにし、一貫性があり文脈的に関連のある出力を生成する能力を強化します。 トランスフォーマーの主な利点は、シーケンス内の長距離依存関係を高効率で処理できることと、シーケンスを並列処理できることです。これは、機械翻訳、感情分析、テキスト生成などのタスクに特に役立ちます。 Azure OpenAI サービス上のDALL-E モデルによって生成された画像。プロンプトは次のとおりです:「オプティマスプライムの形をした緑と黒のマトリックス コード」 コンバータへの入力入力を Transformer に渡すには、まずそれをトークンのシーケンス(入力を表す整数のセット) に変換する必要があります。 Transformer はもともと自然言語処理の分野で応用されていたので、まずはこのシナリオを考えてみましょう。文を一連のトークンに変換する最も簡単な方法は、単語を整数にマッピングするルックアップ テーブルとして機能する語彙を定義することです。この語彙に含まれていない単語を表す特定の番号を予約しておけば、常に整数値を割り当てることができます。 実際には、これはテキストをエンコードする非常に単純な方法です。なぜなら、 catとcatsのような単語は、同じ動物の単数形と複数形の説明であるにもかかわらず、完全に異なるトークンとして扱われるからです。これを克服するために、インデックスを作成する前に単語を小さなチャンクに分割するバイトペアエンコーディングなどのさまざまなトークン化戦略が設計されています。さらに、モデルに追加のコンテキストを提供するために、文の始まりや終わりなどの特徴を示す特別なトークンを追加すると便利な場合がよくあります。 トークン化プロセスをよりよく理解するために、次の例を考えてみましょう。 「こんにちは、ドロスヴァルの今日の天気はいいですよね? 」 ここで、 Drosval は、GPT-4 が次のプロンプトを使用して生成した名前です。「 David Gemmell の Drenai の世界に由来するような架空の地名を作成できますか? 」これは、訓練された機械モデルの語彙には現れてはならないため、意図的に選択されました。 コンバーター ライブラリのbert-base-uncasedトークナイザーの助けを借りて、上記の文は次のトークン シーケンスに変換されます。 各単語を表す整数は、特定のモデル トレーニングとトークン化戦略によって異なります。デコードすると、各トークンが表す単語がわかります。 興味深いことに、これは元の入力とは異なることがわかります。いくつかの特別なトークンが追加され、略語は複数のトークンに分割され、架空の地名は異なる「ブロック」で表されます。前述のbert-base-uncased モデルを使用した場合も、大文字小文字のコンテキストがすべて失われます。 ただし、例では文章を使用しましたが、 Transformer はテキスト入力に限定されません。このアーキテクチャは、視覚タスクでも優れた結果を達成しています。画像をシーケンスに変換するために、ViT の作成者は、画像を重複しない 16 x 16 ピクセル ブロックにスライスし、それらを長いベクトルに連結してからモデルに渡します。トランスフォーマーをレコメンデーション システムで使用する場合、1 つの方法として、ユーザーが最後に閲覧した n 個のアイテムのアイテム ID をネットワークへの入力として使用することが考えられます。ドメインに対して意味のある入力トークン表現を作成できれば、それを Transformer ネットワークに取り込むことができます。 マークアップを埋め込む入力を表す整数のシーケンスを取得したら、それを埋め込みに変換できます。埋め込みは、機械学習アルゴリズムによって簡単に処理できる方法で情報を表現する方法です。その目的は、情報を一連の数字として表現することにより、圧縮形式でエンコードされたトークンの意味を捉えることです。最初に、埋め込みは乱数のシーケンスに初期化され、トレーニング中に意味のある表現が学習されます。ただし、これらの埋め込みには固有の制限があります。トークンが出現するコンテキストが考慮されないのです。これには2つの側面があります。 1 つの問題は、タスクによっては、トークンを埋め込むときに、トークンの順序も保持する必要がある場合があることです。これは、NLP などの分野では特に重要です。そうでない場合は、基本的にbag-of-words アプローチになります。これを克服するために、埋め込みに位置エンコーディングを適用します。位置埋め込みを作成するには複数の方法がありますが、主な考え方は、入力シーケンス内の各トークンの位置を表す別の埋め込みセットがあり、それをトークン埋め込みと組み合わせることです。 もう 1 つの問題は、タグが周囲のタグ付けされたコンテンツに応じて異なる意味を持つ可能性があることです。次の文を考えてみましょう。 暗いですね。誰が電気を消したのですか? わあ、この荷物は本当に軽いですね! ここでは、 「光」という言葉が 2 つの異なる文脈で使用されており、異なる文脈ではまったく異なる意味を持ちます。ただし、トークン化戦略によっては、埋め込みは同じになる場合があります。 Transformer では、これはアテンション メカニズムによって処理されます。 概念的には、注意とは何でしょうか?おそらく、Transformer アーキテクチャで使用される最も重要なメカニズムは注意であり、これにより、ネットワークは入力シーケンスのどの部分が特定のタスクに最も関連しているかを学習できます。シーケンス内の各トークンについて、アテンション メカニズムは、コンテキストを与えられた現在のトークンを理解するために重要な他のトークンを識別します。これをトランスフォーマーに実装する方法を検討する前に、まずは簡単に、アテンション メカニズムが概念的に何を達成しようとしているのかを理解し、直感的な理解を深めてみましょう。 注意を理解する 1 つの方法は、コンテキストに関係なくすべてのトークンに同じ埋め込みを使用するのではなく、各トークンの埋め込みを、隣接するトークンに関する情報を含む埋め込みに置き換える方法と考えることです。どのトークンが現在のトークンに関連しているかがわかっている場合、このコンテキストをキャプチャする 1 つの方法は、これらの埋め込みの加重平均、より一般的には線形結合を作成することです。 先ほど見た文の 1 つを検索する方法の簡単な例を考えてみましょう。注意を適用する前は、シーケンス内の埋め込みには隣接するもののコンテキストがありません。したがって、 「 light 」という単語の埋め込みを次の線形結合として視覚化できます。 ここで、重みは単なる単位行列であることがわかります。注意メカニズムを適用した後、重み行列を学習して、次のような方法で「軽い」埋め込みを表現できるようにします。 今回は、選択したトークンのシーケンスの最も関連性の高い部分に対応する埋め込みにさらに重みを付けます。これにより、最も重要なコンテキストが新しい埋め込みベクトルに確実に取り込まれるようになります。 現在のコンテキストに関する情報を含む埋め込みは、コンテキスト埋め込みと呼ばれることもあり、これが最終的に私たちが作成しようとしているものです。 Attention が何を達成しようとしているのかを大まかに理解できたので、次のセクションではこれが実際にどのように達成されるのかを見ていきましょう。 注目度はどのように計算されますか?注意にはさまざまな種類があり、主な違いは線形結合を実行するために使用される重みの計算方法です。ここでは、最も一般的なアプローチである、元の論文で紹介されたスケールされたドット積アテンションを検討します。このセクションでは、すべての埋め込みが位置的にエンコードされていると想定します。 私たちの目標は、元の埋め込みの線形結合を使用してコンテキスト埋め込みを作成することであることを思い出してください。最も簡単な説明から始め、必要なすべての情報を学習する埋め込みベクトルにエンコードでき、計算する必要があるのは重みだけだと仮定しましょう。 重みを計算するには、まずどのタグが互いに関連しているかを判断する必要があります。これを実現するには、2 つの埋め込み間の類似性の概念が必要です。この類似性を表す 1 つの方法はドット積を使用することです。スコアが高いほど 2 つの単語の類似性が高くなるように埋め込みを学習します。 各トークンについて、シーケンス内の他のトークンとの相関を計算する必要があります。これは行列の乗算に一般化でき、重み行列が得られます。これはしばしば注目スコアと呼ばれます。重みの合計が 1 になるように、 SoftMax 関数も適用します。ただし、行列の乗算によって任意の大きな数値が生成される可能性があるため、SoftMax 関数は大きな注意スコアに対して非常に小さな勾配を返す可能性があります。これにより、トレーニング中に勾配消失問題が発生する可能性があります。この効果を打ち消すために、SoftMax を適用する前に、注目スコアにスケーリング係数を掛けます。 ここで、コンテキスト埋め込み行列を取得するには、注目スコアを元の埋め込み行列に掛け合わせます。これは、埋め込みの線形結合に相当します。 単純化された注目度の計算: 埋め込みが位置的にエンコードされていると仮定 モデルは、注目スコアとそれに続くコンテキスト埋め込みを生成するのに十分複雑な埋め込みを学習するかもしれませんが、私たちは、通常は小さい埋め込み次元に多くの情報を圧縮しようとします。 そこで、モデルがこのタスクを学習しやすくするために、学習しやすいパラメータをいくつか導入してみましょう。埋め込み行列を直接使用するのではなく、3 つの個別の線形レイヤー (行列乗算) に渡します。これにより、モデルは埋め込みのさまざまな部分に「注意を払う」ことができるようになります。次の図に示すように: スケールドドット積自己注意: 埋め込みが位置的にエンコードされていると仮定 画像から、線形投影に Q、K、V というラベルが付けられていることがわかります。元の論文では、これらの投影は、情報検索にヒントを得たものとして、クエリ、キー、値と名付けられていました。個人的には、この類推が理解に役立つとは思わなかったので、あまり重点を置かない傾向にあります。文献との一貫性を保つために、ここでは用語に従い、これらの線形層が異なることを明確にします。 このプロセスがどのように機能するかを理解したので、アテンション計算を、Q、K、V に渡される 3 つの入力を持つ単一のブロックとして考えることができます。 同じ埋め込み行列を Q、K、V に渡すことを自己注意と呼びます。 多頭注意とは何ですか?実際には、 Transformer が入力シーケンスの異なる部分に同時に焦点を合わせることができるように、複数の自己注意ブロックを並列に使用することがよくあります。これは、マルチヘッドアテンションと呼ばれます。 マルチヘッド アテンションの背後にある考え方は単純で、複数の独立した自己アテンション ブロックの出力が連結され、線形レイヤーに渡されます。この線形レイヤーにより、モデルは各注意ヘッドからのコンテキスト情報を組み合わせることを学習できます。 実際には、各自己注意ブロックで使用される隠し次元のサイズは、通常、埋め込み行列の形状を維持するために、元の埋め込みサイズを注意ヘッドの数で割った値になるように選択されます。 コンバーターは他に何で構成されていますか?Transformerを紹介した論文は(今では悪名高いことですが) 「Attention」と名付けられましたが、 Transformer には Attention 以外のコンポーネントもあるため、少し混乱を招きます。 実際、コンバーターブロックには次のものも含まれています。
トランスフォーマーアーキテクチャは導入以来かなり安定していますが、レイヤー正規化ブロックの位置はトランスフォーマーアーキテクチャによって異なる場合があります。現在post-layer normと呼ばれている元のアーキテクチャは次のようになります。 下の図に示すように、最近のアーキテクチャで最も一般的な配置は、スキップ接続内の自己注意ブロックと FFN ブロックの前に正規化ブロックを配置するプレレイヤーノルムです。 コンバーターにはどのような種類がありますか?さまざまなコンバーターアーキテクチャが利用可能ですが、そのほとんどは主に 3 つのタイプに分けられます。 エンコーダアーキテクチャエンコーダー モデルは、アテンション メカニズムが入力シーケンス全体に注意を向けることができるため、分類や名前付きエンティティの認識などの下流のタスクに使用できるコンテキスト埋め込みを生成することを目的としています。これは、この記事でこれまでに検討したタイプのアーキテクチャです。エンコーダ固有のトランスフォーマーの最も人気のあるファミリは、 BERTとそのバリエーションです。 データを 1 つ以上のトランスフォーマー ブロックに渡すと、シーケンス内の各トークンの埋め込みを表す複雑なコンテキスト埋め込み行列が得られます。ただし、分類などの下流のタスクに使用するには、単一の予測を行うだけで済みます。従来、最初のトークンが取得され、分類ヘッドに渡されます。分類ヘッドには通常、ドロップアウト レイヤーと線形レイヤーが含まれます。これらのレイヤーの出力は、 SoftMax 関数を介してクラス確率に変換できます。以下にその例の 1 つを説明します。 デコーダーアーキテクチャデコーダー アーキテクチャはエンコーダー アーキテクチャとほぼ同じですが、主な違いは、デコーダー アーキテクチャではマスクされた (または因果的な) 自己注意レイヤーが採用されているため、注意メカニズムは入力シーケンスの現在の要素と前の要素にのみ注意を向けることができることです。つまり、結果として得られるコンテキスト埋め込みでは、前のコンテキストのみが考慮されることになります。人気のあるデコーダーのみのモデルには、GPT ファミリがあります。 これは通常、バイナリ下三角行列でアテンション スコアをマスクし、マスクされていない要素を負の無限大に置き換えることによって実現されます。これにより、次の SoftMax 操作を通過するときに、これらの位置のアテンション スコアがゼロになることが保証されます。次のようにして、以前の自己注意マップを更新してこれを含めることができます。 マスキング自己注意計算: 位置エンコーディング埋め込みを想定 デコーダーは現在の位置から逆方向にのみ計算に参加できるため、デコーダー アーキテクチャはシーケンス生成などの自己回帰タスクによく使用されます。ただし、コンテキスト埋め込みを使用してシーケンスを生成する場合は、エンコーダーを使用する場合と比較して、いくつかの追加の考慮事項があります。以下に例を示します。 デコーダーは入力シーケンス内の各トークンに対してコンテキスト埋め込みを生成しますが、シーケンスを生成するときは通常、最終トークンに対応する埋め込みを後続のレイヤーへの入力として使用することがわかります。 さらに、ロジットに SoftMax 関数を適用した後、フィルタリングスキームが適用されていない場合は、モデルの語彙内のすべてのトークンの確率分布が得られます。これは非常に大きくなる可能性があります。多くの場合、さまざまなフィルタリング戦略を使用して潜在的なオプションの数を減らします。最も一般的な方法のいくつかは次のとおりです。
エンコーダ/デコーダアーキテクチャ当初、Transformer は機械翻訳のアーキテクチャとして提案され、この目的を達成するためにエンコーダーとデコーダーを使用します。エンコーダーは中間表現を作成するために使用されます。エンコーダー/デコーダー トランスフォーマーはあまり一般的ではなくなりましたが、 T5 などのアーキテクチャは、質問応答、要約、分類などのタスクをシーケンス間問題としてフレーム化し、このアプローチを使用して解決する方法を示しています。 エンコーダー/デコーダー アーキテクチャとの主な違いは、デコーダーがエンコーダー/デコーダー アテンションを使用することです。エンコーダー/デコーダー アテンションでは、アテンション計算中にエンコーダーの出力 (K および V) とデコーダー ブロックの入力 (Q) が使用されます。これは、すべての入力に同じ入力埋め込み行列が使用される自己注意とは対照的です。それ以外では、生成プロセスはデコーダーのみのアーキテクチャと非常に似ています。 エンコーダー/デコーダーのアーキテクチャは、下の図のように視覚化できます。ここでは、図を簡略化するために、元の論文で示されているTransformerのポストレイヤーノルムのバリエーションを描くことにしました。ここでは、ノルムレイヤーがアテンションブロックの後に来ます。 結論は結論として、この記事がコンバーターの仕組みを直感的に理解し、このアーキテクチャーの詳細を分かりやすく把握するのに役立ち、最新のコンバーターアーキテクチャーをわかりやすく理解するための良い出発点となったことを願っています。 最後に、特に記載がない限り、すべての画像は著者によるものです。 参考文献
翻訳者紹介Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。 原題: De-coded: Transformers explained in plain English 、著者: Chris HughesChris Hughes |
>>: カナダ工学アカデミー会員のソン・リャン氏:将来の人工知能システムはネットワークの形で存在するだろう
先日開催された2018年上海世界モバイル大会で、中国移動は2020年までに5Gネットワークの正式...
人工知能 (AI) には、問題を理解し解決する神秘的な力があると考える人もいます。人工知能は人々の日...
[[348758]]運転支援運転システム (ADAS) や自律走行車 (AV) 向けのセンシング技術...
自然言語理解(NLP)は「人工知能の最高傑作」として知られており、これは言語や知識などの認知面におけ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
企業が AI プロジェクトをさらに展開するにつれて、特定の役割がビジネスの成功に不可欠であることがわ...
ニューラルネットワークがうまく動作しない場合はどうすればいいでしょうか?この記事の著者は、データの前...
人工知能が徐々に社会経済の発展を促進する新たな原動力となるにつれ、あらゆる階層の人々が産業知能のアッ...
人工知能(AI)はどこにでもあります。スマートセンサーを使用して素晴らしい写真を撮影するスマートフォ...
諺にもあるように、千人の読者には千のハムレットがあり、私たちにとって人工知能 (AI) も同じことが...
電気スマートカーの発展により、自動車はもはや独立した機械的なハードウェアボックスではなく、センシング...
本人確認のための顔認識、路上の車両の無線測定と制御、空中検査を行うドローン...人々の日常生活におけ...
「デノボ分子設計」は材料科学の「聖杯」です。生成的ディープラーニングの導入により、この方向は大きく...
翻訳者 | ブガッティレビュー | Chonglou 1950 年代のコンピューター ビジョンの最初...
注意メカニズムに依存する大規模言語モデル (LLM) は通常、トレーニング中に固定のコンテキスト長を...