ホームページ  >  記事  >  テクノロジー周辺機器  >  トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

WBOY
WBOY転載
2023-06-05 18:05:271644ブラウズ

Transformer を紹介する前に、RNN の構造を確認しましょう

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

##RNN についてある程度の理解がある場合は、次のことが確実にわかります。 RNN 明らかな問題が 2 つあります。

  • 効率性の問題: 単語ごとに処理する必要があり、前の単語の非表示状態が出力されるまで次の単語を処理できません。
  • 転送距離が長すぎると、勾配の消失、勾配の爆発、および忘却の問題が発生します。

これを軽減するには転送間の勾配と忘却の問題。さまざまな RNN セルが設計されています。最も有名な 2 つは、LSTM と GRU

LSTM (Long Short Term Memory)# です。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

##GRU (Gated Recurrent Unit)

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

ただし、ブロガーの比喩を引用すると、インターネット上でそうすることで、馬車の車輪を交換するようなものです。車に置き換えてみてはいかがでしょうか。

つまり、この記事で紹介するコア構造であるトランスがあります。 Transformer は、Google Brain 2017 によって提案された作品です。RNN の弱点を再設計し、RNN の効率の問題と伝送の欠陥を解決し、多くの問題で RNN のパフォーマンスを上回ります。 Transformer の基本構造は下図に示すとおり、N-in-N-out 構造になっており、各 Transformer ユニットは RNN 層の 1 層に相当し、文全体のすべての単語を受け取りますを入力として入力し、文内の各単語を入力すると、各単語が出力を生成します。ただし、RNN とは異なり、Transformer は文内のすべての単語を同時に処理でき、任意の 2 つの単語間の動作距離は 1 です。これにより、前述の RNN の効率の問題と距離が効果的に解決されます。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

各 Transformer ユニットには、セルフ アテンション レイヤーとフィード フォワード レイヤーという 2 つの最も重要なサブレイヤーがあります。これについては後で説明します。 2 つの層の詳細な構造を紹介します。この記事では、Transformer を使用して Seq2Seq に似た言語翻訳モデルを構築し、Encoder と Decoder 用の 2 つの異なる Transformer 構造を設計します。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

Decoder Transformer には、Encoder Transformer と比較して追加の Encoder-Decoder Attender アテンション レイヤーがあり、Encoder からの出力をパラメーターとして受け取るために使用されます。最終的に下図のように積み上げれば、Transformer Seq2Seq の構造が完成します。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

この Transformer Seq2Seq を翻訳に使用する方法の例を示します。

    最初のすべて、Transformer は元の言語で文章をエンコードし、メモリを取得します。
  • 初めてデコードするときは、文の始まりを示す 記号が 1 つだけあります。
  • デコーダは、この一意の入力から一意の出力を取得します。これは、文の最初の単語を予測するために使用されます。
2 番目のデコードでは、最初の出力を入力に追加します。入力は になり、文の最初の単語 (グランド トゥルースまたは前の文からの予測)ステップ)、デコードによって生成された 2 番目の出力は、文の 2 番目の単語を予測するために使用されます。類推して (プロセスは Seq2Seq に非常に似ています)

Transformer の一般的な構造と、それを使用して翻訳タスクを完了する方法を理解した後、次は、Transformer の詳細な構造を見てみましょう。変成器: ## #############

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

コア コンポーネントは、上で説明したセルフ アテンション ネットワークとフィード フォワード ネットワークですが、他にも多くの詳細があります。次に、Transformer の構造を構造ごとに解釈していきます。

自己注意

自己注意とは、文内の単語がそのすべての単語に注意を払うことです。この単語の各単語の重みを計算し、この単語をすべての単語の重み付き合計として表します。各セルフ アテンション操作は、各単語の畳み込み操作または集計操作に似ています。具体的な操作は次のとおりです:

