ニューラルネットワーク
Neural Network

PCinfo トップページプログラミング専門分野ハードウエアその他

目次

ニューラルネットワークとは
脳のシステム
ニューロンのモデル化
パーセプトロン
バックプロパゲーション
次回の予定


ニューラルネットワークとは

ニューラルネットワークは、人間の脳の神経回路の仕組みを模したモデルです。 コンピュータに学習能力を持たせることにより、様々な問題を解決するためのアプローチです。

コンピュータは単純な処理を高速に行うことに秀でており、その能力は人間のそれを遥かに凌いでいます。 一方で、人間にとって簡単な動作である、手を動かしたり、物体を認識したりという処理はコンピュータにとっては 非常に複雑なものであり、苦手とする処理なのです。

そこで、そのようなコンピュータの苦手とする問題に対し、人間の脳のメカニズムをコンピュータ上で 人工的に実現することにより解決を図ろうとするアプローチが生まれたのです。

ニューラルネットは人間の脳のメカニズムを模したものではありますが、脳のシステムを再現すること自体が ニューラルネットの目的ではありません。あくまで、問題解決の手段であるという認識をもって 学んでいってください。

目次へ


脳のシステム

人間の脳の構造は非常に複雑であるため、まだ非常に未解明の部分が多いですが、 基本的な脳の働きについては幾らか解明されています。

脳は、100億とも140億とも言われる膨大なニューロンと呼ばれる神経細胞が集まり 構成されています。ニューロン同士は相互に連結され、巨大なネットワークをつくることで、 様々な知的活動を実現しているのです。

では、脳の基本構成要素たるニューロンの構造を見ていきましょう。



ニューロンは大きく分けて、細胞体、樹状突起、軸索、シナプスから構成されています。 細胞体がニューロンの本体で、その細胞体から樹状突起と軸索が伸びています。樹状突起の 役割は、他のニューロンからの情報入力で軸索は他ニューロンに情報を送る役割を 担っています。

単純に樹状突起=入力端末、軸索=出力端末と考えて頂いて構いません。

ニューロン同士は繋がっていると言いましたが、実は物理的に結合しているわけではありません。 ニューロンは他ニューロンからの情報・刺激を受けると、細胞体の電位が次第に上がっていきます。 そしてその電位が一定の値(閾値)を超えると、インパルス信号を出力します。この現象を 発火といいます。

すると、軸索の先端にあるシナプスから神経伝達物質と呼ばれる科学物質が放出されます。 そして、その神経伝達物質を樹状突起上のイオンチャンネルが受け取ります。

目次へ


ニューロンのモデル化

では、ニューロンのモデル化を行いましょう。 ニューロンの基本的な働きは情報(信号)の入力と出力です。ただし、入力された情報をそのまま出力する のではなく、一定の閾値を超えたときのみ出力されます。



ニューロンは相互に信号伝達を行いますが、その信号伝達効率は一様ではありません。そこで、 それぞれの入力に対し結合荷重を設定します。そして、その重み付きの入力の総和が各ニューロン 設定されている閾値を超えたとき、発火したものとみなし、他ニューロンに信号を送ります。 コンピュータ上での実現のため、簡単化のため0を信号が無い、1を信号がある状態とします。

では、数式化に話を移しましょう。

i番目のニューロンからの入力信号を、それぞれの荷重をとするとき、 (ちなみに、荷重は0〜1までの実数値で設定します。)、他ニューロンからの入力信号の総和は、

      

となります。入力信号を受けっとったニューロンは、その入力値が一定の閾値を超えたときに 他のニューロンに対して信号を出力します。よって出力は次のようになります。

      

ここで関数は、入力値に対し出力を0か1で返すものです。このような関数は、 ステップ関数またはヘビサイド関数と呼ばれています。関数は次のようになります。

      

以上が、今後ニューラルネットを構成していく上での基本単位となるニューロンのモデルです。

次回はニューロンによる学習についてみていきましょう。

目次へ


パーセプトロン

ではニューラルネットワークの構築に話を進めていきましょう。

