BERTの予備調査&Pre-train&Selfsupervise

バートの初見

ひょんなことから、Bert について、特に事前トレーニングの概念について、再度深く理解することができました。まず、Li Honyi 氏の解説を読みました。ここでは、簡単に要約して再話してみます。 . 私自身の意見もいくつかあります。

バートは現在の言語モデルがセサミストリートと密接に関連していると言わなければならなかったと述べています:

画像-20211205162408602

プレトレインとは

以前は、自然言語処理では、タスクに使用する対応するモデルがありましたが、現在は別の設計方法である事前トレーニングがあります。

この記事では、事前学習モデルの起源を分析していますが、元の単語の埋め込みでは、異なる意味論の下での異なる単語の違いを解決できないと考えられるため、このような大規模なモデルが存在します。

しかし、個人的には、Bert のような事前トレーニング モデルは文レベルと単語レベルの両方に属する可能性があると考えています。事前トレーニング タスクを考慮すると、BERT は文レベルにあり、出力レベルを見ると、それぞれが単語トークンはさまざまな表現に対応しており、これは別の単語レベルです。

事前トレーニングの設計思想は次のとおりです. まず、多数の記事に対する教師なしトレーニングを通じて、モデルは一定の言語能力を持ち、その後、さまざまなタスクに応じて微調整されます。次の図:

画像-20211205162103690

したがって、事前トレーニング モデルが実際に埋め込みベクトルを生成している、つまり各トークンを埋め込みベクトルに変換していると考えることができます。以前の方法では Word2vector を使用していましたが、現在は事前トレーニング済みモデルを使用して実装されています

異なる事前トレーニング モデルは異なるアーキテクチャを使用できます。たとえば、現在の ELMo は実装されLSTM、Bert は実装されますTransformer

微調整する方法

事前トレーニング モデルが実際に埋め込みベクトルを生成することがわかりましたが、それをさまざまなタスク領域でどのように使用するのでしょうか?

つまり、それを達成するには微調整を使用する必要があります。実際、微調整の本質は、事前トレーニング モデルの後にタスク層を追加することです。

画像-20211205163113042

微調整の方法をわかりやすく説明するために、NLP を入力と出力に基づいた2 種類の入力問題と4 種類の出力問題に簡単にまとめます。

まず入力部分を見てください。

  • 入力は文です。それをモデルに直接投げ込むだけです。
  • 複数の文を入力する場合 (ここでは 2 つの文を使用します): 2 つの文を 1 つの文に結合するのは良いことですが、文中のトークンがどこから来たのかを説明できるように入力文を分割する必要があります。これは説明のための QA 質問です。2 つの文は <Query, Answer> という文のペアですが、2 つの文の間に区切り文字 [SEP] を追加する必要があります。
    • 画像-20211205163747281

入力セクション:

  • 単一分類問題
    • この問題への対処法を BERT を例に挙げると、BERT では特殊な記号 [CLS] が使用されており、この記号が文頭に入っていれば分類問題であることがわかります。次に、最終的な事前トレーニング モデルの出力は、最初の位置にある文全体のテキストを考慮する必要があります (つまり、事前トレーニング プロセス中に、トレーニングはモデルに [CLS] を確認したら、文全体に関連する埋め込み)。
    • 画像-20211205164404994
  • 複数分類の問題の場合は、次のグラフィック手法を使用してそれを行うことができます。
    • 画像-20211205164621211
  • Q&A の質問 (入力からのコピー)
    • 具体的には、入力されたテキストをもとに、記事内の情報をもとに質問に回答するタスクであり、下図より、モデルは本文中の質問の開始位置 s と終了位置 e を予測する必要があります。
    • 画像-20211205164930033
  • 順序の問題
    • この質問では、seq2seq モデルの実装方法について説明します。実際、seq2seq の実装方法は、次の図に示すように、2 つのモデル (エンコードとデコード) の結合を使用することであると考えるのは非常に簡単ですが、そのような問題 - デコーダには事前トレーニングがないため、トレーニングを継続する必要がありますが、これは事前トレーニングという本来の目的に反します。
      • 画像-20211205165346055
    • したがって、この問題に基づいて、事前学習モデルは次のように修正されます。
      • 画像-20211205165608011

ここまで、NLP に存在するタスクの概要を説明しました。このセクションのテーマである微調整の方法に戻ります。