まず、各単語が 3 つに分割された 3 つの行列 Wq、Wk、Wv を通じて線形変化し、各単語独自のクエリが生成されます。ベクトルは 3 つのベクトルです。単語を中心にしてセルフ アテンションを実行する場合、単語のキー ベクトルを使用して各単語のクエリ ベクトルと内積を計算し、その後、Softmax を通じて重みを正規化します。次に、これらの重みを使用して、この単語の出力としてすべての単語のベクトルの重み付き合計を計算します。具体的なプロセスを以下の図に示します。

正規化する前に、ベクトルの次元 dk で除算して正規化する必要があるため、最終的なセルフ アテンションは次のように表すことができます# 行列変換を使用する

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

##最後に、各セルフ アテンションは n 個のワード ベクトルの入力を受け取り、n 個の集合ベクトルを出力します。

上で述べたように、エンコーダのセルフ アテンションはデコーダのセルフ アテンションとは異なり、エンコーダの Q、K、V はすべて上位層ユニットの出力から取得されます。一方、デコーダでは Q のみが前のデコーダ ユニットの出力から取得され、K と V は両方ともエンコーダの最後の層の出力から取得されます。つまり、Decoder は現在の状態と Encoder の出力を通じて重みを計算し、Encoder のエンコードに重みを付けて次の層の状態を取得します。

マスクされた注意

#上記の構造図を観察すると、デコーダーとエンコーダーの別の違いもわかります。つまり、各デコーダ ユニットの入力層は、まずマスクされたアテンション層を通過する必要があります。では、マスクドと通常バージョンのアテンションの違いは何でしょうか?

エンコーダは文全体をエンコードする必要があるため、各単語のコンテキストを考慮する必要があります。したがって、各単語の計算プロセス中に、文内のすべての単語が表示されます。ただし、Decoder は Seq2Seq のデコーダと同様で、各ワードは前のワードの状態しか参照できないため、一方向の Self-Attend 構造となっています。

Masked Attendance の実装も非常に簡単で、通常の Self Attendance の Softmax ステップの前に、先ほどの下三角行列 M に (&) を追加するだけです。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2#マルチヘッド アテンション

##マルチヘッド アテンションは、上記のアテンションを h 回実行し、次に、 h を出力して最終出力を取得します。これにより、アルゴリズムの安定性が大幅に向上し、多くのアテンション関連の作業に応用できます。 Transformer の実装では、Multi-Head の効率を向上させるために、W を h 倍に拡張し、同じワードの異なるヘッドの k、q、v をまとめて配置し、ビュー (reshape) で同時に計算します。 ) と転置操作を行って計算を完了し、その後、形状変更と転置を経て再び接続が完了しますが、これは全ヘッドの並列処理と同等です。

位置に関するフィードフォワード ネットワーク

エンコーダとデコーダのアテンションの後に出力される n 個のベクトル (ここで、n はワード数) がそれぞれ全結合層に入力され、位置ごとのフィードフォワード ネットワークが完成します。

追加とノルム

は残差ネットワークです。1 つの層の入力とその標準化された出力を追加するだけです。 Transformer の各セルフ アテンション レイヤーと FFN レイヤーの後には、Add & Norm レイヤーが続きます。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

位置エンコーディング

Transformer には RNN がないため、 CNN とは異なり、文内のすべての単語が同等に扱われるため、単語間に順序関係はありません。言い換えれば、バッグオブワードモデルと同じ欠点に悩まされる可能性があります。この問題を解決するために、Transformer は位置エンコーディング ソリューションを提案しました。これは、各入力単語ベクトルに固定ベクトルを重ねてその位置を表すものです。この記事で使用される位置エンコーディングは次のとおりです。

ここで、pos は文内の単語の位置、i は単語ベクトル内の i 番目の位置です。つまり、各単語の単語ベクトルを 1 つの行に重ね合わせ、各列に位相の異なる波または徐々に波長が長くなる波を重ねて、位置を一意に区別します。

Transformer のワークフロー

