NLP事前トレーニングモデルの概要:word2vec、ELMoからBERTまで

ディレクトリ

 

序文

word2vec

モデル

負のサンプリング

文字レベルとコンテキスト

ELMo

バート

深い双方向エンコーディング

文と文のペアの関係の表現を学ぶ

シンプルで過剰なダウンストリームタスクインターフェイス


序文

ほんの少し前の機械読解の分野では、MicrosoftとAliはそれぞれR-Net +とSLQAでSQuADの人間を上回り、BaiduはV-Net支配とBLEUでMS MARCOの人間を上回りました。これらのネットワークは1つよりも複雑であると言え、「より具体的なネットワークを設計する方法」は、NLP分野における政治的に正しい研究の方向になっているようです。この種の風では、word2vec、glove、fasttextに関係なく、ケーキのアイシングとしてのみ機能します。転移学習と事前訓練についてはどうですか?NLPは主人公ではなかったようです。
Xiao Xiはこの記事を書いたとき少し恥ずかしかったです。長いプレゼンテーションと移行の後、彼はこれがNLPの中心的な問題であるはずだと直感的に感じましたが、満足できる実験結果は出ませんでした。 BERTが出る前日、貧困のせいで想像力が制限されているように感じました╮( ̄▽”””)╭(取り消し線)、自分の視点がまだ狭すぎると感じました。BERTについての理解は人によって異なりますが、この記事では、word2vecとELMoの観点からBERTについて説明します。以下は、word2vecとELMoの本質を簡単にまとめたもので、よく理解していれば、BERTの章にすぐに移動できます。

word2vec

そういえば、何度も何度も書きたい決まり文句です。2013年にGoogleのword2vecが発表されるとすぐに、NLPのすべての分野が開花しました。事前トレーニングされた単語ベクトルを使用せずに論文を書くのは恥ずかしかったようです。word2vecとは何ですか?

モデル

明らかに、これは「線形」言語モデルです。私たちの目標は単語ベクトルを学習することであり、単語ベクトルは「皇帝=女王=男性-女性」(ウーゼティアンを無視)などの「線形セマンティック操作」を意味的にサポートする必要があるため、線形モデルで自然に十分であり、実行中それは非常に高速で、タスクを完了することができ、非常にエレガントです。

さらに、word2vecの本質の1つは、言語モデルのソフトマックスアクセラレーションメソッドのセットを最適化し、従来の階層ソフトマックスおよびNCEメソッドを一見開いているように見える「ネガティブサンプリング」メソッドに置き換えることです。そして、この名前の「負のサンプリング」とは正確には何ですか?

負のサンプリング

言語モデルのトレーニングでは、softmaxレイヤーの計算が非常に難しいことがわかっています。結局のところ、予測したいのは現在の位置の単語であり、カテゴリーの数は辞書のサイズと同じであるため、カテゴリーの数は通常数万から数万です。もちろん、その機能は非常に面倒です。ただし、目的が正確な言語モデルをトレーニングすることではなく、言語モデルと単語のベクトルの副産物を取得することだけである場合は、計算にコストがかからない非表示のサブタスクを使用するだけで済みます。ラ。考えてみてください。10,000枚のカードに番号を付けて、その最大枚数を調べるのは特に面倒ですか。しかし、事前に最大値を抽出し、ランダムに引かれた5枚のカードと混ぜて最大値を選択できるようにすると、簡単になりますか?ネガティブサンプリングはこのアイデアです。つまり、モデルに語彙全体から最も可能性の高い単語を直接見つけさせる代わりに、単語(つまり、正の例)とランダムにサンプリングされたいくつかのノイズワード(つまり、負のサンプル)を直接与えます。モデルがこれから正しい単語を見つけることができる限り、目標は完了したと見なされます。したがって、この考えに対応する目的関数は、次のとおりです。ランダムなサンプル(kサンプル)、およびシグモイド関数の正の例、負の例を次に示します。次に、正の例の可能性を最大化し、負の例の可能性を最小化します。この否定的なサンプリングのアイデアはBERTモデルにうまく適用されましたが、細分性は単語から文に変わりました。心配しないで、ゆっくり振り返ってください。

文字レベルとコンテキスト