微調整には 2 つの方法があります。

  • 1 つは、独自のタスク層を微調整するだけで済み、事前トレーニングされた部分を変更する必要がないことです。
    • 画像-20211205165954391
  • もう 1 つは、事前トレーニングされた部分とタスク層を全体として微調整のために扱うことです (効果はより良くなります)。
    • 画像-20211205170040743

ここで偶然発見されたself-supervised learning定義は、モデルの入力と出力が手動でマークされるのではなくモデル自体によって検出されるため、この教師なしトレーニング方法を自己教師ありトレーニングとして定義した Yann LeCun によるものです。

画像-20211205210153881

バート

概要

さて、本題に入りますが、BERT の登場は NLP 分野で大きなセンセーションを巻き起こしました BERT の記事の要約部分から、BERT は GPT の 2 つのモデルの特徴を組み合わせたフレームワークであることがわかりますELMo — Transformer をバックボーンとしたディープ双方向アーキテクチャこのような設計方法では、事前トレーニングされた BERT モデルの上に追加の出力層を追加して、さまざまな下流タスクを実行できます (実際、この場所は GPT と同様に微調整されており、上位層の構造を変更するだけで済みます)。

序章

記事で述べたように、NLP のタスクは 2 つの方向に分けることができます。

  • 文レベルのタスク - 文の分類、感情分析、言語推論など。
  • トークンレベルのタスク - NER、質疑応答など。

特徴表現に事前トレーニングされたモデルを使用する場合、通常、次の 2 種類の戦略があります。

  • 特徴ベース — 特徴ベース。ELMo を例に挙げると、ELMo を使用する場合、タスクに応じて特定のフレームワークを構築し、事前トレーニングされたモデルによって取得された特徴表現を追加の入力として入力する必要があります。モデルを構築されたモデルに追加します。

  • 微調整 - GPT を例に取ると (実際、BERT 自体も微調整を使用します)、微調整に基づいて、主なことは、さまざまな下流タスクに従ってモデル内のすべてのパラメーターを単純に微調整することです。

標準言語モデル自体が一方向であるため、このような学習方法では事前学習モデルの表現能力が制限され、一定の制限が存在します。双方向デザイン。

しかし、この BERT フレームワークの詳細は私が思っていたものとは異なります。元のテキストには、Transformer のエンコーダ部分のみを使用するとしか書かれていないため、どのようなものになるかは、他の場所から BERT フレームワークを見つけました。

画像-20211208135108961

モデルは簡単に入力層、中間層、出力層の 3 つの部分に要約できます。これらは、入力レイヤーのわずかな変更を除いて、トランスフォーマーのエンコーダーと同じです。

口実タスク

口実 tasl1

BERT は次のように設計されており (これは BERT モデルでもあります创新点或者贡献之一)、MLM (Masked Language Model) が提案されています。このマスクされた言語モデルは次のように設計されています。

画像-20211215175752742
  • 文内のトークン (単語またはフレーズ) の 15% を次のものにランダムに置き換えます。

    1. これらのトークンは 80% の確率で に置き換えられます[MASK]。たとえば、私の犬は毛深い→私の犬は [MASK]

    2. 10% の確率で他のトークンに置き換えられます。たとえば、私の犬は毛深い→私の犬はリンゴです

    3. 変化しない可能性は 10% あります。たとえば、私の犬は毛深い → 私の犬は毛深い

      1. なぜこの場所がこのように設計されているのか、その理由はまだわかりません。

        MASK の問題については、記事の付録でC.2説明されています。彼は次のように説明しました - 「[MASK] シンボルはトレーニング中に決して表示されないため、マスキング戦略の目的は事前トレーニングと微調整の間の不一致を減らすことであることに注意してください。」微調整段階。」

        つまり、この戦略により BERT は [MASK] だけでなくすべてのトークンに敏感になり、任意のトークンの表現情報を抽出できるようになります。これは、まず第一に、モデルはどの位置を予測する必要があるのか​​を知りませんが、各位置が特別なトークン [MASK] である可能性が 15% ありますが、実際には 15% のうち 80% のみが置き換えられることを意味します。 [マスク]による。

        言語モデルの予測について、記事では「標準 LM と同様に、マスク トークンに対応する fifinal の隠れベクトルが語彙上の出力ソフトマックスに供給される」と述べられているため、モデルは予測するために [MASK] だけを参照するわけではありません。つまり、[MASK] は単なるトークンです。モデルは、最終的にソフトマックス層を通過するため、この位置を予測する必要があることを知りません。したがって、この目的は純粋にモデルに学習させることです。それぞれの位置の可能性、[MASK] 位置はすべてのトークンの可能性がありますが、モデルが正しく行われたかどうかについてはコメントしません。

        「この手順A.1の利点は、Transformer エンコーダがどの単語を予測するよう求められるか、またはどの単語がランダムな単語に置き換えられたかを知らないため、すべての単語の分布的な文脈表現を保持する必要があることです入力トークン。さらに、ランダムな置換は全トークンの 1.5% (つまり 15% のうち 10%) に対してのみ発生するため、これはモデルの言語理解能力に悪影響を与えるものではないようです。

        つまり、MASK メソッドを使用すると、事前トレーニング モデルが分散コンテキストの表現を学習できるようになります。

        この記事C.2では、 でアブレーション実験も行い、なぜこのように定義する必要があるのか​​を説明し、検証セットの効果からそのような定義の効果を説明しました。

        画像-20211208103839836

        表中の MASK は、ターゲット トークンを MLM の [MASK] シンボルに置き換えることを意味します。SAME は、ターゲット トークンをそのまま維持することを意味します。RND は、ターゲット トークンを別のランダムなトークンに置き換えることを意味します。

