BERTのwhole word maskingについて

概要

BERTの事前学習の方法にwhole word masking(以下、WWM)という学習方法があるので調べてみた。

事前知識

事前学習

BERTの事前学習の方法については qiita.com が詳しく書かれています。 事前学習の方法を大雑把にまとめると、

  1. 入力する文章を形態素解析を行う。
  2. トークン化した文章から「単語予測」「隣接文の予測」を行う。

今回は「単語予測」のみに注目。(WWMは単語予測のときに使われているため)

BERTの形態素解析

BERTの形態素解析にはWordPieceが使用されており、各単語はサブワードに分割される。
単語が先頭にない場合には「##」を付ける。
(playing → play + ##ingといった次第)
サブワードに分割するときは「vocab.txt」という辞書ファイルを用意して、単語と辞書を照らし合わせながら分割を行う。
上記の場合、「play」という単語が辞書に登録されており、ingがもっと小さな単語として処理され##が付与される。

単語予測

「単語予測」を行うときは一部のトークンを[MASK]に置き換えて学習を行う。
例えば入力文のトークン化が
the man jumped up , put his basket on phil ##am ##mon ' s head
のとき、
[MASK] man [MASK] up , put his [MASK] on phil [MASK] ##mon ' s head のように置き換える。

whole word masking

上記の
[MASK] man [MASK] up , put his [MASK] on phil [MASK] ##mon ' s head
を参考にすると、以前までの事前学習での[MASK]の置き換えはランダムに行っていた。
WWMでは
the man [MASK] up , put his basket on [MASK] [MASK] [MASK] ' s head
のように単語に対応したトークン(##am、##monのようなトークン)を[MASK]に置き換える。

効果

一般的にWWMをかけたpretrainedモデル方がランダムに学習させたpretrainedモデルよりfine tuningしたときの精度が良いらしい。
(上記のgoogleのBERTや京大の日本語PretraiedモデルNICTの日本語Pretrainedモデルで確認)

参考

SentencePieceについて書いてみる。 - どん底から這い上がるまでの記録

BERT日本語Pretrainedモデル - KUROHASHI-MURAWAKI LAB