Transformer のワークフローは、上で紹介した各サブプロセスの接続です

  • 入力ワード ベクトルは最初に位置エンコーディングでスーパーインポーズされ、次にトランスフォーマーに入力されます。
  • 各エンコーダートランスフォーマーはマルチヘッド セルフを実行します。注意->追加と正規化->FFN->追加と正規化処理を実行し、その出力を次のエンコーダに入力します
  • 最後のエンコーダの出力は次のように保持されます。メモリ
  • 各デコーダー トランスフォーマーは、マスクされたマルチヘッド セルフ アテンション -> マルチヘッド セルフ アテンション -> 追加と正規化 -> FFN -> 追加と正規化プロセスを実行します。ここで、マルチヘッドセルフアテンションの K と V はエンコーダーのメモリから取得されます。タスクの要件に従って必要な埋め込みの最後の層を出力します。
  • Transformer の出力ベクトルは、さまざまなダウンストリーム タスクの実行に使用できます。

GitHub リンク: https:// github .com/harvardnlp/annotated-transformer

Post Scriptum

Transformer の記事で取り上げられていますが、自然言語翻訳のモデル。多くの記事ではこのモデルを Transformer と呼んでいます。しかし、私たちは依然として、記事内でセルフ アテンションを使用するエンコーダーまたはデコーダーの下部構造をトランスフォーマーと呼ぶ傾向があります。テキストとソース コードには、学習率の動的な変更、残留ドロップアウト、ラベルのスムージングなど、他の多くの最適化も含まれていますが、ここでは詳しく説明しません。興味のある友人は、関連する参考資料を読んで詳細を学ぶことができます。

一方向 2 段階トレーニング モデル - OpenAI GPT

GPT (Generative Pre-Training) は、2018 年に OpenAI によって提案されたモデルで、Transformer モデルを使用して問題を解決する 分類、推論、質問応答、類似性など、さまざまな自然言語問題のモデル。 GPT は、Pre-training Fine-tuning トレーニング モードを採用しており、大量のラベルなしデータを利用できるため、これらの問題の有効性が大幅に向上します。

GPT は、Transformer を使用してさまざまな自然言語タスクを実行する試みの 1 つであり、主に次の 3 つの点があります。事前トレーニング方法

  • 一方向Transformerモデル
  • さまざまな入力データ構造の微調整と変更
  • Transformer の原理をすでに理解している場合は、上記の 3 つの内容を理解するだけで GPT をより深く理解できます。

プレトレーニングのトレーニング方法

機械学習タスクの多くは、ラベル付きデータセットを入力として必要とします。しかし、私たちの周りには、テキスト、画像、コードなど、ラベルのないデータが大量に存在します。このデータのラベル付けには多くの人力と時間が必要であり、ラベル付けの速度はデータ生成の速度よりはるかに遅いため、多くの場合、ラベル付けされたデータはデータセット全体のほんの一部しか占めません。コンピューティング能力が向上し続けるにつれて、コンピューターが処理できるデータの量は徐々に増加します。このラベルのないデータをうまく活用できないのはもったいないです。

そのため、半教師あり学習とトレーニング前の微調整の 2 段階モデル​​がますます人気になってきています。最も一般的な 2 段階の方法は Word2Vec です。これは、大量のラベルなしテキストを使用して特定の意味情報を含む単語ベクトルをトレーニングし、これらの単語ベクトルを下流の機械学習タスクの入力として使用します。これにより、機械学習の一般化能力が大幅に向上します。下流モデル。

しかし、Word2Vec には問題があります。つまり、1 つの単語に対して埋め込みは 1 つしか存在できないということです。このように、多義性はうまく表現できません。

ELMo は、bi-LSTM に基づく言語モデルを使用して、単語ベクトルに文脈上の意味情報を取り込み、トレーニング前の段階で各語彙セットの文脈情報を提供することを最初に考えました。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

上記の式はそれぞれ左と右の LSTM-RNN を表しており、各 RNN 層の入力単語ベクトル X と重み S を共有しています。 RNN の双方向出力は、次の単語 (右に次の単語、左に前の単語) を同時に予測するために使用されます。具体的な構造は次の図に示すとおりです。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

#しかし、ELMo は RNN を使用して言語モデルの事前トレーニングを完了します。では、Transformer を使用して事前トレーニングを完了するにはどうすればよいでしょうか?

一方向トランスフォーマーの構造

