Ahogrammer

Deep Dive Into NLP, ML and Cloud

固有表現認識と品詞タグ付けに対するドメイン適応を教師なしで行う

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

この論文は、系列ラベリングのドメイン適応を教師なしで行う手法を提案している。ELMoやBERTなど文脈を考慮した分散表現を生成するモデルは良い性能を示すことが知られている。しかし、これらの学習にはWikipediaやニューステキストを使っているので、対象テキストのドメインや書かれ方が大きく異なる場合に有効かはわからない。そこで、この論文では対象ドメインのテキストを使って分散表現をFine-tuningすることで性能向上を図っている。実験は、対象ドメインを昔の英語テキストとTwitterテキストとして行っている。結果として、大きく性能が改善することを示した。

提案手法は割とシンプルで、対象ドメインのテキストを使って教師なしでBERTの言語モデルをチューニングしようというもの。論文中ではこれをDomain Tuningと呼んでいる。たとえば、Wikipediaで学習したBERTをTwitterのテキストを使って再学習することがそれに当たる。それに対して、教師データを使ってBERTをチューニングする方法をTask Tuningと呼んでいる。たとえば、固有表現認識であればCoNLL 2003を使ってBERTを含むモデル全体を学習させることがそれに当たる。

Domain TuningとTask Tuningの組み合わせで以下の4つの実験設定を作っている。

  • Frozen BERT
  • Task-Tuned BERT
  • AdaptaBERT
  • Fine-Tuned BERT

Frozen BERTというのは、BERTを特徴抽出器として使う方法のことで、BERTは学習させない。Task-Tuned Bertというのは、ソースドメインの教師付きデータを使ってBERTを学習させる手法のことを指している。AdaptaBERTは対象ドメインの教師なしデータを使ってBERTをチューニングした後、ソースドメインの教師付きデータを使ってモデルを学習させる手法のことを指している。最後のFine-Tuned BERTというのは、対象ドメインのデータを使ってBERTを含むモデル全体を学習させる手法を指している。

実験は品詞タグ付けと固有表現認識に対して行っている。品詞タグ付けでは、ソースドメインコーパスとしてPTB、対象ドメインコーパスとしてPPCEMEを使っている。PTBは現代英語、PPCEMEは15世紀から17世紀くらいの英語を対象にしたコーパスとなっている。固有表現認識ではソースドメインコーパスとしてCoNLL 2003、対象ドメインコーパスとしてWNUT 2016を使っている。CoNLL 2003はニュースが対象であり、WNUTはTwitterが対象となっている。

品詞タグ付けに対する実験結果は以下の通り。結果を見ると、Domain Tuningを使って対象ドメインコーパスでBERTを学習させることで性能が向上することがわかる。特に、OOVのトークンに対する性能が大きく向上している。

f:id:Hironsan:20190920075634p:plain
PPCEMEに対する品詞タグ付けの正解率

固有表現認識に対する実験結果は以下の通り。結果を見ると、こちらもTweetを使ってDomein Tuningをすることで性能が向上していることがわかる。

f:id:Hironsan:20190920080122p:plain
WNUTとCoNLL 2003に対する固有表現認識の結果

実験結果を見ると、「なんだ、結局対象ドメインの教師データを使ってFine-Tuningするのが一番いいじゃないか」と思うかもしれないが、それは論文が想定している状況と違う。確かに、対象ドメインのラベル付きデータが大量にあるならそうするのが一番良い。ただ、この論文で扱ったような昔の言葉であるとか、逆にTweetのように新しい分野の場合はラベル付きデータが大量にあるとは限らない。そのような状況でも、対象ドメインの教師なしデータを使ってBERTをチューニングするだけで性能が向上するというのは、実用的にありがたい話となっている。

BERTを使った系列ラベリングの高速化

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

この論文では、系列ラベリングタスクに対するBERTの高速化と多言語転移性能の検証を行っている。BERTが良い性能を出すことはわかっているが、モデルのサイズが大きく、予測に時間がかかるという欠点がある。そこで、BERTから3層を選択し、パラメータ数を減らすことで高速化をしている。これにより、通常のBERTと比べて約27倍高速化した。また、モデルに対して蒸留を行っている。結果として、パラメータ数を減らす前のBERTに匹敵する性能を記録。特に低リソースな言語に対して有効であることを示している。

モデルを小さくするために3つの層を選んでパラメータを減らしている。公開されているBERTではエンコーダは12層から構成されている。以下の表に示すように、そのパラメータ数の多くは隠れ層のユニット数で占められている。そこで、この論文ではエンコーダのすべての層を使うのではなく3つの層を選択して使うようにしている。これにより、ユニット数を87Mから2Mまで減らしている。

f:id:Hironsan:20190919071013p:plain
モデルのパラメータ数

