BPニューラルネットワーク(三層構造)の勾配式導出

このサイトのオリジナル記事は、「Old Cake 解説 - BP ニューラル ネットワーク」からの転載について説明してくださいbp.bbbdata.com

 

目次

1. 導出目標

1.1 勾配式ゴール 

1.2 本論文における勾配式の目的

2.ネットワーク表現の組み合わせ

2.1 3 層 BP ニューラル ネットワークのネットワーク表現の結合

3. 3 層 BP ニューラル ネットワーク勾配導出プロセス

3.1 導出対象の簡略化

3.2 出力層の重みの勾配導出

3.3 出力層閾値の勾配導出

3.4 隠れ層の重みの勾配導出

 3.5 隠れ層閾値の勾配導出

4. 導出結果のまとめ

4.1 3 層 BP ニューラル ネットワーク勾配式


BP ニューラル ネットワークのトレーニング アルゴリズムには、基本的に勾配式が含まれます。

この記事では、3 層 BP ニューラル ネットワークの勾配式と導出プロセスについて説明します。

1. 導出目標


BP ニューラル ネットワークの勾配導出は複雑な作業です。

導出の前に、このセクションではまず導出の目的を明確にします。

1.1 勾配式ゴール 


多くのトレーニング アルゴリズムがありますが、すべての種類のトレーニング アルゴリズムは一般に損失関数の各パラメーター (w、b) の勾配を使用する必要があるため、損失関数の w、b の勾配を見つけることは BP ニューラルにとって必須になります
。ネットワークレスリンク、
勾配式を見つけます。つまり、各 w、b について次の誤差関数 E の偏導関数を見つけます。

\displaystyle \displaystyle \textbf{E}(W,b)=\dfrac{1}{M}\sum \limits _{m=1}^{M} \dfrac{1}{K}\sum \limits _ {k=1}^{K} (\textbf{f}(\textbf{x})_{km}-\text{y}_{km})^2


\textbf{f}(\textbf{x})_{km} m 番目のサンプルの k 番目の出力に対するネットワークの予測値を \textbf{f}(\textbf{x}) 表し

1.2 本論文における勾配式の目的


勾配は単純に E の w と b への偏微分を求めますが、E のネットワークを含む式 f(x) は非常に大きくなり、偏微分を見つけることは非常に困難でわかりにくい作業になります
。構造式は少し抽象的です.
この記事では、具体的な例として最も一般的に使用される3層構造から始めて、3層構造の勾配式を見つけたいと思うかもしれません
 : 入力層-隠れ層-出力層 (伝達層)隠れ層の関数は tansig、出力層の層伝達関数は purelin です)

3層のBPニューラルネットワークだけですが、

ただし、勾配式の導出は依然として物理的な作業であるだけでなく、細心の注意を払った作業でもあります。

一歩一歩進んでいきましょう


2.ネットワーク表現の組み合わせ


ネットワーク式は損失関数 E に含まれています。勾配を求める前に、

最初に式を明確に整理します。これは、後で導出するのに役立ちます

2.1 3 層 BP ニューラル ネットワークのネットワーク表現の結合


ネットワーク表現の参考形
中間層伝達関数が tansig で出力層伝達関数が purelin である 3 層 BP ニューラル ネットワークは、
次の数式を持ちます。
 

ネットワーク式の一般的な行列形式は、
 次のように一般的な行列形式で記述されます。

\textbf{f}(\textbf{x}) = \textbf{W}^{(o)}\textbf{tansig}(\textbf{W}^{(h)}\textbf{x}+\textbf{ b}^{(h)})+\textbf{b}^{(o)}

ここに \textbf{W} 行列、 \textbf{x} ベクトル、上 付き文字 (o) と (h) は出力層 (out) と隠れ層 (hide) を表します。 、 それぞれ、 \textbf{b}
たとえば、2 つの入力、4 つの隠れノード、および 2 つの出力を持つ BP ニューラル ネットワークは、次のように表すことができます。

 


