コラム / ニューラルネットワーク / 第6章

HOME 研究室概要 コラム 周辺探索 メンバー 掲示板 リンク

第6章 誤差逆伝播法について

 ネットワークの形態の1つとして、階層型ネットワークがありました。ここでは、階層型ネットワークに対する学習法として有名な誤差逆伝播法について説明します。

 このページの目次

6.1節 誤差逆伝播法の目的
6.2節 誤差逆伝播法の原理
6.3節 誤差逆伝播法の流れ
6.4節 誤差逆伝播法の問題点
6.5節 まとめ

 6.1節 誤差逆伝播法の目的

 まず、誤差逆伝播法で用いられるネットワークと、 表記の仕方について説明します。

N個の層を持つ階層型ニューラルネットワーク

図.12: N 個の層を持つ階層型ニューラルネットワーク

 図.12は、N 個の層を持つ階層型ニューラルネットワークを表しています。入力層が第1層、出力層が第N 層であり、その間の層が中間層です。また、第n 層のニューロンの数を L n 個と表します。 さらに、入力信号と教師信号をそれぞれ次式によって表します。

   :  第 p 番目の入力信号   (13)
   :  第 p 番目の教師信号   (14)

 また、L 1 は入力層の素子数を、L N は出力層の素子数を表しています。

 各ニューロンの出力を次式のように表します。

  out jn  :  第 n 層、第 j 番目のニューロンの出力   (15)

 ただし、入力層のニューロンは入力信号を中間層に伝えるだけで、何の処理も行われません。したがって、

  out j1 = x j  (1≦jL 1)   (16)

となります。また、各層の0番目のニューロン(図.12では、各層の1番上のニューロン)は、次の層のニューロンへ常に 1 を出力します。したがって、

  out 0n = 1  (1≦nN -1)   (17)

となります。つまり、図.12で外部から信号を受け取るニューロンは、何の処理も行わず、ただその信号を次の層のニューロンに伝えるだけになります。

 他のニューロンの出力信号は次式のようにして計算します。

    (18)
    (19)

ただし、

  net jn  :  第 n 層、第 j 番目のニューロンの net   (20)
  w jni n -1  :  第 nj 番目と第 n -1 層 i 番目のニューロンの間の重み   (21)

とします。このようすを表すと、図.13のようになります。

第n層j番目のニューロンの計算

図.13:nj 番目のニューロンの計算

 誤差逆伝播法では活性化関数は次式のシグモイド関数よばれる関数になります。

    (22)

 今まで説明してきたようなステップ関数ではないことに注意して下さい。図.14にシグモイド関数を示します。

シグモイド関数

図.14: シグモイド関数

 誤差逆伝播法では、どれだけ出力層の出力が教師信号に近づいてるのかを表す尺度として、次式で表すことができる、2乗誤差 E を定義します。

    (23)

 この E が 0 に近づけば近づくほど、出力層の出力が教師信号に近づくことになります。したがって、誤差逆伝播法の目的を具体的に言うと、2乗誤差 E を 0 に近づけるように重み w jni n -1 を決めることになります。

 6.2節 誤差逆伝播法の原理

 ここでは、誤差逆伝播法の原理を説明します。

勾配法の例

図.15: 勾配法の例

 図15のような、横軸をある1つの重み w 、縦軸を2乗誤差 E としたグラフを考えてみましょう。E が最小となるような重みを w opt とし、現在の重みの値を w old とします。このとき、学習によって w old から w opt へ近づくように重みの更新が行わなければいけません。そこで、w old の地点での傾きから、変更量 w を求め、新たな重み w new を求めます。

  w new =  w old  + w   (24)

 この傾きは偏微分を使って、次のように表すことができます。

   :  w のみを変数として E を微分したもの  

 図.15のように傾きの符号が正のとき w を減少(変更量が負)させ、負のときは w を増加させます。したがって、変更量は係数ηを使って、

    (25)

と表すことができます。これを繰り返すことで、w opt に近づいていきます。このような方法を勾配法といいます。誤差逆伝播法もこの勾配法に基づいて学習が行われます。

 それでは、具体的に重みの変更式を導いていきます。 式(24)のように、重み w jni n -1 は次式のように変更されていきます。

  w jni n -1 (new ) =  w jni n -1 (old ) + w jni n -1   (26)

 同じく式(25)のように、重みの変更量は次式のようになります。

    (27)

 これを、合成関数の微分の公式から、次式のように変形します。

   
(28)

 ここで、分かりやすくするために、

    (29)

とおきます。δjn はさらに次式のように変形できます。

   
(30)

 ここで、n = N のとき、

    (31)