2015年から2017年までの多くの作業もchar-levelから始めようとしましたが、事前トレーニングされた単語ベクトルゲームのルールを取り除く別の方法を見つけることを試みましたが、実際の測定はただのひらめきであり、すぐに打ち負かされました[8] [9]。しかし、文字レベルのテキストには単語レベルのテキストでは表現が難しいパターンが含まれていることにも気づき、一方で文字レベルの特徴を学習できる単語ベクトルFastText [5]が登場しました。教師付きタスクでは、浅いCNN、HIghwayNet、RNNおよびその他のネットワークを介して文字レベルのテキスト表現を導入し始めました。ただし、これまでのところ、単語ベクトルはすべてコンテキストフリーです。言い換えれば、同じ単語は異なるコンテキストでは常に同じ単語ベクトルですが、これは明らかに、単語ベクトルモデルに単語の意味の曖昧性解消(WSD)の欠如につながります。したがって、単語ベクトルを状況依存にするために、人々は特定の下流のタスクで単語ベクトルシーケンスに基づいてエンコードを開始しました。**もちろん、最も一般的なエンコーディング方法は、RNCネットワークを使用することです。ディープCNNをうまく使用してエンコードすることに加えて(テキスト分類[6]、機械翻訳[7]、機械読解[4]など) )もちろん!そして!グーグルは言った、CNNはあまりにも下品なので、完全に接続されたネットワークを使用する必要があります!(クロスアウト)自己注意!そのため、NLP用に高度にカスタマイズされたTransformerモデル[11]があります。Transformerの提案は機械翻訳のタスクですが、検索ダイアログ[3]などの他の分野でも大きな力を発揮します。ただし、基本的に各NLPタスクでエンコードする必要があることがわかっているので、単語ベクトルに最初から状況依存機能を持たせてみませんか?したがって、ELMoがあります[2]。

ELMo

もちろん、ELMoは実際には状況依存の単語ベクトルを生成しようとする最初のモデルではありませんが、実際にword2vec(手動の笑顔)をあきらめる正当な理由を与えるモデルです。結局のところ、推論速度を犠牲にするパフォーマンスははるかに優れています。ほとんどの場合、値は〜ELMOはモデルレイヤーの積み重ねられたbi-lstmです(厳密に言えば、2つの単方向の積み重ねられたlstmがトレーニングされます)。したがって、当然、優れたエンコード機能があります。同時に、そのソースコード実装は、Highway NetまたはCNNの使用をサポートし、さらに文字レベルのエンコーディングを導入します。トレーニングは当然言語モデル標準の最尤関数でもありますが、このELMoのハイライトはもちろんモデルレイヤーではありませんが、マルチレイヤーRNNでは、さまざまなレイヤーによって学習された機能が実際には実際にあることを間接的に示しています違いがあるため、ELMoは、事前トレーニングが完了して下流のNLPタスクに移行されるときに、各RNNの元のワードベクトルレイヤーと非表示レイヤーにトレーニング可能なパラメーターを設定することを提案します。これらのパラメーターは、softmaxレイヤーによって正規化されます。対応するレイヤーへの乗算と合計は重み付けの役割を果たし、「重み付けされた合計」によって取得された単語ベクトルは、下流のタスクにより適切に適応するようにパラメーターによってスケーリングされます。

ps:実際、この最後のパラメーターは依然として非常に重要です。たとえば、word2vecでは、一般に、cbowとsgによって学習された単語ベクトルの分散は比較的大きくなります。このとき、分散は、下流のタスクの後続のレイヤー分散に適した単語ベクトルと一致します。 、パフォーマンスが向上しやすい

数式は次のとおりです。