OpenAI GPT は一方向トランスフォーマーを使用してこの事前トレーニング タスクを完了します。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

一方向変圧器とは何ですか? Transformer の記事では、Encoder と Decoder で使用される Transformer ブロックが異なると述べられています。デコーダ ブロックでは、マスクされた自己注意が使用されます。つまり、文内の各単語は、それ自体を含む前のすべての単語にのみ注意を払うことができます。これは一方向のトランスフォーマーです。 GPT で使用される Transformer 構造は、Encoder の Self-Attend を Masked Self-Attend に置き換えるもので、具体的な構造は次の図に示すとおりです。 ##一方向の Transformer が使用されており、上記の単語のみが表示されるため、言語モデルは次のとおりです。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

トレーニング プロセスこれは実際には非常に単純で、文内の n 個の単語 (最初の単語は ) の単語ベクトルと位置エンコーディングを追加し、それを前述のトランスフロマーに入力し、n 個の出力が次の単語を予測するというものです。 ( ; 文の最初の単語を予測し、最後の単語の予測結果は言語モデルのトレーニングには使用されません)。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

マスクされた自己注意を使用しているため、各位置の単語は次の単語を「認識」しません。つまり、予測するときに、 「答え」は目に見えないため、モデルの合理性が確保されており、これが OpenAI が一方向の Transformer を使用する理由です。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2さまざまな入力データ構造の微調整と変更

次のステップでは、モデル トレーニングの 2 番目のステップに入り、少量のラベル付きデータを使用してモデル パラメーターを微調整します。

前のステップでは最後の単語の出力を使用しませんでした。このステップでは、この出力を下流の教師あり学習の入力として使用します。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

微調整によってモデルが過剰適合に陥ることを避けるために、この記事では次のことについても言及しています。補助トレーニング ターゲット この方法は、マルチタスク モデルまたは半教師あり学習に似ています。具体的な方法は、前の単語の教師なし学習を継続しながら、最後の単語の予測結果を教師あり学習に使用することで、最終的な損失関数は次のようになります。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

さまざまなタスクについては、入力データの形式を変更する必要があります。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

  • ##分類: 分類の問題の場合、いいえこれを行う必要があります 変更内容
  • 含意: 推論の質問の場合、区切り文字を使用して事前確率と仮説を分離できます
  • 類似度:類似性の質問の場合、モデルは一方向であるため、類似性は順序に依存しません。したがって、最終的な推測を行うには、2 つの文の順序を逆にして 2 つの入力の結果を追加する必要があります。
  • 多肢選択: 質疑応答の場合は、コンテキストと質問はまとめられ、回答は分離されてから予測されます。

GitHub リンク: https://github.com/openai/finetune-transformer-lm

Post Scriptum

OpenAI GPT は、Transformer と 2 段階のトレーニング方法の使用に関して多大な研究を行ってきました。 、また非常に良い結果を達成し、後の BERT への道を切り開きました。

双方向 2 段階トレーニング モデル - BERT

BERT (Bidirectional Encoder Representation from Transformer) は、2018 年に Google Brain によって提案された Transformer に基づく自然言語表現フレームワークです。提案されるやいなや人気を博したスターモデルです。 GPT と同様に、BERT は事前トレーニング微調整トレーニング方法を採用しており、分類やラベル付けなどのタスクでより良い結果を達成します。

BERT と GPT は非常によく似ています。どちらも Transformer に基づく 2 段階のトレーニング モデルです。事前トレーニングと微調整の 2 つの段階に分かれています。どちらも事前の機能はありません。 -トレーニング ステージ: ユニバーサル Transformer モデルは教師ありの方法でトレーニングされ、その後、このモデルのパラメーターが微調整ステージで微調整され、さまざまな下流タスクに適応します。

##BERT と GPT は非常によく似ていますが、トレーニングの目標、モデルの構造、使用方法は若干異なります。

    GPT の用途一方向のトランスフォーマーであるのに対し、BERT は双方向のトランスフォーマーを使用します。これは、マスク操作を実行する必要がないことを意味します;
  • 使用される構造の違いは、トレーニングの目標に直接つながります。 Pre-Training 段階では異なり、
