首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习中的参数梯度推导(一)下篇

深度学习中的参数梯度推导(一)下篇

作者头像
灯塔大数据
发布2020-08-04 14:14:37
1.5K0
发布2020-08-04 14:14:37
举报
文章被收录于专栏:灯塔大数据灯塔大数据

前言

《深度学习中的参数梯度推导(一)上篇》中,我们总结了各常见(向量对矩阵,矩阵对向量)的导数定义。我们还学习了矩阵微分和矩阵导数的关系,以及一些常见的矩阵微分性质。在本篇(下篇)将介绍矩阵导数中的链式法则以及专门针对标量对矩阵/向量求导的核心方法-迹技巧。最后,我们简单演习一下如何用矩阵求导来得到神经网络中的参数的梯度。

注意:

  • 本系列默认读者已具备梯度,导数,梯度下降等基础的数学概念
  • 本系列默认读者已具备基本的线性代数知识

1.6

标量对矩阵/向量的导数求解套路-迹技巧

在实际演练之前还有一个必用的套路需要介绍,在求标量对矩阵/向量的导数的时候非常有用,叫迹技巧。后面通过小demo就知道它为什么是必要的了。这里先列举出迹的一些性质(全部都很有用):

微分法求导套路小结:

使用矩阵微分,可以不对向量或矩阵中的某一元素单独求导再拼接,因此会比较方便,当然熟练使用的前提是对上面矩阵微分的性质,以及迹函数的性质牢记于心。还有一些场景,求导的自变量和因变量直接有复杂的多层链式求导的关系,此时微分法使用起来也有些麻烦。如果我们可以利用一些常用的简单求导结果,再使用链式求导法则,则会非常的方便。因此下一小节我们讨论向量矩阵求导的链式法则。

1.7

向量微分与向量对向量求导的关系

有了公式(1.2)和(1.3)能做什么?能做非常有用的事情,那就是通过写一个全微分公式,配合一些简单的矩阵微分的性质(后面有说),我们就能得到标量(神经网络的loss)对矩阵(参数矩阵)的微分了。

1.8

矩阵向量求导链式法则

矩阵向量求导链式法则很多时候可以帮我们快速求出导数结果,但它跟标量对标量求导的链式法则不完全相同,所以需要单独讨论。

1.8.1 向量对向量求导的链式法则

1.8.2 标量对多个向量的链式求导法则

1.8.3标量对多个矩阵的链式求导法则(证略)

这里大家会发现我们没有给出基于矩阵整体的链式求导法则,主要原因是矩阵对矩阵的求导是比较复杂的定义,我们目前也未涉及。因此只能给出对矩阵中一个标量的链式求导方法。这个方法并不实用,因为我们并不想每次都基于定义法来求导最后再去排列求导结果。

以实用为主的话,其实没必要对这部分深入研究下去,只需要记住一些实用的情况就行了,而且非常好记忆:

我们也可以称以下结论为“标量对线性变换的导数”

总结下就是:

1.9

用矩阵求导来求解机器学习上的参数梯度

神经网络的求导术是学术史上的重要成果,还有个专门的名字叫做BP算法,我相信如今很多人在初次推导BP算法时也会颇费一番脑筋,事实上使用矩阵求导术来推导并不复杂。为简化起见,我们推导二层神经网络的BP算法。后面还会相继系统地介绍如何推导FNN,CNN,RNN和LSTM的参数求导。

我们运用上面学过的所有知识,来求分析一个二层神经网络的loss对各层参数的梯度。以经典的 MNIST 手写数字分类问题为例,这个二层神经网络输入图片拉伸成的向量x,然后输出一个概率向量y。用交叉熵作为loss函数可以得下面计算公式:

-------推广-------

参考资料

  • https://www.cnblogs.com/pinard/category/894690.html
  • https://zhuanlan.zhihu.com/p/24709748
  • https://github.com/soloice/Matrix_Derivatives

深度学习

TO BE CONTINUED

数学

文章作者: 中国电信研究院 | 刘心唯

文章内容系作者个人观点,不代表融智未来公众号的观点或立场。

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

本文分享自 融智未来 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档