ここで、L = 2はELMoペーパーの設定、j = 0は元の単語ベクトルレイヤー、j = 1はlstmの最初の非表示レイヤー、j = 2は2番目の非表示レイヤーを表します。これは、softmaxによって正規化されたパラメーターの結果です(つまり)。このような移行戦略により、単語の意味の明確化を必要とするタスクは、トレーニングを通じて2番目の隠しレイヤーに大きな重みが与えられる可能性が高くなります。一方、品詞と構文に明らかな要件があるタスクには、最初の隠しレイヤーのパラメーターがある場合があります。比較的大きな値を学習しました(実験的結論)。要するに、これは下流のタスクによってカスタマイズでき、より多くの機能を備えた単語ベクトルを提供します。効果がword2vecよりはるかに優れていることは驚くに値しません。しかし、そうは言っても、ELMoの目標は状況依存のより強力な単語ベクトルを学ぶことだけであり、その目的は下流のタスクに強固な基盤を提供することであり、王を殺すことを意味するものではありません。また、テキストに対して十分で強力なエンコーディングを実行するだけで(つまり、各語彙素の非常に正確で豊富な機能を取得する)だけでは、すべてのNLPタスクをカバーするのに十分ではないことがわかります。QA、機械読解(MRC)、自然言語推論(NLI)、および対話などのタスクでは、文章間の関係など、キャプチャする必要のある多くのより複雑なパターンがあります。このため、ダウンストリームタスクでは、さまざまな凝った注意がネットワークに追加されます(NLI、MRC、チャットボットのSOTAを参照)。より不思議なパターンをキャプチャする必要があるため、研究者はダウンストリームタスクごとにさまざまなネットワーク構造をカスタマイズし、同じモデルの場合でも、同じタスクの場合でも、タスクがわずかに変更されるとハングアップします。別の分散データセットに対するその後の変更により、パフォーマンスが大幅に低下しますが、これは明らかに人間の言語行動と一致していません。人間の汎化能力が非常に強いことを知ることは、おそらくNLP全体の開発軌道が間違っていることを示していますはい、特にSQuADのリーダーシップの下で、リストをブラッシュするためのさまざまなトリックや派手な構造を使い果たした場合、NLPの重要性は何ですか?それは遠くにあるようですが、幸いにも、この偏差はますますモデル、つまり、数日前にGoogleによってリリースされたトランスフォーマーからの双方向エンコーダー表現(BERT)[1]によって最終的にシャットダウンされます

バート

このペーパーの最も重要な重要性は、どのモデルを使用するか、どのようにトレーニングするかではなく、まったく新しいゲームルールを提案することです。ゲームを開始する前に、Xiao Xiが小さな広告を注文するのを手伝ってあげませんか?\(//∇//)\

前述のとおり、複雑なモデル構造を深くカスタマイズして各NLPタスクの一般化能力を極端に低下させることは実際には非常に賢明ではなく、間違った方向に進んでいます。ELMoはword2vecに比べて大幅に改善されるため、事前トレーニングモデルの可能性は、下流のタスクに正確な単語ベクトルを提供するよりもはるかに大きいことを示してます。キールレベルモデルを直接事前トレーニングできますか?文字レベル、単語レベル、文レベル、さらには文間の関係さえも完全に記述している場合、さまざまなNLPタスクでは、タスクの非常に軽量な出力レイヤー(単一レイヤーなど)をカスタマイズするだけで済みます。 MLP)それは結構です、結局のところ、モデルのスケルトンはすでに行われています。BERTはまさにこのことを行い、実際にはそれを実現しました一般的なキールレベルのモデルとして、11のタスクの詳細なカスタマイズに簡単に挑戦しました。それで、どうやってそれが行われたのですか?

深い双方向エンコーディング

最初に、前の事前トレーニング済みモデルでは状況依存の単語ベクトルを学習するには不十分であることが指摘されています。ダウンストリームの監視対象タスクでは、エンコード方式はすでに非常に魅力的ですが、深い双方向エンコードは基本的に多くの複雑なダウンストリームタスク(MRC、ダイアログなど)の標準になっています。ただし、事前トレーニング済みのモデルでは、以前の最先端のモデルは従来の言語モデルのみに基づいており、従来の言語モデルは単方向(数学的に定義)です。つまり、非常に浅いことがよくあります(LSTMヒープを想像してください)。 3階は電車が動かないので、ELMoなど色々なトリックに行かなければなりません。さらに、ELMoはエンコードに双方向RNNを使用しますが、これらの2方向のRNNは実際には個別にトレーニングされますが、損失層の最後に単純な追加が行われます。このようにして、各方向の単語については、符号化されたときに反対側の単語を見ることができません。明らかに、文中のいくつかの単語のセマンティクスは、その左側と右側の特定の単語に依存し、一方向からエンコードして明確に説明することは不可能です。**では、ダウンストリームの監視タスクのように、真の双方向エンコーディングを実行してみませんか?**考えてみるとその理由は明らかです。結局のところ、従来の言語モデルは次の単語をトレーニングの目標として予測することです。しかし、双方向エンコードが行われていても、予測される単語が見られたとは限りません。╮( ̄▽  ̄””)╭もちろん、そのような予測は無意味です。したがって、BERTでは、監督タスクで実際に両方向にエンコードできるモデルをトレーニングする新しいタスクを使用することが提案されています。このタスクは、マスク言語モデル(Masked LM)と呼ばれます。

マスクされたLM

