SlideShare a Scribd company logo
Soumettre la recherche
Mettre en ligne
S’identifier
S’inscrire
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Signaler
Yuya Unno
Suivre
-- à Preferred Networks
19 May 2012
•
0 j'aime
•
5,500 vues
1
sur
45
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
19 May 2012
•
0 j'aime
•
5,500 vues
Télécharger maintenant
Télécharger pour lire hors ligne
Signaler
Yuya Unno
Suivre
-- à Preferred Networks
Recommandé
Jubatusのリアルタイム分散レコメンデーション@TokyoNLP#9
Yuya Unno
13.7K vues
•
44 diapositives
Jubatusにおける機械学習のテスト@MLCT
Yuya Unno
17.9K vues
•
44 diapositives
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
Takuya Akiba
32.3K vues
•
37 diapositives
Jubatusの特徴変換と線形分類器の仕組み
JubatusOfficial
6.9K vues
•
41 diapositives
Chainerの使い方と自然言語処理への応用
Yuya Unno
30.4K vues
•
50 diapositives
Python 機械学習プログラミング データ分析演習編
Etsuji Nakai
20.8K vues
•
26 diapositives
Contenu connexe
Tendances
Pythonによる機械学習
Kimikazu Kato
14K vues
•
30 diapositives
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
70.9K vues
•
34 diapositives
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
72.1K vues
•
76 diapositives
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
Preferred Networks
6.3K vues
•
39 diapositives
ディープニューラルネット入門
TanUkkii
4.9K vues
•
32 diapositives
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Yasutomo Kawanishi
58.8K vues
•
73 diapositives
Tendances
(20)
Pythonによる機械学習
Kimikazu Kato
•
14K vues
Development and Experiment of Deep Learning with Caffe and maf
Kenta Oono
•
70.9K vues
最近のDeep Learning (NLP) 界隈におけるAttention事情
Yuta Kikuchi
•
72.1K vues
LCCC2010:Learning on Cores, Clusters and Cloudsの解説
Preferred Networks
•
6.3K vues
ディープニューラルネット入門
TanUkkii
•
4.9K vues
Pythonによる機械学習入門〜基礎からDeep Learningまで〜
Yasutomo Kawanishi
•
58.8K vues
機械学習チュートリアル@Jubatus Casual Talks
Yuya Unno
•
735.3K vues
Jubatus: 分散協調をキーとした大規模リアルタイム機械学習プラットフォーム
Preferred Networks
•
9.7K vues
予測型戦略を知るための機械学習チュートリアル
Yuya Unno
•
23.7K vues
Pythonとdeep learningで手書き文字認識
Ken Morishita
•
197K vues
分類問題 - 機械学習ライブラリ scikit-learn の活用
y-uti
•
8.4K vues
第1回 Jubatusハンズオン
Yuya Unno
•
7.9K vues
ディープラーニングで株価予測をやってみた
卓也 安東
•
35.1K vues
深層学習時代の自然言語処理
Yuya Unno
•
149.4K vues
機械学習の理論と実践
Preferred Networks
•
211.5K vues
「深層学習」勉強会LT資料 "Chainer使ってみた"
Ken'ichi Matsui
•
14K vues
bigdata2012nlp okanohara
Preferred Networks
•
23.5K vues
協調フィルタリング with Mahout
Katsuhiro Takata
•
6.4K vues
機械学習
Hikaru Takemura
•
8.3K vues
Randomforestで高次元の変数重要度を見る #japanr LT
Akifumi Eguchi
•
12.4K vues
Similaire à Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
Jubatusの紹介@第6回さくさくテキストマイニング
Yuya Unno
4.7K vues
•
27 diapositives
Deep Learningの基礎と応用
Seiya Tokui
34.4K vues
•
39 diapositives
Overview and Roadmap
JubatusOfficial
2.3K vues
•
21 diapositives
Jubatusが目指すインテリジェンス基盤
Shohei Hido
5.9K vues
•
49 diapositives
comp_pfiseminar
Preferred Networks
4.4K vues
•
26 diapositives
Chainer入門と最近の機能
Yuya Unno
109.9K vues
•
31 diapositives
Similaire à Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
(20)
Jubatusの紹介@第6回さくさくテキストマイニング
Yuya Unno
•
4.7K vues
Deep Learningの基礎と応用
Seiya Tokui
•
34.4K vues
Overview and Roadmap
JubatusOfficial
•
2.3K vues
Jubatusが目指すインテリジェンス基盤
Shohei Hido
•
5.9K vues
comp_pfiseminar
Preferred Networks
•
4.4K vues
Chainer入門と最近の機能
Yuya Unno
•
109.9K vues
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
•
26.9K vues
はじめての「R」
Masahiro Hayashi
•
240.5K vues
MapReduceによる大規模データを利用した機械学習
Preferred Networks
•
15.8K vues
bigdata2012ml okanohara
Preferred Networks
•
24.8K vues
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
•
6.2K vues
文字列曖昧検索によるマルウェアバイナリ解析
Preferred Networks
•
4.6K vues
Deep learning実装の基礎と実践
Seiya Tokui
•
105.1K vues
Rでisomap(多様体学習のはなし)
Kohta Ishikawa
•
28.8K vues
ウェーブレット木の世界
Preferred Networks
•
55K vues
ADVENTUREの他のモジュール・関連プロジェクトの紹介
ADVENTURE Project
•
356 vues
Dimensionality reduction with t-SNE(Rtsne) and UMAP(uwot) using R packages.
Satoshi Kato
•
8K vues
関数型言語&形式的手法セミナー(3)
啓 小笠原
•
3.4K vues
第1回 Jubatusハンズオン
JubatusOfficial
•
8K vues
Convolutional Neural Netwoks で自然言語処理をする
Daiki Shimada
•
21K vues
Plus de Yuya Unno
深層学習で切り拓くパーソナルロボットの未来
Yuya Unno
6K vues
•
69 diapositives
深層学習時代の自然言語処理ビジネス
Yuya Unno
19.4K vues
•
22 diapositives
ベンチャー企業で言葉を扱うロボットの研究開発をする
Yuya Unno
7.3K vues
•
76 diapositives
PFNにおけるセミナー活動
Yuya Unno
4.8K vues
•
12 diapositives
深層学習フレームワークChainerとその進化
Yuya Unno
3.9K vues
•
32 diapositives
進化するChainer
Yuya Unno
6.7K vues
•
18 diapositives
Plus de Yuya Unno
(20)
深層学習で切り拓くパーソナルロボットの未来
Yuya Unno
•
6K vues
深層学習時代の自然言語処理ビジネス
Yuya Unno
•
19.4K vues
ベンチャー企業で言葉を扱うロボットの研究開発をする
Yuya Unno
•
7.3K vues
PFNにおけるセミナー活動
Yuya Unno
•
4.8K vues
深層学習フレームワークChainerとその進化
Yuya Unno
•
3.9K vues
進化するChainer
Yuya Unno
•
6.7K vues
深層学習による機械とのコミュニケーション
Yuya Unno
•
12.7K vues
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
Yuya Unno
•
5.5K vues
Chainer, Cupy入門
Yuya Unno
•
68.1K vues
Chainerのテスト環境とDockerでのCUDAの利用
Yuya Unno
•
16.5K vues
深層学習フレームワークChainerの特徴
Yuya Unno
•
59.4K vues
子供の言語獲得と機械の言語獲得
Yuya Unno
•
35.6K vues
NIP2015読み会「End-To-End Memory Networks」
Yuya Unno
•
11.5K vues
GPU上でのNLP向け深層学習の実装について
Yuya Unno
•
31K vues
言語と知識の深層学習@認知科学会サマースクール
Yuya Unno
•
26.8K vues
企業における自然言語処理技術利用の最先端
Yuya Unno
•
15.9K vues
「知識」のDeep Learning
Yuya Unno
•
24.6K vues
自然言語処理@春の情報処理祭
Yuya Unno
•
8.4K vues
ピーFIの研究開発現場
Yuya Unno
•
8K vues
大規模データ時代に求められる自然言語処理 -言語情報から世界を捉える-
Yuya Unno
•
8.1K vues
Jubatusのリアルタイム分散レコメンデーション@TokyoWebmining#17
1.
Jubatusのリアルタイム分散
レコメンデーション 2012/05/20@TokyoWebmining 株式会社Preferred Infrastructure 海野 裕也 (@unnonouno)
2.
⾃自⼰己紹介 l
海野 裕也 (@unnonouno) l unno/no/uno l ㈱Preferred Infrastructure 研究開発部 l 検索索・レコメンドエンジンSedueの開発など l 専⾨門 l ⾃自然⾔言語処理理 l テキストマイニング l Jubatusチームリーダー
3.
今⽇日のお話 l
Jubatusの紹介 l 分散レコメンデーションについて #TokyoNLPではなした内容とだいたい同じですm(_ _)m
4.
Jubatusの紹介
5.
Big Data ! l
データはこれからも増加し続ける l 多いことより増えていくということが重要 l データ量量の変化に対応できるスケーラブルなシステムが求めら れる l データの種類は多様化 l 定形データのみならず、⾮非定形データも増加 l テキスト、⾏行行動履履歴、⾳音声、映像、信号 l ⽣生成される分野も多様化 l PC、モバイル、センサー、⾞車車、⼯工場、EC、病院 5
6.
データを活⽤用する STEP 1. ⼤大量量のデータを捨てずに蓄積できるようになってきた STEP
2. データを分析することで、現状の把握、理理解ができる STEP 3. 状況を理理解し、現状の改善、予測ができる l 世の中的には、蓄積から把握、理理解に向かった段階 この本が実際 この⼈人は30代 本の購買情報 に売れている 男性なので、 を全て記録で のは意外にも この本を買う きるように 30代のおっさ のではない なった! ん達だ! か? 蓄積 理理解 予測 より深い解析へ 6
7.
Jubatus l
NTT PF研とPreferred Infrastructureによる共同開発 10/27よりOSSで公開 http://jubat.us/ リアルタイム ストリーム 分散並列列 深い解析 7
8.
Jubatusの技術的な特徴
分散かつオンラインの機械学習基盤 l オンライン学習をさらに分散化させる l そのための通信プロトコル、計算モデル、死活監視、学 習アルゴリズムなどの⾜足回りを提供する
9.
分散かつオンラインの機械学習 l
処理理が速い! l 処理理の完了了を待つ時間が少ない l 5分前のTV番組の影響を反映した広告推薦ができる l 5分前の交通量量から渋滞をさけた経路路を提案できる l ⼤大規模! l 処理理が間に合わなくなったらスケールアウト l ⽇日本全国からデータが集まる状態でも動かしたい l 機械学習の深い分析! l 単純なカウント以上の精度度を 9
10.
他の技術との⽐比較 l
⼤大規模バッチ(Hadoop & Mahout) l 並列列分散+機械学習 l リアルタイム性を確保するのは難しい l オンライン学習ライブラリ l リアルタイム+機械学習 l 並列列分散化させるのはかなり⼤大変 l ストリーム処理理基盤、CEP l 並列列分散+リアルタイム l 分散機械学習は難しい
11.
今までにない技術、これからの技術 l
欲張り l 今までのトレンドを全部取り込む l 制約が多く、実験も実装も難しい l これからの技術 l 今すぐ実⽤用的になる部分、そうでない部分を含む l 最初の1⼈人になるなら今! l 新しい研究分野 l 研究テーマとしても⾯面⽩白い l 乗っかるなら今!
12.
Jubatusの挑戦 単なる機械学習ライブラリではなく、そこに必要なあらゆ る技術を検討 l
オンライン分散学習 l ⾮非構造データ、特徴抽出 l 計算モデル l 分散システム l RPCの抽象化 メンバーも、機械学習、⾃自然⾔言語処理理、プログラミング⾔言 語、分散システムなどを得意とする
13.
「緩いモデル共有」による分散機械学習
学習器 l みんな個別に⾃自学⾃自習 l たまに勉強会で情報交換 l ⼀一⼈人で勉強するより効率率率がいいはず! 13
14.
3種類の処理理に分解 l
UPDATE l データを受け取ってモデルを更更新(学習)する l ANALYZE l データを受け取って解析結果を返す l MIX l 内部モデルを混ぜ合わせる l cf. MAP / REDUCE l 分散機械学習を3操作だけでどこまで記述できる か? 14
15.
3つの処理理の例例:統計処理理の場合 l
平均値を計算する⽅方法を考えよう l 内部状態は今までの合計(sum)とデータの個数(count) l UPDATE l sum += x l count += 1 l ANALYZE l return (sum / count) l MIX l sum = sum1 + sum2 l count = count1 + count2 15
16.
世の中の機械学習ライブラリの敷居はまだ⾼高い l
libsvmフォーマット l +1 1:1 3:1 8:1 l 何よこれ? ←普通の⼈人の反応 l ⽣生データを扱えない l ハイパーパラメータ l 「Cはいくつにしましたか?」 l Cってなんだよ・・・ ←普通の⼈人の反応 l 複雑な設定 l 研究者向き、エンジニアが広く使えない 16
17.
RDBやHadoopから学ぶべきこと l
わからない l リレーショナル理理論論 l クエリオプティマイザ l トランザクション処理理 l 分散計算モデル l わかる l SQL l Map/Reduce l 「あとは裏裏でよろしくやってくれるんでしょ?」 17
18.
Jubatus裏裏の⽬目標
全ての⼈人に機械学習を! l わからない l オンライン凸最適化 l 事後確率率率最⼤大化 l MCMC、変分ベイズ l 特徴抽出、カーネルトリック l わかる l ⾃自動分類、推薦 l 「あとはよろしくやってくれるんでしょ?」 18
19.
⽣生データを突っ込めば動くようにしたい l
Jubatusの⼊入⼒力力はキー・バリュー l 最初は任意のJSONだった l twitter APIの⽣生出⼒力力を⼊入⼒力力できるようにしたかった l あとは勝⼿手に適当に処理理してくれる l ⾔言語判定して l 各キーが何を表すのか⾃自動で推定して l 勝⼿手に適切切な特徴抽出を選ばせる l というようなことができるようになるかも l 特徴抽出エンジンのプラグイン化 l 様々な特徴関数をダウンロードして⾃自由に組み合わせたい 19
20.
Remote Procedure Call
(RPC) も抽象化 l mprpc-idlからクライアントコードを⾃自動⽣生成! l IDL (Interface Definition Language) でプロトコルを記述 l 各⾔言語⽤用の通信ライブラリはIDLを元に⾃自動⽣生成 mprpc-idlを使う 通常 Ruby Python Java Ruby Python Java Rubyラ Pythonラ Javaライ Rubyラ Pythonラ Javaライ イブラリ イブラリ ブラリ イブラリ イブラリ ブラリ IDLによる仕様 RPCの仕様 IDLから⾃自動⽣生成される
21.
新機能:分散レコメンド
22.
レコメンデーションとは何か? l
記事や商品のおすすめ機能 l この記事に類似した記事はこの記事です l この商品を買った⼈人はこの商品も買っています l 技術的には「近傍探索索」を使っている
23.
近傍探索索とは何か? 登録されたデータの中から、クエリに近いものを探す l データ:D={d1, d2,
…, dn} l クエリ:q l 類似度度関数fに対して、f(d, q)の⼤大きいk件を求めなさい l fはコサイン類似度度やJaccard係数など クエリ q この辺が類似!
24.
何も考えずに近傍探索索しよう l
全データに対して類似度度を計算して上位を返せばOK input: x for d in all data: score[d] = sim(x, d) sort score return top-K elements of score
25.
近傍探索索の技術的課題 l
実⾏行行時間 l 単純な実装だと、データ点のサイズに⽐比例例した時間がかかる l 消費メモリ l すべてのオリジナルデータを保持するとデータが膨⼤大になる 上記2点と精度度とのトレードオフ
26.
準備:よくある類似度度尺度度 l
コサイン類似度度 l 2つのベクトルの余弦 l cos(θ(x, y)) = xTy / |x||y| l Jaccard係数 l 2つの集合の積集合と和集合のサイズの⽐比 l Jacc(X, Y) = |X∩Y|/|X∪Y| l ビットベクトル間の距離離と思うことができる
27.
近傍探索索アルゴリズム l
転置インデックス l Locality Sensitive Hashing (simhash) l minhash l アンカーグラフ
28.
転置インデックス l
疎⾏行行列列と疎ベクトルの内積を計算する l 転置インデックスを⽤用意すると効率率率的に計算できる 全要素で類似度度を計算すると⼤大変 要素のある列列だけ計算する ・ ・ ・ ・ ・ ・
29.
Locality Sensitive Hashing
(LSH) l ランダムなベクトル r を作る l このときベクトルx, yに対してxTrとyTrの正負が⼀一致する 確率率率はおよそ cos(θ(x, y)) l ランダムベクトルをk個に増やして正負の⼀一致率率率を数え れば、だいたいコサイン距離離になる l ベクトルxに対して、ランダムベクトル{r1, …, rk}との内 積の正負を計算 H(x) = {sign(xTr1), …, sign(xTrk)} l signは正なら1、負なら0を返す関数 l H(x)だけ保存すればよいので1データ当たりkビット
30.
絵でわかるLSH l
正負が⼀一致というのは、ランダムな平⾯面の同じ側に来る ということ l この確率率率は1 – θ(x, y)/π ≒ cos(θ(x, y)) 平⾯面が⼀一つのランダ ムベクトルに対応 ランダムな平⾯面が2点間 を横切切る確率率率はθ/π
31.
Jaccard係数 l
集合の類似度度を図る関数 l 値を0, 1しか取らないベクトルだと思えばOK l Jacc(X, Y) = |X∩Y| / |X∪Y| 例例 l X = {1, 2, 4, 6, 7} l Y = {1, 3, 5, 6} l X∩Y = {1, 6} l X∪Y = {1, 2, 3, 4, 5, 6, 7} l Jacc(X, Y) = 2/7
32.
minhash l
X = { x1, x2, …, xn } l Xは集合なので、感覚的には⾮非ゼロ要素のインデックスのこと l H(X) = { h(x1), …, h(xn) } l m(X) = argmin(H(X)) l m(X) = m(Y)となる確率率率はJacc(X, Y)に⼀一致 l ハッシュ関数を複数⽤用意したとき、m(X)=m(Y)となる回数を数 えるとJacc(X, Y)に収束する l m(X)の最下位ビットだけ保持すると、衝突の危険が⾼高 まる代わりにハッシュ関数を増やせる [Li+10a, Li+10b]
33.
絵でわかるminhash l
ハッシュ値の最⼩小値が⼀一致するのは、X∪Yの全要素中で ハッシュ値が最⼩小となる要素が、X∩Yに含まれるとき 全体で最⼩小 X Y
34.
重み付きJaccard係数 l
各集合の要素のidfのような重みをつける l wJacc(X, Y) = Σ i∈X∩Y wi / Σ i∈X∪Y wi l wiが常に1なら先と同じ 例例 l X = {1, 2, 4, 6, 7} l Y = {1, 3, 5, 6} l w = (2, 3, 1, 4, 5, 2, 3) l X∩Y = {1, 6} l X∪Y = {1, 2, 3, 4, 5, 6, 7} l wJacc(X, Y) = (2+2)/(2+3+1+4+5+2+3)=4/20
35.
重み付きJaccard版minhash
[Chum+08] l X = { x1, x2, …, xn } l H(X) = {h(x1)/w1, …, h(xn)/wn} l 論論⽂文中では-log(h(x))としている l 差分はwiで割っているところ l 感覚的にはwiが⼤大きければ、ハッシュ値が⼩小さくなりやすいの で、選ばれる確率率率が⼤大きくなる l m(X) = argmin(H(X)) l m(X) = m(Y)となる確率率率はwJacc(X, Y)に⼀一致
36.
アンカーグラフ [Liu+11] l
予めアンカーを定めておく l 各データは近いアンカーだけ覚える l アンカーはハブ空港のようなもの l まず類似アンカーを探して、その周辺だけ探せばOK アンカー
37.
それぞれのアルゴリズムをオンライン化・・・でき るか? Jubatusのポイントはオンライン学習! 近傍探索索のオンライン化とは? l データ集合Dに新しいデータdを追加・変更更できる l 追加したら、直ちにL(d,
q)の⼩小さいdを求められる
38.
更更新の分散のさせ⽅方 l
IDごとに同じノードに⾏行行くように分散させる l 更更新情報はmixのタイミングで他のノードに通知 1~100 101~200 CHT (Consistent Hashing) 201~300
39.
転置インデックスの分散化 l
新規の差分を分散してMIXのタイミングで更更新する l 全サーバーがデータを保持するため容量量の点では分散化 できない 差分1~100 サーバー1 サバー2 差分101~200 サーバー3 差分201~300 MIX!!
40.
ビット⾏行行列列の分散化 l
LSHとminhashのデータはbit⾏行行列列 l 転置インデックスとやることは同じだが容量量が⼩小さい 差分1~100 サーバー1 サバー2 差分101~200 サーバー3 差分201~300 MIX!!
41.
アンカーグラフの分散化? l
類似アンカーの情報しか残ってないため、データの⼀一部 を更更新するのが困難 l オリジナルデータを持っておけばよい? l 実装・デバッグはかなり激しい l うまく⾏行行っているのかどうかわかりにくい
42.
現在の実装 l
転置インデックスとLSHが公開されている l minhashは特許問題で調整中 l アンカーグラフはうまく分散させるに⾄至らず
43.
こんなことができる?:リアルタイムレコメンド ⾖豆腐が健康にイイヨー
⼩小売 影響の予測 変化の検知 ユーザーの購買⾏行行動 広告配信 43
44.
まとめ l
Jubatusは総合格闘技 l MIX操作による緩い同期計算モデル l ⾮非構造データを扱うための特徴抽出 l IDLからのクライアントコード⾃自動⽣生成 l レコメンドの4⼿手法 l 転置インデックス l Locality Sensitive Hashing (simhash) l minhash l アンカーグラフ l 現在は前者2つを公開
45.
参考⽂文献 l [Chum+08] Ondrej
Chum, James Philbin, Andrew Zisserman. Near Duplicate Image Detection: min-Hash and tf-idf Weighting. BMVC 2008. l [Li+10a] Ping Li, Arnd Christian Konig. b-Bit Minwise Hashing. WWW 2008. l [Li+10b] Ping Li, Arnd Christian Konig, Wenhao Gui. b-Bit Minwise Hashing for Estimating Three-Way Similarities. NIPS 2008. l [Liu+11] Wei Liu, Jun Wang, Sanjiv Kumar, Shin-Fu Chang. Hashing with Graphs. ICML 2011.