- 「BERT」について学びたいけど理解できるか不安・・・
- 「BERT」についてどこから学んでいいか分からない?
- 「BERT」を体系的に教えて!
「BERT」は、Fine-tuningアプローチの事前学習に工夫を加えた(双方向Transformer)自然言語処理モデルあり、BERTからTransfer Learningを行った結果、8つのタスクでSOTA達成したものです。ここで、興味があっても難しそうで何から学んだらよいか分からず、勉強のやる気を失うケースは非常に多いです。
私は過去に基本情報技術者試験(旧:第二種情報処理技術者試験)に合格し、また2年程前に「一般社団法人 日本ディープラーニング協会」が主催の「G検定試験」に合格しました。現在、「E資格」にチャレンジ中ですが3回不合格になり、この経験から学習の要点について学ぶ機会がありました。
そこでこの記事では、「BERT」の学習のポイントについて解説します。
この記事を参考に「BERT」が理解できれば、E資格に合格できるはずです。
目次
1.BERTの概要
BERTまでのロードマップ(BERTを理解するために必要な材料)
EncoderーDecoder Model
↓
Transformer
(EncoderーDecoder x Attention)
↓
BERT
書誌情報
- Title
ーBERT:Pre-training of Deep Bidirectional Transformers for
Language Understanding
ー投稿日:2018/10/11
ーURL:ArXiv - 著者
ーJacob Devlin Ming-Wei Chang Kenton Lee Kristina Toutanva
ーGoogle AI Language - 概要
ーBidirectional Transformerをユニットにフルモデルで構成したモデル
ー事前学習タスクとして、マスク単語予測タスク、隣接文判定タスクを与える
ーBERTからTransfer Learningを行った結果、8つのタスクでSOTA達成
ーGoogleが事前学習済みモデルを公開済み/TensorFlow/PyTorch
2.背景
背景
- 様々な自然言語処理タスクにおいて事前学習が有効
- 文レベルのタスク:文同士の関係性が重要
ー文章類似度
ー言い換え - トークンレベル:モデルはトークンレベルで良い出力が求められる
ーNamed Entity Recognition
ーQ&A
- 文レベルのタスク:文同士の関係性が重要
- 事前学習の二種類のアプローチ
- Featureーbased
- Fine-tuning ← BERT
3.Featureーbased アプローチ
Featureーbased アプローチとは・・・
- 言語モデルの目的関数で事前学習する。
- 事前学習の後に、使いたいタスク元で教師あり学習を行う(=事前学習はパラメータの初期値として利用される)
- 最近では、OpenAI GPT[Ralford et al.2018]など。
- GLUEスコアでSOTA
- TransformerーDecoderだけを利用する
- 単方向接続モデル
- 特徴量抽出機として活用するためのもの
- 様々なNLPタスクの素性として利用される
N-gramモデル[Brown et al., 1992]やWord2Vec[Malcov et al., 2013]など - 文や段落レベルの分散表現に拡張されたものもある 。
- 様々なNLPタスクの素性として利用される
- 最近では、ELMo[Peter et al., 2017,2018]が話題に
- Context-Sensitiveな素性を抽出
- 既存の素性にconcatして使うことで複数のNLPタスクでSOTA
- QA、極性分類、エンティティ認識
4.BERTとは
BERTとは・・・
Fine-tuningアプローチの事前学習に工夫を加えた⇒ 双方向Transformerの採用
双方向Transformerとは・・・
- tensorを入力としtensorを出力
- モデルの中に未来情報のリークを防ぐためのマスクが存在しない
- 従来のような言語モデル(Language Model)型の目的関数は採用できない
(言語モデル:入力された単語列の次の単語を予測するモデル)
なぜならカンニングになるため!!
- なぜカンニングになるか?
BERTは Attention機構 を用い文章の一度にまとめて読み込むため、言語モデルタスクを用いた学習が困難
- 従来のような言語モデル(Language Model)型の目的関数は採用できない
- 事前学習タスクにおいて工夫する必要がある
事前学習(Pre-training)タスクの工夫
- 空欄語予測と隣接文予測の2タスクを行う
空欄語予測と隣接文予測を同時に事前学習する → 単語分散表現と文章分散表現を同時に獲得できる。
- 空欄語予測(Masked Language Prediction)
- 文章中の単語のうち15%がMASK対象に選ばれる
→ 選ばれた15%の単語の位置はフラグを立てておく。 - 選ばれた単語の内、80%が[MASK]に置き換えられ、10%が他の単語に置き換えられ、残り10%は置き換えられずにおかれる。
→ 文章を入力としてフラグが付いている位置のオリジナルの入力単語が何であるかを出力する(15%対象外の単語に関しては扱わない)
- 文章中の単語のうち15%がMASK対象に選ばれる
双方向モデルの課題~隣接文予測までの流れ
双方向モデルの課題
- 双方向モデルの特長:
left-to-rightモデルや双方向にconcat(連結)したものよりも一般的に強力- 補足)left-to-rightモデル・・・状態遷移が一定方向に進むモデル
- 双方向モデルの課題:
一般的な条件付き言語モデルでは学習できない
特定の単語予測:双方向だと間接的に複数層の文脈から自分自身を見てしまう。
↓
課題の対策とその問題点
- 課題の対策:
次の単語ではなくランダムに抜かれた単語を予測するモデルにする(CBOWの発想) - 上記対策の問題点:
この手法を採用すると単語全体の15%しか学習材料に使えないため学習に時間がかかってしまう。
↓
問題点の解決策
隣接文予測(Next Sentence Prediction)
- 2つの文章の関係性理解も重要
- 言語モデルのタスクのみでは捉えきれない
- 2つの連なる文章ペアに対して、隣接文を50%の確立でシャ
- → 二つの文章を入力として、隣接文であるかのTrue/Falseを出力する
Pre-training 手続き
- データセット:BooksCorpus(800MB)+ EnglishWikipedia(2500MB)
- 入力文章の合計系列長が512以下になるように2つの文章をサンプリング
- Next Sentence Predictionのため、文章1と文章2に組み合わせは50%の確率で変わる。
- MLMのためWordPieceトークンに分けられた後マスクされる。
- バッチサイズ:256(=256×512系列=128,000単語/バッチ)
- 1,000,000ステップ=33億の単語を40エポック学習
- Adam:LR=1e-4,L2weight_decay=0.01
- Dropout:0.1
- 活性化関数:GeLu
- 系列レベルの分類問題
- 固定長の分散表現は最初の[CLS]トークンの内部表現から得られる。
- 新しき追加する層は分類全結合層+ソフトマックス層のみ
- BERTも一緒に学習させる。
- トークンレベルの分類問題(NERなど)
- 各タスクの仕様に合わせて学習できる。
- Fine-tuning自体は高速にできるので、ハイパーパラメータ探索も可能
ハイパーパラメータ(Hyperparameter)とは・・・
引用元:codexa
機械学習アルゴリズムの挙動を設定するパラメータを指す。少し乱暴な言い方をすると機械学習のアルゴリズムの「設定」である。
5.有効性
8個のNLPベンチマークタスク
タスクspecificなアーキテクチャを組むことなく一気にSOTA
タスク | 概要 | 前SOTA | BERT |
---|---|---|---|
GLUE | 8種の言語理解タスク | 75.2 | 81.9 |
1.MNLI | 2入力文の含意/矛盾/中立を判定 | 82.1 | 86.7 |
2.QQP | 2質問文が意味的に等価か判定 | 70.3 | 72.1 |
3.QNLI | SQuADの改変、陳述文が質問文の解答を含むか判定 | 88.1 | 91.1 |
4.SST-2 | 映画ビューの入力文のネガポジを判定 | 91.3 | 94.9 |
5.CoLA | 入力文が言語的に正しいか判定 | 45.4 | 60.5 |
6.STS-B | ニュース見出しの2入力文の意味的疑似性をスコア付け | 80.0 | 86.5 |
7.MRPC | ニュース記事の2入力文の意味的等価性を判定 | 82.3 | 89.3 |
8.RTE | 2入力文の含意を判定 | 56.0 | 70.1 |
SQuAD | 質疑応答タスク、陳述文から質問文の解答を抽出 | 91.7 | 93.2 |
CoNLL | 固有表現抽出タスク、単語に人物/組織/位置のタグ付け | 92.6 | 92.8 |
SWAG | 入力文に後続する文を4つの候補文から選択 | 59.2 | 86.3 |
6.まとめ
最後まで読んで頂きありがとうございます。
皆様のキャリアアップを応援しています!!
コメント