More Related Content Similar to PFI Christmas seminar 2009 Similar to PFI Christmas seminar 2009 (20) More from Preferred Networks 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. 最後に一言
• 研究開発は楽しい
– 違う分野の話が共通点があったり新発見が
あったり楽しい
– 一緒にやった方が楽しい
– 実装してみるとよくわかる
• 今日はクリスマスイブ