バックプロパゲーションの注意事項

参考「ML講義7:バックプロパゲーション」:

 

次のように単純なネットワーク構造を仮定すると次のとおりです。

 

 

私たちは、詳細な分析を行うには参加しています:

 

我々は、パラメータ$ \シータ= \ {W_1、W_2、\ cdots、B_1、B_2を更新する場合、$、入力$ {X_1、X_2} $のために、対応する損失$ C(\シータX)を計算することができます。 、\ cdots \}を計算$ \ nabla_ \シータC(\シータ)$、すなわちすべての$ \ FRAC {\部分C} {\部分W}、\ FRAC {\部分C} {\部分Bに必要$、 } $。

図のために、最初の3つのパラメータはニューロンであります

ここで、$ \ FRAC {\部分C} {\部分Z} $悪いと考えられるが、$ \ FRAC {\部分Z} {\部分W_1} \ FRAC {\部分Z} {\部分W_2}、\ FRAC { \部分Z} {\部分B} $カウント良いです

この事実は、全てのニューロンの$ Z $重量の偏導関数のための同じ、いくつかのニューロン加算結果は、偏微分バイアスため、(すなわち、この側面に開始点がある)は、対応する入力されされています$ 1 $。これは、パラメータを決定する入力状況を決定する際に、往路で、あなたはすぐにすべての$ \ FRAC {\部分のz} {\部分W}、\ FRAC {\部分のz} {\部分B} $を計算することができます。

 

その後の質問は、どのように$ \ FRAC {\部分C} {\部分のz}それを$を計算するのがより難しいですか?

注$ A = \シグマ(Z)$が、活性化関数であります

$ \ FRAC {\部分C} {\部分A} $のためにそこに

計算$ \ FRAC {\部分C} {\部分Z} $この表現されるように

在输入确定的情况下 $\sigma ' (z)$ 就也是确定的(相当于乘一个放缩系数),很明显能看出一种逆推的关系

其实这时已经能感受到反向传播的味道了。为了更加易懂,不妨来看看这个网络的最后一层(假设是如下图的参数,$y_1, y_2$ 是网络的输出)

那么就有

其中 $\frac{\partial C}{\partial y_1}, \frac{\partial C}{\partial y_2}$ 取决于你的函数 $C$,假设你的函数 $C = \sum_{i} y_i^2 = y_1^2 + y_2^2$,那么 $\frac{\partial C}{\partial y_1} = 2y_1, \frac{\partial C}{\partial y_2} = 2y_2$,再把网络的输出,确定的 $y_1, y_2$ 值代入就好了。至于 $\frac{\partial y_1}{\partial z'} = \sigma'(z'), \frac{\partial y_2}{\partial z''} = \sigma'(z'')$ 之前就讲过了,相当于一个确定的放缩系数。

所以,我们就可以从网络的最后一层,往前一层一层地逆推出所有的 $\frac{\partial C}{\partial z}$,这就是 backward pass。

 

这样一来,我们经过一次 forward pass 得到了所有的 $\frac{\partial z}{\partial w}, \frac{\partial z}{\partial b}$,又经过一次 backward pass 得到了所有的 $\frac{\partial C}{\partial z}$,两者相乘就可以得到所有的 $\frac{\partial C}{\partial w}, \frac{\partial C}{\partial b}$,即 $\nabla_\theta C(\theta)$。

おすすめ

転載: www.cnblogs.com/dilthey/p/12386721.html