机器学习中的线性代数之矩阵求导
2017-01-12 19:57
183 查看
前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理。接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍。
矩阵求导(Matrix Derivative)也称作矩阵微分(Matrix Differential),在机器学习、图像处理、最优化等领域的公式推导中经常用到。
矩阵的微积分本质上是多元变量的微积分问题,只是应用在矩阵空间上而已
根据Y 与 X 的不同类型(实值、向量、矩阵)给出如下表中的表示:
下面我们根据分子的布局(即X的类型)来介绍矩阵的导数求解
由向量关于向量的求导∂y∂x可以得出两种矛盾的表示:结果表示为n×m 矩阵或m×n 矩阵。也就是把y 表示为列向量x 表示为行向量或者反过来表示的问题。
布局(Layout):在矩阵求导中有两种布局,分别为分母布局(denominator layout)和分子布局(numerator layout)。这两种不同布局的求导规则是不一样的。
向量 y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥,关于标量x 的求导,
在分子布局下,为:
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂yn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(1)
而在分母布局下,为:
∂y∂x=[∂y1∂x∂y2∂x⋯∂yn∂x](2)
通过观察和推导我们可以知道,分子布局和分母布局之间刚好差一个转置,即在分子布局下与原来Y相同,而在分母布局下差一个转置。
对于正切矩阵∂y∂x采用分母布局,即Y⊤,很不符合表达的习惯,所以本文中我们采用的是分子布局。
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂yn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(3)
此时为正切向量,∂y∂x 为 y 的正切向量,有映射 y : Rm⟹Rm 。
∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x∂y21∂x⋮∂yn1∂x∂y12∂x∂y22∂x⋮∂yn2∂x⋯⋯⋱⋯∂y1n∂x∂y2n∂x⋮∂ynn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(4)
∂y∂x=[∂y∂x1 ∂y∂x2 ⋯ ∂y∂xn](5)
此时的向量叫做梯度向量。 ∂y∂x 为标量y 在空间 Rn 的梯度,该空间以x 为基。
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂yn∂x1∂y1∂x2∂y2∂x2⋮∂yn∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂yn∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(6)
此时获得的矩阵∂y∂x 叫做Jacobian 矩阵。
∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x1∂y21∂x1⋮∂yn1∂x1∂y1n∂x2∂y22∂x2⋮∂yn2∂x2⋯⋯⋱⋯∂y1n∂xn∂y2n∂xn⋮∂ynn∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(7)
∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x12⋮∂y∂x1n∂y∂x21∂y∂x22⋮∂y∂x2n⋯⋯⋱⋯∂y∂xn1∂y∂xn2⋮∂y∂xnn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(8)
考虑以下导数 ∂Au∂x ,其中 A 与x 无关 且有 A∈Rm×n, u∈BbbRn×1 ,x∈Rp×1,我们知道结果肯定和∂u∂x 有关,于是先把 A 提出求导式,至于到了哪暂时不知道,接着我们知道 ∂u∂x∈Rp×n,于是 A 只能转置后添加到后面。因此有
∂Au∂x=$∂u∂xA⊤(9)
再考虑问题 ∂x⊤Ax∂x ,其中 A∈Rn×n, x∈Rn×n ,
为了分析这个问题我们考虑一个更一半的问题
∂x⊤Ax∂x(10)
其中 A∈Rn×n, x∈BbbRn×n,且 A 与x 和 y 无关 。于是我们利用维度分析,采用非精确的乘积法则,可以将它分为两个部分
∂(x⊤A)y∂x(11)
于是结果与两部分相关,一个是
∂y∂x∈Rm×n(12)
另一个是
∂x⊤A∂x=A∈Rm×n(13)
同样通过维度分析,我们可以得到
∂(x⊤A)y∂x=∂y∂xA⊤x+Ay(14)
因此经过维度的比较我们可以得到
∂x⊤Ax∂x=(A⊤+A)x(14)
通过以上两个示例的学习,我们可以知道在求解复杂矩阵的求导问题时,通过维度来判断矩阵的导数形式很简便同时也不容易出错。下图是机器学习中常见的矩阵求导形式,可供参考:
矩阵求导(Matrix Derivative)也称作矩阵微分(Matrix Differential),在机器学习、图像处理、最优化等领域的公式推导中经常用到。
矩阵的微积分本质上是多元变量的微积分问题,只是应用在矩阵空间上而已
根据Y 与 X 的不同类型(实值、向量、矩阵)给出如下表中的表示:
类型 | 标量(Scalar)y | 向量(Vector)y | 矩阵(Matrix)Y |
---|---|---|---|
Scalar x | ∂y∂x | ∂y∂x | ∂Y∂x |
Vector x | ∂y∂x | ∂y∂x | |
Matrix X | ∂y∂X |
0 布局约定(Layout conventions)
事实上,所有求导的法则都可以从最基本的求导规则推导出来。不知你有没发现,不同的文献中,同样的式子求导的结果有时候会不一样,仔细观察会发现刚好相差一个转置,于是我们得先说说求导的两个派别(布局)。由向量关于向量的求导∂y∂x可以得出两种矛盾的表示:结果表示为n×m 矩阵或m×n 矩阵。也就是把y 表示为列向量x 表示为行向量或者反过来表示的问题。
布局(Layout):在矩阵求导中有两种布局,分别为分母布局(denominator layout)和分子布局(numerator layout)。这两种不同布局的求导规则是不一样的。
向量 y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥,关于标量x 的求导,
在分子布局下,为:
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂yn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(1)
而在分母布局下,为:
∂y∂x=[∂y1∂x∂y2∂x⋯∂yn∂x](2)
通过观察和推导我们可以知道,分子布局和分母布局之间刚好差一个转置,即在分子布局下与原来Y相同,而在分母布局下差一个转置。
对于正切矩阵∂y∂x采用分母布局,即Y⊤,很不符合表达的习惯,所以本文中我们采用的是分子布局。
1 关于标量的导数
对于 X 是标量的情况,是我们最熟悉的一种情况。1.1 标量关于标量X的求导
这中情况就是我们平时的代数求导,直接就是∂y∂x1.2 向量关于标量X的求导
向量 y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥,关于标量x 的求导就是 y 的每一个元素分别对x求导,可以表示为∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂yn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(3)
此时为正切向量,∂y∂x 为 y 的正切向量,有映射 y : Rm⟹Rm 。
1.3 矩阵关于标量X的求导
矩阵对标量的求导类似于向量关于标量的求导,也就是矩阵的每个元素分别对标量x求导,矩阵 Y=⎡⎣⎢⎢⎢⎢⎢y11y21⋮yn1y12y22⋮yn2⋯⋯⋱⋯y1ny2n⋮ynn⎤⎦⎥⎥⎥⎥⎥ 对标量x的导数为∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x∂y21∂x⋮∂yn1∂x∂y12∂x∂y22∂x⋮∂yn2∂x⋯⋯⋱⋯∂y1n∂x∂y2n∂x⋮∂ynn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(4)
2 关于向量的导数
2.1标量关于向量 x 的导数
标量y 关于向量 x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥ 的求导可以表示为∂y∂x=[∂y∂x1 ∂y∂x2 ⋯ ∂y∂xn](5)
此时的向量叫做梯度向量。 ∂y∂x 为标量y 在空间 Rn 的梯度,该空间以x 为基。
2.2 向量关于向量 x 的导数
向量函数(即函数组成的向量)y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮yn⎤⎦⎥⎥⎥⎥⎥ 关于向量x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥ 的导数记作∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y2∂x1⋮∂yn∂x1∂y1∂x2∂y2∂x2⋮∂yn∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂yn∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(6)
此时获得的矩阵∂y∂x 叫做Jacobian 矩阵。
2.3 矩阵关于向量 x 的导数
矩阵 Y=⎡⎣⎢⎢⎢⎢⎢y11y21⋮yn1y12y22⋮yn2⋯⋯⋱⋯y1ny2n⋮ynn⎤⎦⎥⎥⎥⎥⎥ 对向量x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥ 的导数是推导中最复杂的一种,我们可以表示为∂Y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x1∂y21∂x1⋮∂yn1∂x1∂y1n∂x2∂y22∂x2⋮∂yn2∂x2⋯⋯⋱⋯∂y1n∂xn∂y2n∂xn⋮∂ynn∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(7)
3 关于矩阵的导数
我们一般只考虑标量关于矩阵的导数(因为矩阵对向量和矩阵的导数与前面2.3节的内容一致或相似),即标量y 对矩阵 X 的导数为 ∂y∂X ,此时的导数是梯度矩阵,可以表示为下式:∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x12⋮∂y∂x1n∂y∂x21∂y∂x22⋮∂y∂x2n⋯⋯⋱⋯∂y∂xn1∂y∂xn2⋮∂y∂xnn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥(8)
4 维度分析
当我们对一些复杂的矩阵乘积求偏导的时候,直接求很难直接求出,这时候我们可以通过分析矩阵的维度来得到结果。例如:考虑以下导数 ∂Au∂x ,其中 A 与x 无关 且有 A∈Rm×n, u∈BbbRn×1 ,x∈Rp×1,我们知道结果肯定和∂u∂x 有关,于是先把 A 提出求导式,至于到了哪暂时不知道,接着我们知道 ∂u∂x∈Rp×n,于是 A 只能转置后添加到后面。因此有
∂Au∂x=$∂u∂xA⊤(9)
再考虑问题 ∂x⊤Ax∂x ,其中 A∈Rn×n, x∈Rn×n ,
为了分析这个问题我们考虑一个更一半的问题
∂x⊤Ax∂x(10)
其中 A∈Rn×n, x∈BbbRn×n,且 A 与x 和 y 无关 。于是我们利用维度分析,采用非精确的乘积法则,可以将它分为两个部分
∂(x⊤A)y∂x(11)
于是结果与两部分相关,一个是
∂y∂x∈Rm×n(12)
另一个是
∂x⊤A∂x=A∈Rm×n(13)
同样通过维度分析,我们可以得到
∂(x⊤A)y∂x=∂y∂xA⊤x+Ay(14)
因此经过维度的比较我们可以得到
∂x⊤Ax∂x=(A⊤+A)x(14)
通过以上两个示例的学习,我们可以知道在求解复杂矩阵的求导问题时,通过维度来判断矩阵的导数形式很简便同时也不容易出错。下图是机器学习中常见的矩阵求导形式,可供参考:
5 总结
在本文中,我们针对机器学习推导中的矩阵求导问题做了一个全面的分析,同时结合前文 深度学习系列(二)——机器学习中的线性代数知识 介绍的机器学习中线性代数的基础知识,我们对线性代数部分做了详细的了解。下一章我们介绍机器学习中涉及到的概率知识。相关文章推荐
- 机器学习中的线性代数之矩阵求导
- 机器学习中常用的矩阵求导公式
- 机器学习基础03-矩阵和线性代数
- 七月算法机器学习笔记3 线性代数与矩阵
- 机器学习中常用的矩阵求导公式
- 机器学习中常用的矩阵求导公式
- 机器学习中常用的矩阵求导公式
- 机器学习笔记(二)矩阵和线性代数 例:用Python实现SVD分解进行图片压缩
- 机器学习中常用的矩阵求导公式
- 机器学习中的矩阵求导总结
- 机器学习常用矩阵求导公式
- 机器学习线性回归中,用矩阵求导方法求最小二乘法的方法
- 机器学习中的常用矩阵求导
- [转载]机器学习中常用的矩阵求导公式
- 机器学习矩阵求导
- 机器学习中常用的矩阵求导公式
- 机器学习中常用矩阵求导公式
- 机器学习常见的矩阵求导总结
- 机器学习的数学基础(2)——矩阵与线性代数
- 机器学习中会用到的矩阵、向量求导公式