勾配法の機械学習への適用



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク

公開日:2019/11/17          

前提知識
 ・勾配法(最急降下法)の原理
 ・偏微分 , 連鎖率
 ・ニューラルネットワークとは
 ・シグモイド関数
 ・誤差関数


こちらで勾配法の原理について説明しましたが、勾配法の機械学習への適用を考えます。勾配法とは関数の形が解らなかったり、微分することが難しい場合などにおいても、関数の最小値を遂次計算的に求める事ができる手法で、以下式で表されるものでした。



機械学習において勾配法で求める関数の最小値は真値とニューラルネットワークの出力値の誤差になり、その時の変数は重み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と重みの関係を以下の様に示します。ここからも、誤差が最小値を取る領域が広くあることが分かります。











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

関連記事一覧



機械学習

分類(classification)

ニューラルネットワーク(NN)

クラスタリング

強化学習

敵対的生成ネットワーク