MapReduceによる大規模データを利用した機械学習

33
1 MapReduceによる大規模 データを利用した機械学習 株式会社Preferred Infrastructure 岡野原 大輔 [email protected] @hillbig 2011 2/22(火) Hadoop Conference Japan 2011

description

Hadoop Conference Japan 2011での講演資料

Transcript of MapReduceによる大規模データを利用した機械学習

Page 1: MapReduceによる大規模データを利用した機械学習

1

MapReduceによる大規模データを利用した機械学習

株式会社Preferred Infrastructure

岡野原 大輔

[email protected]@hillbig

2011 2/22(火) Hadoop Conference Japan 2011

Page 2: MapReduceによる大規模データを利用した機械学習

22

自己紹介

株式会社 Preferred Infrastructureフェロー, 研究開発チームリーダー

専門分野

自然言語処理 (情報理工学博士)携わった分野は形態素解析、文書分類/クラスタリング、専門用語抽出、評判分類、情報抽出

機械学習,統計処理・圧縮データ構造,データ圧縮

主な業務内容有用な技術を新規開発・発掘しプロダクトに反映

他社との共同研究開発

Hadoopを利用したデータ解析の案件も数件

Page 3: MapReduceによる大規模データを利用した機械学習

33

発表概要

MapReduceと機械学習機械学習でできること

Apache Mahout

大規模並列分散処理の最前線並列分散の機械学習

今後注目の技術Dremel:対話的なアドホッククエリ

Page 4: MapReduceによる大規模データを利用した機械学習

44

発表概要

MapReduceと機械学習機械学習でできること

Apache Mahout

大規模並列分散処理の最前線並列分散の機械学習

今後注目の技術Dremel:対話的なアドホッククエリ

Page 5: MapReduceによる大規模データを利用した機械学習

55

機械学習

データから有用な規則、ルール、知識表現、判断基準などを抽出する[wikipedia]

様々な分野の問題に利用可能レコメンデーション / クラスタリング / 分類 / 市場予測 / 評判分析 / 情報抽出 / 文字認識 / ロボット・・

データがあるところ、どこでも使える

Page 6: MapReduceによる大規模データを利用した機械学習

66

機械学習の普及の要因:タスクと手法の分離

各タスク固有の問題を、抽象化し学習手法とタスクを分離することができた

文書 (0, 1, 0, 2.5, -1, …)

(1, 0.5, 0.1, -2, 3, …)

(0, 1, 0, 1.5, 2, …)

特徴ベクトル

グラフィカルモデル

分類/回帰:SVM, LogReg,

PA, CW, ALOW, Naïve Bayes,

CNB, DT, RF, ANN, …

クラスタリング:K-means,

Spectral Clustering, MMC,

LSI, LDA, GM, …

構造分析:HMM, MRF, CRF, …

画像

信号

行動履歴

分野に依存しない特徴を捉えた抽象化されたデータ

様々な手法・理論を適用可能

Page 7: MapReduceによる大規模データを利用した機械学習

77

機械学習とMapReduce (1/2)

解析対象データの急激な増加解析アルゴリズムは最低でも線形の計算量が必要だがそれでも不十分.データ増加量が上回る

世界で作成されたデータ量は2009年 0.8 ZB* (前年比62%増)2020年 35 ZB (予想) [Digital Universe 2010]

ZB = 10億TB = 1兆 GB

機械学習処理の分散並列化は今後必須

Page 8: MapReduceによる大規模データを利用した機械学習

88

機械学習とMapReduce (2/2)

MapReduce上で機械学習を行う機械学習がMapReduce向けでなくても、分散並列システムを一から作り直すよりはるかに生産的

多くの機械学習問題がデータ毎に求まる関数値の和を求める問題に帰着

目的関数の期待値、勾配などモーメント計算など

自明な並列性、MapReduceと相性が良い

多くがMapReduceの枠組みで実現可能線形回帰,K-Means, ロジスティック回帰, SVMなど多くの手法が実装可能 [C. T.Chu, et al. NIPS 06]

Page 9: MapReduceによる大規模データを利用した機械学習

99

Apache Mahout

Hadoop上で動く機械学習ライブラリApacheライセンスでありビジネスに使用可能

スケーラブルであることを最優先百台超でも動くように

Apacheプロジェクトにおいて開発.盛んに新しい手法が取り込まれている

新しいコードも多く、品質は様々

Page 10: MapReduceによる大規模データを利用した機械学習

1010

Mahoutがサポートする手法 (1/2)

クラスタリングCanopy Clustering / (Fuzzy) K-平均法

期待値最大化法

平均シフトクラスタリング

ディリクレ過程クラスタリング

Latent Dirichlet Allocation

パターンマイニングParallel FP growth algorithm

文字列データ処理連語抽出

Page 11: MapReduceによる大規模データを利用した機械学習

1111

Mahoutがサポートする手法 (2/2)

分類ロジスティック回帰