双方向トランスフォーマー

BERT はマスクを通さないトランスフォーマーを使用します。つまり、Transformer の記事の Encoder Transformer の構造はまったく同じです。

GPT では、言語モデルのトレーニングを完了する必要があるため、事前トレーニングが必要です。現在の単語と前の単語、これが GPT が Transformer 本来の双方向構造を放棄し、一方向構造を採用した理由です。

GPT のようにコンテキスト情報を完全に放棄するのではなく、同時にコンテキスト情報を取得するために、BERT は双方向の Transformer を使用します。ただし、この方法では、BERT の構造により各 Transformer の出力が文全体を認識するため、GPT のような事前トレーニングに通常の言語モデルを使用することはできなくなります。この出力を使用して予測するかどうかに関係なく、あなたは「それを見るでしょう」「それ自体を見る」という質問である参考回答。 ELMo は双方向 RNN を使用しますが、2 つの RNN は独立しているため、認識自体の問題は回避できます。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

トレーニング前の段階

次に、BERT は 2 つのパラメータを使用したいと考えています。 -way Transformer モデルでは、GPT で事前トレーニング目的関数として使用される言語モデルを放棄する必要があります。代わりに、BERT はまったく異なる事前トレーニング方法を提案します。

  • Masked Language Model (MLM)

Transformer では、上記の情報を知りたいと考えています。以下の情報を知る必要がありますが、同時にモデル全体が予測対象の単語に関する情報を知らないことを確認してから、その単語に関する情報をモデルに伝えないでください。つまり、BERT は入力文から予測が必要な単語をいくつか抽出し、文脈を通じて文を分析し、最後に対応する位置の出力を使用して、抽出された単語を予測します。それは実際にクローゼをしているようなものです。

ただし、多数の単語を タグに直接置き換えると、問題が発生する可能性があります。モデルは、対応する の出力を予測するだけでよいと考える可能性があります。 、その他の位置 出力は関係ありません。同時に、Fine-Tuning ステージの入力データには タグが存在せず、データの分布が異なるという問題もあります。このようなトレーニングの影響を軽減するために、BERT は次の方法を採用しています:

1. 入力データ内の単語の 15% をランダムに選択して予測します。これらの 15% の単語の中から、

2.80% の単語ベクトルが

3.10% の単語ベクトルが入力時に置換されます。他の単語の単語ベクトル

#4. 残りの 10% は変更されません

これは、モデルに「あなたの答えを与えてもよい」と伝えるのと同じです。答えが得られないか、間違った答えが得られる可能性があります。 がある場合はあなたの答えを確認しますし、 がない場合もあなたの答えを確認することがあります。そのため、 はlabel はあなたにとって特別な意味を持たないので、何があってもすべての位置の出力を予測する必要があります。

  • 次文予測 (NSP)

BERT は、別の事前トレーニング方法 NSP も提案しました。これは、次のようなものです。 MLM マルチタスクの事前トレーニングを形成するために同時に実行されます。この事前トレーニング方法では、2 つの連続する文を Transformer に入力します。左側の文の前には タグがあり、その出力は 2 つの文の間に連続した文脈上の関係があるかどうかを判断するために使用されます。ネガティブ サンプリング方法が使用され、ポジティブ サンプルとネガティブ サンプルがそれぞれ 50% を占めます。

2 つの文の関係を区別するために、BERT は位置エンコーディングを追加するだけでなく、2 つの文を区別するために事前トレーニング中に学習する必要があるセグメント埋め込みも追加します。 . .このように、BERT の入力は、単語ベクトル、位置ベクトル、セグメント ベクトルの 3 つの部分の加算で構成されます。さらに、2 つの文は タグを使用して区別されます。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

#全体的な事前トレーニング図は次のとおりです:

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

微調整段階

BERT の微調整段階は GPT とあまり変わりません。双方向の Transformer を使用するため、微調整段階で GPT によって使用される補助トレーニング ターゲット (言語モデル) は放棄されます。また、分類予測の出力ベクトルは、GPTの最後の単語の出力位置から文頭の<CLS>の位置に変更される。さまざまなタスクの微調整の概略図は次のとおりです。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

