機械学習・自然言語処理の勉強メモ

学んだことのメモやまとめ

(論文)Pretrained language models

はじめに



以前にPretrained language modelsの基本について書きました。
kento1109.hatenablog.com

今回はドメイン領域(Biomedical)での固有表現認識(NER)について適用した論文をまとめます。

[1711.07908] Effective Use of Bidirectional Language Modeling for Transfer Learning in Biomedical Named Entity Recognition

どんな論文?



Biomedicalから重要なエンティティ(薬品名、病名、組織名など)を抽出するタスクはかなり昔から研究されており、今でも重要なタスクです。
このドメインで抽出したいエンティティはIREXが定義している一般的なエンティティ(人名、都市名など)とは大きく異なります。下記が医療文書に出現するテキスト例で、赤いマーカーが「disease entities」、黄色いマーカーが「anatomical entities」です。
f:id:kento1109:20181008134739p:plain

このようにBiomedicalのエンティティとなる単語はドメイン固有な場合は多く、一般的なコーパスWikipediaなど)ではほとんど出現しません。

そこで一般的なコーパスから訓練済モデルを構築するのではく、PubMedデータセットを用いて学習を行い精度向上を達成しました。
また、単語の分散表現をCharacter-Level CNNでも学習している点も面白いと思いました。

手法



NERモデル構造は下図の通りです。
f:id:kento1109:20181008142538p:plain
これらのレイヤーのうち、

  • character-CNN
  • word embedding
  • BiLSTM(LSTM_F + LSTM_B)

言語モデルで事前に学習します。

言語モデルの構造は下図の通りです。
f:id:kento1109:20181008143148p:plain

また、NERモデルのうち、

  • Decoder
  • CRF

はNER固有なので、ランダムな初期値を用います。
順番に各レイヤーを見ていきます。

character-level CNN

単語を文字単位で畳み込んでその特徴量を抽出します。
f:id:kento1109:20181008144447p:plain

単語レベルで捉えられない文字の特徴量で単語を表現できることが期待できます。

word embedding

単語レベルの特徴量を抽出します。
言語モデルでは一般的なレイヤーと言えます。

Bidirectional LSTM

character-level CNNとword embeddingの特徴量を結合したものをこの層の入力とします。

実験結果



実験には下記の4つのデータセットを利用しています。
f:id:kento1109:20181008150933p:plain:w500
言語モデルとNERの学習に用いたデータセットは同じみたいです。

また、言語モデルの訓練においても、embedding層の初期パラメータとしてskip-gramで学習しています。事前学習の事前学習みたいなものです。

結果は下図の通りです。概ねSOTAを達成しています。
f:id:kento1109:20181008151209p:plain:w800

事前学習の有無の結果は下図の通りです。事前学習の効果が見られます。
f:id:kento1109:20181008151446p:plain:w500

その他



ドメイン固有のタスクの場合、教師データの準備が容易ではありません。この論文では、同じデータセット言語モデルという教師なしモデルで事前学習しました。
一方、ドメインに依存しない教師ありデータセットの場合は比較的入手が容易です(日本語の場合はそうでもないですが・・)。そのデータセットを使って事前学習を行う手法もあるみたいです。