単純ベイズ法 / Complementary 単純ベイズ法

サポートベクトルマシン

パーセプトロン / Winnow

ニューラルネットワーク

ランダムフォレスト

Restricted Boltzmann Machine

行列演算特異値分解

主成分分析・独立成分分析(次バージョン)

Page 12: MapReduceによる大規模データを利用した機械学習

1212

Mahoutの実行感想

数台から百台強での実験結果からの感想パフォーマンスに大きな問題はなかった

EC2上で構築

各挙動についてドキュメントは不足しているところも多く、詳細の挙動についてはコードを参照する必要があった

細かいパラメータ調整とか手法の変更は難しい

Page 13: MapReduceによる大規模データを利用した機械学習

1313

本日の概要

MapReduceと機械学習機械学習でできること

Apache Mahout

大規模並列分散処理の最前線並列分散の機械学習

今後注目の技術Dremel:対話的なアドホッククエリ

Page 14: MapReduceによる大規模データを利用した機械学習

1414

大規模分散並列+機械学習

Google, MS, Yahoo!などを中心に大規模分散並列による機械学習が進む

より強力なモデルを利用した機械学習高精度で理論的な保障のある手法

オンライン学習など従来並列化が困難と思われた手法も並列化可能であることがわかってきた

Mahoutではまだ未実装のものも多いHadoop上で実装は可能

グラフィカルモデルと分散最適化を紹介

Page 15: MapReduceによる大規模データを利用した機械学習

1515

グラフィカルモデル

確率変数を頂点、変数間の依存関係を枝としたグラフ構造

ベイジアンネットワーク、MRF, CRF, HMM

MAP推定(確率が最大になる変数割り当て)

言語処理、情報抽出、音声認識、画像解析、遺伝子解析、構造予測で利用

Page 16: MapReduceによる大規模データを利用した機械学習

1616

グラフィカルモデルの分散並列処理

グラフィカルモデルの推論は一般に困難近年のモデルはより巨大で密なグラフ

数百万変数(頂点)なども扱いたい

様々な並列化アルゴリズムが提案されつつある

相互排他的な更新を見つけ自動的に並列で行う

頂点を相互排他的な集合で色分け、色毎に更新

Residual Splash Belief Propagation [J. E. Gonzalez AISTATS 2009]

GraphLab [Y. Low et. al. UAI 2010]

Page 17: MapReduceによる大規模データを利用した機械学習

1717

グラフィカルモデルの分散並列による結果[S. Singh LCCC 2010]

NY Times 20年分の記事中に含まれる延べ100万回の人名言及の共参照解析

250台のマシンでも線形のスケーラビリティ

共参照解析:二つの言及は同じ実体を指しているか?(言及のクラスタリング)

例:「僕と君はこの二年で4回誘われた」とCTOの太田は西川に言った。

50 ⇒ 250台で5x高速化

Page 18: MapReduceによる大規模データを利用した機械学習

1818

数値最適化の並列分散化

多くの機械学習は数値最適化問題に帰着目的関数F(θ)の最小値を達成するθを求める

例:SVM F(θ) = ∑iLhinge(θ) + Cθ2

MapReduceを使えば簡単?データを分割して求め、それらの結果の平均とるか

勾配情報だけを分割して求めるか

どれも同じ様に見えるが実は精度に大きな違いがあり、理論的に解析可能

4つの方法を紹介する結論:最後のIterativeParameterMixtureを使え

Page 19: MapReduceによる大規模データを利用した機械学習

1919

方法1Parameter Mixture

1. データを分割しK個のshardに配る

2. shard毎にパラメータθを最適化

3. 最後に各shardの結果の平均をとるθ’ = (∑iθi)/K

実はうまくいかない性能も悪いし、失敗する例も作れる

理論的保障もできない

Page 20: MapReduceによる大規模データを利用した機械学習

2020

方法2 Distributed Gradient

勾配の計算部分を並列に行う

得られた勾配情報を利用し、更新は一台で行う

長所勾配の計算に時間がかかる場合に高速化可能

短所毎回パラメータを全てのshard間でやりとりしないといけない.

収束は遅い(バッチ学習と同じ)

Page 21: MapReduceによる大規模データを利用した機械学習

2121

方法3 Asynchronous Update

全ノードで共通のパラメータθを利用

各ワーカーは、現在のθを取得し、各担当分のデータ上でθを更新

欠点:θにlockをとらないため、古いθを元に更新を計算してしまう可能性.実はそれでも収束保障はできるが遅い

Page 22: MapReduceによる大規模データを利用した機械学習

2222

方法4 Iterative Parameter Mixture[Mann et al 09][Mcdonald et. Al. 10]

Parameter Mixtureを少しだけ改造

1. データを分割しshardに配る2. shard毎に最適化3. 全部のθの平均をとる4. θを再度各shardに配り1から繰り返す

これは収束証明ができ、実際に高性能• パラメータの通信がepoch毎のみに発生• 一台で求めた場合と同じ結果を同じ更新回数

