神经网络反向传播(1)--权重和偏置值计算方式和参数更新

写这篇文章是看了好多文章大家只讲了反向传播的权重计算方式,没有讲到偏置计算,查了一些解释才发现和权重计算类似,在此记录一下。

如下图4-6-4神经网络为例,我们记输入层到隐藏层权重参数和偏置参数为1:wij和bi,隐藏层到输出层的权重参数和偏置参数为2:wij和bi.

如下图所示,每个 隐藏层和输出层的节点是在激活函数计算后才输出,因此我们在反向传播中需要对激活函数也进行求导:

神经网络反向传播(1)--权重和偏置值计算方式和参数更新_第1张图片

我们记net_o为隐藏层到输出层正向传播激活前的值,out_o为隐藏层到输出层正向传播激活后的值, net_h为输入层到隐藏层正向传播激活前的值,out_h为输入层到隐藏层正向传播激活后的值。

在反向传播中主要应用的原理为梯度下降法,在神经网络中我们使用链式求导来实现。

参数更新是通过输出的损失L来更新的,损失一般为模型计算值和真实值之间的偏差,在此单个节点的损失记为L_i,因此对权重参数的导数求解有如下计算通式:

\frac {\partial L_i}{\partial W_{ij} }= \frac{\partial L_i }{\partial out_{oi} }*\frac{\partial out_{oi} }{\partial net_{oi} }*\frac{\partial net_{oi} }{\partial W_{ij} }

对于偏置参数的计算和权重参数类似,我们相同的可得如下计算式:

\frac{\partial L_i}{\partial b_{i} }= \frac{\partial L_i }{\partial out_{oi} }*\frac{\partial out_{oi} }{\partial net_{oi} }*\frac{\partial net_{oi} }{\partial b_{i} }

不过由于偏置参数的系数恒为1,因此{\frac{\partial net_{oi} }{\partial b_{i} }=1恒成立,我们可化简上式为:

\frac{\partial L_i}{\partial b_{i} }= \frac{\partial L_i }{\partial out_{oi} }*\frac{\partial out_{oi} }{\partial net_{oi} }*1

同样地,我们可以对输入层到隐藏层的权重和偏置进行求导:

\frac{\partial L_i}{\partial W_{ij} }= \frac{\partial L_i }{\partial out_{oi} }*\frac{\partial out_{oi} }{\partial net_{oi} }*\frac{\partial net_{oi} }{\partial out_{hi} }*\frac{\partial out_{hi} }{\partial net_{hi} }*\frac{\partial net_{hi} }{\partial w_{ij} }

\frac{\partial L_i}{\partial b_{i} }= \frac{\partial L_i }{\partial out_{oi} }*\frac{\partial out_{oi} }{\partial net_{oi} }*\frac{\partial net_{oi} }{\partial out_{hi} }*\frac{\partial out_{hi} }{\partial net_{hi} }*1

至此权重和偏置的导数我们计算完毕,在参数更新时即可使用如下通式进行计算:

w_{ij-}=w_{ij}-\alpha*\frac{\partial L_i}{\partial w_{ij}}

b_{i-}=b_{i}-\alpha*\frac{\partial L_i}{\partial b_{i}}

你可能感兴趣的:(神经网络反向传播,神经网络,人工智能)