【論文紹介】 BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding - 3月 29, 2019 こんにちは、ぐぐりら(@guglilac)です。 有名だからとりあえず読んでみたけど、有名だから解説記事もいっぱいあるので簡単にめもだけ。 ざっくりまとめです。 ## 単語の分散表現 BERTは単語の文脈を考慮した分散表現の獲得手法の一つとして提案された。 単語の分散表現を獲得する手法はホットなトピックで、word2vecやgloveなどからELMo,OpenAI GPTといったものまである。(さらにdeep以前からいろいろ研究されているらしい) 大きく分けて * feature based * fine tuning の二種類のアプローチがある。 といってもこれはもともと知っている概念で、 feature basedは獲得した表現を入力として使うだけ(固有のタスクを解くときにはここまでback propagationしない) elmoやword2vecなどはこっち。word2vecは文脈を考慮していないがelmoは考慮するという点がelmoの売りらしい。 fine tuningは事前学習したモデルを固有のタスクを解くための入力層にして、全体をさらに最適化する(fine tuningする)手法の総称。BERTはこっち。OpenAI GPTもこっち。 ## 関連手法との比較(ELMo,OpenAI GPT) 先に書いたようにfeature basedかfine tuningするかといった違いもあるけど、根本的なモデルの構成の違いについて。 ELMoは、transformerはつかっていない、けど双方向性は考えているようなモデル。構成要素はLSTMを双方向に学習して、出力をconcatenateするといった構成。 OpenAI GPTはtransformerを使っているものの双方向ではない。これまでの単語を使って次に来る単語を予測するというタスクを事前学習として解く。 未来の単語が見えてしまうとカンニングになるので、マスクをかけておくような実装になる。 BERTはここを改良し、うまくタスクをかえて双方向(すなわち未来の文脈を考慮して単語を予測する)transformerを考案。 できるなら強そうなのはわかるけど、どうやってやるんや、というのが次の疑問。 ## BERTの事前学習 BERTは二種類のタスクを事前学習として行う。 * masked language model * next sentence prediction 既存手法ではこれまでの単語をtransformerに入力して次の単語を予測するが、BERTでは予測すべき単語をランダムに選ぶ。(全体の15%) しかもその選ばれた単語のうちの80%をmaskにして、10%をランダムな単語にして、10%は何もしないという。この辺がちょっとよくわからない。全部maskにすればええやんと思うけど。論文には、得られる表現を実際に観測された単語に近づけるため、とある。 こうすることで双方向のtransformerにできる。というのがBERTのみそでした。 これがMLM. next sentence predictionは文章を二つ渡して、Aの次にBという文章がくるかどうかを判定するbinary classificationを解く。学習データは半分本物、半分は全く別物の文章をペアにして渡す。として作る。文章間の情報とかも取り込んだ分散表現が得られることを期待している。 masked language modelでわかる通り、予測すべき単語が全体の15%しかないことから、学習に時間がかかることが BERTの欠点である。openAI GPTは全単語が予測対象になっているので、それに比べたら遅そう。 論文中では、学習ステップについての比較実験がされていて、収束するのは確かに遅いけど性能の面でみるとすぐにBERTが上回るから俺の勝ち〜みたいなことが書いてある。(openAI GPTとの比較ではなくBERTを一方向に学習した場合との比較だけれど) ## 入力の形 普通に単語をembedしたものだけを入力としているわけではなく、三つのベクトルの和として構成している。 * token embeddings(普通のembedding) * segment embeddings(所属する文章を表すembedding) * position embeddings(入力系列に対する単語の位置を表すembedding) それぞれ(たぶん)埋め込み行列みたいなのがいて、そこまでback propagationされるんだと思うんだけどよくわからない、あんまり説明ない。 元祖のtransformerはpositional encodingは学習対象ではなくあらかじめ作っておいたオレオレ重みを足してあげる、みたいな構成になっていたが、BERTではpositional encoding的な部分も学習対象になるっぽい。 ## 実験 たくさんやってる。この界隈ではたぶん有名なやつなんだと思う。勉強になった。 全部でSOTAになっててこりゃ話題になるよね、という感想にしかならない ablation studiesでは * effect of pretraining tasks * effect of model size * effect of numbers of training steps * feature based approach with BERT を検証してる。 modelのサイズは大きくすると性能が上がっていたけれど、データのサイズが小さくなると難しそうだなあと思った(しどっかの記事でデータサイズと合わせてモデルサイズは変化させないと性能が出ない?みたいなのも見た気がする) ## まとめ つよい、googleの計算資源つよい、BERT-largeとかお高いんだろうな、、、 有名なので詳しい解説記事とかがたくさん転がっているので詳しく知りたい方はそちらを読むか論文読むか、でお願いします。 ELMoとかもちゃんとよんでないので読んでみたいです。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