1回目と2回目は、①答え(教師データ)を決めて行う学習の仕組みについて取り上げました。3回目では、学習を行って正しい回答予測にたどり着くまでのプロセス(アルゴリズム)について説明します。
以下のように、入力されるデータX1とX2の入力データの横軸の順番を同じ順番に並べて、ニューロンの計算の流れをグラフで考えます。
X1とX2の6回分の入力データが学習用に読み込まれたとき、それぞれのデータに重みW1とW2をそれぞれ掛けた結果X11とX21が合わさって、たし合わせることで、Yが出力されます。
この時、出力されたYの結果のグラフが、正しい答えのグラフYtと違ったとします。人が見るとグラフからW1だけ変化させて傾きを変えてあげればよいと判断ができますが、ニューラルネットワークによる学習ではそれができません。出力されたYのグラフを正しい答えのグラフYtに向けて、少しづつ重さW1とW2の両方を変化させて答えにたどり着かせる仕組みとなります。この時、誤差を判断してW1とW2を増やす方向か減らす方向か判断しなければいけないわけですが、この判断を勾配降下法という仕組みで行っています。
まず、誤差を判断する方法ですが、各出力Yと正しい答えYtとの差を求めて平均化するのではなく、差を累乗し(Y-Yt )2、平均化して求めます(二乗平均誤差)。そうすることで以下の誤差の違いを求めることができるからです。
では、〇番目の誤差である(Y-Yt )2を求めてみます。YはW1とW2を変数に持った関数であることがわかります。
これを、それぞれW1とW2のグラフにし、極値(最下点)を求めることで、〇番目の誤差をなくすためのW1とW2が求まります。
例えばこれが、2番目に読み込まれた入力X1=2とX2=1に対する出力Yの誤差だったとします。
上記の(Y-Yt )2のグラフにX1=2とX2=1、変数としない方のW1またはW2を代入し計算します。これによって、人がこのグラフを見れば、W1=1にするか、または、W2=1.5にすることで、2番目のデータの誤差を0にできることがわかります。両方の数字をW1=1、W2=1.5に変えては、誤差が0にはならないため、この値は、W1、W2を変化させる方向を示す目標値となります。なので、W1は0.5⇒1へ向けて、W2は0.5⇒1.5へ向けて、ともに増やす方向に変化させてゆけばよいとわかります。
ですが、機械学習では、グラフの判断ができないため、先ほどのW1、W2を変化させる方向を、(Y-Yt )2を微分した値((Y-Yt )2グラフの接線の傾き)で判断しています。以下のように(Y-Yt )2を微分し、現在のW1もしくはW2の値を入れると、それぞれ、(Y-Yt )2グラフ上での今の接線の傾きが求められます。
この(Y-Yt )2を微分した値が0になれば(Y-Yt )2グラフ上の最下点(目標値)となるわけです。W1、W2の微分値(傾き)ともに-2なので、目標値―現在値=0-(-2)=2(>0)で、0に近づけるため、W1、W2は、増やせばよいとわかるわけです。
この結果をもとに、各データが読み込まれるたび、W1、W2を変化させてゆきます。(たいていは、複数のデータの結果をまとめて、平均化し変化させます。)
ここまでは、出力に最も近い入力の重みW1とW2の変化のプロセスを解説してきました。ここからは、以下のように先ほどの入力X1が入力X01と入力X02からきている場合、入力X01と入力X02の重みW01とW02は、どのように判断されるかについて説明します。
上記の図のうち、W01は、「入力値X01」、「入力値X01とX02に対するX1の傾き」、先ほどの「W1の重みの変化させる量」これらをかけ合わせることで、増減を判断させています。
W02についても同様です。「入力値X02」、「入力値X01とX02に対するX1の傾き」、先ほどの「W1の重みの変化させる量」これらをかけ合わせることで、増減を判断させています。
では、以下のようにX1からの入力が二つのニューロンに行っていた場合はどうなるかです。これはX1からの入力が出力側へ与える影響の大きい方にX02の変化を合わせる必要があります。そこで、先ほどのδ0の式に、さらに重みW1を掛けることでX1からの入力が出力側へ与える誤差影響の割合を反映させてあげます。この計算式を用いた仕組みを、誤差逆伝搬法と呼んでいます。このδの計算を同じようにX1の出力される枝の数だけ行い、すべてのδを足したものをW02に加えることで、出力側の誤差が入力側に適切な割合で反映されていきます。
ディープラーニングでは、以上のように学習を行うことで、正しい回答予測にたどり着くことができる仕組みを構築しています。
※この説明では、ニューラルネットワークの本質的な仕組みを伝えるため、重みの変化量が与える影響について極力触れず、変化方向性(重みの増減)に着目して解説しました。実際の重みの変化量の影響度合いを学ぶためには、偏微分を用いた数式で学ぶ必要があります。
コメント