雅可比矩阵机器学习_深度学习中的Matrix Calculus (一)

本文介绍了深度学习中矩阵微积分的基础,包括链式法则、全微分链式法则及其在向量中的应用。讲解了雅可比矩阵的概念,并强调了布局方式在计算过程中的重要性。最后通过实例展示了向量链式法则的运用。
摘要由CSDN通过智能技术生成

绝大多数网络上对深度学习公式的推导教程notation混乱,而专门介绍Matrix Calculus的材料可能又过于繁杂。其实在深度学习中用到的矩阵微积分并不艰深,看完之后你就可以愉快的进行各种推导了。本文仅作为优秀资源的搬运总结,有余力的同学可以阅读The Matrix Calculus You Need For Deep Learning。

链式法则(Chain Rule)

首先我们介绍单变量链式法则,在本科的微积分课程中大家应该都得到了很好的训练。

例如要计算

的导数,我们可以分解成

,然后分别计算

,然后再相乘得到

。但是考虑下面的例子

,我们是否也能利用链式法则呢?这里我们需要对链式法则做一点改变,也就是下面要介绍的全微分链式法则(total-derivative chain rule)。

2. 全微分链式法则(total-derivative chain rule)

在这个例子中,令

。我们把这个简单的式子写成f(x,u)是为了强调这是关于x和u两个变量的函数,但其实u也是x的函数,所以我们不能只考虑y对u的偏导,还需要考虑u对x的偏导:

总结来说,全微分链式法则有如下的表达:

,这里所有的u都是中间变量。

有同学会疑惑为什么要弄的这么复杂,尤其是在上一个例子中一眼就可以看出结果。但是实际上我们用到了微分的线性性,所以直接将两个微分相加。然而这里我们需要统一地运用链式法则,只有这样才能让机器能够计算更加复杂的函数的微分。

3. 向量的链式法则

看完了单变量,我们再将链式法则拓展到向量中。首先我们需要明确一下notation。

3.1 梯度(gradient) / 雅可比矩阵(Jacobian)

梯度大家应该都熟悉了,就是用向量将一个标量函数对各自变量的偏导数表示出来。

而如果函数不再是标量函数,而是向量函数(把向量映射到向量),那么我们需要把各个返回值的gradient都表示出来,这就是雅可比矩阵:

划重点:本文中用的雅可比矩阵的numerator layout,在这种形式下,每个因变量的梯度都作为矩阵的行。如果一个向量函数有n个自变量,m个因变量,那么J是一个m*n的矩阵。牢牢记住你的layout方式对后续的推导非常重要,很多别的文章采用的是denominator layout,也就是这里J的转置。

3.2 向量链式法则

首先我们来看一个例子:

。这里我们需要两个中间变量

。对每个因变量运用全微分链式法则我们得到:

然我们看看第二个等号右边这个复杂的向量,它其实可以写成两部分:

也就是f对g的雅可比矩阵,乘以g对x的雅可比矩阵(在这里是梯度)。看到这里大家应该就明白为什么说layout和全微分的链式法则重要了。更一般地:向量链式法则

时间原因不能把后面的码上来,下篇会介绍各种常用的算子(Operator),以及深度学习中的例子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值