自然言語処理の「BERT」とは何か
わかりやすい記事miyamonz.icon
- 「BERTは何のデータを入力して何ができるのか」、 - 「BERTに関する記事は何故Self-Attention層しか説明してないのか」、
- 「一見何も出来なさそうなBERTなのになぜ神格化されるのか」
と思ったが、encoder decoderの部分は誤解を招くように思うな
というか間違ってないか?
論文内で定義したTransformerはエンコーダデコーダ構造なので、Transformerの事前学習はエンコーダ部分と理解したらいいと思います。BERTはエンコーダの役割をして、エンコーディングしたデータを別途準備したタスク別デコーダに送る事で自然言語処理します。
正しくない気がする
部分的に会ってる気がする
分類問題とか一部の問題(論文の下の方に紹介されてる)は、とくにデコーダとか繋がずに、Transformer Encoderの出力をほぼそのまま答え出すのに使ってる
まあここでの最終層のdenseとかそこらへんをデコーダって言うんだったら合ってるのかもしれんが、それってデコーダとは言わなくないか
文章を出力するタイプのタスクにはデコーダをつけるんじゃないのだろうか(調べてない)
学習時の入力
https://gyazo.com/4107dc3316aa6e41d4305e4bbc1be6d1
以下メモ
---.icon
自然言語処理(NLP)モデル
self-attention層で使ったtransformer構造を持つ自然言語処理モデル pre-training of deep bidirectional transformer
fine-tuning用に事前学習させたモデル
予測モデルではない
論文の名前にもある
エンコーダデコーダ構造
https://gyazo.com/de58fc006a9fc041392824c9f9d5d3be
bertはエンコーダの役割をして、エンコードしたデータを別途準備したタスク別デコーダに送る
??
BERTの学習法
モデルの出力と学習目標(ground truth)との差をlossとして学習する
しかし、予測モデルではないこれは何を学習してるのか
BERT Learning Modelというものを用意する
mask language model
ランダムに単語をマスクして予測して言葉の意味を学習
next sentence prediction
語句にわけて、ランダムで2区目を他の文章からの語句に変えて、変わっているかどうかを判定
というふたつの学習目標をたてて学習する
事前学習の段階で、上記2つのタスク(BERTLM)をdecoderに入れて学習
終わったら、encoderの重みを利用してその他個別のタスクを学習
BERTの学習効率はものすごく低い
なので自分でトレーニングすることはあまりなく、トレーニング済みのモデルを使うことが多い
なんですごいか
BERT発表以来、研究者たちがBERTを違うデコーダにつなげて、自然言語処理の各コンペを制覇した