反向传播算法几个重要公式的详细推导

斯坦福大学《Machine Learning》第五周学习过程中,对反向传播算法的几个公式看得云里雾里的,这里做一个详细的推导和总结

  • 公式一:
  • 公式二:
  • 公式三:

首先已知,这个是我们定义的,不用推导,但是为什么要这样定义呢?

我们给神经元的加权输入添加一点改变,这就导致了神经元的输出变成了,而不是之前的。这个改变在后续的网络层中传播,最终使全部代价改变了。因此,可以用来衡量神经元里的错误量.

 

公式一证明:

要证明

也就是证明 (1) 这个式子就是反向传播的核心式子,和我们求a的过程是一样的,只是方向相反。

 (2) 这里第二个等号后面的累加符号不太好理解,你可以这样想,(l+1)层的每个z都是z(l)j的函数,z(l)j的细小改变会影响到整个z(l+1)的变化,打个比方,M = u(x,y)+v(x,y),M对u或者v求偏导就类同J对l+1层的z求导,M对x或者y求偏导就类同J对z(l)j求导,这也就是求导公式的链式法则。

 (3)

将(3)代入(2)即得到我们要证明的(1),证毕

公式二证明:

公式三证明:

 

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
反向传播算法是一种用于训练人工神经网络的常用方法。它基于链式法则,通过计算每个神经元的误差梯度,将误差从输出层向前传播,以更新网络权重。以下是反向传播算法的过程和公式推导。 1. 前向传播 对于一个神经网络,从输入层开始,通过一系列的矩阵乘法和非线性函数(如sigmoid函数或ReLU函数)的组合,计算出输出层的预测值。这个过程称为前向传播。 2. 计算误差 将预测值与真实值进行比较,计算误差。常用的误差函数包括均方误差和交叉熵等。 3. 反向传播 接下来,需要计算每个神经元的误差梯度,从输出层向前传播误差。假设网络有L层,第l层神经元的误差梯度可以表示为: $$\delta^{(l)}= \frac{\partial E}{\partial z^{(l)}}$$ 其中,$E$是误差函数,$z^{(l)}$是第$l$层的加权输入。根据链式法则,可以将误差梯度从输出层向前传播: $$\delta^{(L)} = \nabla_a E \odot \sigma'(z^{(L)})$$ 其中,$\nabla_a E$是误差函数对输出层激活值$a^{(L)}$的梯度,$\odot$表示元素级别的乘法,$\sigma'$表示sigmoid函数的导数。 对于隐藏层$l$,误差梯度可以表示为: $$\delta^{(l)} = ((W^{(l+1)})^T \delta^{(l+1)}) \odot \sigma'(z^{(l)})$$ 其中,$W^{(l+1)}$是从第$l$层到第$l+1$层的权重矩阵,$(W^{(l+1)})^T$表示其转置。这个公式表明,误差从上一层传递下来,并且乘以激活函数的导数。 4. 更新权重 最后,可以使用误差梯度更新每个权重。假设网络有$L$层,第$l$层到第$l+1$层的权重矩阵为$W^{(l+1)}$,学习率为$\eta$,则权重的更新公式为: $$W^{(l+1)} = W^{(l+1)} - \eta \delta^{(l+1)} (a^{(l)})^T$$ 其中,$(a^{(l)})^T$表示第$l$层的输出值的转置。这个公式表明,权重的更新与误差梯度和输出值有关。 整个反向传播算法就是通过前向传播计算预测值,并通过反向传播计算误差梯度和更新权重的过程。通过多次迭代,最小化误差函数,就能训练出一个神经网络模型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值