唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

論文紹介 “Discriminative Learning with Natural Annotations: Word Segmentation as a Case Study” (ACL 2013)

研究室で論文紹介したので以下に資料を貼っておきます。
図表は論文中から引用しています

何故か研究室での論文紹介は、資料が英語で口頭説明が日本語なので、以下では日本語の説明を加えました。

英語が間違っている部分があると思いますが、コメントで指摘なりスルーするなりしてください。
スライドはこうした方がいいとかもあったらぜひ。

論文紹介

概要

中国語の単語分割がこの論文のタスク。
中国語や日本語などの言語では、単語の区切りに空白を入れていないため、文字列を単語に分解する処理が必要になる。
これらのタスクでは人手による教師ありデータが必要になることが多いが、そのようなデータの構築や更新には大きなコストがかかる
f:id:sucrose:20131008231407j:plain
この研究ではWebテキストに付与されているリンクやフォント、色などの構造的な情報を"natural annotation"、自然なアノーテーション(教師情報)とみなして、通常の教師ありデータに加えてそれらの情報を利用して学習を行う
Webテキストはリアルタイム性が高く、様々な分野の情報を含むコーパス(テキストデータの集まり)としてみなすことができ、これを訓練に使うことで分類器を最新の情報や他のドメインに適応できるようになることが期待できる
f:id:sucrose:20131008231854j:plainf:id:sucrose:20131008231903j:plainf:id:sucrose:20131008232045j:plain

手法

ベースとなる単語分割のやり方

それぞれの文字について、以下の4種類のラベルに分類していきます

  • 単語の最初
  • 単語の真ん中
  • 単語の末尾
  • 1文字の単語

f:id:sucrose:20131008233220j:plain
スコア関数は次のようになって各文字ごとの和になっています。
f:id:sucrose:20131008233319j:plain
これはViterbiアルゴリズムによって最大のスコアを持つラベル系列が計算できます
以下のスライド中の簡単な例のように、\(i\)番目の文字のスコアは\(i-1\)番目のスコアを利用して動的計画法で順番に求められます
f:id:sucrose:20131008233352j:plain
先ほどのスコア関数に含まれていたパラメータベクトルはパーセプトロンによって学習します
これはいわゆる二値分類に使う単純なパーセプトロンとはすこし違っていて、構造化パーセプトロンという構造のある出力を学習することができるモデルになっています

構造化パーセプトロンの説明は以下のスライドがわかりやすくておすすめです

構造化パーセプトロンのアルゴリズムは以下スライドで線を引いた部分が主な部分になっています
現在のパーセプトロンから最大のスコアのラベルを求めている(分類している)と、現在の分類結果と正解ラベルが異なる場合に特徴ベクトルの差をパラメータに足してアップデートしているのがわかれば十分だと思います
f:id:sucrose:20131008234221j:plain
特徴ベクトルには周囲の文字や、文字種の情報を使っています
f:id:sucrose:20131008234443j:plain

"natural annotation"を利用する方法

"natural annotation"(リンクなど)による境界は必ず単語の境界であるという仮定をおきます
この情報をデコードするときの制約として利用します
f:id:sucrose:20131008234739j:plain
ただし"natural annotation"だけでは他の部分がどうなっているのかわかりません
そこで教師ありデータで学習したモデルを利用して、制約なしのデコードをした場合と、制約ありのデコードをした場合との結果の差をパーセプトロンの訓練に利用します
f:id:sucrose:20131008235407j:plain
制約の有無によるスコアの差が大きいほどより重要な訓練データと考えられます
またこの"natural annotation"を使った手法はドメイン適応などにも利用できると書かれています
f:id:sucrose:20131008235741j:plain

実験

データセット

教師ありのコーパスとしてChinese Penn Treebank 5.0を、"natural annotation"がついたコーパスとしてWikipediaを利用しています
f:id:sucrose:20131008235813j:plain
また異なるドメインのデータセットもテスト用に使っています
f:id:sucrose:20131008235821j:plain

評価尺度

F値で評価しています
f:id:sucrose:20131009000054j:plain

結果

様々な数の"natural annotation"のついた文を追加した場合のF値の変化は以下のようになっていて、文を増やし続ければ上がるというわけではありませんでした
f:id:sucrose:20131009000124j:plain
以下のようにEnhancedの方では多くのドメインで改善が見られています
f:id:sucrose:20131009000158j:plain
先行研究(ただしChinese Penn Treebank 5.0を使ったもの)との比較でもよい結果が得られています
f:id:sucrose:20131009000341j:plain
というわけで人手による教師ありデータと比べて簡単に手に入る"natural annotation"を利用することでよい結果が得られました
f:id:sucrose:20131009000357j:plain

研究室での論文紹介後には「こういう部分的なアノーテーションを使った話はよくあるのではないか?」という質問をされました
そう言われるとありそうですけど、どうなんでしょうね……

ちなみに詳細は把握していませんが、日本語でもKyTeaが部分的なアノーテーションからの学習を採用していたような気がします