となり、nN のとき、

   
(32)

となります。

 式(29)〜(32)から、n = N のとき、

  δjn = -(y p j - out jN ) out jN (1 - out jN )   (33)

となり、nN のとき、

    (34)

となり、δjn は、教師信号とネットワークの出力である y p i , out iN を使って計算できることが分かりました。式(33)、(34)から明らかなように、nN のとき、δjn を求めるには、δjn +1 を求めておく必要があります。このように、誤差信号 δjn は出力層から入力層へ向かって、通常の信号の流れとは逆向きに伝播していくことがわかります。誤差逆伝播法とは、このような性質から名づけられました。

 6.3節 誤差逆伝播法の流れ

 誤差逆伝播法に必要な重みの更新式は前節で求めました。それを使って、ここでは誤差逆伝播法による学習の流れをまとめてみます。

  (手順1) 初期値として、全ての重みを乱数によって -0.1〜0.1 程度の範囲の小さな値に設定する。さらに、学習率 η (0<η≦1) を設定する。
  (手順2) 入力信号 x p i (1≦iL 1) をネットワークに入力する。
  (手順3) 入力層から出力層に向けて、各ニューロンの出力を計算する。

  (手順4)
出力層の出力 out jN と教師信号 y p j の誤差から、δjN を計算する。具体的には、以下の式を計算する。

  δjn = -(y p j - out jN ) out jN (1 - out jN )  

  (手順5)
手順4で求めた、δjN を使って、中間層の誤差信号 δjn (nN ) を計算する。具体的には、以下の式を計算する。

   

  (手順6)
手順4、手順5で求めた δjn を使って、以下の式のように重みを更新する。

  w jnin -1 = -η δjn out jn -1  (35)
  (手順7) 全パターンに対する2乗誤差 E が十分に小さくなったと判断したら、学習は終了する。そうでなければ、全パターンについて手順2から手順6までの操作を繰り返す。

 以上が誤差逆伝播法の流れです。当然、学習が終了しネットワークを使用する段階では、手順4から7までの操作は行われません。

 6.4節 誤差逆伝播法の問題点

 誤差逆伝播法には、さまざまな問題点もあります。

 1つめが、局所解の問題です。図.15でみたように、誤差逆伝播法は勾配法を基本にしているため、常に2乗誤差 E が減少するように重みが変更されますが、図.16のようにくぼみの部分に落ち込んでしまうと、そこからは抜け出ることができずに、そこで学習がストップしてしまいます。このようなくぼみを局所解とよびます。

局所解の例

図.16: 局所解の例

 2つめが、過学習の問題です。ネットワークは、学習時に使用した入力信号以外の、未知の入力信号に対しても、それらしい出力を行ってくれます。たとえば、学習時に使用した入力信号に近い入力信号を与えると、教師信号に近い出力を行ってくれます。このような能力を汎化能力とよびます。しかし、あまりにも学習時の2乗誤差 E にこだわりすぎて、学習をさせすぎると、逆にこの汎化能力が落ちてしまいます。図.17を見て下さい。黒丸の教師信号で学習を行ったネットワークで、実線と破線の2つのような入出力関係が得られたとします。実線は、教師信号と教師信号との間で出力に激しい変化が存在しませんが、破線では、教師信号と教師信号との間では存在します。もし、実線の方が教師信号との2乗誤差が大きいとしても、人間の目で見ると、実線の方が入出力関係として、自然な感じがします。それに対して、破線の方が不自然な感じがします。

過学習の例

図.17: 過学習の例

 3つめが、ネットワークの構造を決定する方法が存在しないという問題です。誤差逆伝播法では、学習開始時から終了時まで、そのネットワークの構造が変化することはありません。しかし、ある入力信号と教師信号に対して、中間層のニューロン数を決定する方法が確立していません。

 その他にもいろいろと問題がありますが、このような問題を解決することも研究のテーマとなっています。

 6.5節 まとめ

 このページでは、誤差逆伝播法について説明しました。誤差逆伝播法では、階層型ネットワ−クに対して教師付き学習を行うことができました

 その流れとしては、まず入力信号を与えてネットワ−クの出力を計算し、次にネットワ−クの出力と教師信号との誤差を計算し、それを利用して重みを更新するというものでした。

 ただ、理論だけでは学習の様子が伝わらないと思いますので、付録として、誤差逆伝播法のシミュレーションも掲載しました。そちらも参考にして下さい。

ページの上へ 前の章へ 上のページへ 付録へ


企画・製作 村上・泉田研究室 HP製作委員会(2001)
ご意見・お問い合わせは、こちら までどうぞ。