Ahogrammer

Deep Dive Into NLP, ML and Cloud

誤ったラベル付けが含まれるデータセットで学習させる固有表現認識手法

EMNLP 2019より以下の論文を紹介。モデルに依存しない手法なのがとても良い。

この論文では、誤ったラベル付けが含まれるデータセットから固有表現認識のモデルを学習させる方法を提案している。まず、固有表現認識の学習と評価で標準的に使われているCoNLL 2003のデータセットに誤ったラベル付けが含まれていることを示している。そして、このラベル付けを修正することで性能が向上することを示した。次に、誤ったラベル付けの含まれるデータセットから学習する方法を提案し、実験を行っている。実験の結果、性能が向上することを示した。

この論文の第一の貢献として、固有表現認識で標準的に使われているデータセットのCoNLL 2003に誤ったラベル付けがどのくらい含まれるか示したことだ。通常、私たちは学習に使うデータセットのラベルはすべて正しく付けられていると仮定する。しかし、CoNLL 2003のような長年使われてきたデータセットにも誤りは存在する。実にテストセットの全文中、5.38%の文に誤ったラベルが含まれることを示したのだ。現在のSOTAがF1で93.5ポイントであることを考えると、この数字は無視できない。以下に誤りの例を示す。

f:id:Hironsan:20190912080337p:plain
CoNLL 2003における誤りと修正の例

では、CoNLL 2003に含まれる誤りを修正したら性能はどう変化するのだろうか?テストデータセット中の誤りをエキスパートにより修正し、様々なモデルに対する評価を行ったところ、以下の結果を得られた。この結果を見ると、誤りを修正することで、一貫して性能が向上していることが確認できる。また、標準偏差も小さくなっていることから、学習したモデルによる予測のブレが小さくなっていることがわかる。このことからアノテーションの誤りが性能に影響を与えていることがわかる。

f:id:Hironsan:20190912080523p:plain
誤りを修正したデータセットでの評価

誤りを修正することで性能が向上することがわかったとはいえ、ラベル付けは人間が行うので誤りが含まれることは避けられない。「誤りが無いと性能が向上するから、誤りの無いようにラベル付けしてね♡」などと言われても現実的には何の問題も解決しないのだ。そもそも故意に入れているわけではないのだから。したがって、現実的には、誤りの含まれるデータセットに対してどう向き合うかということの方が重要になる。

そこで、この論文では誤ったラベルの付いたデータセットから学習する手法(CrossWeigh)を提案している。この手法は2つのモジュールから構成されている。一つは間違いの推定、もう一つは推定した間違いの再重み付けを行うモジュールとなっている。つまりどういうことかというと、間違っていそうなデータを見つけたら、それには低い重みを付けて学習させ、モデルが将来的に行う予測への誤ったデータによる影響を少なくしようという発想になる。以下に手法の概要を示した。

f:id:Hironsan:20190912055944p:plain
提案手法の概要

CrossWeighでは、以下に示す損失関数を使ってデータごとに重みを付けて損失を計算する。通常の損失関数では各データに対する重みはw _ i =1であるが、CrossWeighではこの重みを誤ったラベルの付いたデータとそうでないデータで変化させて学習させる。これにより、誤ったラベルのデータによる影響を抑える狙いがある。重みのw _ iはk分割交差検証の中で誤りの推定をした後、誤りの推定結果に基づいて決まる。詳しくは論文中の式(4)を参照して欲しい。

f:id:Hironsan:20190912084324p:plain
CrossWeighの損失関数

以下にCrossWeighを使った場合とそうでない場合のCoNLL 2003のテストセットに対するF1スコアを示した。CrossWeighはモデルによらない手法なので、3つのモデルに対して実験を行っている。実験結果を見ると、CrossWeighを使うことで性能が一貫して向上していることがわかる。また、標準偏差も小さくなっているので学習のブレが小さくなる傾向があることがわかる。

f:id:Hironsan:20190912083038p:plain
CrossWeighを使った場合とそうでない場合のF1スコア

また、CoNLL 2003以外のデータセットに対して検証した結果は以下の通り。2つのデータセットに対してCrossWeighを使った場合とそうでない場合で検証した結果、使ったほうが性能が向上することを確認できた。

f:id:Hironsan:20190912084833p:plain
別のデータセットでの評価結果

感想としては、CoNLL 2003の誤りを分析しているだけでも面白いのに、誤りの含まれるデータセットから学習する手法を提案していて更に良い。確かにCoNLLのデータを見ていると変なところがあるなぁとは思っていたが、5.38%も誤ったラベル付けが含まれる文があるとは驚きの一言。提案している手法自体もモデルに依存せず使えるので、実務的にもいいのではないかと感じた。k分割交差検証を必要とするので計算量は多くなるが、マシンパワーで解決可能なので、そこまで問題にならないのではないか。

グローバルなコンテキストを使って固有表現認識の性能を改善する

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

この論文では、文レベルのグローバルな文脈表現を利用した系列ラベリングのモデルを提案している。従来、品詞タグ付や固有表現認識、チャンキングといった系列ラベリングタスクにはBiLSTMが使われてきた。しかし、BiLSTMではグローバルな文脈表現を十分に捉えられていないという課題がある。それを解決するためにグローバルな文脈を捉えられるモデルを提案し検証。結果として、固有表現認識とチャンキングでSOTAを記録した。

