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

  • 図3

今度は、いよいよバックプロパゲーションに近くなってきます。ここでは上の図のように、2層のニューラルネットワークだが出力の層にはニューロンが1個しかないネットワークを考えます。誤差E

  • E=(r-y)^2・・・・(5)

で定義します。中間層のニューロンp個あり、j番目のニューロンn_{1j}で表します。出力層のニューロンn_{21}で表します。ニューロンn_{21}の入力z_jに対応するシナプス係数をs_{21}(j)で表すことにします。z_0は常にz_0=1であるとします。ニューロンn_{21}の入力z_jと出力yの関係は

  • y=f(u_{21})・・・・(33)
  • u_{21}=\Bigsum_{j=0}^ps_{21}(j)z_j・・・・(34)

で表されます。ここにf(u)シグモイド関数

  • f(u)=\frac{1}{1+e^{-u}}・・・・(10)

で定義されます。次にニューロンn_{1j}の入力x_iに対応するシナプス係数をs_{1j}(i)で表すことにします。x_0は常にx_0=1であるとします。ニューロンn_{1j}の入力x_iと出力z_jの関係は

  • z_j=f(u_{1j})・・・・(35)
  • u_{1j}=\Bigsum_{j=0}^ns_{1j}(i)z_i・・・・(36)

で表されます。


一般にs_{kj}(i)を1回の学習で変化させる変化分を\Delta{s}_{kj}(i)で表すことにします。バックプロパゲーションの考え方では

  • \Delta{s}_{kj}(i)=-\eta\frac{\partial{E}}{\partial{s}_{kj}(i)}・・・・(37)

\Delta{s}_{kj}(i)を決定することになります。ただし\etaは正の定数です。


まず、\Delta{s}_{21}(j)を求めるために

  • \frac{\partial{E}}{\partial{s}_{21}(j)}

を計算します。

  • \frac{\partial{E}}{\partial{s}_{21}(j)}=\frac{\partial{E}}{\partial{y}}\cdot\frac{\partial{y}}{\partial{u}_{21}}\cdot\frac{\partial{u}_{21}}{\partial{s}_{21}(j)}・・・・(38)

ここで式(5)から

  • \frac{\partial{E}}{\partial{y}}=-2(r-y)

また

  • \frac{\partial{y}}{\partial{u}_{21}}=y(1-y)

また、式(34)から

  • \frac{\partial{u}_{21}}{\partial{s}_{21}(j)}=z_j

なので式(38)は

  • \frac{\partial{E}}{\partial{s}_{21}(j)}=-2(r-y)y(1-y)z_j・・・・(39)

となります。式(37)と(39)から

  • \Delta{s}_{21}(j)=2\eta(r-y)y(1-y)z_j・・・・(40)

となります。これで\Delta{s}_{21}(j)を決定することが出来ました。


次に、\Delta{s}_{1j}(i)を求めていきます。上と同じようにEs_{1j}(i)による偏微分を計算します。

  • \frac{\partial{E}}{\partial{s}_{1j}(i)}=\frac{\partial{E}}{\partial{y}}\cdot\frac{\partial{y}}{\partial{u}_{21}}\cdot\frac{\partial{u}_{21}}{\partial{s}_{1j}(i)}
  • \frac{\partial{E}}{\partial{s}_{1j}(i)}=-2(r-y)y(1-y)\frac{\partial{u}_{21}}{\partial{s}_{1j}(i)}・・・・(41)

ここで

  • \frac{\partial{u}_{21}}{\partial{s}_{1j}(i)}

ですが、シナプス係数s_{1j}ニューロンn_{1j}シナプス係数であるため、影響を与えるのはz_jであって\vec{z}の他の成分には影響を与えないので

  • \frac{\partial{u}_{21}}{\partial{s}_{1j}(i)}=\frac{\partial{u}_{21}}{\partial{z}_j}\cdot\frac{\partial{z}_j}{\partial{s}_{1j}(i)}・・・・(42)

ここで式(4)から

  • \frac{\partial{u}_{21}}{\partial{z}_j}=s_{21}(j)・・・・(43)

また

  • \frac{\partial{z}_j}{\partial{s}_{1j}(i)}=\frac{\partial{z}_j}{\partial{u}_{1j}}\cdot\frac{\partial{u}_{1j}}{\partial{s}_{1j}(i)}・・・・(44)

ここで式(35)から

  • \frac{\partial{z}_j}{\partial{u}_{1j}}=z_j(1-z_j)・・・・(45)

また式(36)から

  • \frac{\partial{u}_{1j}}{\partial{s}_{1j}(i)}=x_i・・・・(46)

式(44)(45)(46)から

  • \frac{\partial{z}_j}{\partial{s}_{1j}(i)}=z_j(1-z_j)x_i・・・・(47)

式(42)(43)(47)から

  • \frac{\partial{u}_{21}}{\partial{s}_{1j}(i)}=s_{21}(j)z_j(1-z_j)x_i・・・・(48)

式(41)(48)から

  • \frac{\partial{E}}{\partial{s}_{1j}(i)}=-2(r-y)y(1-y)s_{21}(j)z_j(1-z_j)x_i・・・・(49)

となります。式(37)(49)から

  • \Delta{s}_{1j}(i)=2\eta(r-y)y(1-y)s_{21}(j)z_j(1-z_j)x_i・・・・(50)

となります。これで\Delta{s}_{1j}(i)を決定することが出来ました。


さて、このバックプロパゲーションという方法の名前は「誤差を後へ伝播する」という意味ですが、式(50)を見ると誤差r-yがその右辺に出ています。出力層(ここでは1ニューロンしかありませんが)で検出された誤差を中間層のニューロンn_{1j}に重みをつけて伝えるという意味ではないか、と思いました。さらに式(40)と(50)を比較すると2\eta(r-y)y(1-y)の部分が共通になっています。そこで

  • 2\eta(r-y)y(1-y)=\delta・・・・(51)

とおくと式(40)は

  • \Delta{s}_{21}(j)=\delta{z}_j・・・・(52)

となり、式(50)は

  • \Delta{s}_{1j}(i)=\delta{s}_{21}(j)z_j(1-z_j)x_i・・・・(53)

となります。これを見ると後ろに(つまり中間層に)伝えているのは単なる誤差r-yではなく出力層での計算結果の一部である\deltaであるようです。