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

HELLO CYBERNETICS

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

いろいろな主成分分析で機械学習の考え方を学ぶ

 

 

https://cdn.blog.st-hatena.com/images/theme/og-image-1500.png

 

はじめに


今回は主成分分析という機械学習でも非常に基本的な手法を用いて、機械学習モデルの見方を学んでいきます。これはどういうことかというと、ある1つのモデルに対しての見方が複数あるということです。ある1つのモデルを調べあげたら他の発展が見られたというケースもありますし、元々独立に発見されたが同じものであったというケースもあります。

主成分分析の場合は「Karhunen-Loeve展開」と呼ばれる場合もあり、信号処理などの分野で独立に発見された手法です。もちろん言うまでもなく、最終的には主成分分析と同じものであるとされ、今は普通は主成分分析と呼ぶ場合が多いです。最近の機械学習手法ですと、あとから別の観点で調べていった結果、同じものであったと考えられるケースが多いように思います(つまり多角的な視野によって明らかになることが増えている)。

というわけで今回は

本質的には同じ手法だが、違う観点からその手法の導出を行うことで、いろいろな考え方の基本を身につけるというテーマで行きます。


その題材として今回は主成分分析を使っていこうと思います。

 

 

いろいろな主成分分析 

手持ちのデータを x \in \mathbb R^{D}として、次元圧縮されたデータy \in \mathbb R^{d}とします。適当な変換行列 W^{T} \in \mathbb R^{d \times D}を使って以下のように、手持ちのデータから次元圧縮されたデータを獲得することを考えます。


y = W^T x

 

このW^Tをどのように決めるのかを主成分分析が与えてくれると考えるのが基本的な出発点になります。しかし、具体的な主成分分析の定式化にも様々なものがあります。これらは全て最終的には同じ数学的な問題を解くことで解決しますが、データに対して行いたい操作の着想がそれぞれ異なっていることを順番に確認していきましょう。

 

以降は簡単のため、W^Tに関してD=2,d=1 の場合を考え、W^Tは単にベクトルw^Tであり以下のような2次元を1次元にする例を見ていきます。

 

y=w^Tx

 

 

モチベーション1:圧縮された際の誤差を最小化したい


ベクトルデータの情報をなるべく維持したまま、その部分空間で表現してしまう方法を考えます。
例えば10次元のデータを5次元で表してしまおうとか、可視化のために2次元で表してしまおうということです。応用としては、画像の圧縮などがあります。

例えばご存知Mnistですと784個の画素があるため、これは784次元のベクトルデータです。
こいつを元々の情報を保ちつつ、50次元くらいで表すことができたら(多少画像が粗くなるかもしれないが)、メモリの節約になりそうです。あるいは、元々の情報を維持している低次元のベクトルデータを分類のための特徴量にするということにも使えます。

簡単のため2次元を1次元に圧縮する例を考えます。
そのときの概略図は以下のようなものです。

 

f:id:s0sem0y:20171227181629p:plain

こうして2次元データが単に数直線上の値(つまり1次元データ)として見られるようになりました。ところで、このようにして2次元データを1次元に圧縮した場合には情報の損失が起こっていることが分かるでしょうか。ピンと来ない場合は、取り出された1次元データから2次元データを完全に復元することが可能でしょうか?という問いを考えてみてください。

実際には2次元データを数直線上に移動した場合に、その移動がどれだけ起こったのかは、数直線上の値を見るだけでは全くわかりません。それは以下の図を見てみると分かるでしょう。もちろん、どれをどれだけ移動したかを完全に記録しておけば復元できます。しかし、そんなことをしていたら、情報圧縮の意味が無いです。

 

f:id:s0sem0y:20171227182445p:plain

 

そこで、

低次元への圧縮作業を行ったときにデータ点を移動させる距離の総和がなるべく小さくなるように、部分空間を決めよう。


というのが今回の考え方です。

ちなみに今回引いた1次元部分空間の方向(傾き)はかなり筋が良く、なるべくデータ点の移動距離が少なくなっています。これがもっと違う傾きの1次元空間だったらどうでしょうか?あるデータ点はやけに移動距離が長くなってしまいそうです。

 

