|
前提知識
・勾配法(最急降下法)の原理
・偏微分 , 連鎖率
・ニューラルネットワークとは
・シグモイド関数
・誤差関数
こちらで勾配法の原理について説明しましたが、勾配法の機械学習への適用を考えます。勾配法とは関数の形が解らなかったり、微分することが難しい場合などにおいても、関数の最小値を遂次計算的に求める事ができる手法で、以下式で表されるものでした。

機械学習において勾配法で求める関数の最小値は真値とニューラルネットワークの出力値の誤差になり、その時の変数は重みwとなります。
誤差を求める関数を誤差関数(損失関数)といい、誤差関数値を最小にする時の重みwを勾配法にて求めていきます。上記式は以下で表すことができます。

■誤差関数Eについて
ここで扱う誤差関数は二乗和誤差とします。誤差関数値を最小にするためには微分値が0に近づけばよいです。

実際に誤差関数Eを各重みwについて微分します。例えばw1について微分する場合、w2は固定値として扱い、これを偏微分といいます。
またw1はAの変数になっており、微分をやりやすくする為に連鎖律という考え方を用います。
この様にして全ての重みについて微分していきますが、ここではw1を例にして説明します。

ここでAはニューラルネットワークからの出力値で以下となります。詳細はこちらを参照。

これをw1について微分すると以下となります。シグモイド関数の微分の詳細はこちらを参照。

また、

従って、

となります。これを(1)に代入しますが、上式の2は係数αに含めて考えてもよいので省略します。従って以下が誤差逆伝播法による重みw1の学習式となります。
なおw2の学習式は以下式のx1がx2となります。

■計算例
以下の入力および重みの時の出力値に対して真値は0.5であった。この時、より真値に近づく様に重みw1を更新せよ。ただし学習率α=0.9とする

(2)より、

より、

となりw1が更新されました。実際に誤差が小さくなったのかどうか確認します。

となり、僅かですが真値に近づくことが出来ました。実際にはこの動作を何回も繰り返すことで、より真値に近づくことになります。
誤差の収束値
今回の例において、誤差伝播法による重みの収束値(誤差がゼロになる値)は以下となります。誤差がゼロになる時の重みw1とw2の組み合わせのパターンは何種類もあります。
どこに収束するかは重みの初期値によって決まります。

誤差関数Eと重みの関係を以下の様に示します。ここからも、誤差が最小値を取る領域が広くあることが分かります。

サブチャンネルあります。⇒ 何かのお役に立てればと
|
|