名前が示すように、マスクLMは、すでに出現している単語を与えて、従来のLMのように次の単語を予測するのではなく、文全体の一部(ランダムに選択)を直接カバーする(マスクする)ことを意味します。安全に双方向エンコードを実行してから、モデルにこれらのカバーされた単語が何であるかを安全に予測させることができます。このタスクは実際にはcloze test(おそらく "Gestalt Test"と訳されています)と呼ばれていました。これは明らかにいくつかの小さな問題を引き起こします。この方法で双方向エンコードを保証できますが、カバーされたタグもエンコード中にエンコードされます╮( ̄▽ "" ")╭これらのマスクタグはダウンストリームタスクには存在しません。どうすればいいですか?この点で、これらのマークの影響をできるだけ無視するようにモデルを調整するために、著者はモデルに「これらはノイズとノイズです!信頼できない!無視してください!」と伝えます。

  • 「[マスク]」タグに置き換える確率は80%です。

  • ランダムに抽出された単語に置き換える確率は10%です。

  • 代替が行われない確率は10%です(代替は行われませんが、予測する必要があります)。

エンコーダー

エンコーダーの選択では、作者は悪い通りのbi-lstmを使用しませんでしたが、より深くすることができ、より優れた並列性を持つTransformerエンコーダーを使用しました。このようにして、各字句位置の単語は、方向や距離に関係なく、文の各単語を直接エンコードできます。一方、トランスフォーマーはlstmよりもマスクマークから保護する方が簡単だと主観的に感じています。結局のところ、自己注目プロセスはマスクマークの一致する重みを完全に弱めることができますが、lstmの入力ゲートはマスクマークをどのように処理しますか?その後、それは不明です。ちょっと待って、Xiao Xiも前の記事で言った、明らかにトランスフォーマーエンコーダーを使用しても、位置情報は失われませんか?ここの作者は、元のトランスフォーマーの論文のような恐ろしい罪とcos関数のコーディング位置を持っていますか?そして、そのようなことはありません、ここでの作者は非常に単純で、埋め込み位置を直接訓練するのは失礼です╮( ̄▽ ̄””)╭これは、たとえば、長さを50に切り詰めると、50の位置になるため、位置0から位置49まで、位置を表す50の単語があります。次に、各位置の単語にランダムに初期化された単語ベクトルを指定し、それらを使用してトレーニングします(この特別なニャーも機能することを伝えたいですか?単純すぎて失礼です...)。また、位置埋め込みと単語埋め込みの組み合わせでは、BERTで直接加算を選択します。最後に、深度に関しては、BERTフルバージョンの最終エンコーダーは、24層のマルチヘッドアテンションブロックと重ね合わされます(ダイアログのSOTAモデルDAMは5層しか使用しないことを知っておく必要があります...)そして、各ブロックには16タップ、1024の隠しユニットが含まれています╮( ̄▽ ̄””)hereここにスローガン:お金はあなたが必要とするすべてです(取り消し線)

文と文のペアの関係の表現を学ぶ

前述のように、多くのタスクでは、エンコードだけではタスクを完了するのに十分ではなく(これは、一連のトークンレベルの機能を学習するだけです)、SLI、QA、ダイアログなどを完了するには、いくつかの文レベルのパターンをキャプチャする必要があります。文の表現、文間の相互作用、マッチングタスク。この点で、BERTはこのモデルを学習するために、非常に重要で非常に軽量な別のタスクを導入しました。

文レベルのネガティブサンプリング

Xiao Xiが前のword2vecの章で述べたように、word2vecの本質の1つは、単語レベルの表現を学習するためのエレガントなネガティブサンプリングタスクの導入です。では、この否定的なサンプリングプロセスを文レベルに一般化するとどうなるでしょうか。これは、BERTが文レベルの表現を学習するための鍵です。BERTはword2vecに似ていますが、文レベルの分類タスクを構築します。つまり、最初に指定された文(word2vecで指定されたコンテキストに相当)、その次の文は正の例(word2vecの正しい単語に相当)で文は負の例としてランダムにサンプリングされます(word2vecのランダムサンプリングに相当) Word)、次に文レベルで2つの分類を行います(つまり、文が現在の文またはノイズの次の文であるかどうかを判断します)。この単純なセンテンスレベルのネガティブサンプリングタスクにより、BERTはword2vecがワード表現を学習するのと同じくらい簡単にセンテンス表現を学習できます。

文レベルの表現

待って、私は長い間そのように言いましたが、私はその文章をどのように表現するかについては言いませんでした。ここでのBERTは、下流の監督タスクにおける一般的な慣行とは異なります。エンコードに基づいて、グローバルプーリングなどが最初に実行されます。これは、各シーケンスの最初にあります(タスクへの文の場合、2つのスペルの文、他のタスクの場合は文です)図に示すように、特別なトークンがその前に追加され、[CLS]としてマークされます

