HELLO CYBERNETICS

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

パーセプトロンの概観とディープラーニングへ

 

 

follow us in feedly

パーセプトロンとサポートベクターマシンの考え方の違いをまとめます。

いずれも線形分離を達成するための手法ですが、線形分離ができない場合はそれぞれ違った手法で線形分離ができそうな問題へと変換していきます。実を言うと幾何的には両方とも同じ処理方法で解決をしようとしているのですが、その解決方法を見つける手段が異なっていると見ることができます。

 

 

 

パーセプトロンの発想

パーセプトロンがいかにして問題を解決しようとするかは、簡潔に以下の図で表すことができます。ここでは簡単のために二次元の二値分類を行います。

f:id:s0sem0y:20160314055458p:plain

プロットされたデータに対して、どの点がどちらのデータに属するのか(オレンジか青か)を教えることで、適当な分類直線(1)を少しずつ変えていき(2)、最終的に線形分離可能ならば分類直線を必ず見つけ出します(3)。

 

f:id:s0sem0y:20160314093123p:plain

 

もっと高次元になっても話は同じです。上記図では4次元だとして、その4次元データに対して1か0かを上手く出力するように各データの重みと閾値を決定します。

ただし線形分離可能ならばというのはかなり厳しい仮定であり、ほとんどの場合は現実にそのような都合の良いデータは中々ありません。そこで、パーセプトロンを多層化することで問題を解決しようとします。多層パーセプトロンが出力するのは分離直線ではなく分離曲線になります。

 

f:id:s0sem0y:20160314093558p:plain

 

中間層で適当な非線形変換が行われた後に、最後の出力層で値を出します。二値分割の場合は出力を2つ用意して、分類データに応じて一方が1になるように設定することが多いです。

 

SVMのカーネル法との対比を見る場合には、中間層でデータを高次元空間に飛ばして多様体として埋め込み、その多次元空間で線形分離平面を最後の出力層で構築していると考えると見通しが良くなると思います。(ただし入力層と中間層が同じユニットの数なら、単純に何らかの非線形変換をしているだけですが、ともかく線形分離できないデータを多様体としてグニャグニャ曲げるイメージです)

 

 

線形分離不可能な問題に対しての発展

多層パーセプトロンは線形分離可能になるような上手い高次元への変換を適当な変換で予め構築しておこうと考え、中間層を挿入しました。ニューラルネットワークは更に発展して、学習によって適当な変換を獲得しようとしたのです(逆誤差伝搬法)。しかし、計算コストの問題からほとんど実用的な成果はありませんでした。しかもSVMでカーネル法が現れてから、具体的に上手い変換を探す必要はなく、内積だけを探せばいいことが分かりました。内積はスカラーですから、事実上無限次元に変換するようなケースすらも、適当な内積を定義することで表現できてしまうのです。これは上手い変換を見つけるよりはだいぶ楽ですし、計算コストも低く、元々SVMがマージン最大化を行なうことで得られる汎化性能の高さも相まって、ニューラルネットは姿を消しました。

・学習で変換を得ようとしたニューラルネット

・変換をカーネルによって解決したSVM

 

しかし、近年はそのニューラルネットの構造や、学習の手順を見直すことで実時間で動作できる方法も考案され、計算機そのものの性能の高さも相まってニューラルネットワークが復活しました。特に積層自己符号化器(積層オートエンコーダ)のディープラーニングは、構造的にはニューラルネットを多層化していったに過ぎません。違いは自己符号化器を予め貪欲学習しておくことのみです(もちろんソレがコロンブスの卵のように画期的だったのですが)。この事前学習が上手い変換を予め見つけておくことに相当します。これは本来多層パーセプトロンの時にやろうとしていた発想と同じです。適当な変換を中間層で構築しておくのです。更に事前学習にて得た変換を、逆誤差伝搬法で改良していくことで精度を高めていきます。コレはニューラルネットワークの発想そのものです。

ともかく多層のニューラルネットという構造を実時間で学習できるのは非常に重要なことです。

⇛変換を学習によって得ることで、カーネルを人手で設計する必要がない

こうして、SVMに取って代わりニューラルネットワークの時代が再び訪れました。 

 

・補足

DBNはボルツマンマシンの特殊なケースで、数理的にもっと難しいです。

ディープラーニングの主要な手法として積層オートエンコーダと共に語られますが、かなり考えは異なります。事前学習を行なうという部分のみが同じで、これがディープラーニングとしては重要なことなのですが、学習の数理モデルとしては全然違う発想ということだけ意識したほうがいいかもしれないです。(そもそも出発点がパーセプトロンじゃない)

 

まとめ

本来のパーセプトロンの問題解決の発想は、データを上手く分離するように少しずつ分離直線を変更していくというものであり、ディープラーニングでもそれは変わりがありません。規模が大きくなっただけの話です。今後ディープラーニングの課題は以下だと思います。

・どれくらい多層にするのか、どれくらいのユニットを配置するのか

 ⇛ベイズ的取り扱いによるハイパーパラメータの推定

・なぜ多層化や発見的手法が学習を上手く行わせるのか

 ⇛学習の力学系脳科学との対応