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

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

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

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

我们记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}}

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BP神经网络通过反向传播算法来更新权重偏置,其公式如下: 1. 计算输出层的误差(Output Layer Error): δ(output) = (target - output) * f'(net(output)) 其中,δ(output)是输出层的误差,target是期望的输出,output是实际的输出,f'(net(output))是输出层激活函数的导数。 2. 计算隐藏层的误差(Hidden Layer Error): δ(hidden) = f'(net(hidden)) * Σ(δ(output) * weight(output->hidden)) 其中,δ(hidden)是隐藏层的误差,f'(net(hidden))是隐藏层激活函数的导数,Σ表示求和,δ(output)是输出层的误差,weight(output->hidden)是连接输出层到隐藏层的权重。 3. 更新输出层到隐藏层的权重偏置: Δweight(output->hidden) = learning_rate * δ(output) * output(hidden) Δbias(output) = learning_rate * δ(output) 其中,Δweight(output->hidden)是输出层到隐藏层的权重更新量,learning_rate是学习率,output(hidden)是隐藏层的输出,Δbias(output)是输出层的偏置更新量。 4. 更新输入层到隐藏层的权重偏置: Δweight(input->hidden) = learning_rate * δ(hidden) * input Δbias(hidden) = learning_rate * δ(hidden) 其中,Δweight(input->hidden)是输入层到隐藏层的权重更新量,learning_rate是学习率,δ(hidden)是隐藏层的误差,input是输入层的输入,Δbias(hidden)是隐藏层的偏置更新量。 5. 更新权重偏置: weight(new) = weight(old) + Δweight bias(new) = bias(old) + Δbias 其中,weight(new)是更新后的权重,weight(old)是原始的权重,Δweight是权重更新量,bias(new)是更新后的偏置,bias(old)是原始的偏置,Δbias是偏置更新量。 以上公式描述了BP神经网络权重偏置更新过程。在实际应用中,需要根据具体的网络结构和问题进行相应的调整和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值