zoukankan      html  css  js  c++  java
  • 【数学】向量、矩阵微分

    前言

    根据标量,向量,矩阵这三种形式,他们之间的不同的矩阵微分可以有如下表的几种表现形式。

    (box[yellow]{所谓的向量矩阵求导本质上就是多元函数求导,仅仅是把把函数的自变量,因变量以及标量求导的结果排列成了向量矩阵的形式,\方便表达与计算,更加简洁而已,所以计算的结果之中是个列向量还是行向量无关紧要,他们只是按照不同的定义之下计算出的结果而已。看以下结果})

    在求导的时候不同的文献会有不同的结果,其实这其中相差一个转置,原因是矩阵的求导可以分为分母布局(denominator layout)和分子布局(numerator layout)。分子布局下求导结果的维度以分子为主,反之亦然。所以分子布局和分母布局之间仅相差一个转置。所以为了保证计算结果的唯一性,在计算中,因该保持同一种的布局方式。

    如标量(x)对向量(oldsymbol{y}=egin{bmatrix}y_1\y_2\vdots\y_nend{bmatrix})求导,则在分子布局之下有:

    [frac{partial oldsymbol{y}}{partial x}=egin{bmatrix}frac{partial y_1}{partial x}\frac{partial y_2}{partial x}\vdots\frac{partial y_n}{partial x}end{bmatrix} ]

    在分母布局下的形式为:

    [frac{partial oldsymbol{y}}{partial x}=egin{bmatrix}frac{partial y_1}{partial x}&frac{partial y_2}{partial x}&cdots&frac{partial y_n}{partial x}end{bmatrix} ]

    (box[yellow]{所谓的向量矩阵求导本质上就是多元函数求导,仅仅是把把函数的自变量,因变量以及标量求导的结果排列成了向量矩阵的形式,\方便表达与计算,更加简洁而已,所以计算的结果之中是个列向量还是行向量无关紧要,他们只是按照不同的定义之下计算出的结果而已。})

    以下的计算均按照分子布局来计算。

    1.对标量的导数(分母是标量)

    1.1标量对标量的求导

    就是常见的形式,可以表示为(frac{partial y}{partial x})

    1.2向量对标量的求导

    向量就看成一组标量,这一组标量分别对标量(x)求导,然后写成矩阵的形式。则向量(oldsymbol{y}=egin{bmatrix}y_1\y_2\vdots\y_nend{bmatrix})对标量(x)的求导,就是向量(oldsymbol{y})的每一个元素分别对(x)求导。则表示为:

    [frac{partial oldsymbol{y}}{partial x}=egin{bmatrix}frac{partial y_1}{partial x}\frac{partial y_2}{partial x}\vdots\frac{partial y_n}{partial x}end{bmatrix} ]

    1.3矩阵对标量的求导

    矩阵对标量的求导同向量对标量的求导,还是矩阵中的每个元素分别对标量求导,然后写成矩阵的形式。则矩阵(f{Y}=egin{bmatrix}y_{11}&y_{12}&cdots&y_{1n}\y_{21}&y_{22}&cdots&y_{2n}\vdots&vdots&ddots&vdots\y_{n1}&y_{n2}&cdots&y_{nn}end{bmatrix})对标量(x)的求导就是元素分别求导,则表示为:

    [frac{partial f{Y}}{partial x}=egin{bmatrix}frac{partial y_{11}}{partial x}&frac{partial y_{12}}{partial x}&cdots&frac{partial y_{1n}}{partial x}\frac{partial y_{21}}{partial x}&frac{partial y_{22}}{partial x}&cdots&frac{partial y_{2n}}{partial x}\vdots&vdots&ddots&vdots\frac{partial y_{n1}}{partial x}&frac{partial y_{n2}}{partial x}&cdots&frac{partial y_{nn}}{partial x}end{bmatrix} ]

    2.对向量的导数(分母是向量)

    2.1标量对向量求导

    标量(y)对向量(oldsymbol{x}=egin{bmatrix}x_1\x_2\vdots\x_nend{bmatrix})求导可以表示为(分子布局):

    [frac{partial y}{partial oldsymbol{x}}=egin{bmatrix}frac{partial y}{partial x_1}&frac{partial y}{partial x_2}&cdots&frac{partial y}{partial x_n}end{bmatrix} ]

    此时该向量被称为(box[yellow]{梯度向量}),是标量(y)在以(oldsymbol{x})为基的空间的梯度,注意有的也会以列向量的形式表示。

    2.2向量对向量求导

    向量函数(oldsymbol{y}=egin{bmatrix}y_1\y_2\vdots\y_mend{bmatrix})(注意向量函数y中的各个元素是函数,不是简单的标量)对向量(oldsymbol{x}=egin{bmatrix}x_1\x_2\vdots\x_nend{bmatrix})的导数表示为(分子布局):

    [frac{partial oldsymbol{y}}{partial oldsymbol{x}}=egin{bmatrix}frac{partial y_{1}}{partial x_1}&frac{partial y_{1}}{partial x_2}&cdots&frac{partial y_{1}}{partial x_n}\frac{partial y_{2}}{partial x_1}&frac{partial y_{2}}{partial x_2}&cdots&frac{partial y_{2}}{partial x_n}\vdots&vdots&ddots&vdots\frac{partial y_{m}}{partial x_1}&frac{partial y_{m}}{partial x_2}&cdots&frac{partial y_{m}}{partial x_n}end{bmatrix} ]

    此时,这种函数向量函数对向量求导得到的矩阵称为(box[yellow]{雅可比矩阵})。有的资料会以(frac{partial oldsymbol{y}}{partial oldsymbol{x}^T})形式来定义雅可比矩阵,但意义是一样的。

    上式是以分子布局的形式排列,则矩阵的第一个维度以分子为准,所以是个mxn型的矩阵。相反,若是以分母布局排列,则计算得到的矩阵为nxm型。

    2.3矩阵对向量求导

    矩阵(f{Y}=egin{bmatrix}y_{11}&y_{12}&cdots&y_{1n}\y_{21}&y_{22}&cdots&y_{2n}\vdots&vdots&ddots&vdots\y_{n1}&y_{n2}&cdots&y_{nn}end{bmatrix})(注意矩阵中的元素是函数,否则求什么偏导呢?)对向量(oldsymbol{x}=egin{bmatrix}x_1\x_2\vdots\x_nend{bmatrix})求导可以表示为:

    [frac{partial f{Y}}{partial oldsymbol{x}}=egin{bmatrix}frac{partial y_{11}}{partial x_{1}}&frac{partial y_{12}}{partial x_{2}}&cdots&frac{partial y_{1n}}{partial x_{n}}\frac{partial y_{21}}{partial x_{1}}&frac{partial y_{22}}{partial x_{2}}&cdots&frac{partial y_{2n}}{partial x_{n}}\vdots&vdots&ddots&vdots\frac{partial y_{n1}}{partial x_{1}}&frac{partial y_{n2}}{partial x_{2}}&cdots&frac{partial y_{nn}}{partial x_{n}}end{bmatrix} ]

    3.对矩阵的导数(分母是矩阵)

    3.1标量对矩阵求导

    标量(y)对矩阵(f{X}=egin{bmatrix}x_{11}&x_{12}&cdots&x_{1n}\x_{21}&x_{22}&cdots&x_{2n}\vdots&vdots&ddots&vdots\x_{n1}&x_{n2}&cdots&x_{nn}end{bmatrix})求导可以表示为:

    [frac{partial {y}}{partial f{X}}=egin{bmatrix}frac{partial y_{}}{partial x_{11}}&frac{partial y_{}}{partial x_{21}}&cdots&frac{partial y_{}}{partial x_{n1}}\frac{partial y_{}}{partial x_{12}}&frac{partial y_{}}{partial x_{22}}&cdots&frac{partial y_{}}{partial x_{n2}}\vdots&vdots&ddots&vdots\frac{partial y_{}}{partial x_{1n}}&frac{partial y_{}}{partial x_{2n}}&cdots&frac{partial y_{}}{partial x_{nn}}end{bmatrix} ]

    4.用定义对向量和矩阵求导

    4.1标量对向量求导(分母是向量)

    其中的(f{x})是向量,故(y=a^Tf{x})(y=f{x^T}Af{x})就是一个标量

    (color{red}{注意下面的计算结果均是由定义推导来的,没有前提条件A是对称阵等。})

    标量对向量的求导,其实就是标量对向量里的每个分量分别求导,最后把求导的结果排列在一起,按一个向量表示而已。

    则若求解(frac{partial f{a^Tx}}{partial f{x}})先看下面的计算:(也就是先对标量按照原理求解,然后排列成想要的向量结果)

    [\ frac{partial f{a^Tx}}{partial {x_i}}=frac{partial sum_{j=1}^{n}{a_ix_i}}{partial {x_i}}=a_i\ ]

    即,向量中的第(i)个分量的求导结果就是向量(f{a})的第(i)个分量。采用分母布局,将所有的求导结果组成一个n维的向量,也就是向量(f{a}),即有

    [frac{partial f{a^Tx}}{partial f{x}}=f{a}\ ]

    同理有:

    [frac{partial f{x^Ta}}{partial f{x}}=f{a}\ ]

    再者,还可以有:

    [frac{partial f{x^Tx}}{partial f{x}}=f{2x}\ ]

    [因为frac{partial f{x^Tx}}{partial x_i}=frac{partial sum_{j=1}^{n}{x_i^2}}{partial {x_i}}=2x_i\ ]

    此外,对于(frac{partial f{x^TAx}}{partial f{x}})有如下的形式:

    [frac{partial mathbf{x}^Tmathbf{A}mathbf{x}}{partial x_k} = frac{partial sumlimits_{i=1}^nsumlimits_{j=1}^n x_iA_{ij}x_j}{partial x_k} \= frac{partial [(x_1A_{11}x_1+x_1A_{12}x_2+cdots+x_1A_{1k}x_k+cdots)+cdots+(x_kA_{k1}x_1+x_kA_{k2}x_2+cdots+x_kA_{kk}x_k+cdots)+ cdots]}{partial x_k}\ =sumlimits_{i=1}^n A_{ik}x_i + sumlimits_{j=1}^n A_{kj}x_j ]

    故而有:

    [frac{partial mathbf{x}^Tmathbf{A}mathbf{x}}{partial mathbf{x}} = mathbf{A}^Tmathbf{x} + mathbf{A}mathbf{x} ]

    4.2标量对矩阵求导(分母是矩阵)

    (y=mathbf{a}^Tmathbf{X}mathbf{b}),其中的(a,b分别是m维和n维的向量,f{X}为m imes n的矩阵)

    求解(frac{partial mathbf{a}^Tmathbf{X}mathbf{b}}{partial mathbf{X}})时,同样先用分母的矩阵中的一个元素来求:

    [frac{partial mathbf{a}^Tmathbf{X}mathbf{b}}{partial X_{ij}} = frac{partial sumlimits_{p=1}^msumlimits_{q=1}^n a_pX_{pq}b_q}{partial X_{ij}} = frac{partial a_iX_{ij}b_j}{partial X_{ij}} = a_ib_j ]

    则,再将结果排成一个矩阵,则有:

    [frac{partial mathbf{a}^Tmathbf{X}mathbf{b}}{partial mathbf{X}} = ab^T ]

    参考

    机器学习中的线性代数之矩阵求导

    用定义法对矩阵求导

  • 相关阅读:
    2014年度辛星css教程夏季版第七节
    2014年度辛星css教程夏季版第六节
    2014年度辛星css教程夏季版第五节
    终于见识到垃圾站了
    2014年度辛星css教程夏季版第四节
    2014年度辛星css教程夏季版第三节
    2014年度辛星css教程夏季版第二节
    MySQL查询-分组取组中某字段最大(小)值所有记录
    PHP获取当前时间
    Mysql常用数据类型归纳总结1
  • 原文地址:https://www.cnblogs.com/LENMOD/p/14169154.html
Copyright © 2011-2022 走看看