ニューラルネットの元祖とも呼べるものが、1958年にRosenblattにより提案されたパーセプトロン という階層型のネットワークです。パーセプトロンは3層から構成されており、それぞれSensory層、 Association層、Response層と呼びます。各層のユニットは独立しており、フィードフォワード型の 構造になっています。



S層の役割はA層に対する情報伝達のみであり、学習うんぬんはA層とR層間の話になります。


【S層→A層】

S層のiユニットからA層間のjユニットへの結合荷重をW_ji、重みつき総和をnet_j、
A層のjユニットへの出力Y_jは、

      
      

【A層→R層】

A層のjユニットからR層間のkユニットへの結合荷重をW_kjとすると、重みつき総和をnet_k、
R層のkユニットへの出力O_kは、

      
      

ここで、f( )はステップ関数であるものとします。

      


■パーセプトロンの学習

最初に述べたように、学習はA層とR層間の話なので、変更される結合荷重はW_kjとR層の閾値 となります。S層A層間のW_jiは固定です。 パーセプトロンは教師あり学習であり、実際の出力値と教師信号の差が無くなるように 結合荷重と閾値が調整されることになります。 教師信号t_kとパーセプトロンの出力値O_kとの誤差t_k-O_kから 結合荷重の修正量ΔW_kjを次のように定義する。

         (ηは学習係数)


この修正量を用いて、閾値も含む結合荷重W_kjは次のように修正される。

         (右辺のW_kjは修正前、左辺は修正後の結合荷重とする)


■パーセプトロンの限界

MinskyとPappertの著書『Perceptron』において、パーセプトロンが線型分離可能問題しか 解決できないという証明がされてしまいます。つまり、線型不可分な例えばXORのような単純な 問題すらパーセプトロンでは解くことは出来ないという結論が出てしまい、ニューラルネットワークの ブームは終焉を向かえてしまうのです。

この問題の解決には、1986年に提案される、Rumelhartらのバックプロパゲーション(誤差逆伝播法) を待たなければなりませんでした。

目次へ


バックプロパケーション

1986年にRumelhart、Hinton、Williamsによってパーセプトロンの問題を解決した バックプロパゲーション(誤差逆伝播法)が提案されました。このモデルも入力層、中間層(隠れ層)、出力層の 3層から構成されるフィードフォワード型のモデルで、基礎はパーセプトロンです。



Rosenblattのパーセプトロンとの主な違いは、


○出力関数として、ステップ関数ではなく、微分可能な連続関数を使用する点。
○出力値と教師信号の2乗誤差を計算する点。
○学習則が一般化デルタ則である点。


くらいでしょうか。一般化デルタ則は別名バックプロパゲーション則と呼ばれ、 出力側から入力側に向かって逆向きに結合荷重を修正していきます。


■前進型演算

【入力層→中間層】

入力層のiユニットから中間層間のjユニットへの結合荷重をW_ji、重みつき総和をnet_jとすると、
中間層のjユニットへの出力Y_jは、

      
      

【中間層→出力層】

中間層のjユニットから出力層間のkユニットへの結合荷重をW_kj、重みつき総和をnet_jとすると、、
出力層のkユニットへの出力O_kは、

      
      

ここで、f( )は微分可能な連続関数である必要があります。
ここでは、次に示すシグモイド関数(ロジスティック関数)を採用します。

      


■後進型演算

【出力層→中間層】

まず、一般化デルタ則を定式化しましょう。 出力層k番目の教師信号をt_kとすると、出力値と教師信号の2乗誤差Eを次のように定義します。

      

ここで、とすると上の式は次のように記述できます。

      

学習により、この誤差E(E≧0)を減少させるように結合荷重を修正してゆくことになります。
誤差Eが0となり無くなるのは、δ=0となるときであり、それが学習の終了となる。

    δ_j=βO_j(1-O_j)(t_j-o_j)

【中間層→入力層】

    δ_j=βO_j(1-O_j)買ツ_kW

    ΔW_ji=ηδ_jO

    W_ji←W_ji+ΔW_ji

まだ、書いてる途中です。もうしばし待たれよ。

目次へ


次回の予定

・ホップフィールドモデル
・ボルツマンマシン
・リカレントニューラルネットワーク
・自己組織化マップ
・連想記憶

目次へ





HOME