More Related Content Similar to PFI Christmas seminar 2009 (20) More from Preferred Networks (20) PFI Christmas seminar 20092. 何はともあれ、まず
Merry X’mas !
こんな日にセミナーを
ルドルフ達
見てくれるのに大感謝だよ
投げやりな
僕でごめんね
僕はサンタじゃないよ
4. 研究開発チームとは
• 研究分野で面白いものを探し出し作る
– ハイリスクで危なそうなの大好き
• 最新の研究成果を毎週サーベイし実装
• 分野を限らず、面白そうな話題を選ぶ
• 実際に実装
– 1~2ヶ月でプロトタイプを一つ作る
• 現メンバー
– hillbig / oxy / iwiwi / tabei
5. 研究開発チーム
活動の様子
• 自宅から作業
– 全員が時間確保できるのが夜間のため
– 眠くなるまで
• Skypeで音声をつなぎ論文を一緒に読む
• 開発時はscreenで画面共有
>sudo su 開発用共有アカウント名
>script /dev/null
>screen –x プロセス番号
– コーディング方法を生で勉強できる
6. 開発例 ・文要約
Yahoo! Topicsより
• ニュース/ブログ記事を13文字で要約
– 単語を削除して要約する (文圧縮)
• 基本方針
– 線形計画法を利用した手法をベース
– 要約の条件を制約として入れられる
– 要約はスコアが最大になるものを選ぶ
– “Modelling Compression with Discourse
Constraints” [EMNLP 07] がベース
7. 例
インテル、欧州委員会による独禁法違反の決定を不服として
x1 x2 x3 x 4 x5 x6 x7 x8 x9 x10 x11 x12 x13
欧州第一審裁判所に訴え
x14 x15 x16 x17 x18 インテル独禁法違反不服訴え
線形計画問題なので既存の
xi=1 要約時に残る文節 ソルバーが使える。ルールを自由
に組み込める ルール復古
xi=0 要約時に削除する文節
max Σisixi 下記条件の元でスコアを最大化
Σilixi ≦13 (全体の長さは13以下) liはxiの長さ
xi-xj=0 (xiとxjは同時に含まれる)
xi-xj≧0 (xjが含まれるならxiは含まれる)
8. 実行例
• 総務省、「地球温暖化対策ICTイノベーション推
進事業」の2009年度研究開発テーマを決定
システム⇒総務省温暖化対策推進事業決定
正解例 ⇒総務省温暖化対策のテーマ決定
• ディズニーランドで突然プロポーズして、相手に
必ず Yes といわせる方法
システム⇒突然必ずYesといわせる方法
正解例 ⇒プロポYesといわせる方法
11. 内容
1. オンライン学習の最前線
– Multi-Class Confidence Weighted Algorithm
– Adaptive Regularization Of Weight Vectors 機械学習
– Online EM for unsupervised models
2. より強力な簡潔データ構造
– Fully-Functional Succinct Trees データ構造
– Storing a Compressed Function
with Constant Time Access
3. リアルタイム画像編集
画像
– PatchMatch
13. 機械学習
(Machine Learning: ML)
• サンプルデータを利用し、有益な規則、
ルール、知識を獲得する
=入力xから出力yへの関数fを求める問題
問題 入力 出力
– スパム分類 文書 スパムか?
– 情報検索 クエリ 関係する文書
– 機械翻訳 日本語の文 英語の文
– 医療診断 遺伝子情報 発病するか
– ロボット制御 センサ情報 次の行動
14. 線形識別器による分類
• 入力xと出力yから得られる情報で
特徴ベクトルφ(x, y)∈Rmを作る
– 作り方例は次項
• yのスコアs(x,y) =wTφ(x, y)
– 重みベクトルw∈Rm とφ(x, y)の内積
• 一番高いスコアを持つyが予測結果
f(x) = argmaxy s(x,y)
– 何が効くか分からないが、効きそうなルールを全
部使う、その重みは自動決定
– NB, SVM, MaxEntなど多くが属する
15. 特徴ベクトルの作り方例
文書分類の場合
• 各次元が文書中に出現した単語に対応
– Bag of Words, BOW表現
鳥取 1
鳥取では … …
φ(x)= (0…0,1,0…0,1,…)
砂丘が
有名です.. 砂丘 1 “砂丘”’に対応する次元
… … 15
“鳥取”’に対応する次元
16. 我々が日々扱うデータは
大きくなっています[IBM風]
• Google N-gram Corpus
– 1兆語
– 1000億文
• Giga-word Corpus
– 次の文字を予測する問題
– サンプル数10億 問題を1000台で3.5時間で学習
[G. Mann, et. al NIPS09]
⇒より高速で省スペースな学習が求められている
17. オンライン学習
• 訓練例を一つずつ見てwをすぐ更新する
• 収束が速く訓練例を保持しなくてもよい
• 実装コストは圧倒的に小さい
• 性能保証も可能
– Regret Analysis [S. S.-Shwartz 07]
最適な単一のw*を使った時との差
• これまでのオンライン学習手法は
SIG-FPAIのチュートリアル資料を参照
18. Multi-Class Confidence
Weighted Algorithm (CW)
[K. Crammer, et. al, EMNLP 09]
• 多くの言語処理の問題で最高精度を達成
• 重みベクトルを単一のパラメータではな
くGaussian分布上N(μ,Σ)で保持する
従来の更新例
単一のパラメータ
wi
に足し引きするだけ
1.7 0.6
CWの更新例 パラメータ自体が分布を
wi 持っている
平均 1.7 平均0.6 (パラメータ間も)
分散 0.5 分散 0.4
19. 従来のオンライン学習器と
CWとの比較
• 従来:ある特徴の更新回数が多くても少な
くても、同じ更新幅
• CW:ある特徴の更新回数が多いなら小さ
い少ない更新幅、少ないなら大きい更新幅
– 更新回数が多いならその重みには自信がある
⇒低頻度の特徴でも効率良く学習可能
⇒学習データを一回走査するのみで高精度
20. CWの学習更新式
前のパラメータにKLダイバージェンス
で一番ちかいパラメータ
今の訓練データをη(>0.5)の確率で
正しく分類可能
この操作のため、問題全体が凸最適化ではない
21. CWの学習更新式 (続)
• 先程は解けないので次の近似を適用
1. 全てのr≠yi についてrよりyiの方がスコアが
高くなる確率がηより高い
2. スコアが高い上位k個のクラスだけ考慮
3. パラメータ更新は各クラス毎に順に
3が更新対象 5が更新対象
各クラス
のスコア
y=4が正解
1 2 3 4 5 6 1 2 3 4 5 6 1 2 3 4 5 6
• パラメータ更新は閉じた式で得られる
22. [K. Crammer, et. al, EMNLP 09] 殆んどのタスクで既存のオンライ
ン学習のみでなく通常の学習器
より高精度
News Groupsのトピック
Amazonレビューの上位7タイプ
Amazonレビューの上位タイプ
EnronのUser Aの上位10フォルダ
EnronのUser Bの上位10フォルダ
NewYork Times
23. Adaptive Regularization
Of Weight Vectors (AROW) [NIPS 09]
• CWは更新時に正則化が入っていない
– 訓練例にノイズがある場合、急激に悪くなる
• 学習時に次の条件を考慮し最適化
1. 今の訓練例を正しく分類できる CWはこれが
いつも最優先
2. 前のパラメータと近づける
3. 各特徴のConfidenceを更新毎に上げる
• CWと同じように閉じた式で更新可能
24. 実験結果
AROW > CW
ノイズ 0% ノイズ 10% ノイズ 30%
• ノイズ大⇒AROWの精度>CWの精度
25. 教師無学習:EMアルゴリズム
(期待値最大化法)
• p(x, z; θ)
– x: 観測可能な変数 z:観測できない変数
– θ: 観測可能な変数
• データの尤度L(X, θ)を最大化する
• E-step
– 今のθでのzの期待値q(z|x)を求める
⇒(x,z)のペアの出現回数を数えるだけ
• M-step
– 今のzでL(θ)を最大化するθを求める
26. Online EM
[P. Liang, D. Klein, NAACL 09]
• EMは収束が非常に遅い
– 品詞推定だと数百回繰り返しが必要との報告も
• オンライン学習と同じようにデータを観測
するたびにq(z|x) の期待値を更新する
– 回数c(x, z)とc(x)を保持し、q(z|x)は必要に
なったときに計算q(z|x)=c(x,z)/c(x)
– c(x, z)の更新時は前回のものと今回の結果の線
形補完で行う
c(x, z) := μc(x,y) + (1-μ)c’(x,y)
• 数回で収束
27. オンラインEM
結果例 観測可能
• 隠れマルコフモデル (HMM)
– P(隠れタグ⇒隠れタグ)
P(隠れタグ⇒出力)
• ohmmを利用
• 日本語の単語推定
– 文数 10万
– 単語数 200万 従来EMは約100回
– 単語種 7万 程度で収束した
– 隠れクラス数 20
最初は大きい単語の
クラスが決まるだけで
あまり意味ない
29. 簡潔データ構造
• 作業スペースが極限まで小さいながら、
操作の計算量が従来データ構造と同じ
– 集合・木・関数(連想配列)・グラフ 等
• 多少計算量が大きくなったとしても、全
てを主記憶上に載せるのが最重要
• 非常に実用的な話
– Google IMEはtxの良クローン(rx)を利用し非
常に大規模な辞書情報の圧縮格納を実現
– 最新の全文検索もフル活用
30. 全備簡潔木
Fully-Functional Succinct Trees
[Sadakane, Navarro SODA10]
• 全操作を効率的にサポートした順序木
– 全操作が一つの基本操作から実現できる
• 動的更新も可能で実装は簡単
• 内部ではBP表現を利用
1
2 6
3 4 5 7 8
順序木の例
(番号はDFSの行きがけ順) txが利用
32. ±1関数
• P[0...n-1] 入力ビット配列(BP)
• g: ±1関数
– ±1関数:入力が0,1で出力が-1,0,1のどれか
– ±1関数は値不変なものを除き6種類
符号を反転させたものを使えば3種類
gの例: π(0) = -1, π(1) = 1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
P 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0
π 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1
33. 基本操作(1/3)
sum
• i 番目から j 番目の関数値の合計
– sum(P, π, 0, i)はi番目に対応する節点の深さ
– sum(P, π, i, j)はiとjに対応する節点の深さ差
sum(P, π, 6, 12)= 1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
P 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0
π 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1
34. 基本操作 (2/3)
fwd_search / bwd_search
• iより後方で初めて合計がdとなる位置
• 同様に、iより前方で初めて合計がdとなる位置を
返す関数をbwd_searchとする
fwd_search(P, π, 4, -1) = 10
g = πの例
1 0 1 0 1 0 -1 0 1 0 1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
π 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1
35. 基本操作 (3/3)
rmq, rmqi
• iとjの間で合計が一番小さい値を返す
– 小さい値を返す位置を返す関数をrmqi
– これらの最大値バージョンをRMQ RMQi
rmq(P, π, 4, 14) = 10
g = πの例
1 0 1 0 1 0 -1 0 1 0 1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
π 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1
1 0 1 0 1 0 -1 0 1 0 1
36. 基本操作による木の操作
• next-sibling fwd_search(P, π, i, 0)+1
• parent bwd_search(P, π, i, 2)
– d個上の祖先 bwd_search(P, π, i, d+1)
• lca(i, j) どちらか含まれるならiまたはj
それ以外 parent(rmqi(P, π, i, j)+1)
sum(P, π, 4, i)の結果(4に対応する節点からみた相対深さ)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
π 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1
3 2 1 0 1 0 1 0 1 0 -1 0 1 0 1 0 -1 -2
38. 基本操作の効率的な実現
Range min-max tree
[Sadakane, Navarro SODA10]
• 完全k分木で子孫中のEの最小値/最大値をm, Mに記録
– E := sum(P, π, 0, i) (i番目の節点の深さ)
– 完全k分木なので、これらは配列に記録可能(c.f. heap)
39. Range min-maxを使った
fwd_searchの実現
fwd_search(P, π,3,0) を探す
=3より後でE=1となる最初の場所
これらは様々なテーブルを駆使すると定数時間で実現できる
40. 動的簡潔木
• PをL~2Lの大きさのブロックに分割
– L=log2n , ブロック数はO(n / log2n)
• 追加削除時には適切に分割、併合をする
• 最小値/最大値の更新は
– O(1/2 logn)の大きさの表を使ってブロック
内の更新はO(log n)時間で可能
– 表の大きさはO(n1/2)=o(n)
• 全てO(log n)時間でサポート可能
42. 最小完全ハッシュ関数
MPHF
• キーs∈Sから[1..|S|]への全単射の写像
– 完全:キーが衝突しない
– 最小:写像先の大きさがキー種類数と同じ
⇒キーを保存しなくても参照できる
– このようなMPHF関数を実現するには
1.44n bit必要
– bep hashで検索すると関連資料が
見つかります
43. 連想配列 + MPHF
• キーs∈Sと値v∈Vを対応する
– 値はw bitで表され w bitの操作は定数時間
• 方針1 : MPHFの返り値を添字として使う
– 1.44n bitが勿体無い
44. 連想配列 + MPHF
• 方針 2 直接bit配列に写像する
– 複数の(MPHFではない)ハッシュ関数を用意
– それぞれの位置からw bit読み込み、それらの
xorの結果を値とする
– ビット配列の決定はGF2の連立方程式を解く
のと等価だが、greedyでも高確率に解ける
a b c
w bit
h3(s) h1(s) h2(s)
a xor b xor c = s に対応する値 v
45. Storing a Compressed Function
with Constant Time Access
[J. B. Hreinsson, et. al. ESA 09]
• 値は冗長な場合が多い
– 値の出現分布の偏りが非常に大きい
– 例:単語頻度を記録する場合、殆どが0か1
• 値をHuffman符号を使って記録する
– 符号長の上限を制限し、定数時間を守る
– prefix符号なので可変長でも一意に復元可
– さらに擬陽性有のフィルタを利用すると高頻
度の値を1bit未満で格納可能
47. PatchMatch: A Randomized Correspondence
Algorithm for Structural Image Editing
[C. Barnes SIGGRAPH 09]
• 彼らのデモをまずみてみます
• これらの編集をインタラクティブに行う
鍵がパッチの高速な近傍探索
• パッチ:画像の一部分、中心座標で指定
49. アルゴリズム
• 初期化:全位置xでf(x)をランダムに設定
– もし事前知識が使えるならそれを使う
• 最適化
– 各位置について左上から右下へ向かって順に次の二
つの操作を交互に行う(次は逆方向)
• Propagation:
– 隣の位置でより良いオフセットを見つけていたらそ
れを使う(隣で良いなら自分のとこでも良い)
– D(f(x,y)), D(f(x-1,y)), D(f(x,y-1))の最小値
• Random Search:
– 今の候補位置から、全方向に向かって距離は指数的
に順に減らしながらランダムに調べる
50. アルゴリズムの動作例
[C. Barnes SIGGRAPH 09]
• 左下の画像だけを使って左上の画像を復
元する
– パッチで探索したものを近傍の結果も混ぜて
多数決で各画素の色を決定する
54. その他見えた傾向
• 自然言語処理⇒教師無学習の研究が増えた
– 教師有学習が伸び悩み、教師無がより強力に
– 大量のデータ+高効率な学習器
• データ構造・アルゴリズム⇒現実的な並列化
– GPGPU、MapReduceなどで一気に現実的に
• 機械学習⇒大規模化
– tiny images(8000万画像)
55. 最後に一言
• 研究開発は楽しい
– 違う分野の話が共通点があったり新発見が
あったり楽しい
– 一緒にやった方が楽しい
– 実装してみるとよくわかる
• 今日はクリスマスイブ