【勉強会】第4回ステアラボ人工知能セミナー: 群衆の知を引き出すための機械学習('16/07/07)

# はじめに
本記事は、第4回ステアラボ人工知能セミナーの勉強会レポートです。
ステアラボ人工知能セミナーは千葉工業大学主催で行われ、16年7月7日に第4回が開催されました。
第4回の講師は京都大学の馬場先生でした。「クラウドソーシングと機械学習」について講演されました。
講演内容のスライドは以下を御覧ください;
http://www.slideshare.net/stairlab/4-63932628

# テーマ
- 群衆をうまく組み合わせる（多数決でうまくいく）
- 群衆から専門家を見つける（マイナー問題）
- 機械学習のために群集を活用する

# クラウドソーシングとは
インターネット上で不特定多数の人に仕事を依頼する仕組み。
例：Amazon Mechanical Turk, CrowdFlower、ランサーズ、Yahoo！クラウドソーシング

### タスク依頼例
**データセット構築**

- ラベル付き画像→**ImageNet**（クラウドソーシングで作業依頼）
- **Visual Genome**：詳細ラベル付きの大規模画像データセット（オブジェクト・関係・属性）<br>
 　→多段パイプラインで詳細ラベルを獲得<br>
 　→シーン領域選択・説明文記述→説明文中のオブジェクト抽出・領域選択<br>
  →オブジェクトの関係・属性抽出

### 「品質保証」はクラウドソーシングの重要課題
<解決優先度>
「品質保証」 > 「タスク分割、割当、報酬設計、強調作業支援 etc…」

<目的>
検品無しで良い成果物を獲得する
不真面目なワーカ→全問で最初の選択肢、「あああ」とひたすらうつ（大量データの検品では気づくの難しい）

※ImageNetの工夫: 複数人が同じ画像を検品
※Visual Genome: 別のワーカに検品させる、インターフェース利用（画像定間隔表示、Yesの場合のみキーを押す）


## 群衆をうまく組み合わせるパターン
### 回答統合
- 群衆の回答から正解を予測
- ワーカが複数タスクに回答することを利用して能力を推定、正解予測に利用
- タスク・ワーカー行列において、ワーカの回答を要素に入れる
- 真陽性（$\alpha_1^j$）と真陰性（$\alpha_0^j$）の確率をパラメータにして、能力を推定する
- 正解と能力を交互に推定する（**正解を潜在変数としたEMアルゴリズム**）
- **ワーカの能力**、**タスクの難易度**を重み、入力値にして正解確率を評価する
- 正解確率を**シグモイド関数**でモデル化する(2009 NIPS)<br>
$$Pr[y_{ij} = t_i] = \frac{1}{1 + \exp(-w_jx_i)}$$
		
（w: 能力, x: 簡単さ）
	
### ワーカーのタスクの相性を考慮するモデル
(P.Welinder et al. NIPS 2010)

```math
Pr[y_{ij} = 1] = \Phi\Big( \frac{{\bf w}_j^T{\bf x}_i - \tau_j}{\sigma_j} \Big)
```
$\Phi$: 標準正規累積分布関数
${\bf w}$: 能力
${\bf x}$: 潜在特徴 
$\tau$: 閾値
$\sigma$: スケーリング
	
### 能力類型を導入し複数ワーカーをグループ化する
(M.Venanzi et al., WWW, 2014)
- 能力類型で複数ワーカをまとめることで推定を効率化
- ひとつの類型にひとつのコミュニティが対応
- 各ワーカーはいずれかのコミュニティに属する
- 各ワーカの能力は、所属コミュニティの能力類型にノイズが加わって生成される	

### ワーカの確信度を利用する
(S.Oyama, Y.Baba, IJCAI 2013)
- 入力データに自信の有無も加える
- $\beta_{10}^j$: 正解がTRUE、回答がFALSEのときに確信がある確率

### ソーシングタスクによる分類
- 真偽・選択型（写真中の特定物の有無判定）： 多数決で成果物を統合する
- 数値型（写真中の特定物の数え上げ）：回答候補が無限<br>→**間違い方の偏りをCRPで表現**（人が多いテーブルに人が集まりやすい傾向をモデル化）<br>→CRPにより3種類の回答行動をそれぞれモデル化する;<br>**正答**、**既出の誤答を選択**、**未出の誤答をする**
- 非定型成果物：回答統合が困難なので、代わりに品質を推定したい<br>
▼ 評価自体も別のワーカーに依頼する、評価結果を統合<br>
▼ クラウドソーシングで成果物を評価するプロセス<br>
▼ 評価結果を利用して品質を推定<br>
▼ 成果物作成ワーカと評価ワーカの能力をモデルに導入<br>
　・成果物作成：基本能力$\mu$と分散$\lambda$（得意不得意）<br>
　・評価者：バイアス$\tau$（甘め・辛め）、分散$\kappa$（好き嫌いによる散らばり）<br>
　・採点結果の平均で→うまくいってから統計（別の人に評価させるという点が大事！！）

実験の再現性の担保：モデル回答統合テストサンプルがあったりする
	（自前でやるとなると変数が多くとっても難しい！）

## 群衆から専門家をみつけるパターン
難しい問題（正しく回答できる人が少ない問題）は回答統合がうまく機能しない→専門家の発見が解決の糸口になる

<専門家発見方法アイディア>

- 事前テスト用意
- 正解既知のタスクを混ぜ、正答率で見つける

機械学習手法では
### ①**属性利用法**

- 属性（学歴・専攻）を専門家発見に利用
- 新しいワーカにも適用しやすい利点
- **ボトムアップ選択とトップダウン選択**<br>
少数の正解既知のタスクを用い、一部のワーカの能力を推定する<br>
ボトムアップ選択→ワーカの属性から能力、属性ベクトルの線形和<br>
トップダウン選択→能力の高い人が満たす属性、分散分析を用い、重要な属性を絞り込む

### ②ウェブ広告を利用した専門家発見
(P.Ipeiorotis, E. Gabrilovich, *WWW*, 2014)

1.ウェブ広告を利用して
　ワーカの興味にあった問題を出せる
　答えるかどうかの判断はワーカ任せ(self-selection)

2.ワーカの探索と活用をバランスするため**MDP（マルコフ過程）**を利用
 回答率・正答率をコンバージョン率とし、タスク広告定時に利用
 各ワーカの回答状況に応じ、探索・活用のどちらを決めるべきかMDPで決める

### ③問題文からワーカのトピック別能力を推定
(F. Ma et al., *KDD*, 2015)
問題文から問題トピックを推定
問題文生成モデルと回答生成モデルの組み合わせ

### ④翻訳者の発見
(Y.Ehara, Y.Baba, *IJCAI*, 2016)
自己申告語彙テストにより低コストで翻訳能力を推定

## 機械学習のために群集を活用する
- クラウドソーシングで機械学習のデータを集めをする（ラベル決め）
- ラベルの品質を見る
- 群衆がつけた訓練モデル：ラベル統合後の学習は遠回り
- 予測モデルと群衆のラベルの生成モデルを突き合わせる

①特徴抽出の決定に群集を活用
・予め用意した質問文に対する回答を特徴として利用(問題文を自分でつくるので手間かかる)

②ワーカに特徴抽出のための質問文つくらせる
・正例・負例ペアを見せ、違いを見つけさせる

③Kaggleなどのデータ解析コンペティション
・参加者各々がモデルを構築・精度を競い合う
・予測モデリングのクラウドソーシングとも言える
・最終的にモデルを統合することもできる
・群衆の力で多様なモデルを探索

④探索型データ解析に群集を活用：可視化ツール
・可視化を通じて仮説を導く
・**Manyeyes**（皆でデータについて議論するための可視化ツール）→可視化＋フォーラム
・Kaggleも同様のツールあり（"**Scripts**"）→再現コードと可視化
・クラウドソーシングから仮説発見させる方法 (W.Willet strategies for crowdsourcing social data analysis CHI 2012)

<その他>
・ビッグデータ大学（ゲノム解析コンペティション始まる）
・費用設計の研究
　→強化学習（何円で依頼すると報酬がいくらになるのようなテーマ、Banditアルゴリズム）
・報酬と真面目さの関係を導くのは難しい
→正しい答えがない（アンケートタスクなど）タスクに対する、統計的アプローチは難しい