誤差逆伝播法とは


トップメニューへ

確率・統計

統計/解析

様々な統計量
分散、標準偏差、共分散
単回帰分析,最小二乗法
最小二乗法の公式導出
重回帰分析
モンテカルロ法

ベイズ理論

同時確率、条件付き確率
ベイズの定理
ベイズの定理応用形
逐次ベイズ推定
単純ベイズ分類器
確率分布推定
確率分布推定(正規分布)
MAP推定,最尤推定
ベイジアンネットワーク

確率分布

確率変数 , 確率分布とは
組み合わせの計算方法
ベルヌーイ分布
二項分布
正規分布
ポアソン分布
ベータ分布

ニューラルネットワーク

ニューラルネットワークとは
シグモイド関数
勾配法(最急降下法)
誤差逆伝播法
実例:画像認識方法
実例:画像認識方法②
畳み込みニューラルネット

公開日:2018/6/23 , 最終更新日:2018/11/28       

前提知識
ニューラルネットワークとは
最小二乗法
シグモイド関数


こちらでニューラルネットワークの概要について説明しましたが、誤差逆伝播法とはニューラルネットワークの各エッジに与えられている重みを最適化するための手法の一つとなります。 誤差逆伝播法はバックプロパゲーション(backpropagation)とも呼びます。

誤差逆伝播法の考え方は簡単で、ニューラルネットワークの出力値と真値を比較し、出力値と真値との誤差が最も小さくなるように、重みwを設定するというものです。


出力値と真値との誤差を最も小さくする方法は、最小二乗法の考え方を用います。つまり、誤差の二乗和(残差平方和)を求め、重みwを変数とおいてwについて微分した結果が0に近づく様にすれば良いです。

上記より、


を満たすwを求めれば良いのですが、一つ問題があります。それは上記の解が簡単には求まらないという事です。Aはシグモイド関数で表現されるのですが、シグモイド関数は指数関数となり単純な式変形で解を求めることは出来ません。 そこで勾配法を用いて徐々に最小値に近づけていく方法をとります。重みwの学習(更新)は以下の式で表します。


ここでαは学習率といい、最小値にどれくらいの早さで近づけるかを決めるものです。学習率を大きくすると最小値を超えてしまう場合がありますが、逆に小さくしすぎるとなかなか最小値に近づかないので注意が必要です。 学習率は試行錯誤で決めることになります。


■誤差関数Eの微分
誤差関数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と重みの関係を以下の様に示します。ここからも、誤差が最小値を取る領域が広くあることが分かります。



■多重パーセプトロンの時の誤差逆伝播法
入力層と中間層の間の重みを更新する場合、中間層の誤差を求める必要がありますが、中間層の真値というのは有りません。 従って、出力層の誤差を用いて中間層の誤差を間接的に求めてやります。



考え方は、出力層の誤差は中間層の誤差から生じたもので、中間層の重みによって出力層へと分配された結果が出力層の誤差であるので、 逆に考えて、出力層の誤差から中間層の誤差を求めることができ、以下の様に表せます。



なお以下が成り立ちます。


計算例
以下の時、誤差E3、誤差E4を求めよ。

計算の簡略化
上記(3)(4)にある分母の項は正規化因子といって、重みを正規化する役割となります。計算を簡単にするため、この項を省いて以下の様に計算します。 この項を省くことで誤差の絶対値の大きさは異なりますが、各誤差の大小関係は変わらないという事と、もともと誤差は重みの計算のために必要なのですが 重みの計算は学習率で調整されるので、誤差の絶対値の大きさが変わっても(正規化因子を省いても)問題ありません。



試しに上記例題をこの式を用いて計算するとどうなるでしょうか。結果は以下のとおり。誤差の絶対値の大きさは変わってますが、 各誤差の大小関係は変わっていないことが分かります。



(5)式を更に簡略化するため行列で表現します。
























inserted by FC2 system