PFI Christmas seminar 2009

5,390 views

Published on

Published in: Technology, Education

PFI Christmas seminar 2009

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

×