线性代数之 矩阵求导(1)布局

前言

学机器人真是啥都要掌握呢,线性代数,概率论,泛函,实分析,优化理论,还有编程,仿真…感觉一年半载才能入门。

这个栏又要开一个新坑,线性代数,包括矩阵分析,矩阵计算,向量和矩阵的各种性质blabla。

基础的线性代数比如矩阵是啥向量是啥就略过了,直接进入与机器学习紧密相关的矩阵求导

分子和分母布局

许多矩阵求导解析中都会谈到布局的概念,也就是分子布局分母布局,但是我记不住啊!不过也有好记的方法:

谁转置,就不是谁的布局;谁是列向量,就是谁的布局。

当然,以上这个方法得满足一些约定条件,可是记忆这些约定又很麻烦(我还是记不住),因此还是直观的展示布局方法,不整这些耗费脑细胞的布局命名。

标量,向量,矩阵

默认字母带数字下标 x 0 x_0 x0是标量。默认向量 x = ( x 1 , x 2 , … , x n ) T x=(x_1,x_2,\dots,x_n)^T x=(x1,x2,,xn)T是列向量, x T x^T xT是行向量, x ∈ R n x \in R^n xRn。默认大写字母 X X X是矩阵。

为了简化公式,输入的矩阵不超过二阶,输入的向量不超过三维。

函数

将函数输出的类型作为函数类型,函数的输入可以是标量、向量和矩阵(有点C++里函数重载的意思)。

因此,可以将矩阵求导问题,看作是函数对矩阵的求导。

标量函数

输出是标量的函数就是标量函数。那么三种输入的标量函数举例:
f ( x 0 ) = 3 x 0 f ( x ) = x 1 2 + 2 x 2 2 + 2 x 1 x 2 + x 3 f ( X ) = x 11 2 + 2 x 11 x 12 + x 21 x 22 + 2 x 22 2 \begin{aligned} f(x_0)&=3x_0 \\ \quad \\ f(x)&= x_1^2+2x_2^2+2x_1x_2+x_3 \\ \quad \\ f(X)&=x_{11}^2+2x_{11}x_{12}+x_{21}x_{22}+2x_{22}^2 \end{aligned} f(x0)f(x)f(X)=3x0=x12+2x22+2x1x2+x3=x112+2x11x12+x21x22+2x222
可以看出,标量函数,实际上就是输入分量之间的各种组合多项式。

向量函数

假设向量函数的输出是三维的,则不同的输入对应的函数举例:
f ( x 0 ) = [ 2 x 0 x 0 2 x 0 + 2 ] f ( x ) = [ x 1 2 + 2 x 2 2 x 2 2 + 2 x 3 2 x 3 + 2 x 1 x 2 ] f ( X ) = [ x 11 2 + 2 x 22 2 x 12 2 + x 21 x 22 2 x 21 ] \begin{aligned} f(x_0)&= \begin{bmatrix} 2x_0 \\ x_0^2 \\ x_0+2 \end{bmatrix} \\ \quad \\ f(x)&= \begin{bmatrix} x_1^2+2x_2^2 \\ x_2^2+2x_3^2 \\ x_3+2x_1x_2 \\ \end{bmatrix} \\ \quad \\ f(X)&= \begin{bmatrix} x_{11}^2+2x_{22}^2 \\ x_{12}^2+x_{21}x_{22} \\ 2x_{21} \end{bmatrix} \end{aligned} f(x0)f(x)f(X)=2x0x02x0+2=x12+2x22x22+2x32x3+2x1x2=x112+2x222x122+x21x222x21

矩阵函数

假设输出的矩阵是3x2的,则不同输入类型的函数举例:
f ( x 0 ) = [ 2 x 0 x 0 x 0 2 1 x 0 + 2 x 0 2 + 2 x 0 ] f ( x ) = [ x 1 2 + 2 x 2 2 x 1 x 2 + 3 x 2 2 + 2 x 3 2 x 2 2 + 2 x 1 x 3 + 2 x 1 x 2 x 3 ] f ( X ) = [ x 11 2 + 2 x 22 2 x 11 + 2 x 12 2 + x 21 x 22 2 x 21 2 + 2 x 21 2 x 21 x 22 2 ] \begin{aligned} f(x_0)&= \begin{bmatrix} 2x_0 & x_0 \\ x_0^2 & 1 \\ x_0+2 & x_0^2+2x_0\\ \end{bmatrix} \\ \quad \\ f(x)&= \begin{bmatrix} x_1^2+2x_2^2 & x_1x_2+3 \\ x_2^2+2x_3^2 & x_2^2+2x_1\\ x_3+2x_1x_2 & x_3\\ \end{bmatrix} \\ \quad \\ f(X)&= \begin{bmatrix} x_{11}^2+2x_{22}^2 & x_{11}+2\\ x_{12}^2+x_{21}x_{22} & 2x_{21}^2+2x_{21}\\ 2x_{21} & x_{22}^2 \\ \end{bmatrix} \end{aligned} f(x0)f(x)f(X)=2x0x02x0+2x01x02+2x0=x12+2x22x22+2x32x3+2x1x2x1x2+3x22+2x1x3=x112+2x222x122+x21x222x21x11+22x212+2x21x222

