心理データ解析演習(02/6/19)資料1
階層型ニューラルネットワークの基礎の基礎
小島隆次(D1)
ニューラルネットてナニ?
生物の神経系は多数のニューロン(neuron)が複雑に結合して並列処理を行っていると考えられている。ニューロンの生物学的な構造は厳密に考えれば複雑であるが、大まかに言えば、樹状突起(dendrite)、軸索(axon)、細胞体(soma)、シナプス(synapse)から成り立つと考えられる(但し、シナプスは機能的にニューロンの一部であるが、物理的にはニューロンの一部ではない)(図1)。
図1.ニューロンの概略
各ニューロンの樹状突起は、いくつかの他のニューロンのシナプスを通して入力信号を受け取る(ここで、入力信号の種類はシナプス結合の種類で表され、これには興奮性、抑制性、前抑制の3種類があるとされる)。この入力信号は電気信号である。受け取った信号に応じて細胞体が処理を行い、軸索を通じてその結果を自身のシナプスによって他のニューロンに送る(これには、“送らない”という振る舞いも含む)。以上が簡単なニューロンの動作である。
こうしたニューロンの動作を、McCullochとPittsが1943年に次式で示されるような数式で記述した。
このように数式で記述したニューロンの動作モデルの概念図が図2であり、一般にニューラルネットで扱うニューロンとは、この概念図に示されるニューロン(人工ニューロン)をベースにしている。
図2.人工ニューロンの概念図
結局、ニューラルネットとは、こうした人工ニューロン(以下本稿ではニューロンと言えばこの人工ニューロンを指すものとする)をネットワークで結ぶことである種の情報処理を行うシステムのことである
ニューラルネットの種類
ニューラルネットは大まかに分けると、ニューロン間の結合の仕方に応じて2種類に分けられる。一つは階層型であり(図3)、もう一つは相互結合型(図4)である。
階層型ニューラルネットアルゴリズムの代表例は、パーセプトロンと誤差逆伝播法であり、これらは一般にパターン認識や判断、符号化―復号化問題(Encoder―Decoder problem)といった処理によく用いられる。このタイプのネットワークの形式的特徴は、層間でのユニット結合は行われるが、層内でのユニット結合がないという点である。
対して、相互結合型ニューラルネットアルゴリズムの代表例は、ホップフィールドネットとボルツマンマシンである。これらは、連想記憶や最適化問題などで用いられる。このタイプのネットワークの形式的特徴は、層内でのユニット同士の結合が行われる点である。
以上の2種の他にも、自己組織化ネットやJordanネット、Elmanネットなどがあるが、これらは階層型や相互結合型の一部に再帰的結合を加えたりしたものである。
図3.階層型ニューラルネットの例
図4.相互結合型ニューラルネットの例
階層型ニューラルネットでよく用いられるアルゴリズム
凡例
入出力
デルタルールと一般化デルタルール
デルタルールは、中間層と出力層の2層間のみで荷重更新を行うものである。
対して、一般化デルタルールは、中間層間の荷重更新でも行うように拡張したものであり、基本的な考え方は同じである(これがいわゆる誤差逆伝播法(Back Propagation)である)。
以下で、その更新パターンを簡単に示す。
ここで、この誤差関数を最小にするパラメータを推定するのに最急降下法を用いる。
結局、デルタルールは上記(1)の場合のみで収束条件を決めるアルゴリズムであり、(2)の場合にまで拡張したものが一般化デルタルールということにもなる。
(但し、古典的パーセプトロンでは最急降下法は使えないので、基本的に適当なところで学習を止めるか、誤差が0になるまで学習させることになる)
実装するには?
プログラミング言語を用いてニューラルネットを実装するのはそれほど難しくはない。
Web上にもいくつかフリーのソースがあるので、それを利用しても良いだろう。
問題は、心理学実験のデータやモデルなどに用いる場合にどのようにするかである。
最大の問題は、入出力の表現をどのように扱うのかであろう。
参考文献
「ニューラルネットの基礎と応用」 共立出版 小澤・小島・馬場
「ニューロコンピューティングの数学的基礎」 近代科学社 上坂
「神経回路網の数理」 産業図書 甘利
「ニューラルネットワーク情報処理」 産業図書 麻生
「データ学習アルゴリズム」 共立出版 渡辺
「Cでつくる脳の情報システム」 近代科学社 中野・知能システム研究会
「Cでつくるニューラルネットワーク」 パーソナルメディア 平野
「C-MAGAZINE2002年6月号~特集:学ぼう人工知能~」 ソフトバンク