"機械学習","信号解析","ディープラーニング"の勉強

読者です 読者をやめる 読者になる 読者になる

HELLO CYBERNETICS

深層学習、機械学習、強化学習、信号処理、制御工学などをテーマに扱っていきます

独立成分分析の基礎と主成分分析との比較

独立成分分析は、主成分分析に変わる有効な信号処理手法です。

主成分分析との違いをサラッと紹介した後に、独立成分分析の学習手法を紹介したいと思います。

ちなみに、面倒なのでベクトルをボールド体で表現することはしません。全部ベクトルや行列だと思ってください。一次元のベクトルをスカラーだと思えば、特に区別する必要はないと思います。

 

 

ブラインド信号源分離(以後BSS)

ブラインド信号源分離とは以下のような問題です。

個々の信号ベクトルsに対して観測信号ベクトルxが変換行列Aによって、線形結合されて得られる場合に、元の個々の信号sを復元しようというものです。

 

x=As

 

となっているということです。これに対して

 

A^{-1}

 

を求めれば、問題は解けることになります。

 

A^{-1}x=s

 

となって、知りたかった個々の信号が取り出せるというわけです。

非常に単純な問題設定ですが、手元にあるデータはxのみですから、実際には未知数が非常に多く普通には解けません。簡単として観測ベクトルの次元と、個々の信号の次元が一緒だったとしても、やはり条件が足らず求まらないので、何かしら仮定をして条件を加えていく必要があります。

主成分分析の場合は、観測データがガウス分布に由来するという仮定を用いてこの問題を解いていきます。

 

主成分分析

確率変数ベクトルxが平均0で分散行列V_Xの分布に従っていると仮定します。平均は0でなく、一般的に文字でおいても良いのですが、座標を平行移動して平均を0のデータに補正したと考えましょう。期待値演算をE[・]とすると、

 

V_x=E[xx^T]

 

です。仮に、直交行列Oを用いて、手持ちの観測データxs=Oxと変換したとしましょう。すると、sの分散行列は

 

V_s=E[ss^T]=E[Oxx^{T}O^T]=E[OV_{x}O^T]

 

となります。これが何の手掛かりになるのかを考えてみます。

もしもV_sが対角行列になるならば、直交変換Oによって、観測信号xが無相関化された信号sに変換されたと考えることができますね。

つまり逆の言い方をすれば、本来無相関であった信号sが観測時に色々混ざってしまってx=O^{-1}sになったと考えることができるのです。そうであるならばxの分散行列V_xを対角化するような行列Oを見つければBSSの問題が解けるということになりますね。

主成分分析はこの考えで問題を解きます。

 

1.元々の信号は無相関であったと仮定

2.観測データを無相関化⇛分散行列V_xを対角化

3.分散行列V_xの固有値問題を解く

4.個々の固有ベクトルは新しい座標の基底となる 

という発想です。そして、もしもxが正規分布から生成されるとしたならば、正規分布は無相関であるときには必ず独立性も有しますので、個々の信号を取り出していることにちゃんとなります。

 

主成分分析の優れているところは、最終的に固有値問題に帰着されるということです。

固有値問題は一切の最適化などの工夫を必要とせず、ただ単に数値に対して計算を行えばいいのでプログラムとしては動作が非常に早いです。

 

独立成分分析

主成分分析との違い

もしも観測データが正規分布に従っていない場合はどうでしょう。

主成分分析をしてデータは無相関化されたとは言えど、まだ独立であるというわけにはいきません。できれば独立であるような状態でデータを見たほうが、完全に個々の変量について考察ができて便利です。

そこで、独立成分分析では観測データxに正規分布を仮定せずに、単にsが独立になるように変換を求めようと考えます。

 

x=As

 

という状態に対して、仮にA^{-1}を知っていれば

 

A^{-1}x=s

 

としてすぐさま取り出せるわけですが、今回はA^{-1}を決定する具体的な手立ては見つかりそうにもありません。ですから、とりあえず適当な変換行列Wを用いて

 

y=Wx

 

という変量を見てみることにします。そこでyが独立性を有するかどうかを確認して、独立でなければWを違うものに変えるということを繰り返せば、いつか独立なyが得られたら、晴れてy=sが獲得できたと考えるのです。

 