このような設計方法では、前の言語情報を調べて後続の言語情報を予測できるだけではありません。

口実タスク2

この論文では、言語モデルの提案に加えて、「次の文の予測」と呼ばれるタスクも提案しています ( 贡献二)。このタスクのアイデアは、2 つの文 (本文では文ペアと呼ばれます) を与え、その文を判断させることです。二文 隣接していますか。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-zQ53mzcm-1686469797592)(null)]

BERT が読解などの文関係判断タスクを解決するには、MLM タスクが 1 つだけでは十分ではありません。次シーケンス予測 (NSP) タスクは、文 B が次の文 A であるかどうかを判断し、そうであれば 'IsNext' を出力し、それ以外の場合は ' を出力します。次ではありません」。これにより、モデルは文レベルで情報を学習できるようになります。

結局のところ、この次の文の予測は事前トレーニング モデルに役立ちますか? アブレーション実験も記事で行われており、その効果は次のとおりです。

画像-20211208105711683

補充:

2019 年の記事では、この NSP の効果について説明しましたが、BERT が文レベルで情報を理解する場合、その効果は非常に小さいです。

yinghan Liu、Myle Ott、Naman Goyal、Jingfei Du、Man-dar Joshi、Danqi Chen、Omer Levy、Mike Lewis、Luke Zettlemoyer、Veselin Stoyanov. 2019.Roberta: 堅牢に最適化された Bert 事前トレーニング アプローチ. arXiv プレプリント arXiv: 1907.11692

以下の記事で指摘されているのは、

事前トレーニングされた言語モデルからの文の埋め込みについて

上記の 2 つのイノベーションは、BERT の事前トレーニング用に提案されています。つまり、BERT は、これら 2 つのタスクを通じて、自己教師あり学習の 2 つのタスクを通じて関連する表現を学習し、それらをさまざまな下流タスクに適用できます。

NLP のその他の自己教師付き事前トレーニング タスクもこの記事にまとめられています。

詳細

この記事では、BERT の作業を事前トレーニングと微調整の 2 つの部分に分けています。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-89LlItyC-1686469797772)(null)]

上の図からわかるように、BERT の事前トレーニングは多数のラベルのない文のペアでトレーニングされ、微調整する場合は、さまざまなタスクに従って、事前トレーニングされたモデルの同じ重みを使用してから、微調整します。曲。

記事には、2 つの BERT モデルをトレーニングしたと記載されており、1 つはBERTBASE BERT_{BASE}ですBERT _ベース_ _(L=12,H=768,A=12)、もう 1 つはBERTLARGE BERT_{LARGE}BERT __ _(L=24、H=1024、A=16)、このモデルのバックボーンは Transformer を使用しているため、ここでのパラメーターは Transformer のパラメーターを参照しますが、ここでは説明しません。

入出力

BERT 事前トレーニングの入力は、1 つまたは 2 つの文の集合として記述される「シーケンス」として定義され、シーケンス辞書は WordPiece メソッドによって生成されます。

WordPiece の方式は単語を処理単位とするのですが、単語の複合型(語根や接辞など)や、特定の単語の出現頻度が非常に少ないことを考慮して、非常に長い単語を分割して処理することになります。サイズが 3w のトークン辞書で表されます。