GitHub リンク: https://github.com/google -research/bert

ポストスクリプト

個人的には、BERT は単なるトレードオフであると信じています。 GPT モデル両方の段階で、双方向の Transformer モデルを使用して、文のコンテキスト情報を同時に取得できます。ただし、そのためには、従来の言語モデルを失うという代償を支払わなければならず、代わりに事前トレーニングに MLM NSP などのより複雑な方法を使用する必要があります。

マルチタスク モデル - MT-DNN

MT-DNN (マルチタスク ディープ ニューラル ネットワーク) は、引き続き BERT の 2 段階トレーニング方法と双方向トランスフォーマーを使用します。事前トレーニング段階では、MT-DNN は BERT とほぼ同じですが、微調整段階では、MT-DNN はマルチタスク微調整方法を採用します。同時に、Transformer によるコンテキスト埋め込み出力は、単一文の分類、テキスト ペアの類似性、テキスト ペアの分類、質問と回答などのタスクのトレーニングに使用されます。全体の構造を以下に示します。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

GitHub リンク: https://github.com/namisan/mt-dnn

一方向ユニバーサル モデル - GPT-2

GPT-2 は、元々 GPT で使用されていた一方向 Transformer モデルを引き続き使用しており、この記事の目的それは、一方向トランスフォーマーを最大限に活用し、BERT で使用される双方向トランスフォーマーではできないことを行うことです。つまり、上記から次のテキストを生成します。

GPT-2 のアイデアは、微調整プロセスを完全に放棄し、代わりに、より大容量の教師なしトレーニング、より一般的な言語モデルを使用してさまざまなタスクを完了することです。 。多くのタグに含まれる情報がコーパスに存在するため、このモデルがどのようなタスクを実行するかを定義する必要はまったくありません。人がたくさんの本を読むのと同じように、読んだ内容に基づいて簡単に自動的に要約し、質問に答え、記事を書き続けることができます。

厳密に言えば、GPT-2 はマルチタスク モデルではないかもしれませんが、同じモデルと同じパラメータを使用して異なるタスクを完了します。

# 通常、特定のタスク用に専用のモデルをトレーニングします。入力が与えられると、タスクの対応する出力 (

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2#) を返すことができます。

#したがって、特定の入力と特定のタスク タイプを必要とし、特定の入力とタスクに基づいて対応する出力を作成する一般的なモデルを設計したい場合、そのモデルは次のようになります。

トランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2

#文を翻訳する必要がある場合は翻訳モデルを設計する必要があり、質問が必要な場合は、応答システムは、特別に設計する必要があります。質問と応答のモデルです。しかし、モデルが十分に賢く、コンテキストに基づいてコンテキストを生成できる場合は、入力に識別子を追加することでさまざまな問題を区別できます。たとえば、彼に直接尋ねることができます: (「自然言語処理」、中国語訳) 必要な結果を得るには、自然言語処理が必要です。私の理解では、GPT-2 は全知的な質問と回答システムのようなもので、与えられたタスクの識別子を通知することで、さまざまな分野やタスクの質問と回答に対して適切な回答を返すことができます。 GPT-2 はゼロショット設定を満たしているため、トレーニング プロセス中にどのタスクを完了する必要があるかを指示する必要がなく、予測によってより合理的な答えも得られます。

それでは、GPT-2 は上記の要件を満たすために何をしたのでしょうか?

データ セットを拡張して拡大する

最初に行うことは、モデルを読みやすくすることです。トレーニング サンプルが十分ではない場合、多すぎる場合、どのように判断すればよいでしょうか?以前の作業は特定の問題に焦点を当てていたため、データ セットは比較的一方的でした。 GPT-2 は、より大規模かつ広範囲のデータセットを収集します。同時に、このデータセットの品質を確保し、高品質のコンテンツを含む Web ページを保持する必要があります。最終的に、800 万のテキスト、40G のデータ セット WebText が形成されました。

ネットワーク容量の拡大

