您当前的位置: 首页 >  矩阵

RuiH.AI

暂无认证

  • 0浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

RuiH.AI 发布时间:2021-11-08 16:33:21 ,浏览量:0

线性代数之 矩阵求导(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 x∈Rn。默认大写字母 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​+2x1​x2​+x3​=x112​+2x11​x12​+x21​x22​+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)​=⎣⎡​2x0​x02​x0​+2​⎦⎤​=⎣⎡​x12​+2x22​x22​+2x32​x3​+2x1​x2​​⎦⎤​=⎣⎡​x112​+2x222​x122​+x21​x22​2x21​​⎦⎤​​

矩阵函数

假设输出的矩阵是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)​=⎣⎡​2x0​x02​x0​+2​x0​1x02​+2x0​​⎦⎤​=⎣⎡​x12​+2x22​x22​+2x32​x3​+2x1​x2​​x1​x2​+3x22​+2x1​x3​​⎦⎤​=⎣⎡​x112​+2x222​x122​+x21​x22​2x21​​x11​+22x212​+2x21​x222​​⎦⎤​​

函数求导 标量函数求导

以向量输入为例,如果输入是列向量,则求导公式为: ∂ 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} ∂x∂f​=⎣⎢⎡​∂x1​∂f​∂x2​∂f​∂x3​∂f​​⎦⎥⎤​ 如果输入是行向量,则有: ∂ 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 ∂xT∂f​=[∂x1​∂f​,∂x2​∂f​,∂x3​∂f​​]=(∂x∂f​)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} ∂x∂f​=⎣⎡​∂x∂f1​​∂x∂f2​​∂x∂f3​​​⎦⎤​=⎣⎢⎢⎢⎢⎢⎢⎢⎡​∂x1​∂f1​​∂x2​∂f1​​∂x3​∂f1​​∂x1​∂f2​​…∂x3​∂f3​​​⎦⎥⎥⎥⎥⎥⎥⎥⎤​ 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} ∂x∂fT​=[∂x∂f1​​,∂x∂f2​​,∂x∂f3​​​]=⎣⎢⎡​∂x1​∂f1​​,∂x1​∂f2​​,∂x1​∂f3​​∂x2​∂f1​​,∂x2​∂f2​​,∂x2​∂f3​​∂x3​∂f1​​,∂x3​∂f2​​,∂x3​∂f3​​​⎦⎥⎤​ 或者,也可以使用列向量对行向量求导(也就是所谓的分子布局),得到雅可比矩阵: ∂ 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} ∂xT∂f​=⎣⎡​∂x∂f1​​∂x∂f2​​∂x∂f3​​​⎦⎤​=⎣⎢⎡​∂x1​∂f1​​,∂x2​∂f1​​,∂x3​∂f1​​∂x1​∂f2​​,∂x2​∂f2​​,∂x3​∂f2​​∂x1​∂f3​​,∂x2​∂f3​​,∂x3​∂f3​​​⎦⎥⎤​

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

矩阵函数求导

因为矩阵对矩阵、矩阵对向量的求导用的很少,因此这里仅仅举一个求导思路,矩阵函数对列向量求导: ∂ 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} ∂x∂f​=⎣⎢⎡​∂x1​∂f​∂x2​∂f​∂x3​∂f​​⎦⎥⎤​=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡​[∂x1​∂f11​​,∂x1​∂f12​​∂x1​∂f21​​,∂x1​∂f22​​​][∂x2​∂f11​​,∂x2​∂f12​​∂x2​∂f21​​,∂x2​∂f22​​​][∂x3​∂f11​​,∂x3​∂f12​​∂x3​∂f21​​,∂x3​∂f22​​​]​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤​ 结果是个张量。

后记

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

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

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

关注
打赏
1658651101
查看更多评论
立即登录/注册

微信扫码登录

0.0567s