一方で、1次元部分空間を置く位置はどうでしょうか。もうちょっと上に置いておけば、データ点の移動距離が少なくできたんじゃないか?と思えますね。

 

これは以下の書籍の12章において「12.1.2 誤差最小化による定式化」で語られています。

 

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

  • 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/02/29
  • メディア: 単行本
  • 購入: 6人 クリック: 14回
  • この商品を含むブログを見る
 

 

 

 

モチベーション2:圧縮先での表現力を高めたい

先ほどと同様に2次元の例を考えましょう。2次元のデータを1次元で切り取る場合に、仮に以下のような1次元への射影を考えた場合どうなるでしょうか。

 

f:id:s0sem0y:20171227193311p:plain

 

どうなるも2次元の空間で明確に分かれていたデータ点たちが、1次元の空間ではかなり重なってしまいそうです。このような1次元の空間は、データに対して表現力に乏しいと言えます。本来別のものであるデータ点を1次元空間では同じものだと言ってしまいかねないのです。

 

そこで1次元空間の取り方を変えて、以下のようにしてみましょう。

 

f:id:s0sem0y:20171227193503p:plain

 

こうすると元々の2次元空間で表されていたデータ点たちが、おおよそ区別がつく形で数直線上に射影される様子が見られます。ある意味もともとの状態が正確に保存されていると言えますし、これならば何らかの分類問題への特徴量としても活用できるでしょう。

 

 

この両者の違いは、データ点を射影した時に低次元空間で使う領域の広さが関係していそうです。広く領域を使うようにするためには、低次元空間(数直線上)でデータ点がなるべくバラけて配置されている必要がありそうです。

 

すなわち、低次元空間でのデータの分散が最大化されるように部分空間を選んでやる

 

ことになります。

 

 

これは以下の書籍の12章において「12.1.1 分散最大化による定式化」で語られています。

 

 

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

パターン認識と機械学習 下 (ベイズ理論による統計的予測)

  • 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/02/29
  • メディア: 単行本
  • 購入: 6人 クリック: 14回
  • この商品を含むブログを見る
 

 

 

 

 

前者では「射影誤差を最小化」しようという話であって、後者は「射影先でのデータの分散を最大化」しようという話であることに注意してください。最小化問題と最大化問題で真逆のことをやっているように見えますが、「何を」問題としているか(モチベーション)が異なっています。

 

 

 

 

モチベーション3:隠れたデータの発生源を知りたい

これはBSS(Blind Source Separation)問題として知られるより一般的なモチベーションです。BSS問題に対する解法の1つとして主成分分析を用いることが可能です。

 

BSS問題とは観測データ自体がデータを説明する本質ではなく、本当の発生源は別にあると考え、その発生源を推定する問題です。このとき発生源からデータを観測することによって、どのような変形が行われたのかも同時に推定します。図のイメージは下記。

 

f:id:s0sem0y:20171227195622p:plain

 

このときの問題は、手持ちのデータxを圧縮してやろうと言う発想よりは、本質的なデータzが変形されて手持ちのデータになっているという意識になります。

 

y = W^T x (通常の主成分分析)

 

x = A^T z (BSS問題における主成分分析)

 

今はどちら向きに変換を考えているかの違いくらいに思っておきましょう。

 

BSS問題は通常、データの発生源も観測データも高次元だと考えます。今まで見てきた主成分分析は高次元データを低次元部分空間で圧縮するのが基本でした。つまり本質的なデータの発生源は観測データの次元よりも低いと考えていますが、BSS問題は観測データの次元の方が低く、データの発生源が多い場合も想定しています(いずれにしても大抵は不良設定問題になるので、正則化理論を上手く活用する方法が模索される)。

 

BSS問題の解法の一種として、「データの発生源は多次元データで各成分が無相関、かつ観測データよりは低次元であるはずだ」という仮定を設ける方法があります。この問題はデータの特異値分解(あるいは分散共分散行列の固有値分解)に帰着され、主成分分析と一致します。

 

このことは以下の記事で述べられています。

 

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

 

 

 

 

モチベーション4:観測データに不確定要素があり、そのデータが得られる過程を知りたい

