深度前馈网络(四)

本文深入探讨了深度前馈网络中的反向传播算法,详细介绍了全连接多层感知机的前向传播和反向传播过程,以及符号到符号的微分。反向传播算法通过计算图中的操作反向传播梯度,有效地计算模型参数的梯度,以优化网络。文章还讨论了反向传播算法的计算成本和复杂性,以及在深度学习以外的微分应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全连接MLP中的反向传播计算

我们考虑一个与全连接多层感知机相关联的特定图,下面第一个算法首先给出了前向传播,它将参数映射到与单个训练样本(x,y)(x, y)(x,y)(输入,目标)相关联的监督损失函数L(y^,y)L(\hat {y}, y)L(y^,y),其中,戴帽的yyy是神经网络在得到输入xxx后的实际输出。下面第二个算法说明了将反向传播应用于该图所需要的相关计算。

首先讨论第一个算法,即典型深度神经网络中的前向传播和代价函数的计算。为了获得总代价JJJ,损失函数L(y^,y)L(\hat {y}, y)L(y^,y)可以加上正则项Ω(θ)\Omega (\theta )Ω(θ),其中,θ\thetaθ包含所有的权重和偏执组成的参数。为了简单起见,该算法仅仅演示使用单个输入样本xxx,实际上应该是小批量的输入。另外,假设网络深度是lll,则模型的权重矩阵是:W(i),i∈{ 1,⋯ ,l}W^{(i)}, i \in \left \{ 1, \cdots , l \right \}W(i),i{ 1,,l},模型的偏执参数是:b(i),i∈{ 1,⋯ ,l}b^{(i)}, i \in \left \{ 1, \cdots , l \right \}b(i),i{ 1,,l},那么,该算法如下:

  1. 利用输入进行初始化:h(0)=xh^{(0)} = xh(0)=x
  2. 遍历网络深度k=1,⋯ ,lk = 1, \cdots , lk=1,,l进行下面的计算:
    a(k)=b(k)+W(k)hk−1a^{(k)} = b^{(k)} + W^{(k)}h^{k-1}a(k)=b(k)+W(k)hk1
    h(k)=f(a(k))h^{(k)} = f(a^{(k)})h(k)=f(a(k))
  3. 得到神经网络的输出:y^=h(l)\hat {y} = h^{(l)}y^=h(l)
  4. 最后获得总代价:J=L(y^,y)+λΩ(θ)J = L(\hat {y}, y) + \lambda \Omega (\theta )J=L(y^,y)+λΩ(θ)

接着讨论第二个算法,该算法说明了如何计算JJJ关于参数WWWbbb的梯度,这是上一个算法的反向计算。它不止使用了输入xxx和目标yyy,该计算对每一层kkk都产生了对激活函数a(k)a^{(k)}a(k)的梯度,从输出层开始,一直向后计算,直到一个隐藏层。这些梯度可以看作对每层的输出应该如何调整从而减小误差的指导,根据这些梯度可以获得对每层参数的梯度。权重和偏置上的梯度可以立即用于随机梯度更新的一部分(梯度算出来后即可执行更新),或者可以与其它基于梯度的优化算法一起使用。算法如下:

  1. 在前向计算完成后,首先计算顶层的梯度:g⟵∇y^J=∇y^L(y^,y)\mathcal{g} \longleftarrow \nabla _{\hat{y} } J = \nabla _{\hat{y}}L(\hat{y} , y)g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值