当前位置: 首页 > news >正文

深度学习--前向传播,反向传播和计算图

我们已经学习了如何用小批量随机梯度下降训练模型。然而当实现该算法时,我们只考虑了通过前向传播,所涉及的计算。在计算梯度时,我们只调用了深度学习框架提供的反向传播函数。而不知其所以然。

梯度的自动计算大大简化了深度学习算法的实现。在自动微分之前,即使是对复杂模型的微小调整也需要手动重新计算复杂的导数(特征),学术论文也不得不分配大量页面来推导更新规则。本节将铜鼓一些基本的数学和计算图,深入探讨反向传播的细节。首先,我们重点放在带权重衰减的单隐藏曾多层感知机上。

4.7.1 前向传播

前向传播指的是,按顺序计算和存储神经网络中每层的结果

。我们将一步步研究单隐藏层神经网络的机制,假设输入样本是X 属于R^2 并且隐藏不包括偏置这里的中间变量

z = W x

其中W 属于R^hxd 隐藏权重参数将中间便利z属于R^2通过激活函数得到长度为h隐藏激活向量

隐藏层激活向量h也是一个中间变量假设输出层参数只有权重W 属于R^hxd 我们可以得到输出层变量是一个长度q向量

o = Wh

假设损失函数l样本标签y我们可以计算单个数据样本损失

L = l(o, y)

根据L2 正则化定义给定参数lambda正则化

其中矩阵弗罗贝尼乌斯范数将是居住胃向量应用L2范数最后模型给定数据样本正则化损失

J = L + s

下面讨论中我们J称为目标函数

4.7.2 向前传播计算图

绘制计算有助于我们可视化计算运算变量依赖关系4-4上述简单网络相对应计算其中正方形表示变量圆圈表示运算符左下角表示输入右上角表示输出注意展示数据箭头方向主药向右向上

4.7.3 反向传播

反向传播指的是计算神经网络参数梯度方法简而言之方法根据微积分链式法则相反顺序输出层输入层遍历网络该算法存储计算某些参数梯度所需要任何中间变量(偏导数)假设我们函数Y=f(X)Z=g(Y)其中输入输出X,Y,Z任意形状张量应用链式法则我们可以计算Z关于X导数

在这里我们使用prod运算符执行操作(如专职和交换输入位置)将其参数相承对于向量这很简单只是矩阵-矩阵乘法对于高维张量我们使用适当对应运算符prod 指代所有这些符号

4.7.4 训练神经网络

训练神经网络前向传播反向传播相互依赖对于前向传播我们沿着依赖方向遍历计算计算路径所有变量然后将这些用于反向传播其中计算顺序计算图相反

上述简单网络为例一方面前向传播期间计算正则化取决于模型参数WW当前值优化算法根据最近迭代方向传播给出的另一方面反向传播期间参数梯度计算取决于向后传播给出隐藏变量h当前值

因此训练神经网络初始化模型参数我们交替使用前向传播反向传播利用反向传播给出梯度更新模型参数反向传播重复利用前向传播存储中间值

避免重复计算

相关文章:

  • leetcode 122. Best Time to Buy and Sell Stock II
  • wait()和sleep()
  • PCIE Link Equalizaton
  • Java基础 - 集合框架总结与实战指南
  • Gin趣讲
  • 精益数据分析(3/126):用数据驱动企业发展的深度解析
  • Arcgis经纬线标注设置(英文、刻度显示)
  • Android主流播放器功能详解
  • 16.使用豆包将docker-compose的yaml转为k8s的yaml,安装各种无状态服务
  • uniapp-商城-26-vuex 使用流程
  • Java c线程等待ab线程执行完再执行
  • 关于DApp、DeFi、IDO私募及去中心化应用开发的综合解析
  • 4.15redis点评项目下
  • 3款本周高潜力开源AI工具(多模态集成_隐私本地化)
  • 暂存一下等会写
  • 选择排序(简单选择排序、堆排序)
  • 【探商宝】跨境关税博弈下的技术破局:从头部平台现象看数字贸易体系重构
  • 【FFmpeg从入门到精通】第一章-FFmpeg简介
  • bininote: 使用AI将视频转换了Markdown笔记
  • 使用Redis实现分布式限流
  • 丹阳做网站/外贸seo优化公司
  • 润州网站建设/培训中心
  • 长春企业网站建设价格/网站建设策划
  • 北京做网站哪家公司好/火星时代教育培训机构怎么样
  • 企业内网网站建设/网站seo去哪个网站找好
  • 杭州电子商务公司排行/网站推广和seo