少しキツネは、ロックを解除するためにあなたを取るアルケミー&NLP 攻略を
アーニー1.0
ERNIE:知識統合による拡張表現は、2019年4月のBERTモデルに基づくBaiduのさらなる最適化であり、中国のNLPタスクで最先端の結果を得ました。その主な改善点は、マスクメカニズムの改善です。そのマスクは基本的な単語のピースマスクではありませんが、事前トレーニング段階で外部の知識が追加されます。これは、basic-level masking(word piece)
+ phrase level masking(WWM style)
+の3つのレベルのマスクで構成されentity level masking
ます。これに基づいて、中国コミュニティにおけるBaiduの強力な機能の助けを借りて、中国のアーニーは依然としてさまざまな異種(異種)データセットを使用します。さらに、ポストバーデータの複数のラウンドに適応するために、すべてのERNIEはDLM(Dialogue Language Model)タスクを導入しました。Baiduの論文は見た目もシンプルで、改善のアイデアはさまざまな改善されたモデルの基礎となっています。たとえば、マスキング方法の改善により、BERTはWWMバージョン、対応する中国語バージョン(中国語BERTの全単語マスキングを使用した事前トレーニング)、およびFacebookのSpanBERTは主にマスキング方法の改善に基づいています。しかし、欠点は、Baidu ernie1.0が中国語にのみ最適化されているため、外国の学者からの注目が少ないことです。さらに、Baiduは独自のパドルパドル機械学習フレームワークを使用しており、業界の主流のテンソルフローやピトーチとは異なり、ポイントが少ない。
ノーレッジマスキング
「状況」:未知の単語を予測するときに、モデルは外部の知識を考慮しません。しかし、マスキング時に外部知識を追加すると、モデルはより信頼性の高い言語表現を取得できます。
たとえば、ハリー・ポッターはJKローリングが書いた小説です。単独の予測
哈[MASK]波特
やJ.K.[MASK]琳
モデルに非常に単純ですが、モデルを学習することができない哈利波特
とJ.K. 罗琳
の関係。場合は哈利波特
、直接MASKのうち、そのモデルは、著者によれば、この新規エンティティが、知識の勉強を達成することが予測されます。
この知識の学習は、外部の知識の埋め込みをモデル構造に直接追加するのではなく(ERNIE-TsingHuaのアプローチ)、トレーニング中に暗黙的に学習され、モデルはトレーニング中により長いセマンティック接続を学習しました。たとえば、エンティティカテゴリ、エンティティ関係などにより、モデルはより優れた言語表現を学習できます。最初に、モデルのMASK戦略とBERTの違いを見てみましょう。
ERNIEのマスク戦略は3つの段階で学習されます。最初の段階では、BERTモードが使用され、基本レベルのマスキングが使用され、次にフレーズマスク(フレーズレベルのマスキング)が追加され、その後追加されます。エンティティレベルのエンティティレベルマスク。以下に示すように
基本レベルのマスキング
事前トレーニングの最初の段階は、基本レベルのマスキングを使用して中国語の単語をランダムにマスクすることです。フレーズレベルのマスキング
2番目の段階は、フレーズレベルのマスキングを使用することです。センテンス内のフレーズの一部をマスクして、モデルにこれらのフレーズを予測させるこの段階で、フレーズの情報は単語の埋め込みにエンコードされます。エンティティレベルのマスキング
の3番目の段階では、人の名前、機関名、商号などの名前付きエンティティがこの段階でマスクされ、モデルはトレーニングの完了後にこれらのエンティティの情報を学習します。
異なるマスクの効果
異種のコーパスの事前トレーニング
トレーニングセットに含まれるもの
中国のWikepedia
Baidu Baike
Baiduニュース
Baidu Tiebaモデルは、単純化されたモデルから単純化されたケースなしのモデルに変換されています。
DLM(Dialogue Language Model)タスク
対話のデータは、意味の表現にとって非常に重要です。これは、同じ回答の質問は一般に類似した意味を持つためです。ERNIE [CLS]S1[SEP]S2[SEP]S3[SEP]
は、3つの文の組み合わせを使用して、BERTの入力フォームを変更し、複数ラウンドの対話のフォームを使用できるようにしましたフォーマット。この組み合わせは、QRQ、QRR、QQRなどの会話の複数のラウンドを表すことができます。Q:質問します。R:回答します。ダイアログのプロパティを表すために、文の埋め込みの組み合わせが文に追加されます。これは、セグメントの埋め込みと非常によく似ています。
DLMは、このマルチラウンドの会話が正しいかどうかを判断するタスクも追加しました
NSP + MLM
投稿バーでは、一般的なNSP + MLM事前トレーニングタスクがマルチラウンドダイアログデータの外で使用されます。NSPタスクはまだありますが、紙に書かれていませんが、gitリポジトリで使用されています。最終的なモデル効果の比較bert
アーニー2.0
ERNIE 2.0:言語理解のための継続的な事前トレーニングフレームワークBaidu ERNIE2.0の出現は、GLUEベンチマークに直接ブラシをかけました。「状況」:新しい言語を学ぶときと同じように、以前の知識がたくさん必要ですが、この知識に基づいて、他のタスクの転移学習の効果を得ることができます。言語モデルが複数のタスクを追加する場合、より良い結果を得ることができますか?実際、ernie1.0 + DLMタスクと、Albertが追加したセンテンスオーダー予測(SOP)タスクやSpanBERTなどの他のモデル:SBOターゲットを追加した後にスパンを表現および予測することによる事前トレーニングの改善、モデルの効果はさらに最適化されました。同時に、MT-DNNは、事前トレーニング段階で複数のGLUEダウンストリームタスク(監視あり)を直接使用するマルチタスク学習が、最先端の効果を得ることができることも証明しました。それで、科学者は常にタスクを追加する方が良いのではないかと考えていますか?Baiduはスタックタスクに満足していませんが、継続的な学習フレームワークを提案しています。このフレームワークを使用すると、モデルは以前のタスクの精度を低下させることなく継続的にタスクを追加できるため、字句、構文、およびセマンティックをより効果的に取得できます。意味表現。
Baiduのフレームワークは、ERNIE 1.0に基づいて主に多くのデータと事前知識を使用することを提案し、次に事前トレーニングのために複数のタスクを提案し、最後に特定のタスクに従って微調整します。このフレームワークは、生涯学習、つまり生涯学習用に提案されています。これは、私たちのタスクスタッキングがマルチタスク学習ではなく、継続的学習(継続的事前トレーニング)であるため、モデル学習を避ける必要があるためです。新しいタスクの後で、古いタスクを忘れます。つまり、古いタスクの損失が高くなります。逆に、モデルのパフォーマンスは、以前に学習した知識が原因であるはずなので、既存のタスクをよりよくより速く学習できます。この目標を達成するために、Baiduは事前トレーニングと微調整を含む継続的な学習フレームワークを提案しました。
継続的な事前トレーニング
タスクの構築
Baiduは言語モデルのタスクを3つのカテゴリに分類し、モデルは新しいタスクを継続的に学習できます。単語認識の事前トレーニングタスク
構造を意識した事前トレーニングタスク
セマンティック対応の事前トレーニングタスク
継続的なマルチタスク学習
継続的なマルチタスク学習には、克服しなければならない2つの主な困難があります。モデルを効果的にトレーニングするにはどうすればよいですか?
以前の問題を解決するために誰かが新しいソリューションを提案し、新しいタスクが発生するたびに、新しいモデルのトレーニングをゼロから始めます。このソリューションは、前のタスクの忘れられていた問題を解決できますが、効率の問題も引き起こし、毎回新しいモデルをトレーニングする必要があるため、効率が低下します。モデルが前のタスクを忘れないようにする方法は?
従来の継続的学習フレームワークはタスクごとのトレーニングを使用します。その結果、モデルは最新のタスクでは良好な結果を取得しますが、以前のタスクでは非常に貧弱な知識保持を取得します。
Baiduが提案する逐次マルチタスク学習は賢いです。なぜ最初からモデルをトレーニングしなければならないのか、以前に学習したモデルのパラメーターを初期化として再利用するのはなぜかというと、間違いなく考えるでしょう。はい。ただし、各ラウンドで同時に複数のタスクをトレーニングする必要があるため、トレーニングの効率はまだ高くないようです。Baiduのソリューションは、フレームワークがトレーニングプロセス中に各タスクのトレーニングNを自動的に調整することです。ラウンド。
一部のタスクの意味情報モデリングは、プログレッシブに適しています
たとえば、ernie1.0はclozeを突破します
ernie2.0の画期的な複数選択の質問、文の順序の質問など
以前のタスクが基礎を築くことであるかのように、継続的に更新し、少し後押しする意味
逐次学習は忘却モードを引き起こしやすいため(これはLi Hongyiのビデオで確認できます)、今日のJAVAとSpringフレームワークを明日学習したかのように、相互に比較的近いタスクを学習する場合にのみ適していますが、明後日学習する場合に適しています。化学、あなたは前後に接続することはできず、あなたの以前の知識はすぐに忘れられます
プログレッシブスピーチモデリングタスクに適しています
初期化に最適化された初期化
新しいタスクが発生するたびに、継続学習フレームワークは以前に学習したモデルパラメーターを初期化として使用し、新しいタスクを古いタスクと一緒にトレーニングします。トレーニングタスクのスケジューリングタスクの割り当て
複数のタスクの場合、フレームワークは、モデルトレーニングのさまざまな段階で各タスクのN回のトレーニングラウンドを自動的に調整し、複数のタスクの効率的な学習を保証します。効率的なトレーニングのために、各タスクにはN回のトレーニング反復が割り当てられています。残っている問題の1つは、それをより効率的にトレーニングする方法です。この問題を解決するには、各タスクにN回のトレーニング反復を割り当てます。私たちのフレームワークは、各タスクのこれらのN回の反復をトレーニングのさまざまな段階に自動的に割り当てる必要があります。このようにして、以前にトレーニングされた知識を忘れることなく、メソッドの効率を保証できます
継続的な微調整
モデルの事前トレーニングが完了したら、BERTと同じように、特定のタスクに従って微調整を実行できます。
ERNIE2.0モデル
フレームワークの有効性を検証するために、ERNIE2.0はさまざまなタスクを使用し、新しいERNIE2.0モデルをトレーニングし、NLUタスクのベンチマークであるGLUEをランク付けしました(2020.01.04現在)。BaiduはERNIE2.0の英語版をオープンソース化していますが、現時点では、このモデルの中国語版はありません。
モデル構造
モデルの構造はBERTと同じですが、事前トレーニング段階で、通常の位置の埋め込み、セグメントの埋め込み、トークンの埋め込みに加えて、タスクの埋め込みも追加されます。トレーニングタスクを区別するために使用されます。N個のタスクの場合、タスクIDは0〜N-1で、各IDは異なる埋め込みにマップされます。モデルへの入力は次のとおりです。
ただし、微調整フェーズでは、ernieは任意の値を初期化として使用できます。
事前トレーニングタスク
ERNIEモデルは、多数の事前トレーニングターゲットをスタックします。私たちが英語を学ぶときのように、私たちの論文にはさまざまな種類の質問があります。
語彙レベルのタスク(単語を認識する事前トレーニングタスク):語彙の知識を習得します。
知識マスキング(1.0)
ERNIE1.0のタスク大文字化予測タスク
モデルは、単語が大文字と小文字を区別しないかどうかを予測します。これは、NERなどの特定のタスクに役立ちます。(ただし、中国語の場合、このタスクは比較的役に立たない。単語が省略されているかどうかを予測できる可能性がある)トークンとドキュメントの関係予測タスクは
、単語が記事に複数回出現するかどうか、または単語がキーワードかどうかを予測します。文法レベルのタスク(構造を認識する事前トレーニングタスク):構文の知識を習得する
文の並べ替えタスク
ランダムIに分割物品は、ポイントシステムの各々に対するM個のコピーに1が持つ= 合計ので、組み合わせを 、この資料を予測するモデルはいくつかの最初のものである可能、組合せマルチ分類問題です。この問題により、モデルは文間の順序関係を学習できます。これは、アルバートのSOPミッションのアップグレードバージョンに少し似ています。
文距離タスクは
3つのカテゴリーの問題です。0:隣り合う2つの文を表す
1:同じ記事の2つの文を表すが、隣接していない
2:異なる記事の2つの文を表す
セマンティックを意識した事前トレーニングタスク:セマンティック関係の知識の獲得
0:質問がタイトルに強く関連していることを意味します(検索インターフェイスに表示され、ユーザーがクリックします)
1:質問とタイトルの関連性が低いことを意味します(検索インターフェイスに表示されますが、ユーザーはクリックしませんでした)
2:質問がタイトルに関連していないことを意味します(検索インターフェイスには表示されません)
談話関係タスク
論理的な関係(ある、ある、ある、契約など)などの文の意味的関係を決定する
IR関連性タスク
クエリとページタイトルの関係を予測する3つのカテゴリの問題
0:質問がタイトルに強く関連していることを意味します(検索インターフェイスに表示され、ユーザーがクリックします)
1:質問とタイトルの関連性が低いことを意味します(検索インターフェイスに表示されますが、ユーザーはクリックしませんでした)
2:質問がタイトルに関連していないことを意味します(検索インターフェイスには表示されません)
ネットワーク出力
トークンレベルの損失:各トークンにラベルを付けます
文レベルの損失:たとえば、文の再配置タスクでは、[CLS]の出力がどのカテゴリであるかを決定します
アプリケーションシナリオ
シナリオ:パフォーマンスに依存しないシナリオ:直接使用
Du Xiaomanのリスクコントロールリコールランキングが25%増加
Du Xiaomanのリスク管理の識別:トレーニング後、アーニーは直接微調整し、リスクに対応する結果があるかどうかを直接予測します。従来の欠点:大量のデータが必要であり、これらのデータをキャプチャすることも困難です。これらの機能をキャプチャしてくださいその後、複雑なテキストの特徴抽出が必要になります。たとえば、ショートメッセージで銀行の収集情報をマイニングするには大量のデータが必要であり、データの人工的な特徴のマイニングも非常に高くなります。これら2つの項目は多くのコストを引き起こしましたが、今ではアーニーを微調整するだけで済みます。そのとき、リコールの順序は25%直接最適化されました。このシナリオの特徴は何ですか?ユーザーのリアルタイム要件はそれほど強くなく、ユーザーがフィールドに入力しなくても結果が返されます。1日ですべてのデータを取得して実行し、結果を取得する限り、統合分析で十分であり、データが少ない分析シナリオに適しています。
シナリオ:パフォーマンスに敏感なシナリオの最適化:モデルの抽出(検索の質問応答、クエリの認識、QPマッチングなど)
別のシナリオでは、非常に高いパフォーマンス上の利点が必要です。使用されるソリューションは、モデル抽出です。これは、検索と回答のクエリ認識とqpマッチングです。回答を取得するには質問を入力してください。本質はテキストマッチングです。実際、これは入力の問題です。候補の回答が照合されてスコアが計算され、最高のスコアが返されます。しかし、Baiduには毎日多くのユーザーがいます。応答速度が速く、データ量が大きく、応答速度が速いことが要求されます。現時点では、モデルは特に正確であるだけでなく、非常に高速です。
フレーズ1:ほとんどの入力ボックスが必ずしも質問ではないため、フィルタリング後に質問に回答(テキスト分類)があるかどうかを判断し、回答がある場合はそれをデータベースと照合するため、一部を除外した後、フィルターの一部が除外されます。マッチングを大幅に改善できます。改善は十分ではありません。
最初の部分は実際にはテキスト分類です。適切なモデルを取得するために小規模のラベル付きフィーチャデータを微調整します。同時に、ログにラベルなしのデータが多数あります。アーニーを使用してくださいこれらのデータに適切に注釈を付け、より適切なモデルを使用してデータに注釈を付け、これらの注釈付きデータを使用して比較的単純なモデルをトレーニングし、蒸留を実現します。アーニーの処理速度は遅いですが、一連の戦術を使用して簡単にトレーニングできますモデル。具体的な手順:非常に優れた教師は、何かを学ぶことで生徒をとることができますが、生徒のモデルは十分に賢くなく、多数の質問と戦術を上手に学習できます。
微調整:少量の手動でラベル付けされたデータを使用してERNIEでトレーニングする
ラベルの伝播:アーニーを使用して大量のマイニングデータにラベルを付け、ラベル付けされたトレーニングデータを取得します
train:これらのデータを使用して単純なモデルをトレーニングするか、モデル蒸留を使用します。TinyBERTを参照してください。
フレーズ2:回答があり、さまざまなマッチング(テキストマッチング)を実行するための回答ライブラリは同じです。次の質問のマッチングも右側にあり、クエリと回答であり、埋め込み、加重合計、完全な接続、そして最後に予め選択された類似性は、コサイン類似性であり得る。リコールが7%増加
シナリオ:Baiduビデオオフライン推奨
推奨シナリオ:事前に計算し、保存して、変数を少なくすることができます。ビデオ自体は保存され、変更量はそれほど大きくなく、更新はそれほど頻繁ではありません。類似性はオフラインで計算され、保存されます。はい、2つの計算の間の類似度計算の量は非常に多いので、計算量を減らす方法は?オフラインのベクトル化と呼ばれる手法を使用して、ビデオとビデオのオフラインでの類似性を計算し、データベースに保存しました 。
オフラインベクトル化の使用(デュアルタワーモデル)
ユーザーはERNIEを介してビデオを視聴し、ベクトルを取得しました
別のERNIE(共有重み)を介して設定された候補、ベクトルを取得、類似度を計算
O(N)の計算、次にcosの計算
コードの使用
クローンhttps://github.com/PaddlePaddle/ERNIE
pip install -r requirements.txt
CDモデル
wget --no-check-certificate https://baidu-nlp.bj.bcebos.com/ERNIE_stable-1.0.1.tar.gz
CD ..
download traindata
wget --no-check-certificate https://ernie.bj.bcebos.com/task_data_zh.tgz
run.sh
home=YOUR_ERNIE_PATHexport TASK_DATA_PATH=$home/glue_data_processed/export MODEL_PATH=$home/model/export TASK_DATA_PATH=YOUR_TASK_DATA_PATHexport MODEL_PATH=YOUR_MODEL_PATHsh script/zh_task/ernie_base/run_ChnSentiCorp.sh
リフレクション
アブレーションスタディがなければ、スタッキングタスクを促進できるかどうかを判断することは不可能であり、NSPのようなタスクは実際には逆効果になる可能性があります。
そして継続的な学習のためのより良い解決策はありますか?結局のところ、タスクが大量に到達すると、メモリデータが大きくなる必要があります。
できる
できる
ハッピー
フアン
Xi Xiaoyaoのかわいい家
Xiaoxiをフォロー&スターして、AIチートのロックを解除してください
ホーム下のサブスクリプションの数「についていじめる」驚きああ