本が多すぎる場合は、何冊かを持ち歩かなければなりません。本の内容を思い出せないだろう。ネットワークの容量を増やし、より強力な学習能力を持たせるために、GPT-2 では、Transformer スタック層の数が 48 層に増加し、隠れ層の次元は 1600 になり、パラメータの数は 15 億に達します。

ネットワーク構造を調整する

GPT-2 では語彙が最大コンテキスト サイズである 50257 に増加します)。 GPT 512 から 1024 に増加し、バッチ サイズも 512 から 1024 に増加しました。また、Transformer については、各サブブロックの前に正規化レイヤを配置したり、最後の Self-attention の後に正規化レイヤを追加したり、残差レイヤの初期化方法を変更したりするなど、微調整が行われています。

GitHub リンク: https://github.com/openai/gpt-2

Post Scriptum

実際、GPT-2 の最も驚くべき点は、その非常に強力な生成能力です。そのような強力な生成能力は主に、そのデータ品質と驚くべき数のデータによるものです。パラメータとデータサイズ。 GPT-2はパラメータ数が非常に多いため、実験に使用したモデルはまだフィッティングが不十分な状態ですが、さらに学習させればさらに効果を高めることができます。

まとめ

Transformer の仕事に関する上記の展開を要約して、深層学習の開発トレンドについての個人的な考えもまとめました。

1. 教師ありモデルは、半教師あり、さらには教師なしの方向に向かって開発されています

データの規模は、データのアノテーションよりもはるかに速く成長しています。データ速度が低下し、ラベルのない大量のデータが生成されることにもなります。こうしたラベルのないデータには価値がないわけではなく、逆に、適切な「錬金術」を見つければ、膨大なデータから思いがけない価値を得ることができるようになります。これらのラベルなしデータを使用してタスクのパフォーマンスを向上させる方法は、無視できない重要な問題となっています。

#2. 少量のデータを含む複雑なモデルから大量のデータを含む単純なモデルへ

ディープ ニューラル ネットワークの適合能力は非常に強力であるため、単純なニューラル ネットワーク モデルであらゆる関数を適合させるのに十分です。ただし、同じタスクを実行するために、より単純なネットワーク構造を使用することは難しく、データ量の要件も高くなります。データ量が増加し、データ品質が向上するほど、モデルの要件が減少することが多くなります。データの量が多いほど、モデルが現実世界の分布と一致する特徴を捕捉することが容易になります。 Word2Vec はその一例で、使用する目的関数は非常に単純ですが、大量のテキストが使用されるため、学習された単語ベクトルには多くの興味深い特徴が含まれています。

3. 特化モデルから汎用モデルへの開発

GPT、BERT、MT-DNN、GPT-2これらはすべて、事前トレーニングされた一般モデルを使用して下流の機械学習タスクを続行し、モデル自体にあまり多くの変更を加える必要はありません。モデルの表現能力が十分に強く、トレーニング中に使用されるデータの量が十分に大きい場合、モデルはより汎用性が高く、特定のタスクのためにあまり変更する必要はありません。最も極端なケースは GPT-2 のようなもので、トレーニング中に後続の下流タスクが何であるかさえ知らなくても、一般的なマルチタスク モデルをトレーニングできます。

4. データの規模と品質の要件を強化する

GPT、BERT、MT-DNN、GPT-2が相次いで上位に来ていますが、性能向上においては構造調整よりもデータ規模の向上の比重が大きいと思います。モデルの一般化と単純化に伴い、モデルのパフォーマンスを向上させるために、複雑で特殊なモデルを設計する方法から、優れた品質の多数のモデルを取得、クリーンアップ、改良する方法に注目が移ります。データ。モデル構造を調整する効果よりも、データ処理方法を調整する効果の方が大きくなります。

要約すると、DL 競争は、遅かれ早かれ、リソースとコンピューティング能力をめぐる大手メーカー間の競争になるでしょう。数年以内に、グリーン AI、低炭素 AI、持続可能な AI などの新しいトピックが登場する可能性があります。

以上がトランスの構造とそのアプリケーションの詳細な説明 - GPT、BERT、MT-DNN、GPT-2の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。