これは俗に言う「生成モデル」に該当します。通常は確率的主成分分析として定式化されており、潜在変数モデルの一種です。この場合はBSSと似た考えをしており、背後に潜んだ何らかの変数(潜在変数)があると考えます。

 

その潜在変数を観測する時に、潜在変数とは異なる次元で観測しており、かつその際にガウスノイズが混入してしまっていると考えることにします。これを定式化していくためにxを2次元観測データとしてzを1次元潜在変数だとしましょう。観測時に適当な変換行列A^Tによって1次元から2次元に変わっており、更に2次元の空間で\muだけズレ、かつ2次元ガウスノイズ\epsilon〜{\cal N}(0,\sigma^2 I)が混入したと考えます。数式では

 

x = A^T z + \mu + \epsilon

 

を使うことになります。随分最初に考えていた主成分分析と変わっていますね。

 

今回の場合は、データの発生過程を結構綿密にモデル化しています(以下の図)。潜在変数がまずあり、観測時に異なる次元で見ており、ある平行移動が起こり、ある分散を持つガウスノイズが混入して観測データとなっているという考えです。

 

f:id:s0sem0y:20171227204135p:plain

 

 この定式化を行うと、どのような線形変換が行われ、データがどのくらいずれるのかということまで推定することができます。コレにより、仮想の潜在変数があった時に、どのようなデータが観測されるのかを再現することが可能です(故に生成モデル。潜在変数を適当に作って、上記の計算を行えばいい。確率的な挙動をするので、複数回行って期待値を見てみるのが基本となる)。

 

つまり、観測データがそもそもどのように手元に届いているのかを再現する

 

という考えに基づいているわけです。

 

 

モチベーション5:データから潜在変数の次元(あるいは圧縮の次元)まで求めたい

ここではベイズ主成分分析のことを紹介しますが、ベイズ主成分分析によって「潜在変数の次元まで求まる」というのは一体どういうことでしょうか。今まで、2次元から1次元のケースを考えてきましたが、もう一般的に観測データも潜在データも多次元だと考えましょう。

 

確率的主成分分析におけるモデルは以下のようになっていました。

 

x = A^T z + \mu + \epsilon

 

さてここで、潜在変数の次元と観測データの次元を結びつけているのは行列A^Tに他なりません。こいつの列数がzの次元と一致しています。通常の方法ではこの列数は予め仮定しなければなりませんでした。

 

ベイズ主成分分析では、このA^Tの列数をなるべく大きく取っておいて、不要な列は0だと推定されれるようにモデル構築と学習を行います。具体的にはA^Tの列ごとにガウス分布を事前分布として持つという形でモデル化を行います。これは関連度自動決定の一例であり、他にもRVMや因子分析のモデルにおいて関連度自動決定の働きを見ることができます。

 

 

確率的なモデルの見方を知ることができれば、あとは問題に応じて適したベイズモデルへの拡張が行えます。ベイズの考え方がわからない場合は、以下の記事参考になると思います。

 

 

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com

 

 

またベイズのモデリングについて詳しく解説された以下の書籍もあります。 

今回紹介した例で言うところの、確率的主成分分析からベイズ主成分分析までのギャップ埋めと具体的な推論方法を学べます。ただし、題名にもあるようにベイズ推論に絞ったものでありモチベーション1〜3にあるような機械学習の考え方なども網羅的に扱っているわけではありません。

しかしベイズによる機械学習の考え方に興味のある方にはオススメの一冊です。

機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)

 

 

 

最後に

今回はよく知られた主成分分析を題材にしましたが、他にも違う観点から出発して、最終的には同じ問題に到達するというケースはあります。今はまだ良く知られていない方法も、別のアプローチで関連性が見えてくるということが(特にディープラーニング関連)きっと今後も起こってくるはずです。

 

その場合にも基本的な数学というのが解釈をする上で武器になってきます。数学の表記に困惑する人は、以下の記事が参考になると思います。

s0sem0y.hatenablog.com

 

s0sem0y.hatenablog.com

s0sem0y.hatenablog.com  

s0sem0y.hatenablog.com