理解三个原则,轻松掌握矩阵求导

在这里插入图片描述

理解三个原则,轻松掌握矩阵求导

  • 本文首发在我的微信公众号,地址:理解三个原则,轻松掌握矩阵求导

矩阵求导在机器学习领域十分常见,无论在学习时,或者阅读相关论文的时候,掌握矩阵求导的方法是必要的。虽然有很多总结好的公式可以记住,但是总有忘记的时候,因此记再多也不如自己懂得如何计算。

根据矩阵微分的相关定义,可以总结出矩阵求导的三个原则:

  • 如果函数f(x)为矩阵函数或向量函数,而自变量x为标量,则最终导数是与f(x)形状相同的矩阵或向量,每个分量是f(x)的对应位置的分量对x的导数;
  • 如果函数f(x)为标量函数,而自变量x为矩阵或向量,则最终导数是与x形状相同的矩阵或向量,每个分量是f(x)对x的相应位置的分量的偏导数;
  • 如果函数f(x)与自变量x都是矩阵或向量,则先将f(x)看做标量对x求导,得到与x形状相同的中间结果,其中每个分量是f(x)对x相应位置的分量的偏导数(暂时形式化表示);然后对每个分量上的形式化导数展开。

上面的三条原则基本上包含了矩阵求导的所有情况,也很容易理解,不过还是有些抽象,下面通过几个例子更加形象地说明。

例1: f(x)是矩阵函数,自变量x是标量,f(x)表示如下:
f ( x ) = [ f 11 ( x ) f 12 ( x ) … f 1 n ( x ) f 21 ( x ) f 22 ( x ) … f 2 n ( x ) ⋮ ⋮ ⋮ f m 1 ( x ) f m 2 ( x ) … f m n ( x ) ] f(x)= \begin{bmatrix} f_{11}(x) & f_{12}(x) & \dots & f_{1n}(x) \\ f_{21}(x) & f_{22}(x) & \dots & f_{2n}(x) \\ \vdots & \vdots & & \vdots \\ f_{m1}(x) & f_{m2}(x) & \dots & f_{mn}(x) \end{bmatrix} f(x)=f11(x)f21(x)fm1(x)f12(x)f22(x)fm2(x)f1n(x)f2n(x)fmn(x)
那么f(x)关于x的导数为
d f ( x ) d x = [ d f 11 ( x ) d x d f 12 ( x ) d x … d f 1 n ( x ) d x d f 21 ( x ) d x d f 22 ( x ) d x … d f 2 n ( x ) d x ⋮ ⋮ ⋮ d f m 1 ( x ) d x d f m 2 ( x ) d x … d f m n ( x ) d x ] \frac{\mathrm{d}f(x)}{\mathrm{d}x}= \begin{bmatrix} \frac{\mathrm{d}f_{11}(x)}{\mathrm{d}x} & \frac{\mathrm{d}f_{12}(x)}{\mathrm{d}x} & \dots & \frac{\mathrm{d}f_{1n}(x)}{\mathrm{d}x} \\ \frac{\mathrm{d}f_{21}(x)}{\mathrm{d}x} & \frac{\mathrm{d}f_{22}(x)}{\mathrm{d}x} & \dots & \frac{\mathrm{d}f_{2n}(x)}{\mathrm{d}x} \\ \vdots & \vdots & & \vdots \\ \frac{\mathrm{d}f_{m1}(x)}{\mathrm{d}x} & \frac{\mathrm{d}f_{m2}(x)}{\mathrm{d}x} & \dots & \frac{\mathrm{d}f_{mn}(x)}{\mathrm{d}x} \end{bmatrix} dxdf(x)=dxdf11(x)dxdf21(x)dxdfm1(x)dxdf12(x)dxdf22(x)dxdfm2(x)dxdf1n(x)dxdf2n(x)dxdfmn(x)
例2: f(x)是标量函数,自变量x是向量,x表示如下:
x = ( ξ 1 , ξ 2 , … , ξ n ) T x=(\xi_1,\xi_2,\dots,\xi_n)^T x=(ξ1,ξ2,,ξn)T
那么f(x)关于x的导数为
d f ( x ) d x = ( ∂ f ( x ) ∂ ξ 1 , ∂ f ( x ) ∂ ξ 2 , … , ∂ f ( x ) ∂ ξ n ) T \frac{\mathrm{d}f(x)}{\mathrm{d}x}=(\frac{\partial f(x)}{\partial\xi_1},\frac{\partial f(x)}{\partial\xi_2},\dots,\frac{\partial f(x)}{\partial\xi_n})^T dxdf(x)=(ξ1f(x),ξ2f(x),,ξnf(x))T
例3: 在例2的基础上,求
d d x T ( d f ( x ) d x ) \frac{\mathrm{d}}{\mathrm{d}x^T}(\frac{\mathrm{d}f(x)}{\mathrm{d}x}) dxTd(dxdf(x))
首先求出f(x)关于x的导数
d f ( x ) d x \frac{\mathrm{d}f(x)}{\mathrm{d}x} dxdf(x)
再将其看做 x T x^T xT的函数,进行求导。

