https://github.com/google-research/bert
論文アドレス: BERT: 言語理解のためのディープ双方向トランスフォーマーの事前トレーニング
公式コードアドレス: https://github.com/google-research/bert
推奨コース: Li Honyi Machine Learning -- 自己監修: BERT
参考:BERT論文を段落ごとに精読する [論文の精読] - プログラマーが求めた
目次
6.1BERT フレームワークの 2 つのステップ: 事前トレーニングと微調整
1 はじめに
コンピューター ビジョンでは、CNN モデルを大規模なデータ セット (ImageNet など) で非常に早い段階でトレーニングすることができ、このモデルを使用して多数のマシン ビジョン タスクを処理してパフォーマンスを向上させることができますが、自然言語処理では、 BERT が登場する前、NLP 分野にはこのようなディープ ニューラル ネットワーク モデルは存在せず、依然としてタスクごとに独自のニューラル ネットワークを構築し、それを独自にトレーニングする必要がありました。BERTの出現により、大規模なデータセットで比較的深いニューラル ネットワークをトレーニングし、それを多くのNLPタスクに適用できるようになります。これにより、 NLPタスクのトレーニングが簡素化されるだけでなく、パフォーマンスも向上します。そのため、BERTと一連の過去 3 年間で自然言語処理の質的飛躍を遂げた後の取り組みです。
BERT の主な貢献は、事前トレーニング モデルを深い双方向アーキテクチャに拡張することであり、具体的な実装は MLM タスクを通じて行われます。Cloze の自己教師あり学習メカニズムを使用すると、教師ありコーパスを使用する必要がなく、文章内のマスクされた単語が何であるかを予測してテキストの特徴を抽出できます。
その結果、BERT は Transformers のアプリケーションを大幅に拡張し、ラベルのない大規模なデータセットでトレーニングできるようになり、その効果はラベル付きの小さなデータセットでトレーニングされたモデルよりも優れています。
2. まとめ
BERT と呼ばれる新しい言語表現モデルを導入します。これは、Bidirectional Encoder Representations from Transformers (双方向トランスフォーマー エンコーダー) の略称です。
BERT と ELMo、GPT の違い:
- GPT は新しい Transformers 構造を使用し、左側の情報を使用して将来の情報を予測します。一方向モデルの主な欠点は、十分な単語表現を取得できないことです。
- ELMo は、2 つのモデルの出力を左から右 (LTR) と右から左 (RTL) に連結することによって単語の表現を取得します。双方向の情報融合は非常に浅く、RNN ベースのアーキテクチャのため、構造にいくつかの調整を加えます。
- BERT は、左側と右側の情報とラベルのないデータを使用する Transformer に基づいており、一部のダウンストリーム タスクを使用する場合、GPT などの出力層を微調整するだけで済みます。
イノベーションの観点から見ると、バートには実際にはそれほど多くの構造的イノベーションはありません。この記事では、ELMo の双方向のアイデアと GPT のトランスフォーマー アーキテクチャを組み合わせて BERT を実現します。BERT の主な特徴は、さまざまなタスクに対して統一されたモデル構造を持ち、強力な汎化能力を備えた事前学習済みモデルであることです。
3 はじめに
言語モデルの事前トレーニングにより、次のような多くの NLP タスクを改善できます。
- 文レベルのタスクは主に、文の感情認識や 2 つの文間の関係など、文間の関係をモデル化するために使用されます。
- トークンレベルのタスク: エンティティの命名認識 (各単語が人の名前、通りの名前などのエンティティ名であるかどうかの認識) を含む、これらのタスクはトークン レベルで詳細な出力を出力する必要があります。
特徴表現に事前トレーニングされたモデルを使用する場合、一般に 2 種類の戦略があります。
- 戦略は特徴ベースに基づいており、代表的な作品は ELMo であり、下流のタスクごとに、そのタスクに関連するニューラル ネットワークが構築され、これらの事前学習された表現 (単語の埋め込みなど) が追加の特徴として使用されます。これらの特徴はすでに比較的適切に表現されているので、元の入力と一緒にモデルに組み込んでください。追加の特徴はすでに適切に表現されているため、モデルのトレーニングは比較的簡単です。これは、NLP で事前トレーニングされたモデルを使用する最も一般的な方法です。
- もう 1 つの戦略は微調整に基づいています。これは GPT の例です。事前トレーニングされたモデルがダウンストリーム タスクに配置されるときに、あまり変更する必要はありません。いくつかの出力レイヤーを単純に変更するだけで済み、その後、独自のデータで増分トレーニングを実行し、ダウンストリーム データで事前トレーニングされたパラメーターを微調整します
これら 2 つの方法は、事前トレーニング プロセスで同じ目的関数、つまり一方向言語モデルを使用します (いくつかの単語が与えられて、次の単語が何であるかを予測し、文を言ってから、この文の下にある単語が何かであると予測します)。 、これにより、事前トレーニングされた表現の機能が制限されます。たとえば、GPT では左から右のアーキテクチャが使用されます (文を見ると左から右しか見えません)。この欠点は、文レベルを分析したい場合などに、文レベルで判断する 気分が良い場合は、左から右を見ることも、右から左を見ることも合法です。さらに、QA などの語彙レベルの一部のタスクでも、回答を選択する前に文全体を読んでください。一つずつ下がっていきます。両方向からの情報が入力されれば、これらのタスクのパフォーマンスを向上できるはずです。
上記の問題に応えて、著者は、マスクされた言語モデル (MLM、マスクされた言語モデル) の事前トレーニング ターゲットを使用する BERT を提案しました。これにより、前述の一方向言語モデルの制限が緩和されます。
- マスクされた言語モデルは、入力内のいくつかのトークンを毎回ランダムにスクリーニングします。その目的は、コンテキストに従ってマスクされた単語 (元の語彙に対応する ID) を予測することです。これは、いくつかの穴を掘った後に空白を埋めることと同等です。一文。
- 左から右への標準言語モデルとの違いは、マスクされた言語モデルでは左右の情報を確認できるため、深い双方向トランスフォーマー モデルのトレーニングが可能になることです。
- さらに、モデルが文レベルで情報を学習できるように、2 つの文が与えられ、その 2 つの文が元のテキスト内で隣接しているか、ランダムにサンプリングされているかを判断するタスクもトレーニングされます。
この論文の貢献は次のとおりです。
- 言語表現に対する双方向の事前トレーニングの重要性を示します。
- GPT は事前トレーニングに単方向言語モデルを使用し、BERT はマスクされた言語モデルを使用して事前トレーニングされた深い双方向表現を実現します。
- ELMo は、双方向 RNN モデルと同様に、左から右への言語モデルと右から左への言語モデルを単純にマージします。BERT は双方向情報の適用に優れています
- より適切な事前トレーニング済みモデルがあると仮定すると、特定のタスクに合わせてモデル構造を慎重に設計する必要はありません。BERT は、さまざまな文レベルおよびトークン レベルのタスクで最先端のパフォーマンスを実現し、多くのタスク固有のアーキテクチャを上回る、初の微調整ベースの表現モデルです。
- BERT は 11 の NLP タスクの開発を推進します。コードと事前トレーニングされたモデルは BERT にあります。コードとモデルはすべて https://github.com/google-research/bert にあります。
4 結論
最近の実験では、豊富な教師なし事前トレーニングにより、ディープ ニューラル ネットワークがリソースの少ない (サンプルが少ない) タスクにもアクセスできることが示されています。私たちの主な貢献は、以前の作業を深い双方向アーキテクチャに拡張し、同じ事前トレーニング済みモデルでさまざまな NLP タスクを正常に解決できるようにすることです。
5 関連作品
5.1 機能ベースの教師なしアプローチ
主に単語の埋め込み、ELMo、およびその後の作業について説明します。スキップしてください。
5.2 教師なし微調整方法
代表作はGPT
5.3 教師ありデータからの転移学習
コンピューター ビジョンの研究では、ImageNet で事前トレーニングされたモデルを微調整することにより、大規模な事前トレーニングされたモデルからの転移学習の重要性が実証されました。NLP では、すでにラベル付けされた比較的大きなデータ (自然言語推論と機械翻訳の両方で比較的大きなデータセットを含む) があり、モデルはこれらのラベル付けされたデータセットでトレーニングされ、他のタスクで使用すると非常にうまく機能します。しかし、NLP の分野では、この 2 つのタスクが他のタスクと大きく異なるため、また一方では、転移学習の適用があまり理想的とは言えません。データはまだ十分ではありません。BERT とその後の一連の研究により、多数のラベルなしデータセットを使用して NLP でトレーニングされたモデルの方が、ラベル付きの比較的小規模なデータセットでトレーニングされたモデルよりも優れていることが証明されました。同じアイデアが現在、コンピューターにも徐々に採用されています。視覚、つまり、ラベルのない多数の画像でトレーニングされたモデルは、ImageNet でトレーニングされたモデルよりも優れたパフォーマンスを発揮する可能性があります。
6 BERT モデルの構造と入出力
6.1BERT フレームワークの 2 つのステップ: 事前トレーニングと微調整
- 事前トレーニングはラベルのないデータセットでトレーニングされます
- 微調整には BERT モデルも使用され、その重みは事前にトレーニングされた重みに初期化されます。ラベル付きデータを使用して、微調整するときにすべての重みがトレーニングに参加します。
- 各ダウンストリーム タスクは、新しい BERT モデルを作成し、独自のラベル付きデータに基づいて独自のタスクをトレーニングします。
6.2 モデル構造
BERT のモデル アーキテクチャは、多層TransformerのEncoderです。Transformer の EncoderLayer のみを使用し、複数のレイヤーを積み重ねる (BERT)。Transformer は、元の論文と元のコードに何も変更せずに基づいています。The Annotated Transformer などの優れたガイドを参照できます。
3 つのパラメータ
- L: トランスブロックの数
- H: 隠れ層のサイズ
- A:多頭セルフアテンション機構の頭数
2つのモデル
- BERT ベース: GPT モデルのパラメーターに似ており、公平な比較を行います。BERTBASE (L=12、H=768、A=12、合計パラメータ=110M)
- BERT 大: リストをブラッシングするために使用されます。ERTLARGE (L=24、H=1024、A=16、合計パラメータ=340M)
BERT のモデルの複雑さと層の数は線形関係であり、幅は二乗関係です。
6.3 学習可能なパラメータのサイズ
BERT モデルは単語埋め込み層と Transformer ブロックからパラメーターを学習できます
- 埋め込み層: 行列であり、入力は辞書のサイズ (30k と仮定)、出力は隠れ単位の数 (H と仮定) に等しい
- 変圧器ブロックには 2 つの部分があります。
- 自己注意のメカニズム。それ自体には学習可能なパラメータはありませんが、マルチヘッド アテンションはすべての入力 K、V、Q をそれぞれ投影し、各投影の次元は 64 に等しくなります。ヘッドが複数あるため投影前後で寸法は変わりませんので、ヘッド数A×64でHとなります。パラメータ行列 (WQ、WK、WV) は、各ヘッド間で結合されると、実際には H*H 行列になります。出力マルチヘッド アテンションは、行列 WO (これも H*H 行列) を通じて H 次元にもマッピングされます。そのため、トランス ブロックの場合、セルフ アテンションはパラメータが 4H2 であることを学習できます。
- MLP。MLP では 2 つの全結合層が必要です。最初の層の入力は H ですが、その出力は 4*H であり、もう 1 つの全結合層の入力は 4*H で、出力は H であるため、各行列は H*4H、2 つの行列は 8H2
これら 2 つの部分の合計は変圧器ブロックのパラメータであり、L (変圧器ブロックの数) を掛ける必要があるため、パラメータの総数は 30K⋅H+L⋅12H2 となり、パラメータはトランスブロックに取り込まれます。ベースは約1億1000万です。
6.4 モデルの入力と出力
入力シーケンス
BERT 事前学習の入力を総称して入力シーケンスと呼びます。一部の下流タスクは 1 つの文を処理し、一部のタスクは 2 つの文を処理するため、BERT モデルがすべてのタスクを処理できるようにするには、入力シーケンスは文または文のペアのいずれかになります (ここでの「文」は連続テキストを指します) 、必ずしも真の意味文であるとは限りません)。これは、前の記事のトランスフォーマーとは異なります。トランスフォーマーがトレーニングしているとき、そのエンコーダーとデコーダーはそれぞれシーケンスを入力するため、その入力はシーケンスのペアになりますが、BERT にはエンコーダーが 1 つしかなく、入力はシーケンスであるため、 2 つの文を処理するには、2 つの文をシーケンスに変換する必要があります。
ワードピース
使用される単語分割方法は WordPiece で、中心となるアイデアは次のとおりです。
- BERT がスペースを使用して単語を切り取る場合、単語はトークンになります。BERT のトレーニング データの量は非常に多いため、語彙のサイズは特に数百万レベルなど大きくなります。上記のアルゴリズムによれば、モデルの学習可能なパラメータは基本的に単語埋め込み層にあります。
- WordPiece の原理は、データ セット内に単語が出現する確率は高くないため、単語はサブシーケンスに分割されるということです。サブシーケンス (おそらくルート) の出現確率が高い場合は、このサブシーケンスのみを保持します。このようにして、比較的長い単語を、頻繁に出現するいくつかの断片に分割することができます。この語彙のサイズは比較的小さい (30,000)。
特別なマーク
シーケンスの最初の単語は常に特別なトークン [CLS] (分類を示す) であり、CLS に対応する最終出力はシーケンス全体の情報を表すことができ、単一文の分類の場合は入力のカテゴリを示しますセンテンス; センテンスペア分類の場合、2 つのセンテンスが関連している/無関係である、類似した意味/反対の意味であることを示します。self-attention 層のすべての単語は入力と出力のすべての単語を参照するため、その単語が最初の位置に配置されていても、その後のすべての単語を参照できるため、CLS を配置しても問題ありません。文の初めに、必ずしも文の終わりにある必要はありません。
文のペアは一緒に入力されますが、文レベルのタスクを実行するには、これら 2 つの文を区別し、次の 2 つの方法を使用する必要があります。
- 文末に特別な単語[SEP]を追加して区切ります(分離の意味)
- 学習可能なベクトルは単語埋め込み層で使用され、各トークンが文 A に属するか文 B に属するかを示します。
下の図のピンク色のボックスは入力シーケンスを表します。各トークンは BERT に入り、トークンの埋め込み表現を取得します。最後に、transformer ブロックの出力はトークンの BERT 表現を表します。最後に、追加の出力層が望ましい結果が得られます。
3 つの埋め込み
略語には次の意味があります。
- [CLS] : クラスの略称で、各入力サンプルの先頭に追加される特殊な記号です。
- Tok X: Token の略語、Tok 1 は現在の文の最初の単語を意味するなど
- [SEP] : Separatorの略で、セパレータを示します。2 つの文を分割するために使用されます。
- E : embeddingの略で、トークン埋め込み後のベクトルを示します。
- C: [CLS] BERT ベクトルの後のこの特別なトークン、H 次元を示します。
- T : BERT以降のTokenに対応するベクトルを示します、H次元
- NSP: 次の文予測タスク
- マスク LM: マスクされた言語モデル、MLM タスク
- 灰色の矢印 ⇧: Tok と E の間の矢印。入力を示します。つまり、Tok が入力されています。
- 赤い矢印⇧ : 下流のタスクを示します
- MNLI、NER、SQuAD : 3 つの具体的なタスク
特定のトークンの入力表現は、トークン、セグメント、および位置の埋め込みの合計で構成されます。結果として得られるベクトルのシーケンスは、transformer ブロックに入ります。埋め込み層構造の視覚化を図に示します。
- トークンの埋め込み: 各トークンを固定次元ベクトルに変換します。
- セグメント埋め込み: 文ペアタスクに設定されます。値は 0 と 1 の 2 つだけで、2 つの文を区別するために使用されます。単一文タスクの場合、文 A は 0 としてコード化され、文 B は 1 としてコード化されます。 、すべてのコードは 0
- 位置埋め込み: 入力のサイズはこのシーケンスの最大長であり、その入力はこのシーケンス内の各トークンの位置情報 (ゼロから始まる) であるため、対応する位置ベクトルが取得されます。
BERT は双方向並列入力方式を採用しています。つまり、単語を 1 つずつ入力するのではなく、文全体がモデルに入力されます。これにより、GPU のパフォーマンスを最大限に活用でき、モデルの動作効率が大幅に向上します。同時に、並列入力によりテキスト内の単語の位置情報が失われるため、BERT モデルは位置情報が失われないように追加の位置エンコード入力を追加する必要があります。Transformer における位置情報は位置エンコード(cos 関数)によって得られますが、ここでの位置情報位置埋め込みと文情報セグメント埋め込みはすべて埋め込みによって学習されます。3 つのエンベディングのサイズはすべて (batch_size、seq_length、hidden_size) であり、最後に要素値によって 3 つのエンベディングを追加します。これは、BERT コーディング層の入力を意味します。
7 BERT 事前トレーニング (MLM+NSP)
BERT はパラメーターの事前トレーニングに 2 つの教師なしタスクを使用します。
7.1 タスク 1:マスクされた LM
各トークン シーケンスの 15% をランダムにマスクし、[MASK] に置き換えて (CLS と SEP は置き換えられません)、モデルにこれらの空の元の単語を予測させます。マスク パーツの対応する出力ベクトルを線形変換 (行列乗算) に渡し、ソフトマックスを実行して、マスク パーツと MASK 文字のワンホット ベクトル間のクロス エントロピー損失を最小限に抑える分布を取得します。基本的に分類問題を解決するためにBERTが行うべきことは、何がカバーされるかを予測することです。
これによってもたらされる問題の 1 つは、微調整中のデータに [MASK] が存在しないため、事前トレーニングと微調整中に表示されるデータが少し異なることです。これを軽減するために、常に「マスクされた」単語を実際の [マスク] トークンに置き換えるわけではありません。
これにより双方向の事前トレーニング済みモデルを取得できますが、微調整中に [MASK] トークンが表示されないため、事前トレーニングと微調整の間に不一致が生じるという欠点があります。
解決策: トークンがマスクされたものとして選択された場合、80% の確率で [MASK] に置き換えられ、10% の確率でランダムな単語 (ノイズ) に置き換えられ、最終的に 10 個になります。 % 確率は元の単語と同じままです (それでも予測する必要があります)。この確率は実験から出たもので、効果は良好です。付録に例があります。
- 80%の時間は[マスク]を使用しています、私の犬は毛深いです→私の犬は[マスク]です
- 10% の確率で、マスクの単語を置き換える単語をランダムに選択します。私の犬は毛深いです -> 私の犬はリンゴです
- 10% の確率で同じまま、私の犬は毛深い -> 私の犬は毛深い
では、なぜ一定の確率でランダムな単語を使用するのでしょうか? これは、トランスフォーマーが各入力トークンの分散表現を維持する必要があるためです。そうしないと、トランスフォーマーは [MASK] が「毛深い」ものであることを覚えてしまう可能性があります。記事では、ランダムな単語を使用することによる悪影響について、他のすべてのトークン (つまり、「hairy」以外のトークン) の確率は 15% * 10% = 1.5% であり、その影響は無視できると述べています。
7.2 タスク2:次文予測(NSP)
選択された文のペア A と B、B は、A の次の文である確率 (次であるとマーク) が 50% であり、コーパス内の文がランダムに選択される確率 (次ではないとマーク) が 50% あります。これは、次のことを意味します。サンプルの 50% が陽性であり、サンプルの 50% が陰性です。その目的は、モデルが 2 つの文間の関係を理解できるようにすることで、質問応答 QA や自然言語推論 NLI などの下流タスクに適用できるようにすることです。
CLS の出力を見ると、CLS の出力は入力をマスキングするのと同じ操作を受けており、2 番目の文が最初の文の続きの文であるかどうかを予測することが目的です。これは、「はい」または「いいえ」の 2 つの出力が考えられるバイナリ分類問題です。
NSP は非常に単純ですが、この目的関数を追加すると、QA と自然言語推論の効果が大幅に向上することが後でわかります (付録に例があります)。
# 例
入力 = [CLS] 男は [MASK] 店 [SEP] に行きました
彼は1ガロンの[マスク]牛乳を買った[9月]
ラベル = IsNext
入力 = [CLS] 男 [MASK] ストア [SEP]
ペンギン [マスク] は飛行 ## 鳥がいない [SEP]
ラベル = 次ではありません
原文では、flightless という単語ですが、この単語の可能性が高くないため、WordPiece では、flight と less の 2 つの単語に分割され、比較的一般的な単語です。## は、原文の単語の後ろにある意味です前の単語に続きます
Li Honyi 氏は、この方法は事前トレーニングにはあまり効果的ではないと考えており、あまり有用なものは何も学んでいません。理由の 1 つは、次の文の予測が単純すぎることかもしれません。通常、文をランダムに選択すると、次の文が表示されます。前の文とは大きく異なるため、BERT が 2 つの文が接続されているかどうかを予測することはそれほど難しくありません。文順序予測 (SOP) と呼ばれる別のトリックがあります。これは、2 つの文の誰が前にいて誰が後ろにあるかを予測します。おそらくタスクが難しいため、より効率的であるように思われます
7.3 事前トレーニングデータとパラメータ
事前トレーニング手順は主に言語モデルの事前トレーニングに関する既存の文献に従い、BooksCorpus (8 億語) と英語版 Wikipedia (25 億語) を使用します。テキスト レベルのデータ セットを使用する必要があります。つまり、データ セットには、ランダムにシャッフルされた文の代わりに記事が 1 つずつ含まれています。トランスフォーマーは実際に比較的長いシーケンスを処理できるため、テキスト シーケンス全体にとっては次のように優れています。データセット
すべてのデータとデバッグパラメータ:
- データセット: BooksCorpus (8 億語)、英語版 Wikipedia (2,500 万語)
- 主なパラメータ:batch_size=256、epochs=40、max_tokens=512、dropout=0.1
- 最適化パラメーター: オプティマイザー Adam、lr=1e-4、β1=0.9、β2=0.999、L2 重み減衰=0.01、lr_warmup=10,000
- 活性化機能: ゲル
- トレーニング損失: 平均 MLM 尤度 + 平均 NSP 尤度
- マシン構成: BERT (ベース) は 4 つのクラウド TPU を使用、BERT (ラージ) は 16 つのクラウド TPU を使用
- 研修期間:4日間
- 加速方法: ステップの 90% はテキスト長 128 に従ってトレーニングされ、ステップの残りの 10% はテキスト長 512 に従ってトレーニングされます。
8 BERT の微調整
Transformer はセルフアテンション メカニズムを使用するため、BERT モデルはさまざまなダウンストリーム タスクに適用できます。文ペアのタスクでは、クロスアテンションを計算する前に文ペアを個別にエンコードするのが一般的です。BERT は、これら 2 つのステップを 1 つに結合します。つまり、セルフアテンション メカニズムを使用して文をエンコードします。
微調整のプロセスでは、下流タスクのトレーニングのために少量のラベル付きデータが依然として必要です。ダウンストリーム タスクごとに、タスク固有の入力と出力を BERT に単純に連結し、すべてのパラメーターをエンドツーエンドで微調整します。
入力が 2 つの文 (A と B) であるタスクの場合、A と B は同じ意味を持つ 2 つの式、仮説と前提のペア、質問応答システムの質問と回答のペアにすることができます。シーケンス ラベルのテキスト分類またはテキスト ペアにすることもできます。出力側では、トークンの出力ベクトルはシーケンスのラベル付けや質問応答システムなどの単語レベルの分類タスクに使用され、[CLS] の出力ベクトルは含意分析やセンチメント分析などの分類タスクに使用されます。 。いずれの場合も、最後に出力レイヤーを追加し、softnax を使用して目的のラベルを取得します。
文の分類
品詞タグ付け
事前トレーニングに比べて、微調整よりも比較的低コストです。すべての結果は、TPU を使用して 1 時間実行できます。GPU を使用する場合は、さらに数時間実行できます。
パラメータの微調整
微調整段階では、ほとんどのモデル パラメーターは事前トレーニング段階と同じですが、調整する必要があるのは、batch_size、lr、および epochs のみです。推奨パラメーターは次のとおりです。
- バッチサイズ = 16、32
- lr = 5e-5、3e-5、2e-5
- エポック = 2、3、4
9つの実験
このセクションでは、前述の 11 の NLP タスクに対する BERT の結果を示します。
9.1 GLUE データセット (分類)
GLUE ベンチマークは、さまざまな NLU タスク、つまり文レベルのタスクを集めたものです。BERT は、特殊語ユニット [CLS] の出力ベクトル C を取り出し、それを学習された出力層 w に置き、次にソフトマックスを使用してラベルを取得します。これは、非常に通常の多分類問題になります。つまり、CLS 最終出力ベクトルを使用して分類します。
平均はすべてのデータセットの平均値を表し、精度を表し、高いほど優れています。基本パラメータと GPT 学習可能パラメータが類似している場合でも、BERT は依然として比較的大きな改善が得られることがわかります。
9.2 SQuAD v1.1 (質疑応答)
スタンフォード質問応答データセット (SQuAD v1.1) は、クラウドソーシングされた 10 個の文ペアを含むスタンフォード データセットです。与えられた段落から質問をし、その段落内に答えがあり、その段落内での答えの位置 (この段落の最初と最後) を予測します。これは読解と同様です。それぞれの語彙単位を判断して、それが答えの始まりなのか終わりなのかを判断します。
具体的には、単語が答えの始まりである確率と終わりである確率に相当する開始ベクトル S と終了ベクトル E を学習することになります。2 番目の文の各補題について、Ti と Si の内積を計算し、段落内のすべての単語の内積に対してソフトマックスを実行して、この段落の各補題が答えの先頭である確率を取得します。終了確率の計算も同様です。
微調整に使用されるエポック値は 3、学習率は 5e-5、バッチ サイズは 32 です。BERT は微調整時に非常に不安定であり、同じパラメーターのトレーニングの分散が非常に大きいため、この文は非常に誤解を招きます。したがって、さらにいくつかのエポックをトレーニングする必要があります。なお、筆者が使用しているオプティマイザはAdamの不完全版であり、学習時間が長い場合には問題ないが、学習時間が短い場合には問題があるため、通常版に戻す必要がある。
9.3 SQuAD v2.0 (質疑応答)
詳細はありません
9.4 SWAG (文ペアタスク)
SWAG データセットには 113,000 の文ペアが含まれており、与えられた文に対して、4 つの選択肢から最も合理的な次の文を選択することがタスクとなります。SWAG データセットを微調整する場合、4 つの入力を構築します。各シーケンスは、特定の文 (sentenceA) と次の可能性のある文 (sentenceB) で構成されます。導入する唯一のタスク固有のパラメータは、各選択肢のスコアを表すために [CLS] の出力 C とドット積をとったベクトルであり、その後ソフトマックス化されて確率が得られます (上記と同様)。微調整パラメーターは、エポック = 3、学習率 = 2e-5、バッチ サイズ = 16 です。試験結果は掲載されません。
これらの異なるデータセットに対して、BERT は基本的にこれらのデータセットを必要な文のペアの形式で表現するだけで済み、最後に対応する出力を取得して出力層を追加するため、NLP 分野全体に対する BERT の貢献は依然として非常に優れています。多くのことを変更することなく、比較的単純なアーキテクチャで大規模な多数のタスクを完了できます。
10 アブレーションテスト
このセクションでは、BERT の各部分の結果に対する最終的な寄与をよりよく理解するために、BERT のさまざまな側面についてアブレーション実験を実施します。
10.1 モデルパーツの効果
- NSP なし: 次の文の予測が削除されると仮定します。
- LTR & NSP なし: MLM モデルは使用されません。モデルは左から右のみであり、NSP はありません。
- + BiLSTM: LTR の上に双方向 LSTM を追加 & NSP なし
結果から判断して、一部を削除した場合は結果が割引されます
- NSP を使用せずに MLM を使用した場合のみ、QNLI、MNLI、SQuAD 1.1 タスクのパフォーマンスに大きな影響を与えます。
- MLM はすべてのタスクで LTR よりも優れたパフォーマンスを発揮します。
- LTR モデルと RTL モデルのスプライシングの効果は、ディープ双方向モデルの効果よりも依然として悪く、トレーニング コストが高くなります
10.2 モデル構成の影響
タスクの微調整の精度に対するモデル サイズの影響を調べます。いくつかの BERT モデルは、異なる数のレイヤー、隠れユニット、およびアテンション ヘッドを使用してトレーニングされましたが、他のハイパーパラメーターとトレーニング手順は前述したとおりです。
BERT ベースには 1 億個の学習可能なパラメータがあります。BERT Large には 3 億の学習可能なパラメータがあります。以前のトランスフォーマーと比較すると、学習可能なパラメータの数の改善は依然として比較的大きいです。すべてのデータセットにおいて、モデルが大きくなるほど精度が高くなることがわかります。モデルのサイズを大きくすると、機械翻訳と言語モデルの継続的な改善につながることが知られていますが、これは、モデルを非常に大きくすると、言語モデルに大幅な改善が見られることを示した最初の研究です (わずかな改善) -少数のパラメータを調整します)。
したがって、BERT はどちらのモデルがより大きいかを争うモデル戦争を引き起こしました。GPT-3 には 1,000 億のパラメータがあり、現在のモデルはすべて数兆に達しようとしています。
10.3 BERT を特徴抽出器として使用する
特徴ベースの方法では、事前トレーニングされたモデルからいくつかの特定の特徴を抽出することで、モデルのトレーニングのパフォーマンスをある程度向上させることができます。まず、すべてのダウンストリーム タスクを Transformer エンコーダ構造で表現できるわけではなく、多くの場合、特定のタスクに応じて追加の構造を追加する必要があります。次に、計算の観点から見ると、まず事前計算を実行してトレーニング データから複雑で巨大な表現を取得し、その後、これに基づいて複数の小規模なモデル実験を実行する方がコストが安くなります。
特徴ベースの方法と微調整方法の効果を比較するために、埋め込み、最後の非表示、加重合計最後の 4 つの非表示などのモデルの 1 つまたは複数のレイヤーから特徴が抽出され、ランダムに初期化されたモデルに入力されます。二層 768 次元 BiLSTM モデルでは、最終的に分類層を経て出力されます。結果は、BERT(base) が最後の 4 つの隠れ層の出力のみを抽出してスプライシングを実行する場合、そのパフォーマンスは微調整方法の BERT(base) よりも 0.3 F1 低いだけであることを示しています。このことから、BERT モデルのトレーニングには、特徴ベースと微調整の両方が効果的であることがわかります。
Li Mu: BERT を微調整の代わりに特徴抽出器として使用すると、効果はそれに比べて悪くなります。したがって、BERT の使用は微調整する必要があります。
11 まとめ
この記事の最大の貢献は双方向性であると考えています。BERT はデコーダーの代わりに Transformer のエンコーダーを使用します。利点は、双方向の言語モデルをトレーニングできることです。言語理解タスクでは GPT よりも優れたパフォーマンスを発揮しますが、欠点もあります。機械翻訳などの生成タスクを行うには不便です。概要の生成など ただ、NLP 分野では分類などの言語理解タスクが増えるため、誰もが BERT を使用することを好みます。
BERT が提供するのは完全な問題解決のアイデアであり、深層学習モデルに対するすべての人の期待に応えます。3 億のパラメーターを使用してモデルをトレーニングし、数百 GB のデータセットで事前トレーニングし、微調整することで多くの機能を改善できます。小規模なデータセットでも NLP ダウンストリーム タスクを実行
GPT と BERT は同時に提案されたモデルです。どちらも細かく調整された事前トレーニング済みモデルです。多くのアイデアは同じです。たとえ後者の方が優れていたとしても、遅かれ早かれ後発のモデルに追い越されるでしょう。なぜ BERT が優れているのでしょうか。サークルの?BERTの利用率はGPTの10倍なので、当然影響は10倍以上になります。