Ahogrammer

Deep Dive Into NLP, ML and Cloud

固有表現認識にはどのサブワードの分散表現が有効なのか?

ACL 2019より以下の論文を紹介。

この論文では、2つの系列ラベリングタスク(固有表現認識と品詞タグ付け)に対して、3つのサブワードの分散表現(FastText、BPEmb、BERT)のどれが有効なのかを調査している。最近の自然言語処理タスクでは事前学習済みの分散表現が使われる。特に2018年以降はELMoやBERTなどの文脈を考慮した分散表現が使われるようになってきている。しかし、どの分散表現を使うのが良いのか包括的に調査した研究はなく、実務者が分散表現の選択を行うのを難しくしている。そういうわけで、265言語に対して調査を行った。

調査の結果、以下の示唆を得られた。

  1. 大規模データを利用できる場合、サブワードのボキャブラリ数を大きくしたほうが良い
  2. 低リソースな場合、サブワードのボキャブラリ数は小さい方が良い
  3. 計算資源が限られている場合は、BPEmbと文字分散表現の組み合わせが良い
  4. 異なるサブワード表現を組み合わせると良い
  5. 低リソースな場合、サブワードを共有して多言語で事前学習を行うと良い
  6. 多言語BERTはタスクや言語によらず、そレなりに良い性能が出るのでロバストな選択

まず、1番目と2番目について説明しよう。データセットのサイズとBPEのボキャブラリ数の関係については以下の図で説明されている。以下の図は、200を超える言語の固有表現認識のデータセットに対して、BPEのボキャブラリ数を変えた時にベストなボキャブラリ数がいくつだったかを調査した結果となっている。結果を見ると、傾向としてはデータセットの規模が大きいほど、BPEのボキャブラリ数を大きくしたほうが良い結果となることがわかる。

f:id:Hironsan:20190917082014p:plain
データセットのサイズとBPEのボキャブラリ数の関係

次に、3〜5番目について説明する。以下にBPEを使った場合の結果を示した。表では様々な分散表現を使った場合の結果を示している。ここで、MultiBPEmbというのは、265言語のサブワードを共有して学習を行った場合を指している。Finetuneの有無は、有の場合は多言語で学習した後、対象言語で再学習、無の場合は多言語だけで学習した場合を指す。この結果を見ると、BPEに文字分散表現を組み合わせるとFastTextなどと比べて性能が向上することがわかる。また、低リソースな場合は多言語での学習の効果が大きいことがわかる。

f:id:Hironsan:20190917082722p:plain
WikiAnnに対する固有表現認識の結果

最後に多言語BERTの結果を示す。以下は101の言語に対して固有表現認識を行った結果を示している。結果を見ると、BERTを使った場合、MultiBPEmbには負けるが、それなりに良い性能を出すことがわかる。また、BERTを単体で使うよりも、文字分散表現とBPEmbを組み合わせるほうが性能が向上することが示されている。ただ、MultiBPEmbをFinetuneした場合よりは性能が劣る。

f:id:Hironsan:20190917082834p:plain
固有表現認識の結果(BERT)

実務的に興味深い論文であった。ただ、注意しなければならないのはこの結果はあくまで数百言語の平均としてこうなったという話であって、個別の言語を見ていくと当てはまらないことがある。たとえば、論文の表9に載っている結果を見ると、FastTextとBPEmbはほとんど性能差はなく、BERTはそれらよりも悪い結果となることが示されている。これは、多言語BERTのボキャブラリを使うと日本語の場合はほとんど文字で分割されてしまうことによる影響を受けていると考えられる。数百言語を扱っているので、一つずつに手間を掛けていられないという事情はあると思うが、日本語の場合は京大で公開しているBERT日本語Pretrainedモデルを使うと、違う結果を得られるのではないかな、と思った。