29
GoDec: Randomized Low-rank & Sparse Matrix Decomposition in Noisy Case #41 Tianyi Zhou, Dacheng Tao @niam 江原 1

Icml yomikai 07_16

Embed Size (px)

Citation preview

Page 1: Icml yomikai 07_16

GoDec: Randomized Low-rank &

Sparse Matrix Decomposition in

Noisy Case

#41

Tianyi Zhou, Dacheng Tao

@niam

江原 遥

1

Page 2: Icml yomikai 07_16

この論文を読もうと思った動機

• 2009 乱択化SVD (Halko+)

– Gaussian行列をかけて列を圧縮.SVDを高速近似.

– ノルムをバウンドして近似の良さを証明

• 2010/9 REDSVD (Okanohara+)

– 実用的には行と列の両方を圧縮してよい

• 2011/3 全部分文字列のクラスタリングとその応用 (岡野原, NLP2011)

– REDSVDを全部分文字列のクラスタリングに応用

2

Page 3: Icml yomikai 07_16

この論文を読もうと思った動機

• 2009 乱択化SVD (Halko+)

– Gaussian行列をかけて列を圧縮.SVDを高速近似.

– ノルムをバウンドして近似の良さを証明

• 2010/9 REDSVD (Okanohara+)

– 実用的には行と列の両方を圧縮してよい

• 2011/3 全部分文字列のクラスタリングとその応用 (岡野原, NLP2011)

– REDSVDを全部分文字列のクラスタリングに応用

3

GoDec論文では

BilateralRandomProjection

と呼んでいる

Page 4: Icml yomikai 07_16

Abstractには

The algorithm can be significantly accelerated by

bilateral random projections (BRP).

Theoretically, we analyze the influence of L, S and

G to the asymptotic/convergence speeds in order to

discover the robustness of GoDec.

と書いてあるので,いかにもBRPを適用した場合の証明が書いてありそうに見えるが…

どうやら証明されているのは近似なしのGoDeC

4

Fast GoDec

Nai:ve GoDec

Page 5: Icml yomikai 07_16

特異値分解

(Singular Value Decomposition)

X: m x nデータ行列

r:自然数 が与えられたとき

minL ||X-L||F

s.t. rank(L)=r

をみたすLは,

5

1

(>0)T

r

i i i

i

X U V r

L

u v

の大きい方から 個の特異値 を用いて

と表せる.

時間計算量 mnr (たぶん)

Page 6: Icml yomikai 07_16

SVDのイメージ

X(元の行列)

1点だけ凄く違う外れ値に弱い

(上下左右に,にじむ)

T

1

r

i i i

i

L

u v

T

i iu v一枚一枚が i

r

で重み付けして

個足し込む

Page 7: Icml yomikai 07_16

実際,SVDはどんな感じににじむか

7

180x200行列 (rank180) rank10で低ランク近似

Page 8: Icml yomikai 07_16

解決策:外れ値に弱いなら

外れ値を抜けばいいじゃない

X(元の行列)

T

1

r

i i i

i

L

u v

T

i iu v一枚一枚が

S

外れ値の

個数=

card(S)

i

r

で重み付けして

個足し込む

Page 9: Icml yomikai 07_16

Nai:ve GoDec

9

今までの話を数式で書くと解きたい問題は:

LとSを同時に最適化するのは難しい.

次の様にLとSを交互に計算できれば簡単.

こう解けばOK:

こう解けばOK:

Robust PCAの論文から

