バックプロパゲーション(2)

バックプロパゲーションを導く時に最初に用いたのは、誤差Eを小さくするために誤差Eシナプス係数で微分して得た傾きを元にシナプスの変化分を決定しようとする考え方でした。これを勾配法と言います。1ニューロンパーセプトロンの時に用いた標準デルタ則(「バックプロパゲーションに向けて(3)」の式(23)参照。ここでは番号を振り直して式(26)とする)

  • \Delta{s_i}=a(r-y)x_i・・・・(26)

を勾配法で基礎づけることが出来ないか試みてみます。


バックプロパゲーションに向けて(3)」で

私が特に気になるのは、式(21)の学習則ではy(1-y)があるので、yが0に近かったり1に近かったりするとy(1-y)の値が小さくなり、その結果\Delta{s_i}も小さくなる、ということです。そしてシグモイド関数のグラフ

  • グラフ1

を見れば分かるように、u=0付近以外はyは0に近かったり1に近かったりするのです。つまり、uがゼロから大きく離れていればいるほど\Delta{s_i}は小さくなるわけです。もし、本来uが正でなければならないのに現状では0よりマイナス方向に大きくズレていたり、逆に本来uが負でなければならないのに現状では0よりプラス方向に大きくズレている場合は、uの値を変更するために\Delta{s_i}を大きくする必要があるのに、式(21)の学習則では逆に小さくなってしまいます。これでは本当に学習が収束するのか疑問です。また、収束したとしても標準デルタ則(式(23))よりも収束に時間がかかるのではないか、と心配になります。

と述べたようにシグモイド関数を用いた誤差では、本来uの値が大きく外れていた場合でも誤差が小さく出る、という点が問題です。そこで誤差Euそのものを登場させることを考えます。しかし、例えばr=1の時uu{\ge}0ならばいくら大きくてもy=1なので(今はy=1(u)を使うことを考えます)uそのものを誤差に用いることは出来ません。逆にr=0の場合はu<0ならばuの絶対値は不問になります。このように考えて誤差E

  • E=(y-r)u・・・・(27)

とおいてみます。このようにEを定義するとr=yの場合は誤差はゼロになりますし、r\neq{y}の場合、もしr=1y=0ならばu<0E=-u>0となります。逆にもしr=0y=1ならばu{\ge}0E=u{\ge}0となりますので、全ての場合にE{\ge}0となります。問題はu=0r=0の時はy=1となるので誤差があってしかるべきなのにもかかわらず式(27)によればE=0になってしまう点です。そこでu=0の場合を除外して考察します。u>0の場合、あるいはu<0の場合はyは1か0ですがいずれの場合もuの変化に影響されないと考えることが出来ます。よって式(27)をs_ix_iに対応するシナプス係数)で微分すると

  • \frac{\partial{E}}{\partial{s_i}}=\frac{\partial{E}}{\partial{u}}\cdot\frac{\partial{u}}{\partial{s_i}}
  • \frac{\partial{E}}{\partial{s_i}}=(y-r)\cdot{x_i}

よって

  • \frac{\partial{E}}{\partial{s_i}}=(y-r)x_i・・・・(28)

となります。s_iの変化分を\Delta{s_i}で示すと

  • \Delta{s_i}=-\eta\frac{\partial{E}}{\partial{s_i}}・・・・(29)

なので

  • \Delta{s_i}=\eta(r-y)x_i・・・・(30)

ここで\eta=aとおけば、式(30)は標準デルタ則の式(26)に一致します。これで標準デルタ則を勾配法から導くことが出来ました。