1.sは独立でありx=Asという変換がされているとする。

2.y=Wxと変換してみて、W=A^{-1}を探したい。(そのときy=sと求まる)

3.直接AWは分からないので、yが独立性を有するかを見てWを探す。

 

ちなみに2次元データに対して主成分分析(PCA)をして得られる基底と、独立成分分析(ICA)をして得られる基底の違いを図示したものを紹介します。

(http://meg.aalip.jp/ICA/)

 

f:id:s0sem0y:20160501174826p:plain

 

2次元データにプロットした青いデータは、斜めに交差しているように見えます。もしも青いデータが正規分布に従っているならば、これは直交しているはずです。しかし現実にはそうではないため、主成分分析を用いても適切な基底が得られていないように見えます。もちろん分析の目的にもよりますが、個々の成分を個別に考察したい場合は、明らかに独立成分分析のほうが適しているでしょう。

 

独立性の計り方と勾配法

ではy=Wxと変換してみてから、独立性を如何にして評価すればいいのかを考えます。

今は個々のデータベクトルsは各成分が独立であるということを考えているので、sの各成分をs_iとすれば、それぞれの成分の確率分布をとりあえずr(s_i)と置いておけます。これを正規分布としたのが主成分分析でしたが、今は一般の分布を考えていますから、r(s_i)を頼りに問題を解いていくしかありません。

幸いにも、各成分が独立ですから、s=(s_1,s_2,...,s_i,...)^Tというデータが得られる確率は、個々の成分の生じる確率の積で表され、

 

r(s)=\prod{r(s_i)}

 

となります。今、勝手なWを使ってy=Wxとしましょう。xは本来x=Asのはずですから、

 

s=A^{-1}x

x=W^{-1}y

s=A^{-1}W_{-1}y

 

単に2回線形変換を受けただけとなっています。

この際yの確率分布p_{Y}(y)

 

p_{Y}(y)=|WA|^{-1}r(A^{-1}W^{-1}y)

 

であり、もしもWをうまく見つけて、W=A^{-1}となればp_{Y}(y)=r(s)となり、y=sが求まったことになります。つまりr(s)p_{Y}(y)を近づけていく問題として解釈することができます。

しかし、そもそもr(s)の形を知らないため、計算ができません。

それならば、適当に勝手な独立の分布q(y)というものを仮定して、この分布との近さを測ってみることにします。

 

q(y)=\prod q_{i}(y_i)

 

そもそもsも未知r(s)もどうしようもありません。しかし勝手に独立なq(y)という分布にp(y)を近づけられれば、独立なyを求めることはできます。そしてそれによって得られたWこそA^{-1}だと考えるのです。つまり確率分布の隔たりを評価するKLダイバージェンス

 

KL[p_Y||q]={\int}p_{Y}(y){\log}{\frac{p_{Y}(y)}{q(y)}}dy

 

を最小とするWを求める問題とすることができます。

これはまず適当なW_1からスタートし、KLダイバージェンスが小さくなるように適当にW_2を決めて、これを繰り返す勾配法によって一応は解くことができます。

 

W_{t+1}=W_{t}-ε\frac{\partial}{{\partial}W}KL[p_{Y}||q]

 

しかしこの勾配法は、今よりもKLダイバージェンスを小さくするWに進んでいくだけであり、局所最適解に収まる可能性は否定できません。つまり学習がうまく行くかどうかというのは、初期値W_1と移動させる度合いεに大きく依存することになります。

しかも今回勝手に独立な分布qを準備しているために、このqが真の分布rとそもそも全く違うものであれば、独立性自体は確保できているものの、そもそも得られたデータに関する物理的解釈は難しくなります(あくまで統計的に独立な何らかの成分を得ただけ)。

このように真の分布に何らかの確率分布を仮定している推定方法をパラメトリック推定と言います。

 

実際には推定関数なる関数を学習に組み込み、セミパラメトリックな学習を用いるのが一般的な方法だそうです。(参照:情報幾何学の新展開)

 

パラメトリックな方法とセミパラメトリックな方法の具体的なアルゴリズムの導出に関しては、気が向いたら続編として書きたいと思います。