函数求导

标量函数求导

以向量输入为例,如果输入是列向量,则求导公式为:
∂ f ∂ x = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ∂ f ∂ x 3 ] \frac {\partial f}{\partial x}=\begin{bmatrix} \frac {\partial f}{\partial x_1 } \\ \frac {\partial f}{\partial x_2}\\ \frac {\partial f}{\partial x_3}\\ \end{bmatrix} xf=x1fx2fx3f
如果输入是行向量,则有:
∂ f ∂ x T = [ ∂ f ∂ x 1 , ∂ f ∂ x 2 , ∂ f ∂ x 3 ] = ( ∂ f ∂ x ) T \frac {\partial f}{\partial x^T}=\begin{bmatrix} \frac {\partial f}{\partial x_1}, \frac {\partial f}{\partial x_2}, \frac {\partial f}{\partial x_3} \end{bmatrix} = (\frac {\partial f}{\partial x})^T xTf=[x1f,x2f,x3f]=(xf)T
由以上公式可以看出,标量函数求导后的布局,和输入的布局是相同的,输入是列向量,求导布局也是列向量。

注意:在部分机器学习的求导中,标量对列向量求导是行向量,这就是所谓的分子布局。但是分母布局和分子布局只是计算的约定不同而已,因此在这里不会使用思维方式更复杂的分子布局(甚至我都不想提到这点)。

向量函数求导

以向量输入为例,假定输入是列向量,输出也是列向量,我们考虑对三个输出标量分别求导,然后把结果以列的形式拼在一起:
∂ f ∂ x = [ ∂ f 1 ∂ x ∂ f 2 ∂ x ∂ f 3 ∂ x ] = [ ∂ f 1 ∂ x 1 ∂ f 1 ∂ x 2 ∂ f 1 ∂ x 3 ∂ f 2 ∂ x 1 … ∂ f 3 ∂ x 3 ] \frac {\partial f}{\partial x}= \quad \begin{bmatrix} \frac {\partial f_1}{\partial x } \\ \frac {\partial f_2}{\partial x}\\ \frac {\partial f_3}{\partial x}\\ \end{bmatrix} = \quad \begin{bmatrix} \frac {\partial f_1}{\partial x_1 }\\ \frac {\partial f_1}{\partial x_2 }\\ \frac {\partial f_1}{\partial x_3 }\\ \frac {\partial f_2}{\partial x_1}\\ \dots \\ \frac {\partial f_3}{\partial x_3}\\ \end{bmatrix} xf=xf1xf2xf3=x1f1x2f1x3f1x1f2x3f3
m维列向量对n维列向量求导之后,变成了mn维列向量,新的向量空间很难与原向量空间进行变换,因此列向量对列向量求导,行向量对行向量求导都是不规范的。

