【机器学习中的矩阵求导】(二)矩阵向量求导(定义法)

学习总结

(1)三种情况:标量对向量求导,标量对矩阵求导, 以及向量对向量求导。
下文,其中的标量对向量,标量对矩阵求导,这里以分母布局为默认布局;向量或矩阵对标量求导的场景很少见。

(2)机器学习算法中一般会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准如果是标量对向量或者矩阵求导,则以分母布局为准。对于向量对对向量求导,有些分歧,后面统一以分子布局的雅克比矩阵为主。

一、回顾知识

假设: x x x表示标量; X X X表示m×n维的矩阵;求导的因变量用 y y y表示标量; Y Y Y表示 p × q p×q p×q维矩阵

自变量/因变量标量 y y y列向量 y \mathbf{y} y矩阵 Y \mathbf{Y} Y
标量 x x x/ ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial x} xy
分子布局:m维列向量(默认布局)
分母布局:m维行向量
∂ Y ∂ x \frac{\partial \mathbf{Y}}{\partial x} xY
分子布局:p×q(默认布局)
分母布局:q×p
列向量 x \mathbf{x} x ∂ y ∂ x \frac{\partial {y}}{\partial \mathbf{x}} xy
分子布局:n维行向量(默认布局)
分母布局:n维列向量
∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} xy
分子布局:m×n雅克比矩阵(默认布局)
分母布局:n×m梯度矩阵
/
矩阵 X \mathbf{X} X ∂ y ∂ X \frac{\partial y}{\partial \mathbf{X}} Xy
分子布局:n×m矩阵
分母布局:m×n矩阵(默认布局)

二、用定义法求解标量对向量求导

∂ y ∂ x \frac{\partial y}{\partial \mathbf{x}} xy
给定一个实值函数 f : R n → R f:R^n \rightarrow R f:RnR,求其对自变量n维向量 x \mathbf{x} x的导数。即变量对向量里的每个分量分别求导,得到的结果依次组成新向量表示。

【例题1】

y = a T x y=\mathbf{a}^{T} \mathbf{x} y=aTx求解 ∂ a T x ∂ x \frac{\partial \mathbf{a}^{T} \mathbf{x}}{\partial \mathbf{x}} xaTx x \mathbf{x} x的每个分量分别求导(分别为标量对标量求导),结果为向量 a \mathbf{a} a的第i个分量:
∂ a T x ∂ x i = ∂ ∑ j = 1 n a j x j ∂ x i = ∂ a i x i ∂ x i = a i \frac{\partial \mathbf{a}^{T} \mathbf{x}}{\partial x_{i}}=\frac{\partial \sum_{j=1}^{n} a_{j} x_{j}}{\partial x_{i}}=\frac{\partial a_{i} x_{i}}{\partial x_{i}}=a_{i} xiaTx=xij=1najxj=xiaixi=ai

因为是分母布局,所以求导与分母维度相同,即最后求导结果的分量,组成一个和 x \mathbf{x} x一样的n维向量,即向量 a a a
∂ a T x ∂ x = a \frac{\partial \mathbf{a}^{T} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{a} xaTx=a
【小练习1】
用定义法推导: ∂ x T x ∂ x = 2 x \frac{\partial \mathbf{x}^{T} \mathbf{x}}{\partial \mathbf{x}}=2 \mathbf{x} xxTx=2x
这个和刚才一样,先对 x \mathbf{x} x的每个分量进行求导:
∂ x T x ∂ x i = ∂ ∑ j = 1 n x j x j ∂ x i = ∂ x i x i ∂ x i = 2 x \frac{\partial \mathbf{x}^{T} \mathbf{x}}{\partial x_{i}}=\frac{\partial \sum_{j=1}^{n} x_{j} x_{j}}{\partial x_{i}}=\frac{\partial x_{i} x_{i}}{\partial x_{i}}=2{x} xixTx=xij=1nxjxj=xixixi=2x
最后各个分量组成一个向量 x \mathbf{x} x

【例题2】

y = x T A x y=\mathbf{x}^{T} \mathbf{A} \mathbf{x} y=xTAx求解 ∂ x T A x ∂ x \frac{\partial \mathbf{x}^{T} \mathbf{A} \mathbf{x}}{\partial \mathbf{x}} xxTAx
做法:
∂ x T A x ∂ x k = ∂ ∑ i = 1 n ∑ j = 1 n x i A i j x j ∂ x k = ∑ i = 1 n A i k x i + ∑ j = 1 n A k j x j \frac{\partial \mathbf{x}^{T} \mathbf{A} \mathbf{x}}{\partial x_{k}}=\frac{\partial \sum_{i=1}^{n} \sum_{j=1}^{n} x_{i} A_{i j} x_{j}}{\partial x_{k}}=\sum_{i=1}^{n} A_{i k} x_{i}+\sum_{j=1}^{n} A_{k j} x_{j} xkxTAx=xki=1nj=1nxiAijxj=i=1nAikxi+j=1nAkjxj
对于上面结果:

  • 第一部分:矩阵 A \mathbf{A} A的第k列转置后和 x x x相乘;
  • 第二部分:矩阵 A \mathbf{A} A的第k行和 x x x相乘;

最后排列好各个分量的结果:
∂ x T A x ∂ x = A T x + A x \frac{\partial \mathbf{x}^{T} \mathbf{A} \mathbf{x}}{\partial \mathbf{x}}=\mathbf{A}^{T} \mathbf{x}+\mathbf{A} \mathbf{x} xxTAx=ATx+Ax

小结:例2的较复杂的实值函数求导,最终排列出的求导结果较为复杂。

三、标量对向量求导

寻找较复杂的实值函数求导更方便的方法,不是每次都先针对任意一个分量,再进行排列。

标量对向量求导的基本法则(PS:和我们以前标量对标量求导的法则类似):

  • 常量对向量的求导结果为0
  • 线性法则:如果 f f f g g g都是实值函数, c 1 c1 c1 c 2 c2 c2为常数,则: ∂ ( c 1 f ( x ) + c 2 g ( x ) ∂ x = c 1 ∂ f ( x ) ∂ x + c 2 ∂ g ( x ) ∂ x \frac{\partial\left(c_{1} f(\mathbf{x})+c_{2} g(\mathbf{x})\right.}{\partial \mathbf{x}}=c_{1} \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}}+c_{2} \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}} x(c1f(x)+c2g(x)=c1xf(x)+c2xg(x)
  • 乘法法则:如果 f f f g g g都是实值函数,则: ∂ f ( x ) g ( x ) ∂ x = f ( x ) ∂ g ( x ) ∂ x + ∂ f ( x ) ∂ x g ( x ) \frac{\partial f(\mathbf{x}) g(\mathbf{x})}{\partial \mathbf{x}}=f(\mathbf{x}) \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}}+\frac{\partial f(\mathbf{x})}{\partial \mathbf{x}} g(\mathbf{x}) xf(x)g(x)=f(x)xg(x)+xf(x)g(x)如果不是实值函数,则不能这样用乘法法则
  • 除法法则:如果 f f f g g g都是实值函数,且 g ( x ) ≠ 0 g(x)≠0 g(x)=0,则: ∂ f ( x ) / g ( x ) ∂ x = 1 g 2 ( x ) ( g ( x ) ∂ f ( x ) ∂ x − f ( x ) ∂ g ( x ) ∂ x ) \frac{\partial f(\mathbf{x}) / g(\mathbf{x})}{\partial \mathbf{x}}=\frac{1}{g^{2}(\mathbf{x})}\left(g(\mathbf{x}) \frac{\partial f(\mathbf{x})}{\partial \mathbf{x}}-f(\mathbf{x}) \frac{\partial g(\mathbf{x})}{\partial \mathbf{x}}\right) xf(x)/g(x)=g2(x)1(g(x)xf(x)f(x)xg(x))