3. 3 層 BP ニューラル ネットワーク勾配導出プロセス


このセクションでは、求められる各パラメーター w と b の誤差関数の勾配を具体的に導出します。

3.1 導出対象の簡略化


E の式は比較的複雑であるため、
  導出式を単純化するために、問題を「単一のサンプルの勾配を見つける」に変換することをお勧めします。
 部分導出が必要なパラメータ w については、次のとおりです。
\displaystyle \dfrac{\partial \textbf{E}}{\partial w} = \dfrac{\partial \dfrac{1}{M}\sum \limits _{m=1}^{M} \dfrac{1 }{K}\sum \limits _{k=1}^{K}(\textbf{f}(\textbf{x})_{km}-\text{y}_{km})^2 }{ \partial w} =\dfraction{1}{M}\sum \limits _{m=1}^{M}\dfraction{\partial \dfraction{1}{K}\sum \limits _{k=1} ^{K}(\textbf{f}(\textbf{x})_{km}-\text{y}_{km})^2}{\partial w} = \dfrac{1}{M}\ sum \limits _{m=1}^{M}\dfrac{\partial \textbf{E}_m}{\partial w}
つまり、損失関数の勾配は、単一サンプルの損失関数の勾配の合計に等しい (E から b への勾配も同様) ため、まず単一サンプルの勾配を導出します
。 、最後に単一サンプルの勾配を合計します。
今、問題は次のように縮小されます
\dfrac{\partial\textbf{ E}_m}{\partial w} = \dfrac{\partial \dfrac{1}{K}\sum \limits _{k=1}^{K}(\textbf{f }(\textbf{x})_{k}-\text{y}_{k})^2}{\partial w}

3.2 出力層の重みの勾配導出


出力層の重み勾配の導出
出力層の重みは、"出力数 * 隠れノードの数" の行列です.
次に、任意の重み wji の単一サンプル勾配を推定します (つまり、i を接続する重み実際には、
番目 の出力 のみがの関数です。つまり、他の出力 については  、  上記の式は次のようになります。
\displaystyle \begin{aligned} \dfrac{\partial\textbf{ E}_m}{\partial w_\textbf{ji}^{(o)}} &= \dfrac{\partial \dfrac{1}{K} \sum \limits _{k=1}^{K}(\textbf{f}(\textbf{x})_\textbf{k}-\text{y}_\textbf{k})^2}{ \partial w_\textbf{ji}^{(o)}} \\&= \dfrac{1}{K}\sum \limits _{k=1}^{K}\dfrac{\partial (\textbf{ f}(\textbf{x})_\textbf{k}-\text{y}_\textbf{k})^2 }{\partial w_\textbf{ji}^{(o)}} \\& = \dfrac{1}{K}\sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_\textbf{k}-\text{y}_ \textbf{k})\dfrac{\partial \textbf{f}(\textbf{x})_\textbf{k} }{\partial w_\textbf{ji}^{(o)}} \end{aligned }
\textbf{f(x)}_\textbf{j} w_\textbf{ji}^{(o)} \dfrac{\partial \textbf{f}(\textbf{x})_{k(k\ne j )} }{\partial W} = 0