以下の表では、パラメータ数を減らしたことで、予測がどのくらい高速化されたのかを示している。表の上側はGPU、下側はCPUでどのくらい高速化されたかを示している。結果を見ると、CPUではGPUと比べてより高速化しており、元のBERTより約27倍の予測速度となっている。

f:id:Hironsan:20190919071609p:plain
予測の高速化

高速化されたのはわかったが、性能はどうなのか?というのを示すのが以下の表になる。実験は品詞タグ付けとMorphologyという2つの系列ラベリングタスクに対して行っている。結果を見ると、通常のBERTよりは性能は劣るが、小さくしたモデルでも、その値に匹敵する性能を出していることを確認できる。

f:id:Hironsan:20190919072413p:plain
品詞タグ付けとMorphologyの性能

また、高速化の話とはあまり関係ないが、多言語転移性能に対しても検証を行っている。設定としては、低リソースな6つの言語に対して通常のBERTとの転移性能を比較している。以下の結果を見ると、モデルを小さくしても通常のBERTと同様に高い転移性能を示していることを確認できる。

f:id:Hironsan:20190919072756p:plain
多言語転移性能

ちなみに、論文内ではモデルの蒸留のテクニックが書いてあるが、この記事では書いていない。詳細は論文を参照してもらいたい。感想としては、比較対象が12層のBERTであったが、実際には12層まるごとつかうというより、バリデーションデータを使って、どの層を取り出すかを決めると思うので、そことの比較でどのくらい高速化されたのかは知りたかった。イメージとしては、以下の記事で紹介した論文で行っている層ごとの性能を検証した後にどのくらい高速化されるかを示すと、実用的にどのくらいの高速化がされているのかがわかりやすかったと思う。

hironsan.hatenablog.com

固有表現認識のデータセットをWikipediaから自動作成する手法

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

先日、以下の記事の中で、サブワードを使って固有表現認識を行う際にどのサブワードの分散表現を使うのが良いのか検証した論文を紹介した。今日紹介する論文はその論文の中で引用していた論文。

hironsan.hatenablog.com

この論文では、Wikipediaから282言語の固有表現認識用のデータセットを自動作成する手法を提案している。固有表現認識のデータセットを人手で作るのには非常に時間がかかる。そのため、Wikipediaのリンク情報を利用して自動的にデータセットを作成する研究が行われてきた。それらの研究では単言語を対象にしていることが多いが、この研究では多言語を対象にデータセットを作成している。実験は作成したデータセットを使ってWikipediaのデータとそれ以外のデータで固有表現認識とリンキングを行った。

なお、以下のリンク先からデータセットをダウンロードすることができる。

論文の手法は以下の図で表される。はじめに、英語Wikipediaのページを組織名や人名といったタイプに分類している。この際、特徴としてDBPediaのプロパティ(生年月日や創業年など)を使っている。次に、分類した結果をWikipediaの多言語リンクを利用して他の言語にも適用している。こうして記事を分類した後、Wikipediaのリンク情報を利用して自動的に固有表現認識のデータセットを生成している。

f:id:Hironsan:20190918071223p:plain
データの生成手順

ただ、このままだと質が悪いため、生成したデータセットからシードを選んでタガーに学習させ、そのタガーを使ってラベルなしのデータにラベル付けしている。そのラベル付けした結果から確信度の高い文だけ抽出し、学習データに加えてタガーを再学習するということをしている。

f:id:Hironsan:20190918071251p:plain
タガーの学習

データセットからシードを選ぶ際には、文中のすべてのアノテーションについて以下のNPMIがしきい値τを上回った文を選択している。"tag"というのは固有表現タグで"token"は単語だと考えればよい。たとえば、"B-LOC"というタグに対して"東京"のようなトークンがあり得る。おそらく、データセット全体を見回して、より確率の高いタグとトークンのペアが含まれている文は質が高いだろうから選択するということを表現している。

f:id:Hironsan:20190918071021p:plain
NPMIの式

最後に、タガーによってラベル付けしたデータから学習に使うデータを選択している。ここでの判断基準は一般性とトピック関連性となっている。

f:id:Hironsan:20190918071328p:plain
学習データの選択

作成したデータセットによる固有表現認識の結果は以下の通り。ここでは3クラス(人名、地名、組織名)の固有表現認識を行っている。傾向としては、固有表現の数の多い言語に対する性能が高いことがわかる。

f:id:Hironsan:20190918070726p:plain
固有表現認識の結果

Wikipedia以外のデータセットに対して実験を行った結果は以下の通り。結果を見ると、従来手法よりは良い結果となっているが、Gold Standardなデータセットを使って学習させる場合よりは低い性能になっている。

f:id:Hironsan:20190918072457p:plain
Wikipedia以外のデータセットに対する結果