1個のニューロンの学習(1)

マカロック・ピッツの式

  • y=1\left(\Bigsum_{i=1}^ns_ix_i-h\right)・・・・(1)

に従う1個のニューロンがあるとする。「パターン認識(4)」で説明した線形分離可能なパターン群が与えられたとして、このニューロンをそのパターン群を識別出来るようにするために(人が外部からシナプス荷重s_iしきい値hを設定するのではなくて)学習によって自動的にシナプス荷重s_iしきい値hを調整することは出来ないだろうか? つまり、このニューロンにパターン(=全てのiについてのx_iの値の集合\{x_i\})を与えて出力yを観察する時にあるパターン群に属する時だけy=1となり、そのパターン群に属さない時にはy=0となるように自動的にs_ihを調整することは出来ないだろうか? 出来ればこのニューロンは脳の機能に少し近づくことになる。


ニューロンの学習を実現ために、パターン\{x_i\}ニューロンに与えて出力yを得た後に、外部から正解を示しその正解によってs_ihを調整する方法を考える。これを次のように考える。正解を示す信号を教師信号と呼び、rで表すことにする。

  • 出力が教師信号と等しかった場合、つまりy=rである場合は、s_ihの値を変えない。
  • 出力が教師信号と等しくなかった場合は次の2つに分けて考える。
    • 教師信号が1なのに出力が0だった場合、つまりr=1y=0だった場合は、このパターンでよりyが1になり易いように
      • hの値を減らす。
      • x_i=1であるようなiについては、s_iの値を増やす。(この結果x_is_iの値が増える。)
      • x_i=0であるようなiについては、s_iの値を変えない。(x_i=0なのでs_iの値が何であってもx_is_iの値はゼロで変わらない。)
    • 教師信号が0なのに出力が1だった場合、つまりr=0y=1だった場合は、このパターンでよりyが0になり易いように
      • hの値を増やす。
      • x_i=1であるようなiについては、s_iの値を減らす。(この結果x_is_iの値が減る。)
      • x_i=0であるようなiについては、s_iの値を変えない。(x_i=0なのでs_iの値が何であってもx_is_iの値はゼロで変わらない。)

上記で登場したこれらの増やす値、減らす値に全て同じ値を使うと仮定する。そしてそれをaで表すことにする。aは正の定数である。そうすると上記は以下のように表すことが出来る。

    • r=1y=0の場合
      • h{\leftar}h-aと置換える。
      • x_i=1であるようなiについては、s_i{\leftar}s_i+aと置き換える。
      • x_i=0であるようなiについては、s_iの値を変えない。
    • r=0y=1の場合
      • h{\leftar}h+aと置換える。
      • x_i=1であるようなiについては、s_i{\leftar}s_i-aと置き換える。
      • x_i=0であるようなiについては、s_iの値を変えない。

これらのことは以下の式にまとめることが出来る。

  • h{\leftar}h-a(r-y)・・・・(2)
  • s_i{\leftar}s_i+a(r-y)x_i・・・・(3)

確かにこの式(2)(3)によれば、ニューロンの出力が正解の場合(r=yの場合)は、hs_iは変化せず、不正解の場合(r{\neq}yの場合)でもx_i=0の場合はs_iは変化しない。そして、r=1y=0の場合、h{\leftar}h-ax_i=1であるようなiについては、s_i{\leftar}s_i+a、逆にr=0y=1の場合、h{\leftar}h+ax_i=1であるようなiについては、s_i{\leftar}s_i-aとなる。式(2)(3)はローゼンブラットが1958年に提案した学習アルゴリズムである。これは標準デルタ則と呼ばれている。