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