情報抽出タスクで流行りの distant supervision について調べてみた
最近(?)、情報抽出の分野で distant supervision という学習方法が注目されているみたいなので概要と基論文の内容をまとめてみました。
Distant supervision のざっくりとした説明
Distant supervision for relaton extraction without labeled data (Mintz et al., 2009)で提案されている手法で、ラベル付きデータの情報を手がかりに全く別のラベルなしデータからラベル付きの学習データを生成し、モデルを学習する手法です。
直訳すると「距離のある(distant)教師 (supervision)」ってとこでしょうか。1
それって半教師あり学習じゃないの??
と思いますよね!
たぶん大きな違いは、半教師あり学習はラベル付きデータを直接モデルの学習に使うに対し、distant supervision はラベル付きデータを手がかりに全く別のデータソースから学習データを生成する点かと思います。
モデルの学習に直接関与していない(ちょっと距離がある)ので “distant” と命名したのかなぁと思います。2
“distant supervision” という言葉を使ったのはこの論文が初めてだと思いますが、似たような研究はもっと前からあったみたいです。
何が嬉しいか?
- (比較的)少量のラベル付きデータを用意するだけで良い
- 大量のラベル付き学習データを生成できる
- 教師あり学習と違って誤った教師データも混ざる可能性もあるが、データ量が多いので影響を受けない
- 半教師あり学習よりも高い精度を担保できる
- (教師なし学習と違って)出力結果のラベルに名前を付与する必要がない
Distant supervision for relaton extraction without labeled data
distant supervision についてざっくり説明したところで論文のざっくりした紹介です。
タスク
- 入力: 2 つの entity (entity1, entity2) を含んだ文
- e.g. Washington, D.C. is the capital of United States of America.
- 出力: entity1 と entity2 の relation name
- e.g. /location/country/capital (entity1 is the capital of entity2)
これができると、/location/country/capital などの関係にある未知の entity1, entity2 のペアを抽出できることになります。
背景
- 教師あり学習では人手でラベルを付与する必要があるが、アノテーションには時間がかかるので学習データの量が限られる。
- 教師なし学習だと抽出された関係に名前を付けるのが大変。
- 半教師あり学習だと精度が悪い。
ラベル付きデータを生かしつつ大量のデータを使って学習して精度も担保したい!
→ そこで distant supervision ですよ!!3
手順
- Freebase の所有する 116 百万の <relation, entity1, entity2> 情報のうち不要な情報をフィルタリングしたり entity1 => entity2, entity2 => entity1 の関係をマージしたりして 1.8 百万にする
- Wikipedia の文に persons, organizations, locations のタグを付与
- Freebase に登録されている entity1, entity2 のペアを含む文を Wikipedia から抽出
- 例えば </location/country/capital, Washington, D.C., United States of America> から抽出された文の正解ラベルは /location/country/capital になる
- 抽出した文から素性を構築(素性については後述)
- 3, 4 の手順から作成されたデータを学習データとしてロジスティック回帰モデルを学習
- テストフェーズでは 4 で素性を抽出したのと同様にテストデータから素性を抽出し、分類器にかけて relation name を予測する
ラベル付きデータが Freebase、ラベルなしデータが Wikipedia に対応します。
Freebase データの具体例
/location/country/capital だと以下のようなデータになります。
cf. http://tinyurl.com/nlxblwa
{
"result": [
{
"name": "United States of America",
"id": "/en/united_states",
"/location/country/capital": [
"Washington, D.C."
],
"type": "/location/country"
},
{
"name": "Germany",
"id": "/en/germany",
"/location/country/capital": [
"Berlin"
],
"type": "/location/country"
},
...
]
}
最初のデータから </location/country/capital, Washington, D.C., United States of America> という関係が取得できることがわかるかと思います。よって、”Washington, D.C.” と “United States of America” という locations タグの付与された単語列を含んだ文をひたすら集めると、/location/country/capital の関係を述べた文が取得できるわけです。
素性
lexical features としては次の素性が使われています。
- entity1 と entity2 の間にある単語列
- entity1 と entity2 の品詞
- entity1 の左側の k 単語
- entity2 の右側の k 単語
syntactic features としては次の素性が使われています。
- entity1 と entity2 の依存関係
- entity1 と entity2 の依存関係とは関係のない 1 ノード(entity1, entity2 それぞれについて)
論文には “Astronomer Edwin Hubble was born in Marshfield, Missouri” という文の素性の例が載っています。
優位性
論文で主張している優位性は私が解釈したところ次の 4 つです。
- ラベル付きデータがデータベース (Freebase) なのでドメインに特化した学習結果にならない4
- データベースを使うので教師なし学習と違ってラベルにちゃんとした名前が付く
- 出力結果を確認して「label1 は国と首都の関係になってそうだから /location/country/capital」を割り当てる、みたいな作業が不要
- 大量のデータを利用できるので素性も増やすことができて分類精度が高くなる
- たとえ誤った文を抽出してしまっても (bad features) それらの影響が小さくなるようによしなに学習してくれる
- ラベルなしデータのデータソースに制限がない
- 学習データの生成はルールに従って文を抽出してラベルを付与するだけなので Wikipedia 以外にも適用可能
何に応用できそうか?
パッと思い付くのは知識ベースの構築でしょうか。
あるドメインに特化したものであれば、entity のペアと relation name は人手で準備するのも大した手間じゃないと思うので、
- 人手で作成した関係データを基に Wikipedia などのデータソースからデータを取得する
- 学習データを作成してモデルを学習
- 学習したモデルを使って 1 で取得したデータから未知の関係を抽出し、関係データに追加
- 1, 2, 3 を繰り返す
みたいな感じで知識ベースを構築すれば、形態素解析の精度向上や情報抽出に生かせそうです。
まとめ
最初のざっくりした説明の再掲みたいな感じですが・・・
- distant supervision はラベル付きデータの情報を手がかりに全く別のラベルなしデータからラベル付きの学習データを生成し、モデルを学習する手法
- 次の点で教師あり学習、教師なし学習、半教師あり学習よりも優位
- (比較的)少量のラベル付きデータを用意するだけで良い
- 大量のラベル付き学習データを生成できる
- 教師あり学習と違って誤った教師データも混ざる可能性もあるが、データ量が多いので影響を受けない
- 半教師あり学習よりも精度を担保できる
- (教師なし学習と違って)出力結果のラベルに名前を付与する必要がない