PS:标量对矩阵求导,也有类似上面的法则。

四、标量对矩阵求导

【栗子】
y = a T X b y=\mathbf{a}^{T} \mathbf{X} \mathbf{b} y=aTXb
求解 ∂ a T X b ∂ X \frac{\partial \mathbf{a}^{T} \mathbf{X b}}{\partial \mathbf{X}} XaTXb

  • a \mathbf{a} a是m维向量, b \mathbf{b} b是n维向量, X \mathbf{X} X是m×n的矩阵。

  • 先对矩阵 X \mathbf{X} X的任意一个位置的 X i j X_{i j} Xij求导:
    ∂ a T X b ∂ X i j = ∂ ∑ p = 1 m ∑ q = 1 n a p X p q b q ∂ X i j = ∂ a i X i j b j ∂ X i j = a i b j \frac{\partial \mathbf{a}^{T} \mathbf{X} \mathbf{b}}{\partial X_{i j}}=\frac{\partial \sum_{p=1}^{m} \sum_{q=1}^{n} a_{p} X_{p q} b_{q}}{\partial X_{i j}}=\frac{\partial a_{i} X_{i j} b_{j}}{\partial X_{i j}}=a_{i} b_{j} XijaTXb=Xijp=1mq=1napXpqbq=XijaiXijbj=aibj

  • 求导结果再 ( i , j ) (i,j) (i,j)位置的结果: a \mathbf{a} a向量第 i i i个分量和 b \mathbf{b} b j j j个分量的乘积,将所有的位置的求导结果排列成一个m×n的矩阵,即 a b T \mathbf{a} \mathbf{b}^{T} abT,即结果为: ∂ a T X b ∂ X = a b T \frac{\partial \mathbf{a}^{T} \mathbf{X} \mathbf{b}}{\partial \mathbf{X}}=a b^{T} XaTXb=abT

五、向量对向量求导

y = A x \mathbf{y} = \mathbf{A} \mathbf{x} y=Ax是向量。

  • A \mathbf{A} A为n×m矩阵
  • x \mathbf{x} x为m维向量; y \mathbf{y} y为n维向量
  • 先分别求【矩阵的第 i i i 行和向量的内积】对向量的第 j j j 分量求导,定义法: ∂ A i x ∂ x j = ∂ A i j x j ∂ x j = A i j \frac{\partial \mathbf{A}_{\mathbf{i}} \mathbf{x}}{\partial \mathbf{x}_{\mathbf{j}}}=\frac{\partial A_{i j} x_{j}}{\partial \mathbf{x}_{\mathbf{j}}}=A_{i j} xjAix=xjAijxj=Aij
  • 所以结果是矩阵 A \mathbf{A} A ( i , j ) (i,j) (i,j)位置的值,排列组成的结果 A \mathbf{A} A,而非 A T \mathbf{A}^{T} AT

六、定义法矩阵向量求导的缺点

定义法中间运算复杂,结果排列较为麻烦,如 y = a T exp ⁡ ( X b ) y=\mathbf{a}^{T} \exp (\mathbf{X} \mathbf{b}) y=aTexp(Xb)对任意标量的求导容易,但是排列起来较为麻烦,所以进一步,我们可以使用矩阵微分和迹函数来进行矩阵向量求导。

Reference

(1)https://www.cnblogs.com/pinard/p/10773942.html
(2)矩阵求导知识点总结:https://www.cnblogs.com/gyhhaha/p/11782212.html

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山顶夕景

小哥哥给我买个零食可好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值