scalable coordinate descent approaches to parallel matrix factorization for recommender systems

Post on 13-Aug-2015

2.917 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

発表資料Takuya Makino

Saturday, March 23, 13

紹介する論文

• Scalable Coordinate Descent Approached to Parallel Matrix Factorization for Recommender Systems (ICDM 2012)

• Hsiang-Fu, Cho-Jui Hsieh, Si Si, and Inderjit Dhillon

• Best Paperです

Saturday, March 23, 13

Motivation

• 行列分解 (Matrix factorization)は、行列の要素に欠損値がある場合、推薦システムにおいて良いテクニック

• web-scaleのデータを処理するための、並列・分散化が容易で、かつ効率的な行列分解の計算方法が必要

Saturday, March 23, 13

The matrix factorization problem

Saturday, March 23, 13

The matrix factorization problem観測の出来るユーザiの商品jに対する評価

Saturday, March 23, 13

The matrix factorization problem

k次元の素性空間におけるユーザiの素性と商品jの素性の内積(rank-k (k < m, k < n) 行列分解)

観測の出来るユーザiの商品jに対する評価

Saturday, March 23, 13

The matrix factorization problem

L2正則化

k次元の素性空間におけるユーザiの素性と商品jの素性の内積(rank-k (k < m, k < n) 行列分解)

||・||_{F}は、フロベニウスノルムといい、行列の全要素の二乗の総和

観測の出来るユーザiの商品jに対する評価

Saturday, March 23, 13

つまり• (推定に役に立たない素性の重みは0になるようにしつつ、)未観測な要素も含め、Aを近似行列WH^Tで推定できるように誤差を最小化W, Hを求める

• 制約なしの凸計画問題なのでStochastic

Gradient Descent (SGD)などの数値解法でW, Hを求める

• (1)が凸計画問題である証明はパス (See T村本)Saturday, March 23, 13

Coordinate Descent

• ある一つ(以上)の変数を更新する際に、他のすべての変数を定数とみなす手法

• 変数を一つとみたときの目的関数は?

• どういう順番で変数を更新する?

Saturday, March 23, 13

Coordinate Descent

• ある一つ(以上)の変数を更新する際に、他のすべての変数を定数とみなす手法

• 変数を一つとみたときの目的関数は?

• どういう順番で変数を更新する?実はここをうまく考えると計算量を削減できる!

Saturday, March 23, 13

変数を一つとみたときの目的関数は?

(4)はw_{it}をzとした時の目的関数

Saturday, March 23, 13

変数を一つとみたときの目的関数は?

(4)はw_{it}をzとした時の目的関数

(1)を、内積の中のw_{it}が関係している項をzに置き換えただけ

Saturday, March 23, 13

式(4)を解くと

Saturday, March 23, 13

式(4)を解くとk�

t=1

withjt

素直にz*を計算するとO(|Ω_i|k)

f ’(z)=0とおくと得られます

Saturday, March 23, 13

residual matrix Rk�

t=1

withjtを毎回計算したくないのでRを保持

Saturday, March 23, 13

パラメータの更新k�

t=1

withjt はここで保持されている

h_{jt}も同様にして更新可能

O(|Ω_i|k)から O(|Ω_i|)に

Saturday, March 23, 13

更新の効率化

• residual matrix Rを保持することで計算時間が O(|Ω|k)から O(|Ω|)に

• ここは提案手法ではないです

Saturday, March 23, 13

どういう順番で変数を更新する?

• Item/User-wise Update

• Feature-wise Update

( ) ( )1i or j

m or n

1 t k

1i or j

m or n

1 t k

Saturday, March 23, 13

Item/User-wise Update

( )

Saturday, March 23, 13

Feature-wise Update観点を変えて、Aをk個の行列の積の総和と考える

t番目の素性によるm×n行列m×1行列と1×n行列の積はm×n行列

提案手法では、これを求めることを考えますSaturday, March 23, 13

u, vを求めるsubproblem

とすると(15)は

と変形できるSaturday, March 23, 13

Feature-wiseの何がおいしいのかR̂ij = Rij + wtihtj

wit = wti hjt = htj なので注目しているtに関する項は下線部で相殺して消去される

つまり、u_iとv_jの更新のたびにR^を計算し直す必要がなくなる

= Aij �k�

t�=1

wit�hjt� + wtihtj

Saturday, March 23, 13

Feature-wise Update

( )一度のsubploblemについて、Rの計算量はT CCD

iterations中の変数の計算量に比べてO(1/T)倍

Saturday, March 23, 13

Feature-wise Update

( )一度のsubploblemについて、Rの計算量はT CCD

iterations中の変数の計算量に比べてO(1/T)倍

O(1 + 11 + 1

T

) = O(2T

T + 1) 倍速くなる

T回CCDをおこなうと、1回だけCCDをおこなった時より

Saturday, March 23, 13

Saturday, March 23, 13

( )

Saturday, March 23, 13

( )

12

rp

p個の小さなベクトルに分けて

Saturday, March 23, 13

( )

12

rp

p個の小さなベクトルに分けて並列で更新

(16)はu_iは他のuと独立Saturday, March 23, 13

Saturday, March 23, 13

関連研究• Alternating Least Square (ALS)

Hを固定してWを求める、Wを固定してHを求める、を繰り返す

並列化は容易だけど計算量が多い

• Stochastic Gradient Descent (SGD)

計算量は少ないが並列化が難しい

収束が学習率に依存、性能が変数の更新の順序に依存

Saturday, March 23, 13

Saturday, March 23, 13

Saturday, March 23, 13

Saturday, March 23, 13

Conclusions

欠損があるAにおいて、CCD++ (Feature

wise-Update)は計算量が既存手法に比べて少なく、かつマルチコア環境、分散環境においてともに並列化が容易

Saturday, March 23, 13

top related