Ahogrammer

Deep Dive Into NLP, ML and Cloud

ラベルの欠けているデータセットから固有表現認識のモデルを学習させる

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

この論文は不完全なアノテーションの付いているデータから固有表現認識を行う論文。背景として、我々が固有表現認識のモデルを学習させる際は学習データセットが完璧にアノテーションされていることを仮定しているが、実際にはそういう状況ばかりではないよね、という点を挙げている。たとえば、以下の画像中の文では"John Lloid Jones"と"BBC radio"にPersonとOrgを付けるのが正しいが、実際にはそう付いていない場合があることを示している。

f:id:Hironsan:20190906074420p:plain
完璧なアノテーションと不完全なアノテーション

これまでにも不完全なアノテーションに対する固有表現認識の研究はされていているが、それらの研究では不完全さに対する仮定に2つ問題がある。一つは、不完全なアノテーションを得る際に、単語やスパンレベルでラベルを取り除くのは現実的ではないという点。たとえば、上の画像のA.1ではJohnやradioだけにアノテーションされているが、人間がこのようにアノテーションすることはないと言っている。もう一つは、明示的にOタグをアノテーションすることはないという点。そのため、この論文ではラベルはA.3のように付けられていると仮定している。

これらの問題に対して、この論文ではCRFの損失関数に工夫をすることで対処している。通常の損失関数では、入力系列\boldsymbol{x}^{(i)}と出力系列\boldsymbol{y}^{(i)}のペア(\boldsymbol{x}^{(i)}, \boldsymbol{y}^{(i)})に対して、以下の図の上の損失関数を使ってモデルを学習させる。それに対し、提案する損失関数では、不完全な出力系列\boldsymbol{y_p}^{(i)}に対して、ありえるラベルの組み合わせC(\boldsymbol{y_p}^{(i)})を生成し、以下の図の下の損失関数を使ってモデルを学習させる。

f:id:Hironsan:20190906090212p:plain
通常の損失関数と提案する損失関数

この損失関数で表現したいことを図にすると以下の右下になる。左上は完璧なアノテーションが存在する場合を表している。右上は不完全なアノテーションに対して通常の損失関数を使った場合を表している。これを見ると、アノテーションされていない部分のタグをOと見なしてることがわかる。一方、左下は不完全な部分に対して、ありえるラベルの組み合わせを考えた場合を表している。ただ、左下ではすべてのラベルの組み合わせを等しい確率で扱ってしまうので、確率分布qを用いて重み付けしたのが右下の図であり、提案する損失関数となっている。

f:id:Hironsan:20190906091521p:plain
損失関数で表現していること。色の濃淡で確率の高低を表している。

というわけで、問題は確率分布qをどう推定するか?という話になるのだが、論文中ではHardとSoftの2種類を提案している。Hardでは最も可能性の高いラベル系列に対して確率1を割り当て、それ以外の系列に対しては確率0を割り当てる。一方、Softではありえるすべてのラベル系列に対して確率を割り当てる。この確率分布の推定は学習データセットをk分割交差検証することによって推定している。

以下に実験結果を示す。この実験では4つのデータセットに対する固有表現認識の性能を示している。結果を見ると、完全なアノテーションが付いた場合に比べると性能は劣るが、まずまずの性能は出ていることを確認できる。特に、ラベルの付いていない箇所をOタグとみなす手法(Simple)と比べると、性能が大きく向上していることがわかる。

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

感想

固有表現認識のアノテーションは辛い作業だ。そういうわけで、固有表現辞書とDistant Supervisionを使って学習用データセットを生成するわけだが、そういった手法の場合、不完全なアノテーションが性能の劣化原因となってしまう。この論文の手法は、比較的シンプルに問題を解決できる点が優れていると思う。ただ、ラベルの組み合わせを考えているので、ラベル数が多い場合には使いにくそうな手法ではある。また、計算時間の長さとDistant Supervisionで用意した大規模データの組み合わせが噛み合わないかな?と感じた。

以下のブログで実装付きで紹介されてました。すばらしい。

kajyuuen.hatenablog.com