2011年3月19日土曜日

単純パーセプトロンの動作

さて、パーセプトロンの学習がどうなるかという前に、パーセプトロンがどのように出力を求めるか、という動作について少し説明しておきたいと思います。まず、パーセプトロンが実際どのように動くかが分かってないとですね。

と、ここまで書いて、いろいろ調べてみると、どうも、三層パーセプトロンよりも簡単な、単純パーセプトロンでも十分、線型判別可能のようですので、ここからは、単純パーセプトロンについて説明させて頂きます。混乱させるようで申し訳ありませんがより単純で分かりやすい説明になりますのでよろしくお願いします。

単純パーセプトロンの図は、以下のようになります。



三層パーセプトロンは、この単純パーセプトロンを複数組み合わせて多数決で答えを求めると考えて下さい。

さて、前回、線型分離可能なトレーニングデータの超平面の関数は


となると説明しました。従って、超平面の方程式はf(x)=0であるとなります。言い方を変えると上記の式が0となるとき入力ベクトルx =(x1,x2,…,xn)が超平面上にあるという意味です。これからは、簡単に超平面の方程式は

  wx+b=0
と表現することにします。

単純パーセプトロンは、入力ベクトルx=(x1,x2,…,xn)法線ベクトルw=(w1,w2,…wn)の内積に原点からの距離bを加えるということをやり、なおかつ、その出力の正負だけをみて超平面で分離可能かどうか見ます。

つまり、正負を分ける関数をsgnとし、次のように定義することにしたとき、



単純パーセプトロンの出力は、

 y=sgn(wx+b)

という関数で表せるということになります。

上図4を見て頂くと分かるように、超平面の法線ベクトルwは入力ベクトルの各要素に対する重みとなっています。従って、パーセプトロンを考えるときは、超平面の法線ベクトルw重みベクトルと言い、bバイアスと言ったりもします。

単純パーセプトロンの学習は、トレーニングデータをを用いてこの重みベクトルwとバイアスbを求めるということに相当します。
次回は、この学習について説明する予定です。


2011年3月9日水曜日

パーセプトロンにおける機械学習とその数学的基礎 その2

まず今回は、これまでのまとめという意味も込めて、いくつか言葉の定義から入りましょう。

これまで扱ってきたようなパーセプトロンのことを線形判別器、もしくはローゼンブラッドのパーセプトロンと呼びます。ローゼンブラッドさんが提案したからローゼンブラッドのパーセプトロンです。これは最初の記事(パーセプトロンについての基本知識)の真ん中辺りで説明していますのでそちらを見て下さい。単にパーセプトロン呼ぶときもあります。これからこのブログでは、特に断りを入れない限り、単にパーセプトロンと言うときは線形判別器と同じ意味で言っていると思って下さい。

次に、汎化学習という言葉を説明しましょう。前回の記事(パーセプトロンにおける機械学習とその数学的基礎 その1)で、教師あり学習を少し説明しましたが、教師あり学習でつかうデータをトレーニングデータと呼びます。そのデータでトレーニングされたパーセプトロンは、トレーニングデータにないようなデータについても、線形判別をしますよね。このようなことを、汎化学習という言い方をします。

さて、前回、超平面という言葉が出てきました。超平面について詳しく説明することはなかなか難しいのですが、とりあえず下図3のような形でベクトルwbを定義します。





もう少し詳しく定義すると、超平面に対して垂直に矢印が出ますがこれを法線ベクトルと呼びwで表わすこととします。また、bは原点からの超平面からの距離を表わしています。

ベクトルとは、向きと大きさを同時に表わすもの、と考えて下さい。距離のように大きさだけを表わすものは、数学ではスカラーという言い方をします。

このように準備したとき、パーセプトロンの超平面は次の数式で表せます。





中学生で習う、

 y=ax+b

 という、一次方程式とよく似ていますね。それもそのはずで、線型代数というのは、このような一次方程式の解を求めることから発達した学問で、超平面の方程式は単に、

 y=ax+b

の変数xn個ある方程式と考えてもらうと分かりやすいと思います。