ps:[sep]ここは文の区切りですBERTは学習文のペアの表現もサポートしていますここで[SEP]は文のペアのカットポイントを区別するためのものです

次に、エンコーダに[CLS]のディープエンコーディングを実行させます。ディープエンコーディングの最も高い隠れ層は、文/文のペア全体の表現です。このアプローチは一見不可解ですが、Transformerがスペースや距離に関係なくグローバル情報を各位置にエンコードできることを忘れないでください。[CLS]は文/文のペアの表現が分類子の出力層に直接従うため、接続されているので、もちろん、グラディエントバックプロパゲーションパスの「レベル」として、分類に関連する上位レベルの機能を学習する方法が見つかります。さらに、モデル内の各単語が「左の文」または「右の文」に属しているかどうかをモデルで区別できるようにするために、著者は文を区別する「セグメント埋め込み」の概念を導入します。センテンスペアの場合、埋め込みAと埋め込みBは、それぞれ左と右のセンテンスを表すために使用されます。文章の場合、埋め込みAのみがあります。埋め込みAとBもモデルでトレーニングされます。

ps:この方法は位置埋め込みのように単純で大まかな感じがします。理論上、対称性を維持するためにネットワークを必要とする「quora質問ペア」のタスクでBERTが使用される理由を理解することは本当に困難です。それでも機能し、気分は複雑です。

したがって、最終的には、BERTの各トークンの表現は、図に示すように、トークンの元のワードベクトルトークンの埋め込み、前述の位置の埋め込み、およびここに埋め込まれたセグメントを追加することによって形成されます。

シンプルで過剰なダウンストリームタスクインターフェイス

これは、BERTモデルがキールレベルのモデルであり、もはや単語ベクトルではないことを示しています。これは、さまざまなダウンストリームタスクへのインターフェイス設計であるか、より外来語が移行戦略と呼ばれています。まず第一に、文と文のペアの上位レベルの表現が取得されるため、もちろん、テキスト分類タスクとテキストマッチングタスク(テキストマッチングは実際にはテキスト分類タスクでもありますが、入力はテキストペアです)を使用するだけです表現(つまり、エンコーダーは[CLS]語彙素の最上部に出力されます)とMLPのレイヤー〜テキストは双方向に深くエンコードされているため、シーケンスのラベル付けタスクに追加する必要があるのはsoftmax出力レイヤーのみです。 CRFも役に立たない〜Xi Xiをさらに考えさせたのは、SQuADなどのスパン抽出タスクでは、ディープエンコーディングと細心の注意の2つのエンコーディングパッケージを保存するだけで十分であり、出力レイヤーのポインターを直接使用することさえあえてです。ネット負け?DrQAのように、2つの線形分類子を使用して、それぞれスパンの開始と終了を出力しますか?言うまでもありませんが、すでにひざまずいていますm(_ _)m 最後に、実験的な効果を見てみましょう

以前のアイデアの多くはBERT(。 ́︿ ̀。)分類、注釈、および移行タスクを最初から開始できるため、実験で検証する必要がなかったため、このペーパーが発表されるとすぐに、Xiao Xiは非常に満足しました。SQuAD建物の建築計画を中止することもできますBERTが生成タスクを実行しなかったことに感謝し、人々に小さな想像力を与えます。まあ、手動で笑顔で泣いてください。

参考文献

[1] 2018年| BERT-言語理解のためのディープ双方向トランスフォーマーの事前トレーニング
[2] 2018NAACL | 深い文脈化された単語表現
[3] 2018 ACL | ディープアテンションマッチングネットワークを備えたチャットボットのマルチターン応答選択
[4] 2018ICLR | 自己注意と畳み込みを組み合わせることによる、迅速で正確な読解
[5] 2017TACL | サブワード情報によるワードベクトルの強化
[6] 2017ACL | テキスト分類のための深いピラミッド畳み込みニューラルネットワーク
[7] 2017 | たたみ込みシーケンスからシーケンス学習
[8] 2017 | 畳み込みネットワークは、テキスト分類のために深くする必要がありますか?
[9] 2016年| テキスト分類のための畳み込みニューラルネットワーク/浅い単語レベルと深い文字レベル
[10] 2013NIPS | 単語とフレーズの分散表現とその構成

公開された45元の記事 ウォンの賞賛2 ビュー5228

おすすめ

転載: blog.csdn.net/xixiaoyaoww/article/details/105460274