提案するモデルは、グローバルコンテキストエンコーダ、系列ラベリングエンコーダ、デコーダの3つのモジュールから構成される。以下に図を示した。全体としては、まず入力のトークン表現を単語、文字、グローバルの3つを連結して作成する。ここでグローバルな表現はグローバルコンテキストエンコーダの隠れ状態の平均プーリングで作る。これらの連結したトークン表現を系列ラベリングエンコーダに入れて変換した後、デコーダを使ってラベルを予測する。

f:id:Hironsan:20190911051657p:plain
モデルのアーキテクチャ

3つのモジュールで使われているキーとなる技術がDeep Transition RNN(DT)だ。DTは通常のRNNより次の状態までの遷移が深いのが特徴となっている。DTはL-GRUとT-GRUから構成され、式としては以下で表される。意味的には、前のL番目のT-GRUからの出力をL-GRUに与え、L-GRUからの出力はT-GRUに与える式になっている。モデルのアーキテクチャ図を見るとその様子がわかりやすい。図ではトークン表現を直接与えているのがL-GRU、それ以降がT-GRUとなる。

f:id:Hironsan:20190911072826p:plain
Deep Transition RNNの式

実験は固有表現認識とチャンキングという2つの系列ラベリングタスクに対して行っている。データセットは、固有表現認識はCoNLL 2003、チャンキングはCoNLL 2000という標準的に使われているデータセットを用いている。固有表現認識の結果は以下の通り。結果を見るとF1で93.47となっている。SOTAが93.5くらいだったはずなので、ほとんどSOTAに等しい結果となっており、非常に強力なモデルであることが示された。

f:id:Hironsan:20190911051618p:plain
実験結果

BiLSTMをDTに変えたこと、またグローバルなコンテキストを使ったことで性能を改善している。DTの実装はそんなに難しくなさそうなので、今後は研究的にはBiLSTMに変わってこのような深い遷移を行うモデルがスタンダードになっていくかもしれないので、関連研究を抑えておく必要がありそう。

近傍検索によって解く固有表現認識と品詞タグ付け

ACL 2019より以下の論文を紹介。こういう系列ラベリングのやり方もあるか、と思った一本。

この論文では、入力文中のトークンをラベルの付いたデータベース中のトークンに対して近傍検索を行うことで系列ラベリングを行う手法を提案している。一般的な系列ラベリングを解く手法と異なり、検索によって系列ラベリングを行うのが面白いところ。実験は品詞タグ付けと固有表現認識に対して行い、まずまずの性能と高いzero-shot learning性能を示した。

この論文で提案する手法では、系列ラベリングを検索によって行う。入力系列をx、予測を\hat{y}とする。そのとき、データベースからM個の文と対応する出力系列のペアD=(x'^{(m)}, y'^{(m)})を検索する。その情報を基に、t番目の入力x_tのラベル\hat{y}_tを予測する。以下に品詞タグ付けのイメージを挙げた。たとえば、入力文中の「Ms」のラベルは、データベース中の「Mr」と「Ms」が近いことがわかれば決定できることを示している。

f:id:Hironsan:20190910075318p:plain
品詞タグ付けの例

検索によってラベルを決めるので、必要なのは入力文中のt番目のトークx_tとデータベース中のm番目の文のk番目のトークx'^{(m)} _ kの類似度を計算することになる。式にすると以下のように計算することになる。ここで、\boldsymbol{x} _ t\boldsymbol{x'^{(m)} _ k}はそれぞれ、文脈を考慮したトークンの表現方法となっている。以下ではこれらの表現はBERTから得たものとしている。

\displaystyle{
p(y_t=y'^{(m)}_k |x, D) \propto \exp(\boldsymbol{x}_t^\mathrm{T} \boldsymbol{x'^{(m)}_k})
}

BERTから得たトークンをそのまま使ってもいいのだが、この論文ではそれらのトークンの表現を以下の目的関数を最大化することでFine-tuningしている。式の意味としては、入力文中のトークンとデータベース中のトークンでラベルが一致するものがあればその確率が大きくなるようにトークンの表現をチューニングするというような意味になっている。

f:id:Hironsan:20190910081911p:plain
目的関数

実験は固有表現認識と品詞タグ付けについて行っている。品詞タグ付けは通常のPenn Treebankの品詞タグとUniversal品詞タグを使っている。その結果は以下の通り。著者たちはBERTをFine-tuneした場合に匹敵する性能を得られたと主張している。ただ、この表のBERTの値はBERTの論文から持ってきたものではないことに注意する必要がある。

f:id:Hironsan:20190910074639p:plain
品詞タグ付けと固有表現認識の性能

次に、Zero-shot Learningの性能を示している。設定としては、3つあり、CoNLLで学習させてOntoNoteで予測を行うパターン、Universal品詞タグを学習させて通常の品詞タグを予測するパターン、チャンキングを学習させて固有表現認識を学習させるパターンとなっている。その結果は以下の通り。BERTをFine-tuneするより遥かに良い結果を得られていることが確認できる。

f:id:Hironsan:20190910074707p:plain
Zero-shotの性能

勉強不足なもので、こういった方法で系列ラベリングをできることに感心した。普通に固有表現認識や品詞タグ付けをする分にはそれほど性能は高くないが、タスク間のZero-shot learningの性能はなかなか優秀に見える。この手法が言語間の転移も可能になるのかは気になるところではある。