1. 多層パーセプトロン 2. ニューロン 3. 何ができるのか? 4. 学習機能 5. バックプロパゲーション法 1. 多層パーセプトロン多層パーセプトロン (Multi-Layer Perceptron : MLP) は、複数の層にニューロンを配置させた フィードフォワード型ニューラルネットワークです。 ニューロン(図では丸)を層状に並べたもの 2. ニューロンごく簡単に言えば、実際の生物のニューロンは、 自分につながっているニューロンから 受け取った電気信号の総和が あるしきい値を超えると、 他のニューロンへ電気信号を発します (これを発火といいます)。 これを模した ニューロンのモデルが次のようなものです。 N個のニューロンから信号を受け取るとします。 この信号を、ニューロンへの入力と呼び、
また、シナプスの伝達効率の良さにあたるものを結合重みと呼び、
さきほど述べたニューロンの性質を 簡単にモデル化したものが、 「入力と結合重みの積をすべて足し合わせたもの
大きくなければ発火しない」 というモデルです。 すなわち、ニューロンの出力を y とすると、
このモデルは McCulloch-Pitts モデルと呼ばれています。 (McCulloch さんと Pitts さんが提案したのです。) この関数 g(s) は s = 0 で不連続なので、 微分できません。 後ほど紹介する結合重みの学習方法では ニューロンの関数が微分できる必要があるため、
(シグモイド sigmoid というのは 「S字型の」という意味です。) 多層パーセプトロンは このシグモイド関数を持つニューロンが 層状に配置されています。 (ただし、入力層のニューロンは 入力の値をそのまま出力します。) 各ニューロンへの入力は、 前の層の各ニューロンの出力の重み付き和となります。 出力層ニューロンの出力が、 多層パーセプトロン全体としての出力となります。 3. 何ができるのか?たとえば、ソフトコンピューティングのページでの例のように、 文字の画像を入力して それがどの文字であるかを出力する、 といったような、 入力と出力がどういう関係であるか? ということを表現することのできるモデルです。 つまり、入力から出力への関数(写像)を 表わすことができるのです。 例えば画像から抽出した特徴量を入力すると その画像が何であるか判断して出力してくれる 入力から出力への写像を表現する (非線形関数を近似できる) 結合重みを変更すると、 ニューロンのシグモイド関数の形が変わり、 ひいては多層パーセプトロンの関数の形が変わります。 つまり、結合重みをうまく調節することで、 いろんな形の関数を表現することが可能になります。 それも、多くのニューロンを使うほど、 多層パーセプトロンは あらゆる関数を表現できるようになります。 4. 学習機能入力値と出力値が対になったデータをもとにして結合重みを調節することで 入出力関係の学習を行うことができます。 「データをもとにして」 というのは、具体的には 「多層パーセプトロンの出力と データの出力値との 誤差を小さくするように」 ということになります。 データとの誤差を小さくするように 結合重みを学習する 学習の方法として いちばんメジャーなものは、 バックプロパゲーション法です。 5. バックプロパゲーション法バックプロパゲーション法は、1986年に Rumelhart、Hinton、Williams によって 発表された学習方法です。 誤差関数をパラメータで微分することによって パラメータの修正方向を決めて パラメータの修正を繰り返すという勾配法を 多層パーセプトロン用に拡張したものです。 誤差を出力層から前の層へ伝搬していくことから バックプロパゲーション(Back Propagation : (誤差)逆伝搬)法 と名付けられています。 バックプロパゲーションのアルゴリズムについては 非常に多くの解説が 教科書やウェブ上にありますので、 ここでは詳しく解説しません。 原理もアルゴリズムも そんなに難しいものではないです。 プログラムにするのは 少しややこしいかもしれませんが。 次のページでは 3層パーセプトロンのバックプロパゲーションを シミュレーションするJavaアプレットをお見せします。 |