クラウドソーシング時代の能動学習

例によって,ICML2011からActive Learning from Crowdsのメモ書きです.
クラウドと銘打ってはいますが,結局のところ複数アノテーターがいるときにどのように能動学習を行うとよいか,という手法提案の論文になっています.

概要

  • アノテーターが複数いる場合の能動学習手法の提案
    • ラベル付けしたいデータに関して,一番信頼できるアノテーターのラベル付け情報を信頼する
    • ただ単に多数決を取るよりも高い精度を達成

能動学習 (Active Learning)

  • 今までラベル付けしたデータから学習器を生成
  • 上手く分類出来ないデータ(今後の学習に一番有効なデータ)を選び,アノテーターによるラベル付け
  • 上記の操作を繰り返す

複数アノテーター

  • 多くの教師あり学習では,一人のアノテーターがラベル付けすることを暗に仮定
    • この仮定は本当に正しいか?
    • 近年は,多くのあのテーターが同時にラベル付けする事も多い
    • Ex. Amazon Mechanical Turk

複数アノテーターの利点

  • 専門家間でも意見が食い違う事が多い
  • データによって必要な専門知識が異なる
  • 専門家一人雇うよりも,複数の非専門家を雇う方がローコスト
  • アノテーター間の知識共有がより簡易かつ一般的になっている
    • 以上の理由から,複数アノテーターが流行っている

複数アノテーターの問題点

  • あるアノテーターは他のアノテーターより信頼できる
  • 悪意のあるアノテーターが入り込む
  • あるアノテーターが別のアノテーターに影響を受ける
  • アノテーターによって事前知識(事前分布)が異なる
  • データの分け方によって結果が異なる

やりたい事

  • 複数アノテーターにおけるActive Learningでは,同じデータでも意見が割れることがあり,正しいラベル付けを行うのが困難
    • ラベル付けを行うべきデータを同定したい
    • 一番信頼できるアノテーターを同定し,その人のラベル付けを信頼したい

モデル構築

  • まずは,マルチアノテーターモデルを構築

p(Y,Z|X) = \prod_{i} p(z_i | \mathbf{x}_i) \prod_{t | t\in \tau_i} p(y_i^{(t)} | \mathbf{x}_i, z_i)

    • x_i : 入力ベクトル, z_i : 出力ラベル, y_i^{t} : アノテーターtがつけた出力ラベル, \tau_i : データiにラベル付したアノテーター集合
    • EMを使えと言わんばかりの式
  • 次に上のモデルから,以下の処理を繰り返す(式略)
    • ラベル付けを行うべきデータポイントを探索,そのポイントに一番近いデータを抽出
    • 一番信頼できるアノテーターを同定し,そのデータにラベルを付与
    • パラメータを再学習

個人的に思うところ

  • Multi-AnnotatorsのコンセプトとActive Learningのコンセプトが相反している気がして,これらを組み合わせることに納得が行かない
    • Active Learningは,ラベルが曖昧でないデータは学習によってラベル付を行う.曖昧なデータは正確なラベルを付与することで高性能な学習器を低コストで生成する,という理解
    • 一方Multi-Annotatorsは,専門家でない大量のアノテーターを集めて,高速かつ安価にラベル付け可能にする,という理解
    • 少量のデータでラベル付け出来ない部分は,Multi-Annotatorsを用いても意見が割れるだけなので,こういうデータのラベル付けにこそ専門家が必要なのでは
    • その意味では,一番信頼できる人を見つけ出そう,という意図自体は良いと思うが…