ニューラルネットワーク(Neural Network): (人工)神経回路網

 ニューラルネットワークとは、生物の脳にある神経細胞(ニューロン)のネットワークの働きをモデル化したものである。

 ニューラルネットワークを用いたシステムでは、人間の脳と同じように、物事を記憶し、記憶を元に判断するという機能を実現できると考えられている。

 例えば、システムに円や三角といった図形を記憶させ、次に先ほどとは異なる図形を入力したときに、記憶を元に、その図形は円なのか三角なのかを判別したり、数字を記憶させれば、数字を読み取ることが出来るようになる。

 ここで、重要な点は、ニューラルネットワークシステムに与える問題の図形や数字は、正解例とは多少ずれた形でも、ある程度システムが正しく判別できる点である。

NN(ニューラルネットワーク)の学習の例)

1. 見本を入力したとき、正解を答えるようになるまで訓練する

2. 入力データの特徴を掴む

3. 未知のデータについても、学習した特徴を元に、答えを出す
(テスト用の問題を与え、正しく回答するか確認)

前回講義した内容に沿っていえば、
  ニューラルネットワークは、「学習」と「汎化」の能力を持っている
といえる。

また、ニューラルネットワークで用いられる学習法は、教師あり のものと 教師なし ものがあるが、
ここでは、教師あり学習である、パーセプトロンと、バックプロパゲーション(誤差逆伝播法)について学ぶ。


電子回路と脳の神経回路の差は?

 コンピュータやケータイに使われている電子部品の回路と、脳細胞の神経回路は、どちらも電気信号で動いている。

 では、電子機器の回路と、脳細胞の神経回路ではどこが異なるのかというと、前者は目的どおりに働くように、あらかじめ設計図に従って配線された回路であるのに対し、後者には、設計図のようなものはない点である。

 脳の配線は、最初(生まれたばかり)はデタラメに配線されているが、目的どおりに動くように訓練することで(刺激に反応して)配線は後から行われてゆく。

 電子回路にも回路中に幾つかのスイッチを組み込んでおけば、スイッチを切り替えることで動作を変更できるともいえる。 この回路自体を自由に書き換えられるようにしたのが、コンピュータで、目的別の回路の代わりにプログラムをメモリーに格納して動いている。

 →訓練により動作が変化するようなプログラムを作れば、脳の神経回路と同じような働きをするプログラムが出来ることになる。

脳をハードウェアと考えると、神経回路はソフトウェアの様なものかもしれない。


神経細胞のモデル

脳神経細胞を通る電気信号は、

左端の 樹状突起 から 軸索 を通って、右端の終端に至る。 終端は分岐しており、他の幾つかの神経細胞の樹状突起と、 シナプス結合 し信号を伝える。
シナプス結合では、化学的な伝達物質の放出と受取りを通して信号が伝わる。

ニューロン: 樹状突起 → 軸策 → シナプス → (他のニューロン)
                               シナプス結合
                                    *発火* →電気信号

あるしきい値(ニューロンによって異なる)以上の刺激を受けると、神経細胞は発火と呼ばれる状態になり、自信も電気信号を発し、他の神経細胞に信号を伝える。
 つまり、このシナプス結合が、スイッチの様に機能する。

脳神経細胞に関するメモ:

 人間の大脳に、 100億以上存在(140億ともいわれる)
 パルス幅1〜2ms(1秒間に、500〜1000個)

これらは、コンピュータの素子と比べて数的にはどういえるか?

シナプスの性質:
 ・シナプスの可塑性: 刺激を受けるほど、強く結合。 刺激を受けないと結合が弱まる。
 ・興奮性シナプス: 電位を上げる
 ・抑制性シナプス: 電位を下げる


ニューロ素子

上記の脳神経細胞を、モデル化し、コンピュータでシミューレート出来るようにしたものが、ニューロ素子である。

・ニューロ素子 デモ1 デモ2


ニューロ素子 : 脳内の細胞をモデル化したもの