# wordpiece就是一个subword的编码方式,经过WordpieceTokenizer 之后,将词变为了word piece, 例如:
input = "unaffable"
output = ["un", "##aff", "##able"] # 其中##表示紧跟的意思

これの利点は、OOV の問題を効果的に解決できることですが、マスク ワードピースの実践は後に不合理であることが証明され (ERNIE や SpanBERT など)、単語の知識が考慮されていないため、単語数が減少します。バージョンに基づいて、Whole Word Masking (WWM) モデルが実行されます。なお、中国語の各文字は単語のピースであるため、中国語の WWM のメソッドは MASK のフレーズになります。

入力シーケンスの場合、最初のトークンは常に [CLS] の特別なトークンです。この特別なトークンは、文全体の分類タスクを表すために最後の隠れ層で使用されます。

さらに、この 2 つの文を区別するために、記事では次の 2 つの方法について言及しました。

  • 2 つの文の間に特別なトークンを追加します - [SEP];
  • 入力トークンごとに、トークンが文 A に属するか文 B に属するかを示すために、学習された埋め込み層 (Embedding) を追加する必要があります。
    • 下図の赤枠内のベクトルがE埋め込み層です。学習が必要な埋め込みです。
    • [外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-omgD9eRT-1686469797553)(null)]

BERT の入力 (つまり、Transformer へのデータ入力) は、トークン埋め込み層である 3 つの部分 (下図に示すように) で構成されます (取得方法については明確な説明がありません。見たところ、 BERT のこの部分の実装は、nn.Embddding) + 文埋め込み層 + 位置埋め込み層を使用して実現されます (位置埋め込み層は学習され、Transformer のように計算されません)。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-SsBIXKt8-1686469797572)(null)]

BERT では、位置埋め込み (ベクトルの値はモデルのトレーニング プロセス中に自動的に学習され、テキストのグローバルな意味情報を記述するために使用され、単語の意味情報と融合されます) であるか、セグメント 埋め込み (テキスト内に出現するため、異なる位置にある単語によって運ばれる意味情報は異なります (たとえば、「私はあなたを愛しています」と「あなたは私を愛しています」)。そのため、BERT モデルは異なるベクトルを単語に付加します。それらはすべて自動的に学習されます (つまり、最初にランダムに生成され、モデルに自動的に学習させます)。

この記事では、ソース コードの観点からこれら 3 つの追加が使用される理由と、これら 3 つの埋め込み層の情報追加をどのように使用するかを分析します。

BERT モデルの主な入力は、テキスト内の各単語 (またはトークン) の元の単語ベクトルです。これはランダムに初期化することも、初期値として Word2Vector などのアルゴリズムを使用して事前トレーニングすることもできます。

出力は、全文の意味情報を統合した後のテキスト内の各単語のベクトル表現です。

事前トレーニング

事前トレーニング プロセスでは、実際には 2 つのタスクを中心に展開します。1 つはマスクされた LM トレーニング、もう 1 つは NSP (次文予測) です。

実際、私は事前トレーニングの方法も、事前トレーニングにこれら 2 つのタスクを使用する方法もまったく理解していません。この記事では予測を行うことについてのみ説明されているため、予測方法がまだわかりません。まだ続ける必要があります。探索する。

この時点でメモの記録は終了しており、原文の残りは微調整方法を紹介するものなので、ここでは説明しません。

参考

  • https://www.nowcoder.com/discuss/351902

  • コードの一部: https://zhuanlan.zhihu.com/p/103226488

  • [PPTダウンロードリンク](https://pan.baidu.com/s/1LovEFd4Fswwk0jr8wIKkvA?pwd=ajh9 抽出コード: ajh9)

  • BERT の事前トレーニングに関する知識

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-EFKESPnV-1686469794665)(null)]

機械学習の役割に​​関して、LeCun 氏は次の図に示すように、鮮やかな比喩を示しました。強化学習はケーキの上のチェリーのようなもの、教師あり学習はケーキの上のアイシングのようなもの、自己教師あり学習はケーキそのものです。

[外部リンク画像の転送に失敗しました。ソース サイトにはリーチ防止メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-n22C1i9Y-1686469797756)(null)]

この比喩を通して、人工知能における自己教師あり学習の重要な基礎となる役割をよく理解できます。

  • 自己教師あり学習とは: https://amitness.com/2020/02/illustrated-self-supervised-learning/

    中国語: https://zhuanlan.zhihu.com/p/110278826

  • 私のブログのリンク

おすすめ

転載: blog.csdn.net/c___c18/article/details/131154079