Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
(1)
はじめにベイズ識別部分空間法
サポートベクタマシン
.
.
. ..
.
.
パターン認識技術の基礎と実装~プログラムで理解するパターン認識の知って得するテクニック~
東京農工大大学院共生科学技術研究院 特任准教授 堀田 政二(独)理化学研究所脳科学総合研究センター 鷲沢 嘉一
SSII2009 チュートリアル講演
2009年 6月 10日
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(2)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.自己紹介
堀田 政二 (ほった せいじ)東京農工大学大学院特任准教授 (テニュア・トラック)SSII09庶務会場部会副部会長専門:統計的パターン認識
鷲沢 嘉一 (わしざわ よしかず)(独)理化学研究所脳科学総合研究センター脳信号処理研究チーム 研究員(Team Leader: Andrzej Cichocki)専門:パターン認識,機械学習,脳信号処理
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(3)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.目的
パターン認識技術の実装には数学的手法が必要例:正則化,逆行列,固有値分解,カーネル写像
教科書に理論は詳しく書かれてはいる
数学的手法の必要性や有用性は実装してわかる
しかし理解するのには時間がかかり,実装にも時間がかかる
MATLAB/Octave上のプログラムを使った実習で手軽に理解を深める
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(4)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.内容
顔画像による個人認識を例題として以下の内容について解説する
正則化,逆行列 -ベイズ識別中心-
固有値分解 -主成分分析,部分空間法中心-
カーネル法 -SVM中心-
本チュートリアルではパターンを d次元の縦実ベクトルで表現:
x =
x1...
xd
, x⊤ = (x1, ..., xd)
準備:MATLAB/Octaveを起動し,ダウンロードしたプログラムを含むフォルダに移動
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(5)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.使用する顔画像データ: The ORL Face Database
データベースの構成
1人あたり 10枚の顔画像を 40名から収集 (総数 400枚)
各人の最後の画像 (10.pgm) をテストパターン (40枚)残りの n = 360枚の画像を訓練パターン
各画像は 112 × 92ピクセルの 256階調のモノクロ画像
データベースの性質
表情,顔の角度,陰影の変動があるが,それほど大きくない
nが次元数よりも小さい ⇒ 統計的に望ましくない
本チュートリアルでは予め主成分分析による次元削減を行う
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(6)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.次元削減の必要性
各画像は画素値を縦に並べたベクトルで表現することで R10304 の1点として表現できる
訓練パターン数 nが次元数よりも小さい場合,すべての訓練パターンは (線形独立であれば) n − 1次元の超平面上に存在 (下図左)
元の次元のままパターン分類した結果は,n − 1次元の超平面上でのパターン分類と同じ結果になる (下図右) ため次元削減した方が計算量を少なくできる
未知パターン
決定境界
3=n の場合,訓練パターンは2次元平面状に存在3=n の場合,訓練パターンは2次元平面状に存在 決定境界は超平面上にある
訓練パターン
訓練パターン訓練パターン
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(7)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.主成分分析 (principal component analysis, PCA)
次元削減で良く使われる手法として PCAが挙げられる.ここで
n個の d次元訓練パターン:x1, ...,xn
平均ベクトル:m = 1n
∑ni=1 xi
d × dの共分散行列:Σ = 1n
∑ni=1(xi − m)(xi − m)⊤
とすると PCAの手順は以下の通りとなる:
.
.
.
1 Σの固有値と固有ベクトルを求める
.
.
.
2 値の大きい上位 r個の固有値 λ1, ..., λrと,それぞれに対応する固有ベクトル u1, ...,ur ∈ Rdを求める.このとき rは累積寄与率等で決定する.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(8)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.PCAの概念図と性質
mx −
1u2u
x
m
λiは uiに垂直に下ろした訓練パターンの分散値
固有ベクトル u1, ...,urは互いに直交しノルムが 1uiを並べた行列(部分等長行列):U = (u1| · · · |ur) ∈ Rd×r
(x − m)と uiの内積値:ci = u⊤i (x − m)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(9)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.RrとRdにおける x
m
mx −
x~
x
1u
2u
Uc
m
mx −
x~
x
1u
2u
1c
2c
各 uiとの内積値を並べたベクトル:c = (c1, ..., cr)⊤
Rrでの xの座標:c = U⊤(x − m) (上図左)
Rdでの xの座標:x = m + Uc (上図右)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(10)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.dが大きいとPCAは大変
各訓練パターン xiから平均mを引いたベクトルを並べた d × nの行列を
X = ((x1 − m)| · · · |(xn − m))
とする.
dが大きい場合 (d = 10304),d × dの行列 nΣ = XX⊤に必
要なメモリは約 800Mb固有値,固有ベクトルを計算するのも大変
n ≪ dならば,n × nの行列N = X⊤X の固有ベクトルと
固有値でU を計算できる
今回は n = 400なのでN に必要なメモリは約 1.3Mb※固有ベクトルを求めるだけならば X
⊤Xを nで割る必要はない
(固有値が n倍される)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(11)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.固有ベクトルの変換公式
行列N = X⊤X ∈ Rn×nの r個の 0でない固有値を大きなものか
ら順に λ1, ..., λr (XX⊤の固有値と同じ) とし,それぞれに対応する固有ベクトルを v1, ...,vr ∈ Rrとする.i番目に大きい固有値に対応する d次元の固有ベクトル uiは以下で求めることができる:
.
固有ベクトルの変換公式
.
.
.
. ..
.
.
ui =±Xvi√
λi
金谷健一, “これなら分かる応用数学教室 -最小二乗法からウェーブレットまで-,” 共立出版, 2003. 6章を参照
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(12)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.実験用ファイルの作成
makedata.mを実行し,以下のファイルが作成されていることを確認してください:
traiX.mat: 次元削減後の訓練パターンと対応するラベルqueryX.mat:次元削減後のテストパターンと対応するラベルT.mat:mと U を保存したファイル
makedata.mを実行して表示される Figureの内容は以下の通り:
Figure 1:mと u1, u2, u3
Figure 2:N の固有値の変化Figure 3:最初の 3人の原訓練パターンと x ∈ Rd
Figure 4:最初の 3人の原テストパターンと x ∈ Rd
以後の演習では次元削減後のベクトルを用いる
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(13)
はじめにベイズ識別部分空間法
サポートベクタマシン
本チュートリアルの目的と内容次元削減演習記号の意味
.
.スライドとプログラムで使われている記号の対応表
意味 スライド プログラムクラス数 c nclass次元数 d d
訓練パターン数 n ntraiテストパターン数 nquery第 i訓練パターン xi trai.X(:,i)未知パターン x query.X
第 i訓練パターンのラベル trai.label(i)第 iテストパターンのラベル query.label(i)次元削減のための平均ベクトル m T.m固有ベクトルを並べた行列 U U T.Uベクトル xと yの内積 < x, y > (x’*y)ベクトル xのノルム ∥x∥ =
√< x, x > norm(x)
xと yの Euclidean距離の二乗 ∥x − y∥2 norm(x-y).^2
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(14)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.ベイズ識別
.
.
.
1 ベイズ識別
.
.
.
2 正則化の意味と役割
.
.
.
3 演習
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(15)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.ベイズ識別1
クラス ωj のパターンの分布 (確率密度関数):p(x|ωj)事前確率:P (ωj)クラス ωj のパターンが生起する確率事後確率:P (ωj |x)パターン xが ωj に属する確率
.
ベイズ識別規則 (損失一定の場合)
.
.
.
. ..
.
.
パターン xを事後確率が最大となるクラスへ決定する.
argmaxj=1,...,c
P (ωj |x)
ベイズの定理より,
P (ωj |x) =p(x|ωj)P (ωj)∑c
k=1 p(x|ωk)P (ωk)= αp(x|ωj)P (ωj)
.プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(16)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.誤識別率の最小化
2クラス問題を考える (ω1, ω2).P (ω1) = P (ω2)とする.誤識別率は,(ω1に属するパターンを ω2に間違う確率)+(ω2
に属するパターンを ω1に間違う確率)∫R2
p(x|ω1)dx +∫
R1
p(x|ω2)dx
p(x|ω1)p(x|ω2)
R1 R2
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(17)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.ベイズ識別2
事前確率 P (ωj)は,ラベル付きサンプルから推定可能,または全クラス共通分布 p(x|ωj)は,何らかの分布を仮定し(ほとんど正規分布),そのパラメータを推定する (パラメトリック識別).(cf. Naive Bayesは各次元を独立と仮定.)
d次元正規分布:
p(x|ωj) =1
(√
2π)d√
det(Σj)exp
(−⟨x − mj ,Σ−1
j (x − mj)⟩2
)パラメータは,平均ベクトルmj と共分散行列Σj.
サンプルからmj , Σj を推定→ mj , Σj
簡略のため,事後確率の対数をとって比較するexpの中の分子は,マハラノビス距離
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(18)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.ベイズ識別3
以上の議論より,未知パターン xを事後確率
2 log P (ωj |x) = −⟨x − mj ,Σ−1j (x − mj)⟩ − log det(Σj)
+2 log P (ωj) + (const.)
が最大となるクラスへ分類する.
xの関数として見ると2次関数となる.
xなしであらかじめ求められる部分を求めておき,xが得られたとき,普通に計算すると d2 + 2d回の乗算が必要となる.
log det(Σj)が − Infになるときは,固有値の対数の和∑di=1 log λiを使う.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(19)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.数値計算のテクニック
Cholesky分解:Σ = LL⊤ (Lは下三角行列)
⟨x,Σ−1x⟩ = ⟨x, (LL⊤)−1x⟩ = ⟨x, (L⊤)−1L−1x⟩= ⟨L−1x, L−1x⟩
下三角行列の逆行列は非常に簡単 (L−1xの乗算回数はd(d + 1)/2回).
合計で d(d + 1)/2 + 2d回の乗算回数で計算できる (約半分).
逆行列をあらかじめ求めておかなくても計算量は変わらない!!(Gauss-Jordan法を参照).
数値計算には BLAS2の trsv, tpsvなどが利用可能.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(20)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.逐次更新法
n個の標本からもとめた推定量があるとき,さらに 1個標本が得られたときの推定量を求める.平均:
µn =1n
n∑i=1
xi =1n
xn +n − 1
nµn−1
分散共分散:
Σn
=1
n − 1
n∑i=1
xix⊤i − µn(µn)⊤
=1
n − 1((n − 2)Σ
n−1+ µn−1(µn−1)⊤ + xnx⊤
n ) − µn(µn)⊤
分散共分散の逆行列:Sherman-Morrison-(Woodbury)の公式Cholesky分解の更新:cholupdate(MATLABのみ)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(21)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.正則化
Σ−1を計算するとワーニングが出る場合がある.単位行列 I を足せば収まることがある?
Σ ← Σ + µI
I を足した方が性能も良くなる傾向がある?
正則化は計算を安定させるだけのものではない!(常識?)
学習における汎化との関係正則化の例: Ridge回帰,Weight decay(重み減衰)ニューラルネット,サポートベクタマシン (SVM),
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(22)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.正則化のそもそも論 -Tikhonovの正則化-
連立方程式Ax = yを考える.yを観測,Aを観測過程,xを入力と考えれば線形逆問題である.
x - A - y入力 観測過程 観測
Aが可逆なら x = A−1yで終了?特異値分解A =
∑di=1 λiuiv
⊤i のとき,A−1 =
∑di=1
1λi
viu⊤i
λiが非常に小さいとき (10−6くらいだとすると),1λiが非常に大きくなる (106 くらいになる)
対応する特異ベクトル ui 方向の成分が異常に拡大される.観測に雑音が加わったとき雑音の影響が拡大される.
不適正問題,不良設定,Ill-posed非常に小さい特異値を持つ問題不適切の度合いは条件数 (cond())や最小特異値などで測る.正則化,打ち切り特異値分解,修正特異値 (疑似ベイズ法)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(23)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.Ill-posedの緩和法
正則化 A−1µ = (A⊤A + µI)−1A⊤ = A⊤(AA⊤ + µI)−1
特異値分解:A−1µ =
d∑i=1
λi
λ2i + µ
viu⊤i
導出:minX
∥AX − I∥2F + µ∥X∥2
F
(X の最大特異値 )2 ≤ ∥X∥2F で上界を抑える.
Aが対称のときはA−1µ = (A + µI)−1
打ち切り特異値分解 (Truncated SVD) A−1r =
r∑i=1
1λi
viu⊤i
Aをランク rで近似し,逆を求める.導出:min
X∥AX − I∥2
F , subject to rank(X) ≤ r
修正特異値 (疑似ベイズ法-なぜかベイズ識別ではこれが主流)
A−1δ =
d∑i=1
1max(λi, δ)
viu⊤i
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(24)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
AA−1
正則化A−1µ
TSVDA−1r′
修正2次A−1δ
特異 (固有)値のインデックス
特異
(固有
)値の大きさ
0
1
2
3
4
5
0 5 10 15 20
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(25)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.各手法の比較
設計時の計算 識別時の乗算回数
正則化 Cholesky分解 d(d + 1)/2 + 2dTSVD 固有値分解 r(d + 2)
修正特異値 固有値分解 r(d + 2) + d
設計時の計算量:Cholesky分解の方が速い.
識別時の計算量:r < d/2のとき,TSVD, 修正特異値が速い.r > d/2では,同等まで高速化できる.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(26)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.分布の形からの解釈
有限サンプルから Σを推定すると小さい固有値は小さく,大きい固有値は大きく推定されることが多い.結果,分布の楕円が引き延ばされる.正則化で元の分布に近づける
元の分布 ⇐= 推定した分布大町, “パターン認識に関する最近の話題 –統計的パターン認識の裏技–” 電子情報通信学会九州支部講演会,2005年 7月 1日
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(27)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
Σは不偏推定である (E[Σ] = Σ)が,その固有値には偏りがある.
λ1, u1をΣの最大固有値と対応する固有ベクトルとする.
λ1 = u⊤1 Σu1 = E[u⊤
1 Σu1]
∥u1∥ = 1より,Σの最大固有値は,常に λ1 以上となる.
(Σの最大固有値) = argmax∥u∥=1
u⊤Σu ≥ u⊤1 Σu1
推定量の最小固有値についても,真の最小固有値より小さくなる.=⇒正則化で修正する.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(28)
はじめにベイズ識別部分空間法
サポートベクタマシン
ベイズ識別正則化演習
.
.演習
bayes.mを使って,ベイズ識別の演習をします.パラメータ
reg.type: 正則化の種類reg.mu: 正則化パラメータreg.rank: ランクreg.delta: 修正特異値のパラメータ
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(29)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.部分空間法
.
.
.
1 CLAFIC,投影距離法
.
.
.
2 部分空間法の特長と難点
.
.
.
3 学習部分空間法
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(30)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.CLAFIC (class-featuring information compression)
x
0
xU Tj
jUx
jd
class j CLAFICにおける原点は各クラス共通
入力 xを部分空間を使って最も良く近似できるクラスへ分類する⇒ d2
j = ∥x∥2 − ∥U⊤x∥2が最小のクラスへ分類する
.
CLAFICの識別則
.
.
.
. ..
.
.
arg maxj=1,...,c
∥U⊤j x∥2
クラス jの部分空間は自己相関行列∑
i∈ωjxix
⊤i の値の大きい上
位 r個の固有値に対応する固有ベクトルにより張られる(固有ベクトルの変換公式が使える)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(31)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.投影距離法 (projection distance method)
x
0
jU
jm
)(Tjj mxU −
jd
jmx −
各クラス独自の原点を持つ線形空間(アフィン部分空間,線形多様体)を利用
入力 xを線形多様体を使って最も良く近似できるクラスへ分類する⇒ d2
j = ∥x−mj∥2 − ∥U⊤j (x−mj)∥2が
最小のクラスへ分類する
.
投影距離法の識別則
.
.
.
. ..
.
.
arg minj=1,...,c
∥x − mj∥2 − ∥U⊤j (x − mj)∥2
クラス jの線形多様体は,平均ベクトルを原点とすれば主成分分析によって求められる固有ベクトルにより張られる
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(32)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.部分空間法の特長
次元削減と識別を同時に行うことができる
クラスの追加・削除が容易
高速な識別が可能
辞書サイズを部分空間の次元数 rで調整できる
パラメータは rのみ (累積寄与率,交差検定で決める)
理論的な拡張が容易
複合類似度法,混合類似度法直交部分空間法,学習部分空間法カーネル非線形部分空間法相互部分空間法,相互投影距離法,tangent distancek-subspace clustering,(fuzzy) k-varieties clustering上記の組合せ
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(33)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.部分空間法の難点とその回避法
次元数が小さい場合(例えば d = 2)に識別率が低下
鷲沢,“正則化を用いた 2次識別器,” MIRU 2007,pp. 510–515, 2007.
複雑な決定境界を持つパターン分布では識別率が低下
カーネル非線形部分空間法local subspace classifier (入力近傍に限定した投影距離法)
※これらは計算時間,メモリ容量およびパラメータ数が大きくなる傾向がある
クラス数が増加すると識別率が低下
カーネル非線形部分空間法
他の識別法に比べ識別率が低い
学習部分空間法 ⇐ これから解説
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(34)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.学習の必要性と方針
固有値分解によって得られた部分空間が識別に最適とは限らない
誤識別がなるべく少なくなるように部分空間を回転させる
学習のための評価関数を設定し,最適化アルゴリズムを導出
今回は一般化学習ベクトル量子化 (generalized learning vectorquantization, GLVQ) のアイデアを CLAFICに適用し,学習アルゴリズムを導出してみる
参考:A. Sato and K. Yamada, “Generalized learning vectorquantization,” NIPS, vol. 7, pp. 423–429, 1995.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(35)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.学習の方針
誤識別は決定境界付近で起きやすい
CLAFICでは識別則に類似度 sj = ∥U⊤j x∥2を用いる
訓練パターンの自クラスと最近傍他クラスに着目する
i番目の訓練パターンの自クラスへの類似度:s1 = ∥U⊤1 xi∥2
最近傍他クラスへの類似度:s2 = ∥U⊤2 xi∥2
.
xiの分類の良さ
.
.
.
. ..
.
.
µ(xi) =s2 − s1
s1 + s2(−1 ≤ µ(xi) ≤ 1)
xiが正しく分類されれば µ(xi)は負の値,誤分類の場合は正となる.学習により µが減少するようにU を更新する.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(36)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.学習方針の概念
ix
0
ixU T1
T2U
T1U
ixU T2
最近傍他クラス
自クラス
learning
ix
0ixU T
1
T2U
T1U
ixU T2
最近傍他クラス
自クラス
ii xUxU T2
T1 < ii xUxU T
2T1 >
誤識別が減るように (µ(xi)が小さい値となるように) U を回転
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(37)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.評価関数の設計
学習のための評価関数を以下のように定義する:
.
学習部分空間法のための評価関数
.
.
.
. ..
.
.
O =n∑
i=1
f(µ(xi))
ここでN は訓練パターンの総数,f(µ)は µに対する単調増加関数であり,今回はシグモイド関数
f(µ, t) =1
1 + exp(−µt)
を用いる (tは学習ステップ).分類の良さが向上する (µが負の値となる) と同時に学習が進む (tが大きくなる) と評価関数は 0に近づくと期待できる.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(38)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.最急降下法による最適化
.
最適化は最急降下法により行う
.
.
.
. ..
.
.
U j ← U j − α∂O
∂U j, (j = 1, 2)
ここで α ∈ Rは学習係数であり 0 < α < 1で設定.xiに着目すると ∂O/∂U1は
∂O
∂U1=
∂O
∂µ
∂µ
∂s1
∂s1
∂U1= −∂f
∂µ
4s2
(s1 + s2)2xix
⊤i U1
同様に ∂O/∂U2は
∂O
∂U2=
∂f
∂µ
4s1
(s1 + s2)2xix
⊤i U2
また ∂f/∂µ = t × f(1 − f)である.プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(39)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.アルゴリズムの導出
これまでの議論から更新式は以下のように書ける:
.
学習部分空間法の更新式
.
.
.
. ..
.
.
自クラスに対する更新式:U1 ← U1 + α∂f∂µ
s2(s1+s2)2
xix⊤i U1
他クラスに対する更新式:U2 ← U2 − α∂f∂µ
s1(s1+s2)2
xix⊤i U2
したがって,各クラスのU を適当に初期化した後,上記の更新を評価関数値の変化が小さくなるまで繰り返せばよい.注意点は以下の通り:
更新後にグラムシュミットの直交化等を利用してU を正規直交化する必要がある
すべてのxiに対する修正量を計算した後,U を一括更新する
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(40)
はじめにベイズ識別部分空間法
サポートベクタマシン
部分空間法部分空間法の特長と難点学習部分空間法演習
.
.演習
CLAFICのプログラム clafic.mを実行し,CLAFICが高速に識別可能であることを確認してください.また r = 1と r = 4の時の識別率を後の比較のために以下の表に書いてください.
学習部分空間法のプログラム learning_clafic.mを実行し,得られた識別率を以下の表に書いてください.このプログラムではr = 1としています.
テストパターンの識別率手法 識別率 [%]
テンプレートマッチング 90GLVQ 90
最近傍決定則 92.5CLAFIC (r = 1)CLAFIC (r = 4)
学習部分空間法 (r = 1)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(41)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
サポートベクタマシンとカーネルトリック
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(42)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.経験誤差と汎化誤差
汎化誤差 L:すべてのパターンについての誤差経験誤差 Lemp:得られた標本についての誤差理想的には汎化誤差を最小にする識別器を作る.
すべてのパターンを集めることは通常不可能.有限の標本から効率よく汎化誤差を最小化する.
Lと Lempの差 (η = L − Lemp)の性質:正の値を取ることが多い.標本数に対して単調減少することが多い.識別器の複雑さに対して単調増加することが多い.(Lemp は単調減少)
標本数
誤差 L
Lemp
複雑さ
誤差 L
Lemp η
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(43)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.構造リスク最小化
L = Lemp + ηの右辺を最小化する.
Lempが小さいが ηが大きく,Lが大きくなるときが,過適合,過学習のときηを抑制する方法:
Early stopping (ニューラルネットなど)モデル選択 (ニューラルネット,回帰問題)ランク低減 (部分空間法)正則化 (Weight decayニューラルネット,SVM)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(44)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.パーセプトロンモデルにおけるLemp
パーセプトロンモデル:f(x) = ⟨w, x⟩ + b標本 {(xi, yi)}n
i=1,yi ∈ {−1, 1}:ラベル経験誤差:(Hinge loss)
li ={
0 (yif(xi) ≥ 1)1 − yif(xi) (yif(xi) < 1)
Lhinge :=n∑
i=1
li
→正解不正解←
yif(xi)
li
0
1
2
3
4
−3 −2 −1 0 1 2 3
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(45)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.サポートベクタマシン (ソフトマージン)
Hinge損失 Lhingeと正則化項 ∥w∥2の線形和を最小化する.
minw,b
12∥w∥2 + C
n∑i=1
li
C はハイパーパラメータ
スラック変数 ξi ≥ max(1− yif(xi), 0)を導入し,Lhingeを書き直す.
minw,b,ξi
12∥w∥2 + C
n∑i=1
ξi
subject to ξi ≥ 1 − yif(xi), ξi ≥ 0
多くの文献では,マージン最大化原理から上式が導かれる.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(46)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.双対問題
KKT条件からwは,標本の線形結合で与えられる.
w =n∑
i=1
αiyixi, f(x) =n∑
i=1
αiyi⟨xi, x⟩ + b
これらの条件を使って,双対問題を導出する.
min¸
⟨α, Gα⟩ + 1⊤α
subject to 0 ≤ αi ≤ C,∑n
i=1 yiαi = 0
ここで,(G)ij = yiyj⟨xi, xj⟩,α = [α1, . . . , αn]⊤.凸2次最適化問題であり,局所解がない.
αは零を多く含む (スパースである).
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(47)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.最適化の方法
二次最適化問題をそのまま解く:Optimization toolboxの quadprog,Octaveの qp,ILOG社のCPLEXなどの最適化パッケージを利用
Sequential minimal optimization (SMO)スパース性を利用し高速に解く.SVMlightなどhttp://svmlight.joachims.org/
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(48)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.カーネルトリック1
入力 xを事前に変換する.例:x = [x1, x2]⊤ 7→ x = [x2
1, x22, 2x1x2]⊤とおけば,
⟨x,
[w1 w2
w2 w3
]x⟩ = ⟨[w1, w3, 2w2]⊤, x⟩
線形モデルでも高次モデルを扱うことができる.識別器の自由度が上がり,分離がしやすくなる.
B. Scholkopf and A. Smola “Learning with kernels”よりプログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(49)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.カーネルトリック2
事前写像を計算するのは厄介
写像後の内積を計算することと同値な関数 k(·, ·)を用意する.
x 7→ Φ(x)k(x1, x2) = ⟨Φ(x1), Φ(x2)⟩
Mercerカーネルと呼ばれる関数は,上式の関係を満たす Φが存在する
識別器の内積で表現される部分をカーネル関数で置き換えることにより,Φを計算することなく,事前写像と同じ効果を得る.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(50)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.例
2次元の場合,カーネル関数 k(x, y) = ⟨x, y⟩2は写像Φ : [x1, x2]⊤ 7→ [x2
1, x22,√
2x1x2]を持つ.
k(x, y) = (x1y1 + x2y2)2
= x21y
21 + x2
2y22 + 2x1x2y1y2
= ⟨
x21
x22√
2x1x2
,
y21
y22√
2y1y2
⟩
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(51)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.よく用いられるMercerカーネル
線形カーネルk(x, y) = ⟨x, y⟩
多項式カーネル
k(x, y) = (⟨x, y⟩ + c)d
Gaussian(RBF)カーネル
k(x, y) = exp(−b∥x − y∥2)
カーネル関数 k1, k2の変換:k1 + k2, (k1 + c)d, k1k2
cは実数,bは正の実数,dは整数のパラメータ.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(52)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.SVMへのカーネル関数の適用
内積の部分をカーネル関数に置き換える.
f(x) =n∑
i=1
αiyik(xi, x) + b
最適化問題は
min¸
⟨α, Gα⟩ + 1⊤α
subject to 0 ≤ αi ≤ C,∑n
i=1 yiαi = 0
ここで,(G)ij = yiyjk(xi, xj),α = [α1, . . . , αn]⊤.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(53)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.多クラス問題とパターン検出への応用
多クラス (cクラス)問題:
組み合わせの数 cC2だけ SVMを作る.
(1クラス)vs.(他のクラス)の SVMを c個作る.
(1クラス)vs.(人工サンプル)を c個作る.人工サンプルは一様分布や正規分布から作る.
1クラス SVMを使う.
多クラス SVMを使う.
パターン検出問題:
1クラス SVMを使う.
(1クラス)vs.(人工サンプル)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(54)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.1クラス SVM
正例の標本 x1, . . . , xnから,正例に対して正の値, 負例に対して負の値を出力する関数 f(x)を求める.
f(x) = ⟨w, Φ(x)⟩ − ρ
出力は f(x)の符号.原点からなるべく遠くの境界面を探す.
minw,‰,ρ
12∥w∥ +
1νn
n∑i=1
ξi − ρ
subject to f(xi) ≥ −ξi, ξi ≥ 0
ξiはスラック変数,0 < ν ≤ 1はパラメータ.Scholkopf et al., “Estimating the support of a highdimensional distribution,” Neural computation, 13(7),1443-1471, 2001.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(55)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.多クラス SVM
SVMを多クラスに拡張
f(x) = argmaxk=1,...,c
⟨wc, Φ(x)⟩
{xi, yi}ni=1 ⊂ Rd × {1, . . . , c}
minW ,‰
12
c∑i=1
∥wi∥2 + C
n∑i=1
ξi
subject to ⟨wyi , Φ(x)⟩ + δy1,r − ⟨wr, Φ(wi)⟩ ≥ 1 − ξi, ∀i, r.
δi,j は,Kroneckerのデルタ.SVMmulticlass: T. Joachimsによるインプリメントhttp://svmlight.joachims.org/svm multiclass.htmlK. Crammer et al. “On the Algorithmic implementation ofmulticlass kernel-based vector machines,” JMLR (2), 265-292,2001.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(56)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.半教師 (準教師)あり SVM
一部のラベルありデータと多くのラベルなしデータからSVMを学習する.
Webデータや医療など,データを得るコストが小さく,ラベリングにコストがかかる場合に有効
Transductive SVM (TSVM); ラベルあり標本 {xi, yi}ni=1 とラ
ベルなし標本 {x∗j}k
j=1について
miny∗
j ,w,ξiξ∗j
12∥w∥2 + C
n∑i=1
ξi + C∗k∑
j=0
ξ∗j
subject to yi(f(xi)) ≥ 1 − ξi, ξi ≥ 0, i = 1, . . . , ny∗j (f(xj)) ≥ 1 − ξ∗j , ξ∗j ≥ 0, j = 1, . . . , k
SVMlightでラベルを 0と入力すると TSVMとなる.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(57)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.カーネル主成分分析
主成分分析 (PCA)
分散が最大あるいは二乗誤差が最小となる軸を順に見つける.分散共分散行列Σ(あるいは相関行列)の固有ベクトルが,固有値の大きい順に軸となる.
カーネル主成分分析 (Kernel PCA)主成分分析にカーネルトリックを適用する.標本相関行列 (作用素):
RΦ =1n
n∑i=1
Φ(xi)Φ(xi)⊤
XΦ = [Φ(x1) . . . Φ(xn)]を使う.K = X⊤
ΦXΦ の固有値 λi と固有ベクトル vi を利用するとRΦ = 1
nXΦX⊤Φ の固有ベクトル ui は,
ui =1√λi
XΦvi
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(58)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
パターン xの変換U⊤Φ(x)は,
U = [u1 . . . ur]
U⊤Φ(x) = [1√λ1
v⊤1 X⊤
ΦΦ(x), . . . ,1√λr
v⊤r X⊤
ΦΦ(x)]
ここで,X⊤ΦΦ(x) = [k(x1, x), . . . , k(xr,x)]⊤
(標本数)x(標本数)の固有値分解で計算ができる.
部分的に固有値,固有ベクトルを求めるときは eigsを使う.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(59)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.部分カーネル主成分分析 (1)
KPCAの計算量の問題実対称固有値分解は 1-数万が限界メモリ:O(n2),計算時間 O(n3)評価時に n回のカーネル関数の計算標本をすべて持っておく必要がある
部分カーネル主成分分析 (Subset KPCA)全体の標本 x1, . . . , xnに関する問題を一部の標本 y1, . . . , ymについての問題に近似する (m < n).
固有値分解の大きさはm.評価時にm回のカーネル関数の計算m個の標本を保存しておけばよい.
鷲沢,“部分カーネル主成分分析,” MIRU2009(予定)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(60)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
-10
-5
0
5
10
15
20
-10 -8 -6 -4 -2 0 2 4
-10
-5
0
5
10
15
20
-10 -8 -6 -4 -2 0 2 4
分布 KPCA(n = 1000, r = 5)
-10
-5
0
5
10
15
20
-10 -8 -6 -4 -2 0 2 4
-10
-5
0
5
10
15
20
-10 -8 -6 -4 -2 0 2 4
KPCA(n = 50, r = 5) 部分 KPCA(m = 50, r = 5)
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(61)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.演習
SVMlightを使って SVMの識別をします.http://svmlight.joachims.org/
1つのクラス vs.他のクラスの識別器をクラス数だけ作成します.
パラメータは上記 URLを参照.
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演
(62)
はじめにベイズ識別部分空間法
サポートベクタマシン
識別理論サポートベクタマシンKPCA演習
.
.まとめ
本チュートリアルでは,パターン認識を実現するにあたり,基本的で重要な以下の数学的手法
正則化,逆行列,固有値分解,カーネル法
の役割について次元削減法やパターン識別法である
主成分分析,ベイズ識別,部分空間法,SVM
を例に挙げながら解説した.また,プログラムを用いた実習を行ってこれらの手法の有効性を,実装しないでも理解できるよう工夫したつもりである.
本チュートリアルの内容を今後の研究に役立ててもらえば幸です
プログラムで理解するパターン認識の知って得するテクニック SSII2009 チュートリアル講演