因此,一般使用行向量对列向量求导(也就是所谓的分母布局):
∂ f T ∂ x = [ ∂ f 1 ∂ x , ∂ f 2 ∂ x , ∂ f 3 ∂ x ] = [ ∂ f 1 ∂ x 1 , ∂ f 2 ∂ x 1 , ∂ f 3 ∂ x 1 ∂ f 1 ∂ x 2 , ∂ f 2 ∂ x 2 , ∂ f 3 ∂ x 2 ∂ f 1 ∂ x 3 , ∂ f 2 ∂ x 3 , ∂ f 3 ∂ x 3 ] \frac {\partial f^T}{\partial x}= \begin{bmatrix} \frac {\partial f_1}{\partial x }, \frac {\partial f_2}{\partial x}, \frac {\partial f_3}{\partial x} \end{bmatrix} \\ =\begin{bmatrix} \frac {\partial f_1}{\partial x_1}, \frac {\partial f_2}{\partial x_1}, \frac {\partial f_3}{\partial x_1}\\ \frac {\partial f_1}{\partial x_2}, \frac {\partial f_2}{\partial x_2}, \frac {\partial f_3}{\partial x_2}\\ \frac {\partial f_1}{\partial x_3}, \frac {\partial f_2}{\partial x_3}, \frac {\partial f_3}{\partial x_3}\\ \end{bmatrix} xfT=[xf1,xf2,xf3]=x1f1,x1f2,x1f3x2f1,x2f2,x2f3x3f1,x3f2,x3f3
或者,也可以使用列向量对行向量求导(也就是所谓的分子布局),得到雅可比矩阵:
∂ f ∂ x T = [ ∂ f 1 ∂ x ∂ f 2 ∂ x ∂ f 3 ∂ x ] = [ ∂ f 1 ∂ x 1 , ∂ f 1 ∂ x 2 , ∂ f 1 ∂ x 3 ∂ f 2 ∂ x 1 , ∂ f 2 ∂ x 2 , ∂ f 2 ∂ x 3 ∂ f 3 ∂ x 1 , ∂ f 3 ∂ x 2 , ∂ f 3 ∂ x 3 ] \frac {\partial f}{\partial x^T}= \begin{bmatrix} \frac {\partial f_1}{\partial x }\\ \frac {\partial f_2}{\partial x}\\ \frac {\partial f_3}{\partial x}\\ \end{bmatrix} \\ =\begin{bmatrix} \frac {\partial f_1}{\partial x_1}, \frac {\partial f_1}{\partial x_2}, \frac {\partial f_1}{\partial x_3}\\ \frac {\partial f_2}{\partial x_1}, \frac {\partial f_2}{\partial x_2}, \frac {\partial f_2}{\partial x_3}\\ \frac {\partial f_3}{\partial x_1}, \frac {\partial f_3}{\partial x_2}, \frac {\partial f_3}{\partial x_3}\\ \end{bmatrix} xTf=xf1xf2xf3=x1f1,x2f1,x3f1x1f2,x2f2,x3f2x1f3,x2f3,x3f3

于是,我们就成功的将标量对向量求导,延伸到了向量对向量求导。

矩阵函数求导

因为矩阵对矩阵、矩阵对向量的求导用的很少,因此这里仅仅举一个求导思路,矩阵函数对列向量求导:
∂ f ∂ x = [ ∂ f ∂ x 1 ∂ f ∂ x 2 ∂ f ∂ x 3 ] = [ [ ∂ f 11 ∂ x 1 , ∂ f 12 ∂ x 1 ∂ f 21 ∂ x 1 , ∂ f 22 ∂ x 1 ] [ ∂ f 11 ∂ x 2 , ∂ f 12 ∂ x 2 ∂ f 21 ∂ x 2 , ∂ f 22 ∂ x 2 ] [ ∂ f 11 ∂ x 3 , ∂ f 12 ∂ x 3 ∂ f 21 ∂ x 3 , ∂ f 22 ∂ x 3 ] ] \frac {\partial f}{\partial x}= \begin{bmatrix} \frac {\partial f}{\partial x_1}\\ \frac {\partial f}{\partial x_2}\\ \frac {\partial f}{\partial x_3}\\ \end{bmatrix} \\ =\begin{bmatrix} \begin{bmatrix} \frac {\partial f_{11}}{\partial x_1}, \frac {\partial f_{12}}{\partial x_1}\\ \frac {\partial f_{21}}{\partial x_1}, \frac {\partial f_{22}}{\partial x_1}\end{bmatrix}\\ \quad \\ \begin{bmatrix} \frac {\partial f_{11}}{\partial x_2}, \frac {\partial f_{12}}{\partial x_2}\\ \frac {\partial f_{21}}{\partial x_2}, \frac {\partial f_{22}}{\partial x_2}\end{bmatrix}\\ \quad \\ \begin{bmatrix} \frac {\partial f_{11}}{\partial x_3}, \frac {\partial f_{12}}{\partial x_3}\\ \frac {\partial f_{21}}{\partial x_3}, \frac {\partial f_{22}}{\partial x_3}\end{bmatrix}\\ \end{bmatrix} xf=x1fx2fx3f=[x1f11,x1f12x1f21,x1f22][x2f11,x2f12x2f21,x2f22][x3f11,x3f12x3f21,x3f22]
结果是个张量。

后记

本次介绍了矩阵求导里最基础内容,布局。原因是部分教程里总是会说分子分母布局,搞得人稀里糊涂,因此不如直接从求导的形式与列向量联系起来,反而更容易理解。

矩阵求导中,最重要的是标量函数与向量、矩阵输入,以及向量函数与向量输入的求导,这部分将是下篇博客的主题。

最后,雅可比矩阵后续需要单独拿出来进行研究,它与移动机器人控制息息相关。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值