前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【动手学深度学习笔记】之正向传播与反向传播

【动手学深度学习笔记】之正向传播与反向传播

作者头像
树枝990
发布2020-08-20 07:42:58
1.4K0
发布2020-08-20 07:42:58
举报
文章被收录于专栏:拇指笔记拇指笔记

1. 正向传播与反向传播

在训练深度学习模型时,正向传播和反向传播之间相互依赖。一方面正向传播的计算可能依赖于模型参数的当前值而这些模型参数是在反向传播的梯度计算后通过优化算法迭代的。另一方面,反向传播的梯度计算可能依赖于各变量的当前值,而这些变量的当前值是通过正向传播计算得到的。

因此,在模型参数初始化完成后,我们交替地进行正向传播和反向传播,并根据反向传播计算的梯度迭代模型参数。

1.1 正向传播

正向传播是指对神经网络沿输入层到输出层的顺序,依次计算并存储模型的中间变量(每一层的输出)。

下面以一个使用权重衰减的单隐藏层的多层感知机为例,描述一下正向传播。

假设输入,隐藏层(h个隐藏单元)权重参数不考虑偏差参数的情况下,产生的中间变量为

将中间变量输入按元素运算的激活函数后,得到隐藏层的输出为

假设输出层(q个神经单元)权重参数为不考虑偏差参数的情况下,得到的输出层输出为

至此,正向传播完成,下面计算一下损失。

假设损失函数为,样本标签为,得到单个数据样本的损失项为

根据权重衰减的定义,给定超参数,惩罚项为

最终得到模型在样本上代正则化的损失为

将称为有关给定数据样本的目标函数。

1.1.1正向传播的计算图

通过计算图,我们可以可视化运算符和变量在计算中的依赖关系。其中左下角是输入,右上角是输出,箭头指向为输入,圆形为运算符号,方形为变量。

1.2 反向传播

总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层的顺序,依次计算并存储目标函数有关神经网络各层的中间变量以及参数的梯度。

我们首先来回顾一下链式法则。对于函数和,通过链式法则,存在

反向传播就是依据链式法则的原理来计算神经网络中的参数梯度。对于上述无偏差参数的神经网络而言,它的参数是和。因此反向传播的目的就是计算和。

首先,根据目标函数,我们首先需要计算关于和的偏导数。

根据链式法则关于的梯度表达式和上式,可以得到

接下来,计算惩罚项关于和的梯度表达式

然后将沿着目标函数传播向输出层,可以计算出输出层变量与隐藏层权重参数之间的梯度表达式

现在,我们可以计算出关于的梯度表达式

沿着输出层向隐藏层继续反向传播,隐藏层变量的梯度可以这样计算

由于激活函数是按元素运算的,中间变量的梯度的计算需要使用按元素乘法符⊙

最终得到关于的梯度表达式

根据两式,我们可以计算并存储目标函数有关神经网络参数的梯度。

小结

  • 正向传播沿着从输入层到输出层的顺序,依次计算并存储神经网络的中间变量。
  • 反向传播沿着从输出层到输入层的顺序,依次计算并存储神经网络的中间变量和参数的梯度。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 拇指笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 正向传播与反向传播
  • 1.1 正向传播
    • 1.1.1正向传播的计算图
    • 1.2 反向传播
      • 小结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档