= \dfrac{1}{K}* 2 *(\textbf{f}(\textbf{x})_\textbf{j}-\text{y}_\textbf{j})\dfrac{\partial \ textbf{f}(\textbf{x})_\textbf{j}}{\partial w_\textbf{ji}}
導出を続けると、j 番目の出力のエラー
\displaystyle \begin{aligned} & \dfrac{1}{K}* 2 *(\textbf{f}(\textbf{x})_\textbf{j}-\text{y}_\textbf{j} )\dfrac{\partial \textbf{f}(\textbf{x})_\textbf{j} }{\partial w_\textbf{ji}^{(o)}} \\=& \color{青} \dfrac{1}{K}* 2 *(\textbf{f}(\textbf{x})_\textbf{j}-\text{y}_\textbf{j})\dfrac{\partial \left ( w_\textbf{j1}^{(o)}*\textbf{tansig}_\textbf{1}+...+w_\textbf{ji}^{(o)}*\textbf{tansig}_\ textbf{i}+...+w_\textbf{jh}^{(o)}*\textbf{tansig}_\textbf{h}+b_\textbf{j}^{(o)} \right ) } {\partial w_\textbf{ji}^{(o)}} \\= &\dfrac{1}{K}* 2 *(\textbf{f}(\textbf{x})_\textbf{j} -\text{y}_\textbf{j})*\textbf{tansig}_\textbf{i} \end{aligned}
\textbf{f}(\textbf{x})_\textbf{j}-\text{y}_\textbf{j} が 省略され、 E_\textbf{j}                      
\textbf{tansig}_\textbf{i} j 番目の非表示ノードのアクティベーション値と省略されます A_\textbf{i} (A はアクティブ) と省略されます。

上記の式は次のように記述できます。
\dfrac{\partial \textbf{E}_m}{\partial w_\textbf{ji}^{(o)}} = \dfrac{1}{K}* 2 *E_\textbf{j}*A_\textbf {私}             
上記は 1 つのサンプルの勾配であり、
サンプル全体の勾配を 

\displaystyle \dfrac{\partial \textbf{E}}{w_\textbf{ij}^{(o)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^{M } 2 *E_\textbf{jm}*A_\textbf{im}

 M として記録する必要があります、K はサンプルの数、                                         
E_\textbf{jm}=\textbf{f}(\textbf{x})_\textbf{jm}-\text{y}_\textbf{jm} 出力の数は m 番目のサンプルです.j 番目の出力の誤差は      
A_\textbf{im}=\textbf{tansig}_\textbf{im} 活性化値です. m 番目のサンプルの i 番目の非表示ノードの。    

3.3 出力層閾値の勾配導出


出力層のしきい値勾配の導出
しきい値 b_\textbf{j}^{(o)} (j 番目の出力ノードのしきい値) の導出は、重み勾配の導出と似ています
が、上記の青い部分を次のように

\displaystyle \begin{aligned} \dfrac{\partial \textbf{E}_{m} }{\partial b_\textbf {j}^{(o)}} &= \dfrac{1}{K}* 2 *(\textbf{f}(\textbf{x})_\textbf{j}-\text{y}_\textbf{j})\dfrac{\partial \left ( w_\textbf{j1}^{( o)}*\textbf{tansig}_\textbf{1}+...+w_\textbf{ji}^{(o)}*\textbf{tansig}_\textbf{i}+...+w_ \textbf{jh}^{(o)}*\textbf{tansig}_\textbf{h}+b_\textbf{j}^{(o)} \right ) }{\partial b_\textbf{j}^ {(o)}} \\&= \dfrac{1}{K}* 2 *(\textbf{f}(\textbf{x})_\textbf{j}-\text{y}_\textbf{ j}) \end{aligned}
省略形
\dfrac{\partial \textbf{E}_m}{\partial b_\textbf{j}^{(o)}} =\dfrac{1}{K}* 2 *E_\textbf{j}
上記は単一サンプルの勾配であり、
サンプル全体の勾配を 

\dfrac{\partial \textbf{E}}{\partial b_\textbf{j}^{(o)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^{M }* 2 *E_\textbf{jm}
 M として記録する必要があります。K はサンプル数、出力数は                
E_\textbf{jm}=\textbf{f}(\textbf{x})_\textbf{jm}-\text{y}_\textbf{jm} m 番目のサンプルの j 番目の出力の誤差です。      

3.4隠れ層の重みの勾配導出


隠れ層の重みは、「隠れノードの数 * 入力の数」の行列です. さて、任意の
重み の単一サンプル勾配 w_\textbf{ji}^{(h)} (つまり、i 番目の入力と j 番目の入力を結ぶ重み) 番目
の tansig のみが関数に関するものであるため、上記の式は次のように記述できます。
\displaystyle \begin{aligned} \dfrac{\partial\textbf{ E}_m}{\partial w_\textbf{ji}^{(h)}} &= \dfrac{\partial \dfrac{1}{K} \sum \limits _{k=1}^{K}(\textbf{f}(\textbf{x})_{k}-\text{y}_{k})^2}{\partial w_\ textbf{ji}^{(h)}} \\&= \dfrac{1}{K} \sum \limits _{k=1}^{K}\dfrac{\partial (\textbf{f}(\ textbf{x})_{k}-\text{y}_{k})^2}{\partial w_\textbf{ji}^{(h)}} \\&= \dfrac{1}{K } \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}-\text{y}_{k})\dfrac{\partial \ textbf{f}(\textbf{x})_{k} }{\partial w_\textbf{ji}^{(h)}} \\&=\dfrac{1}{K} \sum \limits _{ k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}-\text{y}_{k})\dfrac{\partial \left ( w_\textbf{k1 }^{(o)}*\textbf{tansig}_\textbf{1}+...w_\textbf{kj}^{(o)}*\textbf{tansig}_\textbf{j}+.. .+w_\textbf{kh}^{(o)}*\textbf{tansig}_\textbf{h}+b_\textbf{k}^{(o)} \right ) }{\partial w_\textbf{ ji}^{(h)}} \end{aligned}

w_\textbf{ji}^{(h)}

  =\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}-\text{y}_{k })\dfrac{\partial \left ( w_\textbf{kj}^{(o)}*\textbf{tansig}_\textbf{j} \right ) }{\partial w_\textbf{ji}^{( h)}}
