谈谈自动微分(Automatic Differentiation)
©作者 | JermyLu
学校 | 中国科学院大学
研究方向 | 自然语言处理与芯片验证
引言
数值微分
数值微分方法简单,但计算量巨大,而且会造成截断误差(Truncation Error)和舍入误差(Round-off Error)。
符号微分
使用符号微分方法时,必须将目标函数转为一个完整的数学表达式,这个过程中会出现表达式膨胀(Expression Swell)的问题,大大增加系统存储和处理表达式的负担。
自动微分
首先,我们了解一下链式法则。
单变量函数链式法则:
多变量函数链式法则:
接下来,我们以三层全连接层神经网络为例,解释自动微分机制。
定义:输入层输出为 ;隐层输出为 ;输出层输出为 ;标签为 ,损失函数使用 范式,即 ;隐层激活函数为 记为 ,输出层激活函数为 记为 。
因此:令 ,则 ;令 ,则 ,为了方便起见,不考虑偏置项。
这个三层神经网络中,参数只包含 和 ,而梯度反传参数更新,更新的就是 和 。因此,梯度计算的目标是 与 。
; ; 梯度 需要继续向前一层传递,用于计算其他变量的梯度;梯度 会作为参数 的梯度计算结果,用于模型参数的更新。
; ; 梯度 需要继续向前一层传递,用于计算其他变量的梯度;梯度 会作为参数 的梯度计算结果,用于模型参数的更新。
综合输出层和隐藏层的反向传播方法,再根据神经网络有向计算图的拓扑结构,逆向访问每一个节点执行上述梯度计算过程即可得到神经网络中任意位置和任意参数的梯度信息。
总结
链式法则+反向传播+有向图拓扑结构,构成了自动微分机制的基础。
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:hr@paperweekly.site
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