Date post: | 03-Jul-2015 |
Category: |
Technology |
Upload: | koji-matsuda |
View: | 15,134 times |
Download: | 1 times |
Vanishing Component Analysis
Roi Livni, David Lehavi, Sagi Schein, Hila Nachlieli, Shai Shalev-Shwartz and Amir Globerson
ICML 2013 (Best Paper)すずかけ論文読み会#4 (2013/07/07) / ICML2013読み会@PFI/東大 (2013/07/09)
紹介者 : matsuda ( @conditional )
13/07/09 Vanishing Component Analysis 1
1ページで分かる(?) Vanishing Comonent Analysis
PCA/ICA基底(basis function)は線形に限定
VCA任意の多項式を基底にとれる
〜本論文のテーマ〜
データをコンパクトに表現する を求める
How ? Brute Forceに行うと指数オーダーなので,低次のものから順に探索的に求めるWhy ? 特徴量抽出に使うと「チューンした多項式カーネル」とほぼ同じことができる(100倍速い)
13/07/09 Vanishing Component Analysis 2
なんとか Component Analysis
• 成分分析– Principal Component Analysis(PCA)
– Independent Component Analysis(ICA) etc…
• 次元削減,信号分離,特徴量抽出等,おなじみの手法
• ほとんどの手法は「線形」な成分を取り出す– Kernel PCAなど,例外もあるが・・・
13/07/09 Vanishing Component Analysis 3図の出典 http://dave.langers.nl/index.php?/archives/277-PCA,-ICA-FA-galore.html
Vanishing Component Analysis
• データ集合の「代数的な視点からみた構造」を多項式の集合で表現する,非線形なComponent Analysis
– ただし,次元が削減されるとは限らない(後述)
• 理解するには代数幾何(環論)の知識が必要そう
– 今回はざっくり行きます(コメント歓迎)
13/07/09 Vanishing Component Analysis 4
問題設定Input : m個のデータ点 Sm ( ∈ Rn )Output : すべてのデータ点xに対して f(x) ≒ 0 となるような
多項式 f の集合
分類問題における応用
• クラスごとの訓練データ集合にVCAを行う
– データ点が「ほとんど零」になる多項式の集合が得られる(クラスごとに)
(ほぼ)線形分離できる!あとはこのデータで..
≒零殆ど非零
13/07/09 Vanishing Component Analysis 5
p1
p2
クラス2の事例
I(Sm1) I(Sm2)
fで評価 クラス1の事例
x x x x x
x x x x x
x x x x x
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
x x x x x
x x x x x
x x x x x
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
f2
f2
f1
f1
準備(あまり要らないかも)
• 単項式(Monomials) • 多項式 (Polynomials)
αは正の整数,データ点のxとごっちゃになるのでスライドでは単に p と書くことも
• 多項式環
– 有限次数で,かつ積,和が定義できる多項式全体の集合
• イデアル(Ideal)
– 集合の中の要素に何をかけても,元の集合に戻る性質(吸収律)を持った多項式の集合
• 零化イデアル(Vanishing Ideal)– データ点集合 S が与えられた
とき,f(x) = 0 (x ∈ S)が成り立つような多項式の集合
– I(S) と表記
13/07/09 Vanishing Component Analysis 6
Problem Setup
• n次元の点集合 Sm が与えられる
• このもとで,零化イデアル I(Sm)の生成多項式集合を求める– ややこしいが,Smのすべての要素に対して
f(x) = 0 になるような多項式 f の集合を求める,と思ってよい
• Smの要素を「ほとんど」零化(ε-許容)– exactな計算は現実的ではない
– データ点にはノイズが乗っている点を考慮
13/07/09 Vanishing Component Analysis 7
シンプルな方法(1)
• 生成多項式の次数の上限をDに制限, m 個のデータ点
• D次までの単項式の集合をTとして,– 行列A (m*|T|) を考える( |T| は指数的に増大)
– Aij = tj(xi) • tj = 単項式集合Tのj番目の要素, xi = データ点
A =
1 p1(x1) p2(x1) p12(x1) p2
2(x1) p1p2(x1) ・・・ p|T|(x1)
1 p1(x2) p2(x2) p12(x2) p2
2(x2) p1p2(x2) ・・・ p|T|(x2)
・・・
1 p1(xm) p2(xm) p12(xm) p2
2(xm) p1p2(xm) ・・・ p|T|(xm)
13/07/09 Vanishing Component Analysis 8
p1
p2
シンプルな方法(2)
• あとはSVD
• しかし・・・– O(nD)で行列Aが大きくなるので現実的ではない
• n:変数の数, D:次数の上限
– この方法で抽出される多項式には冗長性がある• 例)p1, p2, が含まれる場合, p1, p2, p1
2, p22, p1p2,…
• イデアルの持つ吸収律を考慮していないため(省略)
図の出典 : http://www.cs.iastate.edu/~cs577/handouts/svd.pdf
零または非常に小さい(< ε)特異値に対応する特異ベクトル=> 対応する単項式の係数( Proposition 3.1 )
13/07/09 Vanishing Component Analysis 9
m : データ数n : 単項式集合のサイズ(|T|)
(零空間の基底)
Vanishing Componentの効率的生成
• 小さい次数のものから探索的に生成
• いくつかの集合
– F : non-vanishingな多項式• 次数を上げることでvanishingになる可能性がある
– V : vanishingな多項式,C : 候補集合
• (おおざっぱに言うと)以下の繰り返し
– 候補集合Cの直交基底を求める(using SVD)• C の要素を F or Vに「仕分ける」
• 特異値が大きい -> F , 特異値が小さい -> V
– 一次上げた C を生成
13/07/09 Vanishing Component Analysis 10
初期化
最初の候補集合を生成(1次式)
候補集合の仕分け
仕分けた結果をマージ
繰り返し・・・
1次上げた候補集合を生成
候補集合が空(Ft-1=0)なら終
候補集合の仕分け
マージ
13/07/09 Vanishing Component Analysis 11
VCAアルゴリズムの流れ
候補集合の仕分け
13/07/09 Vanishing Component Analysis 12
Cの要素をFの空間に写像
単項式をデータで評価した
行列を作り直交基底を求める
基底を用いて多項式を生成
特異値が大きい要素F に追加
特異値が小さい要素V に追加
VCAアルゴリズムの流れ
13/07/09 Vanishing Component Analysis 13
C = [x1,x2,x3]F0 = [定数]V0 = []
C = [p1,p2,p3] 互いに直交(1次)
F1 = [定数,p1,p2] {f : ε > Dii}を追加
V1 = [p3] {f : ε ≦ Dii}を追加SVD
C = [p12,p1p2,p22]F1 = [定数,p1,p2]V1 = [p3]
1次
2次C = [g1,g2,g3]F2 = [定数,p1,p2,g1,g2]V2 = [p3,g3]
C = [g1p1,g2p1,g2p2]F2 = [定数,p1,p2,g1,g2]V2 = [p3,g3]
C = [h1,h2,h3]F3 = [定数,p1,p2,g1,g2,h1,h2]V3 = [p3,g3,h3]
3次
直交(2次の成分を含む)
直交(3次の成分を含む)
・・・C = []F = [定数,p1,p2,g1,g2,h1,h2,…]V = [p3,g3,h3,…]
※Fの要素が増えなくなったら終了
(最大)m次
SVD
SVD
C : 候補多項式の集合 F : non-vanishingな多項式の集合 V : vanishingな多項式の集合
FindRangeNull
C : F1 × Ft-1
なぜ多項式の「集合」か
13/07/09 Vanishing Component Analysis 14
平面と円筒の交差
平面を表す1次式,円筒を表す2次式の組み合わせでデータ点を記述できる
たぶん,低次のほうがロバスト(低い次数で記述できるならそのほうが良い)
p1+p2+p3-定数=0
p12+p2
2+p3-定数=0
※図は原著者のスライドより引用
アルゴリズムの性質
• Theorem 5.1 : どのようなεに対しても– t ≦ m+1 ステップで終了– 多項式の最大次数は m– |F| ≦ m かつ |V| ≦ |F|2・min{|F|・n}
• 「次元削減」される訳ではない
• Theorem 5.2 : ε=0の場合– Smの全ての点をVanishする
• Theorem 7.1 : Feature Extraction– この生成多項式集合を用いて特徴量抽出をおこなうと,「線形分離できる」ことが保証される• あくまでも Training Data に対しての保証
13/07/09 Vanishing Component Analysis 15
分類問題における応用(再掲)
• クラスごとの訓練データ集合にVCAを行う
– データ点が「ほとんど零」になる多項式の集合が得られる(クラスごとに)
(ほぼ)線形分離できる!あとはこのデータで..
≒零殆ど非零
13/07/09 Vanishing Component Analysis 16
p1
p2
クラス2の事例
I(Sm1) I(Sm2)
fで評価 クラス1の事例
x x x x x
x x x x x
x x x x x
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
x x x x x
x x x x x
x x x x x
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
f2
f2
f1
f1
実験
• 多項式カーネルSVM(KSVM) vs VCA+線形SVM
• 各種データセットでKSVMに対してCompetitive– パラメータ : KSVM(degree,C), VCA(ε,用いる最大次数,C) はCVで
決定
• 分類時間において,KSVMに対して2桁高速– KSVM(SVの数)
– VCA(number of operation needed to compute the vanishing component)
13/07/09 Vanishing Component Analysis 17
ちなみに,MNistのstate of the artは0.4とかのようです(DBM+Dropout)
単純に比べて良いのかは謎
感想
• Theorem 7.1 が強烈(どんなデータでも完全に線形分離できる)– ただ,各ステップでSVDに突っ込むのでそこそこ重そう– カーネルとはまったく異なるアプローチで新鮮
• 知りたかったこと– Kernel PCAとの比較,VCA自体の計算時間,高次元での挙動(高次の項がoverfitしそう)– ジャーナル版に期待 (代数幾何,勉強しときます・・・
• 今後の展開(素人考えです)– 何らかの正則化
• 集合のサイズ,次数,係数等にペナルティをかけるなど,複雑さを抑える
– ε−許容に正規分布を仮定している?• このへんを確率的に取り扱う方向性もありそう(ベイジアンの皆さん!)
– 教師あり/半教師あり化• あるクラスの事例は零化,他クラスの事例は零化しない,という条件を積極的に
入れる ( max margin的な.Vapnik教徒の皆さん! )
• 応用– NLP : Parsing, Relation Extraction, etc… (高次の多項式カーネルが有用)– Deep Learningに組み込む動きもあるらしい(第一著者のプレプリント参照)
13/07/09 Vanishing Component Analysis 18
Matlab implementation is available here !http://www.cs.huji.ac.il/~rlivni73/
付録
• 多項式から生成したデータでの実験(横軸:データ数)– 破線:training error, 実線 : test error
13/07/09 Vanishing Component Analysis 19
やっぱりoverfitしてそう?