デリバティブを追求し続ける
  \displaystyle \begin{aligned} &=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}- \text{y}_{k})\dfrac{\partial \left ( w_\textbf{kj}^{(o)}*\textbf{tansig}_\textbf{j} \right ) }{\partial w_ \textbf{ji}^{(h)}} \\&=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x })_{k}-\text{y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left ( \textbf{tansig}_\textbf{j} \right ) }{\partial w_\textbf{ji}^{(h)}} \\&=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf {f}(\textbf{x})_{k}-\text{y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left (\textbf{ tansig}(w_\textbf{j1}^{(h)}x_\textbf{1}+...+w_\textbf{ji}^{(h)}x_\textbf{i}+...+w_ \textbf{jn}^{(h)}x_\textbf{n}+b_\textbf{j}^{(h)}) \right ) }{\partial w_\textbf{ji}^{(h)} } \end{整列}  \color{blue}=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}-\text{ y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left (\textbf{tansig}(w_\textbf{j1}^{(h)}x_\textbf {1}+...+w_\textbf{ji}^{(h)}x_\textbf{i}+...+w_\textbf{jn}^{(h)}x_\textbf{n}+ b_\textbf{j}^{(h)}) \right ) }{\partial (w_\textbf{j1}^{(h)}x_\textbf{1}+...+w_\textbf{ji} ^{(h)}x_\textbf{i}+...+w_\textbf{jn}^{(h)}x_\textbf{n}+b_\textbf{j}^{(h)}) } \dfrac{\partial (w_\textbf{j1}^{(h)}x_\textbf{1}+...+w_\textbf{ji}^{(h)}x_\textbf{i}+.. .+w_\textbf{jn}^{(h)}x_\textbf{n}+b_\textbf{j}^{(h)}) }{\partial w_\textbf{ji}^{(h)} }  \displaystyle \begin{aligned} &=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}- \text{y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left (\textbf{tansig}(w_\textbf{j1}^{(h)} x_\textbf{1}+...+w_\textbf{ji}^{(h)}x_\textbf{i}+...+w_\textbf{jn}^{(h)}x_\textbf{ n}+b_\textbf{j}^{(h)}) \right ) }{\partial (w_\textbf{j1}^{(h)}x_\textbf{1}+...+w_\textbf {ji}^{(h)}x_\textbf{i}+...+w_\textbf{jn}^{(h)}x_\textbf{n}+b_\textbf{j}^{(h) }) }x_\textbf{i} \\&=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_ {k}-\text{y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left (\textbf{tansig}(\textbf{w}_\textbf {j:}^{(h)}\textbf{x}+b_\textbf{j}^{(h)}) \right ) }{\partial (\textbf{w}_\textbf{j:}^ {(h)}\textbf{x}+b_\textbf{j}^{(h)})}x_\textbf{i} \end{aligned}
