深度前馈网络(四)

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

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

首先讨论第一个算法,即典型深度神经网络中的前向传播和代价函数的计算。为了获得总代价 J J J,损失函数 L ( y ^ , y ) L(\hat {y}, y) L(y^,y)可以加上正则项 Ω ( θ ) \Omega (\theta ) Ω(θ),其中, θ \theta θ包含所有的权重和偏执组成的参数。为了简单起见,该算法仅仅演示使用单个输入样本 x x x,实际上应该是小批量的输入。另外,假设网络深度是 l l l,则模型的权重矩阵是: 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 ) = x h^{(0)} = x h(0)=x
  2. 遍历网络深度 k = 1 , ⋯   , l k = 1, \cdots , l k=1,,l进行下面的计算:
    a ( k ) = b ( k ) + W ( k ) h k − 1 a^{(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)+λΩ(θ)

接着讨论第二个算法,该算法说明了如何计算 J J J关于参数 W W W b b b的梯度,这是上一个算法的反向计算。它不止使用了输入 x x x和目标 y y y,该计算对每一层 k k k都产生了对激活函数 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)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值