取ってきた(汗

Page 10: Icml yomikai 07_16

Nai:ve GoDec

10

今までの話を数式で書くと解きたい問題は:

LとSを同時に最適化するのは難しい.

次の様にLとSを交互に計算できれば簡単.

こう解けばOK:

こう解けばOK:

Page 11: Icml yomikai 07_16

Nai:ve GoDec

11

今までの話を数式で書くと解きたい問題は:

LとSを同時に最適化するのは難しい.

次の様にLとSを交互に計算できれば簡単.

こう解けばOK:

こう解けばOK:

Dense(黒っぽい)Lと

Sparse(白っぽい)Sを交互に

扱う点が碁に似てるからGoDec

この論文の貢献: • Theorem 1:

この交互計算がlocal minimum

に収束する

• Theorem 2, 3:

ノイズがなければ線形収束する

• Theorem 4:

ノイズがあってもノイズが酷く

なければ線形収束する

Page 12: Icml yomikai 07_16

Nai:ve GoDecの問題点

12

今までの話を数式で書くと解きたい問題は:

LとSを同時に最適化するのは難しい.

次の様にLとSを交互に計算できれば簡単.

こう解けばOK:

こう解けばOK:

遅い.毎iterationでsvdするとか

やりたくない.高速化したい.

→Fast GoDec

Page 13: Icml yomikai 07_16

Fast GoDec

13

Stの計算は同じ

BRP +

Power

Scheme 以後,

近似手法

を説明

Page 14: Icml yomikai 07_16

BRP

14

元々やりたいこと:

こうやれば厳密に解けるが遅い

…と書いてあるがr個までなのでmnr 計算量:

A1 :列を圧縮するランダム行列

A2 :行を圧縮するランダム行列 を用いて高速化

発表者が知る方法は3つ 1 1 2 2, TY XA Y X A

1 1 1 1 2 2 2 2 1 2 1 2, ,T T T

r r r r r r rY U V Y U V L Y A Y Y

1 1 1 2 2 2 2 1

2 1 2 1

, , T T

T T T

Y Q R Y Q R C Q XQ USV

L Q CQ Q USV Q

本論文

REDSVD:

(Fazel+,

2008)

Page 15: Icml yomikai 07_16

BRP

15

元々やりたいこと:

こうやれば厳密に解けるが遅い

…と書いてあるがr個までなのでmin(mr2,nr2)? 計算量:

A1 :列を圧縮するランダム行列

A2 :行を圧縮するランダム行列 を用いて高速化

発表者が知る方法は3つ 1 1 2 2, TY XA Y X A

1 1 1 1 2 2 2 2 1 2 1 2, ,T T T

r r r r r r rY U V Y U V L Y A Y Y

1 1 1 2 2 2 2 1

2 1 2 1

, , T T

T T T

Y Q R Y Q R C Q XQ USV

L Q CQ Q USV Q

本論文

REDSVD:

(Fazel+,

2008)

r x rの逆行列を使う

r x rのSVD 2回+ r x rの逆行列を使う

r x rのSVDを1回使う

Page 16: Icml yomikai 07_16

BRP

16

元々やりたいこと:

こうやれば厳密に解けるが遅い

…と書いてあるがr個までなのでmin(mr2,nr2)? 計算量:

A1 :列を圧縮するランダム行列

A2 :行を圧縮するランダム行列 を用いて高速化

発表者が知る方法は3つ 1 1 2 2, TY XA Y X A

1

1 1 1 1 1 2 2 2 2 2 1 2 1 2, ,T T T

r r r rY Y U V Y Y U V L Y A Y Y

本論文

(Fazel+,

2008)

条件付きだが||X-L||のBoundが

示されている (Woolfe+, 2008)

Y1, Y2のランクはrなので, Y1r= Y1, Y2r = Y2

だから実は2つは同じでSVDの計算はいらない.

Page 17: Icml yomikai 07_16

Power scheme

特異値の減衰が遅いと低ランク近似したときに誤差が大きくなる.

解決策:Xの代わりに を低ランク近似

Xの特異値を大きい順にλiとすると, (XXT)qXの特異値はλi

2q+1になるので(特異ベクトルはXと同じ)早く減衰.

しかし,元に戻すために(XXT)-q の計算をするのなら無意味.→QR分解

17

q

TX XX X

Page 18: Icml yomikai 07_16

QR分解

18

X: m x n

A1: n x r

A2: m x r

Y1=XA: m x r

A2TY1: r x r

R1: p x r

Q1: m x p

→QR分解を利用(累乗計算のため)

Page 19: Icml yomikai 07_16

証明

19

Naïve GoDecの

local minimumへの

収束証明と1次収束証明

がなされている.

Fast GoDecは

証明なし(たぶん)

収束証明は簡単:

Page 20: Icml yomikai 07_16

1次収束証明

• Theorem 2, 3:ノイズがなければ線形収束する

• Theorem 4: ノイズがあってもノイズが酷く

なければ線形収束する

証明の概略:

20

これの挙動を見る

Robust PCA (40ページ)の論文の証明技法と同様の方法を使っているらしく,おそらく,これを読まないとちゃんと理解出来ない.

Page 21: Icml yomikai 07_16

実装:Nai:ve GoDecなら簡単 https://github.com/niam/godec/blob/master/src/godec.cpp

void run(const emat_t& X, const int r, const int k, const val_t eps ){

int loop= 0; val_t norm_rate = 0.0;

val_t xnorm = X.norm();

L_t = X;

S_t; S_t.setZero(X.rows(), X.cols());

do{

Eigen::JacobiSVD<emat_t> svd(X-S_t, Eigen::ComputeThinU | Eigen::ComputeThinV);

auto sigmas = svd.singularValues();

for(int i=r; i< sigmas.size();++i)sigmas[i]=0;

L_t = svd.matrixU()*sigmas.asDiagonal()*svd.matrixV().transpose();

S_t.setZero(X.rows(), X.cols());

select_kbest(S_t, X-L_t, k, Abs());

norm_rate = (X-L_t-S_t).norm()/xnorm;

cout << loop++ << ": " << norm_rate << "=" << (X-L_t-S_t).norm() << "/" << xnorm << endl;

}while(norm_rate > eps);

}

21

外れ値を抜く

SVDする

繰り返す

Page 22: Icml yomikai 07_16

実験 (Nai:ve GoDec)

22

元画像:

200x180

Page 23: Icml yomikai 07_16

SVDと比較

23

SVD r=10 Naive GoDec L+S r=8, k=762

使用メモリ量を合わせるため,rが違う

GoDeCの方がSの非0の分メモリを使用

Page 24: Icml yomikai 07_16

結果 reading ...

FILE_NAME =

/home/ehara/mypic.png

width = 180

height = 200

bpp = 3

0: 0.140223=3611.84/25757.9

1: 0.133084=3427.97/25757.9

2: 0.131239=3380.44/25757.9

(中略)

20: 0.1294=3333.08/25757.9

21: 0.1294=3333.06/25757.9

||X-L||= 4830.8

writing L...

Succeeded in writing?: 1

||X-S||= 25578.7

writing S...

Succeeded in writing?: 1

||X-LpS||= 3333.06

writing LpS...

Succeeded in writing?: 1

||X-svd||= 4089.61

writing svd...

Succeeded in writing?: 1

writing X...

Succeeded in writing?: 1

24 4.73 user 0.02 system 99% cpu 4.779 total

収束してる

SVDより

誤差小さい

200 x 180行列

だから…→

Page 25: Icml yomikai 07_16

論文の方の実験

25

Page 26: Icml yomikai 07_16

論文の方の実験

26

Page 27: Icml yomikai 07_16

まとめ

• SVDでの低ランク近似は,外れ値に弱い

→外れ値を抜きながら低ランク近似する

低ランク:L, 外れ値:S, もとの行列X≒L+S

• Nai:ve GoDecがlocal minimumに線形収束することを証明している.ただし,毎イテレーションごとにSVDを実行するので遅い.

• ランダム行列を使って,近似的に高速に計算できる.ただし,こちらには証明がない(たぶん)

アイデアは良いが,細部が抜けている論文だと感じた.

(Algorithm 2を参照しながらAlgorithm 1までしかないとか)

27

Page 28: Icml yomikai 07_16

参考文献

Fazel, M., Cand` es, E. J., Recht, B., and Parrilo, P. Compressed sensing and

robust recovery of low rank matrices. In 42nd Asilomar Conference on Signals,

Systems and Computers, 2008

Cand` es, E. J., Li, X., Ma, Y., and Wright, J. Robust principal component

analysis? Journal of the ACM (submitted), 2009.

Halko, N., Martinsson, P. G., and Tropp, J. A. Finding structure with randomness:

Stochastic algorithms for constructing approximate matrix decompositions. arXiv:

0909.4061, 2009.

Zhou, T. and Tao, D. Bilateral random projection based low-rank approximation.

Technical report, 2010.

28

Page 29: Icml yomikai 07_16

ご清聴ありがとうございました

29