\textbf{tansig}'(x) = 1-\textbf{tansig}^2(x)
この ため、 上記の式は
\dfrac{\partial \textbf{E}_m }{\partial w_\textbf{ji}^{(h)}} =\dfrac{1}{K} \sum \limits _{k=1}^{K }2 *(\textbf{f}(\textbf{x})_{k}-\text{y}_{k})*w_\textbf{kj}^{(o)}* \left (1- \textbf{tansig}_\textbf{j}^2\right ) x_\textbf{i}
次のように なります。
\displaystyle \dfrac{\partial \textbf{E}_m }{\partial w_\textbf{ji}^{(h)}} =\dfrac{1}{K} \sum \limits _{k=1}^ {K}2 *E_k*w_\textbf{kj}^{(o)}* \left (1-A_\textbf{j}^2\right ) x_\textbf{i}
上記は単一のサンプルの勾配です.全体のサンプルについては、
\displaystyle \dfrac{\partial \textbf{E} }{\partial w_\textbf{ji}^{(h)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^ {M} \sum \limits _{k=1}^{K}2 *E_\textbf{km}*w_\textbf{jk}^{(o)}* \left (1-A_\textbf{jm} ^2\right ) x_\textbf{im}
 M、KM、およびKはサンプルの数と出力の数です.m                                              
E_\textbf{km}=\textbf{f}(\textbf{x})_\textbf{km}-\text{y}_\textbf{km} 番目のサンプルのk番目の出力の誤差は        
A_\textbf{im}=\textbf{tansig}_\textbf{im} 、 m 番目のサンプルの i 番目の隠しノード. 値は           
x_\textbf{im} m 番目のサンプル i 番目の入力                                                  

 3.5 隠れ層閾値の勾配導出


隠れ層のしきい値勾配の導出 しきい値
b_\textbf{j}^{(h)} (j 番目の隠れノードのしきい値) の導出は、隠れ層の重み勾配の導出と似ていますが、青色の部分が
変更する必要があります

\displaystyle \begin{aligned} &=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}- \text{y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left (\textbf{tansig}(w_\textbf{j1}^{(h)} x_\textbf{1}+...+w_\textbf{ji}^{(h)}x_\textbf{i}+...+w_\textbf{jn}^{(h)}x_\textbf{ n}+b_\textbf{j}^{(h)}) \right ) }{\partial (w_\textbf{j1}^{(h)}x_\textbf{1}+...+w_\textbf {ji}^{(h)}x_\textbf{i}+...+w_\textbf{jn}^{(h)}x_\textbf{n}+b_\textbf{j}^{(h) }) }\dfrac{\partial (w_\textbf{j1}^{(h)}x_\textbf{1}+...+w_\textbf{ji}^{(h)}x_\textbf{i} +...+w_\textbf{jn}^{(h)}x_\textbf{n}+b_\textbf{j}^{(h)}) }{\partial b_\textbf{j}^{( h)}} \\&=\dfrac{1}{K} \sum \limits _{k=1}^{K}2 (\textbf{f}(\textbf{x})_{k}-\ text{y}_{k})*w_\textbf{kj}^{(o)}*\dfrac{\partial \left (\textbf{tansig}(\textbf{w}_\textbf{j:}^{(h)}\textbf{x}+b_\textbf{j}^{(h)}) \right ) }{\partial (\textbf{w}_\textbf{j:}^{(h )}\textbf{x}+b_\textbf{j}^{(h)}) } \end{整列}
\textbf{tansig}'(x) = 1-\textbf{tansig}^2(x)
この ため、 上記の式は
\dfrac{\partial \textbf{E}_m }{\partial b_\textbf{j}^{(h)}} =\dfrac{1}{K} \sum \limits _{k=1}^{K }2 *(\textbf{f}(\textbf{x})_{k}-\text{y}_{k})*w_\textbf{kj}^{(o)}* \left (1- \textbf{tansig}_\textbf{j}^2\right )
次のように なります。 \displaystyle \dfrac{\partial \textbf{E}_m }{\partial b_\textbf{j}^{(h)}} =\dfrac{1}{K} \sum \limits _{k=1}^ {K}2 *E_k*w_\textbf{kj}^{(o)}* \left (1-A_\textbf{j}^2\right )
上記は単一のサンプルの勾配です.全体のサンプルについては:
\displaystyle \dfrac{\partial \textbf{E} }{\partial b_\textbf{j}^{(h)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^ {M} \sum \limits _{k=1}^{K}2 *E_\textbf{km}*w_\textbf{jk}^{(o)}* \left (1-A_\textbf{jm} ^2\右)
 M, K はサンプル数, 出力数                                              
E_\textbf{km}=\textbf{f}(\textbf{x})_\textbf{km}-\text{y}_\textbf{km} は m 番目のサンプル. k 番目の出力の誤差は        
A_\textbf{im}=\textbf{tansig}_\textbf{im} i 番目の活性化値です. m 番目のサンプルの隠しノード。         

   

4. 導出結果のまとめ


4.1 3 層 BP ニューラル ネットワーク勾配式


出力層の勾配の式
出力層の重みの勾配:  \displaystyle \dfrac{\partial \textbf{E}}{w_\textbf{ji}^{(o)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^{M } 2 *E_\textbf{jm}*A_\textbf{im}                       
出力層のしきい値の勾配:   \displaystyle \dfrac{\partial \textbf{E}}{\partial b_\textbf{j}^{(o)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^ {M}* 2 *E_\textbf{jm}                                            
隠れ層の勾配式
隠れ層の重みの勾配:  \displaystyle \dfrac{\partial \textbf{E} }{\partial w_\textbf{ji}^{(h)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^ {M} \sum \limits _{k=1}^{K}2 *E_\textbf{km}*w_\textbf{jk}^{(o)}* \left (1-A_\textbf{jm} ^2\right ) x_\textbf{im}
隠れ層のしきい値の勾配:   \displaystyle \dfrac{\partial \textbf{E} }{\partial b_\textbf{j}^{(h)}} = \dfrac{1}{M*K}\sum\limits_{m=1}^ {M} \sum \limits _{k=1}^{K}2 *E_\textbf{km}*w_\textbf{jk}^{(o)}* \left (1-A_\textbf{jm} ^2\右)      
✍️ シンボルの説明
 M、K はサンプル数、出力数は                                               
E_\textbf{km}=\textbf{f}(\textbf{x})_\textbf{km}-\text{y}_\textbf{km} m 番目のサンプルの k 番目の出力の誤差 は        
A_\textbf{im}=\textbf{tansig}_\textbf{im} m 番目のサンプルの i 番目の隠しノードの活性化値 は m 番目のサンプル           
x_\textbf{im} の i 番目の入力                                                  


 関連記事

「BPニューラルネットワーク勾配導出」

「BPニューラルネットワークで抽出した数式」

「BP の完全なモデリング プロセス」

おすすめ

転載: blog.csdn.net/dbat2015/article/details/128091135