で得られる(線形のスケーラビリティ)• Shard毎にデータがばらついていても良い

Page 23: MapReduceによる大規模データを利用した機械学習

2323

実験1 [K. Hall LCCC 2010]

• クリックデータでクリックするかどうかを予測• 訓練例数 3億7000万• 200個のグループに分割し 240台のworkerでMapReduce

• Iterative Parameter Mixtureが70倍の高速化と高性能を達成

Page 24: MapReduceによる大規模データを利用した機械学習

2424

実験2 [K. Hall LCCC 2010]

• 先ほどと同じデータ(Single-nodeではもう不可能)•訓練例数 16億• 900個のグループに分割し 600台のworkerでMapReduce

• Iterative Parameter Mixtureが同じく高速で高性能

Page 25: MapReduceによる大規模データを利用した機械学習

2525

本日の概要

MapReduceと機械学習機械学習でできること

Apache Mahout

大規模並列分散処理の最前線並列分散の機械学習

今後注目の技術Dremel:対話的なアドホッククエリ

Page 26: MapReduceによる大規模データを利用した機械学習

2626

Dremel[S. Melnik+ VLDB 2010]

対話的な大規模データ解析基盤1兆のデータに対するアドホッククエリの結果が数秒で得られる

MRと比べて低レイテンシ、簡単な統計処理のみ

クエリ言語はSQL

top-k, joinなど従来の操作を用意

各データは繰り返し有の木構造(nested representation)

Googleで2006年から利用

クロールデータの分析、障害分析、スパム解析、Disk I/O、統計分析などに利用

BigQueryの裏でも利用 [wikipedia]

Page 27: MapReduceによる大規模データを利用した機械学習

2727

列指向のデータ格納

列指向DBの考えを木構造に応用各属性の値は木中の同じ位置毎に連続した領域に確保される

一部の属性しかクエリに関係無い場合大部分を読まずに済む

図は[S. Melnik+ VLDB 2010]より

Page 28: MapReduceによる大規模データを利用した機械学習

2828

圧縮レコードの復元

クエリに関係するフィールドだけを復元するオートマトンをその場で構築

各レコードには、繰り返し情報、定義深さ情報など復元に十分な情報が付属している

必要なデータのみを復元するためのオートマトンが生成されそれに従い復元される

Page 29: MapReduceによる大規模データを利用した機械学習

2929

クエリー処理アーキテクチャー

木構造検索におけるクエリーサーバーと同じ

クエリは根から葉に向かって広がる

結果は葉から根に向かって集約しながら伝わる

部分結果の集約なのでボトルネックにはならない

Page 30: MapReduceによる大規模データを利用した機械学習

3030

Dremel 実験結果

各単語の出現回数を数える850億レコード, 87TB, 270フィールド, 3000ノード

MapReduce 行指向 約3000秒

MapReduce 列指向 約1000秒

Dremel 約10秒強

一部のノードで時間がかかる99%の結果は5秒以内、残りは数分かかる

列指向+必要な列だけ復元+木構造クエリサーバーで大幅な高速化が可能

Page 31: MapReduceによる大規模データを利用した機械学習

3131

まとめ

機械学習+大規模分散並列は実用的MapReduceと相性は基本的には良い

最新の機械学習手法も次々と分散並列化されてる

Mahoutを利用して機械学習を試せる基本的な手法はサポート

より高度な手法やカスタマイズは自分でやる必要

MapReduceの補助にDremelMapReduceが苦手とする一部の列データ参照、低レイテンシのアドホッククエリ処理が可能

将来的に高速な推論、分類に利用可能

Page 32: MapReduceによる大規模データを利用した機械学習

3232

参考資料

[R. McDonald NAACL 2010] “Distributed Training Strategies for the Structured Perceptron”, R. McDonald, and et al. NAACL 2010

[G. Mann NIPS 2009] “Efficient Large-Scale Distributed Training of Conditional Maximum Entropy Models”, G. Mann and et al. NIPS 2009

[Y. Low UAI 2010] "GraphLab: A New Parallel Framework for Machine Learning.“, Y. Low and et al. UAI 2010

[J. Gonzalez AISTATS 2009] “Residual Splash for Optimally Parallelizing Belief Propagation”, J., and et al. AISTATS 2009 Gonzalez

[K. Hall LCCC 2010] “MapReduce/Bigtable for Distributed Optimization”, K. Hall., and et al. LCCC 2010

Page 33: MapReduceによる大規模データを利用した機械学習

3333

参考資料(続)

[S. Singh LCCC 2010] “Distributed MAP Inference for Undirected Graphical Models”, S. Singh and et al. LCCC 2010

[S. Melnik VLDB 2010] “Dremel: Interactive Analysis of Web-Scale Datasets”, VLDB 2010

LCCC 2010: NIPS 2010 Workshop on Learning on Cores, Clusters and Cloudshttp://lccc.eecs.berkeley.edu/