d f ( x ) d x \frac{\mathrm{d}f(x)}{\mathrm{d}x} dxdf(x)关于 x T x^T xT的导数时,先将其看做标量函数,得到
d d x T ( d f ( x ) d x ) = ( ∂ ∂ ξ 1 ( d f ( x ) d x ) , ∂ ∂ ξ 2 ( d f ( x ) d x ) , … , ∂ ∂ ξ n ( d f ( x ) d x ) ) \frac{\mathrm{d}}{\mathrm{d}x^T}(\frac{\mathrm{d}f(x)}{\mathrm{d}x})=(\frac{\partial}{\partial \xi_1}(\frac{\mathrm{d}f(x)}{\mathrm{d}x}),\frac{\partial}{\partial \xi_2}(\frac{\mathrm{d}f(x)}{\mathrm{d}x}),\dots,\frac{\partial}{\partial \xi_n}(\frac{\mathrm{d}f(x)}{\mathrm{d}x})) dxTd(dxdf(x))=(ξ1(dxdf(x)),ξ2(dxdf(x)),,ξn(dxdf(x)))
然后将每个分量展开
∂ ∂ ξ i ( d f ( x ) d x ) = ( ∂ 2 f ( x ) ∂ ξ 1 ∂ ξ i , ∂ 2 f ( x ) ∂ ξ 2 ∂ ξ i , … , ∂ 2 f ( x ) ∂ ξ n ∂ ξ i ) T \frac{\partial}{\partial \xi_i}(\frac{\mathrm{d}f(x)}{\mathrm{d}x})=(\frac{\partial^2f(x)}{\partial\xi_1\partial\xi_i},\frac{\partial^2f(x)}{\partial\xi_2\partial\xi_i},\dots,\frac{\partial^2f(x)}{\partial\xi_n\partial\xi_i})^T ξi(dxdf(x))=(ξ1ξi2f(x),ξ2ξi2f(x),,ξnξi2f(x))T
最终得到
d d x T ( d f ( x ) d x ) = [ ∂ 2 f ( x ) ∂ ξ 1 ∂ ξ 1 ∂ 2 f ( x ) ∂ ξ 1 ∂ ξ 2 … ∂ 2 f ( x ) ∂ ξ 1 ∂ ξ n ∂ 2 f ( x ) ∂ ξ 2 ∂ ξ 1 ∂ 2 f ( x ) ∂ ξ 2 ∂ ξ 2 … ∂ 2 f ( x ) ∂ ξ 2 ∂ ξ n ⋮ ⋮ ⋮ ∂ 2 f ( x ) ∂ ξ m ∂ ξ 1 ∂ 2 f ( x ) ∂ ξ m ∂ ξ 2 … ∂ 2 f ( x ) ∂ ξ m ∂ ξ n ] \frac{\mathrm{d}}{\mathrm{d}x^T}(\frac{\mathrm{d}f(x)}{\mathrm{d}x})= \begin{bmatrix} \frac{\partial^2f(x)}{\partial\xi_1\partial\xi_1} & \frac{\partial^2f(x)}{\partial\xi_1\partial\xi_2} & \dots & \frac{\partial^2f(x)}{\partial\xi_1\partial\xi_n} \\ \frac{\partial^2f(x)}{\partial\xi_2\partial\xi_1} & \frac{\partial^2f(x)}{\partial\xi_2\partial\xi_2} & \dots & \frac{\partial^2f(x)}{\partial\xi_2\partial\xi_n} \\ \vdots & \vdots & & \vdots \\ \frac{\partial^2f(x)}{\partial\xi_m\partial\xi_1} & \frac{\partial^2f(x)}{\partial\xi_m\partial\xi_2} & \dots & \frac{\partial^2f(x)}{\partial\xi_m\partial\xi_n} \\ \end{bmatrix} dxTd(dxdf(x))=ξ1ξ12f(x)ξ2ξ12f(x)ξmξ12f(x)ξ1ξ22f(x)ξ2ξ22f(x)ξmξ22f(x)ξ1ξn2f(x)ξ2ξn2f(x)ξmξn2f(x)
虽然根据上面的三个原则,不能包含所有矩阵求导问题,但应该足以应付机器学习当中比较常见的一些情况。

如果遇到了更复杂的情况,可以给大家推荐一本书叫做:《MatrixCookBook》,这本书里面总结了各种有关矩阵求导的实例,需要的时候可以当做工具进行查阅。

扫描顶部二维码,关注“帅帅Go”公众号
回复“Matrx”
即可得到下载链接

你可能感兴趣的:(算法与人工智能,深度学习,机器学习,矩阵,线性代数)