パーセプトロン : ニューロ素子を、3層(入力層・中間層・出力層 または、感覚層・連合層・反応層)に結合したもの。
 教師信号有りの学習が可能。


学習の効率化:
学習が完了するまでに、非常に時間がかかる場合がある

  重みやしきい値の収束を早くするような工夫が必要

Hebb学習(強化学習):
学習において、上記の手法では値が誤った場合は 誤りの元となる信号を訂正した。
逆に、
 値が正しい場合は 値の元となる信号を強化する
という方針で学習を行わせてもよい。
このように、素子の発火が望ましい場あり、発火した素子をより発火しやすく重みやしきい値を訂正する学習をHebb学習と呼ぶ。


XOR問題:

(補足) 論理演算 XOR について

上記パーセプトロンでは、学習において出力層のパラメータのみ調整している。
このような学習方法には、学習不可能なパターンが存在する。
出力層のニューロ素子だけでは線形分離不可能なパターンがあるためである。(参照:ニューロ素子)
例)
 上のパーセプトロンの学習方法では、ANDの学習は出来るが、XORの学習は不可能。
 同様に、XORが学習可能で、ANDが学習不可能な場合も存在する。

この問題を回避するには、中間層・入力層のパラメータも調整する必要がある。
 代表的な手法として、
 バック・プロパゲーション法(BP法): 誤差逆伝搬学習法
がある。


バックプロパゲーション法:

簡単に言うと、「入力値が大きいほど、1に接近し、 小さいほど 0に接近するような値を持つ以下の様なグラフ」を入力に対応した出力として利用する。 そうすると、出力値は0,1のデジタルから0〜1のアナログ値として扱うことになる。








出力値 f(u) (0〜1の範囲)







← マイナスの入力値     入力値 u         プラスの入力値→

(詳細: 数学的定義)

ニューロ素子の出力と入力を、0,1のデジタル値から、0.0〜1.0のアナログ値へ以下の関数で変換を行う。

入力 x1 〜 xn
 u = Σ wi*xi
出力 f(u) = 1/(1+ exp(-u))

このf(u)をシグモイド関数と呼ぶ。


学習法:

簡単に言うと、 「入力に対する出力値と、その正解値との誤差を求める。 誤差の元となった中間層の出力も順次調整していく(逆向き)」

(詳細: 数学的定義)

出力の誤差を E=1/2Σ(z-T)^2
で評価する。
このEを極小値にする為の、wjiの変化量冽ji (素子i の出力 から素子j の入力へ結合係数)は、
 冽ji = -ε∂E/∂wji
で求まる。
また出力関数は、 f'(u) = f(u)*(1- f(u)) と微分可能であることなどを利用すると、
各層の素子のwの修正量を出力から逆向きに順次求めることができる。

例)
前述の学習方式ではうまくいかなかった、同じ初期値から始めたパーセプトロンによるXORとANDの学習について

BP法の利点:

BP法の欠点:


ニューラルネットワークによる汎化学習について

2入力で1出力のパーセプトロンを用いてBP法で学習を行えば、ANDやOR、XORなどの関数として作用するパーセプトロンを得られるのは前述のとおりである。

ここで、 多入力・多出力のパーセプトロンについて考える。

このような、パーセプトロンに対してBPにより学習させることで、任意の入力パターンに目的とする出力パターンを対応付けることが可能である。

例えば、

入力 NN 出力
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
17 18 19 20
 A ◎

 B

 C

の番号のついたマスに区切られた領域に文字や図形を描き(色のついたマスが1、その他は0)入力としたとき、
ある出力が1のとき、その文字が入力されたことを示すように学習を進めることが出来る。

学習させたい文字が3種類なら、、
 入力 x1 〜 x20 の値に対応して
 出力 y1 〜 y3 の1何れかが1
となるような、関数をパーセプトロンに学習させることになる。

このとき、うまく学習が進んでいれば、 学習で用いた文字や図形とは異なる文字や図形を入力として与えとき、学習したパターンの中で近いと思われるものが出力として現れるようになる。

この、学習に用いたパターン以外の入力についても判断できるようになるというのが「汎化」学習である。