我是靠谱客的博主 含蓄果汁,最近开发中收集的这篇文章主要介绍ML@矩阵微积分基础矩阵微积分@Matrix calculus,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 矩阵微积分@Matrix calculus
    • 记法
      • 简单Jacobi Matrix
        • 分子记法
        • 分母记法
        • 一般形式的Jacobi Matrix
    • Types of matrix derivative
    • 数量函数和向量函数
      • 数量函数
      • 向量函数
    • 向量求导
      • 向量对标量求导
      • 标量对向量求导(数量函数对向量求导)
        • 向量求导@梯度记法????
        • 补充@数量函数对于向量的导数
        • 导数法则
      • 向量对向量求导????
    • 矩阵求导
      • 矩阵对标量求导(切矩阵)
      • 标量函数对变量矩阵求导
        • 矩阵求导@梯度记法????

  • 记法
  • 向量求导
    • 向量对标量求导
    • 标量对向量求导
    • 向量对向量求导
  • 矩阵求导
    • 矩阵对标量求导
    • 标量对矩阵求导

矩阵微积分@Matrix calculus

  • 深度学习中的矩阵微积分学 - Dezeming Family https://dezeming.top › uploads › 2022/02 › 深度…

    • The Matrix Calculus You Need For Deep Learning (explained.ai)
  • 矩阵论 第2版_图书搜索 (superlib.net)

    • **作者:**方保镕,周继东,李医民编著 **页数:**401 **出版社:**北京:清华大学出版社 **出版日期:**2013.12
    • 简介:本书比较全面、系统地介绍了矩阵的基本理论、方法及其应用。
    • 全书分上、下两篇,上篇为基础篇,下篇为应用篇。
  • Matrix calculus - Wikipedia

  • 矩阵微积分 (wikipedia.org)

记法

  • 在表示向量和矩阵时,通过用单个变量(字母)来表示许多变量的方式,把矩阵记法的效用发挥到最大。
  • 可以用不同字体来区分标量、向量和矩阵。
  • 我们使用 M ( n , m ) M(n,m) M(n,m)来表示包含n行m列 n × m n×m n×m实矩阵的空间
    • 该空间中的一般矩阵大写字母表示,例如A,X,Y等。
  • 而若该矩阵属于 M ( n , 1 ) M(n,1) M(n,1),即列向量,则用粗体小写字母表示,如a,x,y等。(但有时为例放便,不以粗体书写)
  • 特别地,M(1,1)中的元素为标量,用小写斜体字母表示,如a,t,x等。
  • X T X^T XT 表示矩阵转置, t r ( X ) tr(X) tr(X)表示矩阵的迹,而 det ⁡ ( X ) det(X) det(X) ∣ X ∣ |X| X表示行列式。
  • 除非专门注明,所有函数都默认属于光滑函数。
  • 通常字母表前半部分的字母 ( a , b , c , … ) (a, b, c, …) (a,b,c,)用于表示常量
  • 而后半部分的字母 ( t , x , y , … ) (t, x, y, …) (t,x,y,)用于表示变量
    • 变量可以是标量,也可以是向量
    • 标量可能是常数,也可能是变量

简单Jacobi Matrix

分子记法

  • 这个矩阵我们称为雅克比矩阵 (Jacobian matrix),一下是分子记法(分子布局 (numerator layout))

    • J = [ ∇ f ( x , y ) ∇ g ( x , y ) ] = [ ∂ f ( x , y ) ∂ x ∂ f ( x , y ) ∂ y ∂ g ( x , y ) ∂ x ∂ g ( x , y ) ∂ y ] mathcal{J}=left[begin{array}{l} nabla f(x, y) \ nabla g(x, y) end{array}right]=left[begin{array}{ll} frac{partial f(x, y)}{partial x} & frac{partial f(x, y)}{partial y} \ frac{partial g(x, y)}{partial x} & frac{partial g(x, y)}{partial y} end{array}right] J=[f(x,y)g(x,y)]=[xf(x,y)xg(x,y)yf(x,y)yg(x,y)]

      分母记法

  • 有许多著作和软件会使用分母布局 (denominator layout),其实这就是分子布局的矩阵转置:

    • [ ∂ f ( x , y ) ∂ x ∂ f ( x , y ) ∂ y ∂ g ( x , y ) ∂ x ∂ g ( x , y ) ∂ y ] T = [ ∂ f ( x , y ) ∂ x ∂ g ( x , y ) ∂ x ∂ f ( x , y ) ∂ y ∂ g ( x , y ) ∂ y ] left[begin{array}{ll} frac{partial f(x, y)}{partial x} & frac{partial f(x, y)}{partial y} \ frac{partial g(x, y)}{partial x} & frac{partial g(x, y)}{partial y} end{array}right]^{T}=left[begin{array}{ll} frac{partial f(x, y)}{partial x} & frac{partial g(x, y)}{partial x} \ frac{partial f(x, y)}{partial y} & frac{partial g(x, y)}{partial y} end{array}right] [xf(x,y)xg(x,y)yf(x,y)yg(x,y)]T=[xf(x,y)yf(x,y)xg(x,y)yg(x,y)]

一般形式的Jacobi Matrix

  • 对于多个标量函数,讲它们组合到一个向量中:

    • y = f ( x ) mathbf{y}=mathbf{f(x)} y=f(x)是一个由若干(设为m个)多元(设为n元)标量函数构成的向量

    • 把n维向量 x mathbf{x} x作为输入, f i ( x ) f_i(mathbf{x}) fi(x)返回一个标量值( R n → R R^nto{R} RnR)

    • y = ( y 1 y 2 ⋮ y m ) = f ( x ) = ( f 1 ( x ) f 2 ( x ) ⋮ f m ( x ) ) mathbf{y}=begin{pmatrix} y_{1}\ y_{2}\ vdots\ y_{m}\ end{pmatrix} =mathbf{f(x)} =begin{pmatrix} f_{1}(mathbf{x})\ f_{2}(mathbf{x})\ vdots\ f_{m}(mathbf{x})\ end{pmatrix} y= y1y2ym =f(x)= f1(x)f2(x)fm(x)

    • m = n m=n m=n的情况是很常见的

    • Jacobi矩阵就是与 x mathbf{x} x函数相关的的m个梯度

    • ∂ y ∂ x = ( ∇ f 1 ( x ) ∇ f 2 ( x ) ⋮ ∇ f m ( x ) ) = ( ∂ ∂ x f 1 ( x ) ∂ ∂ x f 2 ( x ) ⋮ ∂ ∂ x f m ( x ) ) = ( ∂ ∂ x 1 f 1 ( x ) ∂ ∂ x 2 f 1 ( x ) ⋯ ∂ ∂ x n f 1 ( x ) ∂ ∂ x 1 f 2 ( x ) ∂ ∂ x 2 f 2 ( x ) ⋯ ∂ ∂ x n f 2 ( x ) ⋮ ∂ ∂ x 1 f m ( x ) ∂ ∂ x 2 f m ( x ) ⋯ ∂ ∂ x n f m ( x ) ) m × n X ∈ R n ∇ f i ( x ) = ∂ ∂ x f i ( x ) = [ ∂ ∂ x 1 f i ( x ) , ∂ ∂ x 2 f i ( x ) , ⋯   , ∂ ∂ x n f i ( x ) ] frac{partialmathbf{y}}{partial{mathbf{x}}} =begin{pmatrix} nabla f_{1}{(mathbf{x})}\ nabla f_{2}{(mathbf{x})}\ vdots\ nabla f_{m}{(mathbf{x})}\ end{pmatrix} =begin{pmatrix} frac{partial}{partial{mathbf{x}}}f_{1}(mathbf{x})\ frac{partial}{partial{mathbf{x}}}f_{2}(mathbf{x})\ vdots\ frac{partial}{partial{mathbf{x}}}f_{m}(mathbf{x})\ end{pmatrix}\ =begin{pmatrix} frac{partial}{partial{{x_1}}}f_{1}(mathbf{x})& frac{partial}{partial{{x_2}}}f_{1}(mathbf{x})& cdots& frac{partial}{partial{{x_n}}}f_{1}(mathbf{x})\ frac{partial}{partial{{x_1}}}f_{2}(mathbf{x})& frac{partial}{partial{{x_2}}}f_{2}(mathbf{x})& cdots& frac{partial}{partial{{x_n}}}f_{2}(mathbf{x})\ vdots\ frac{partial}{partial{{x_1}}}f_{m}(mathbf{x})& frac{partial}{partial{{x_2}}}f_{m}(mathbf{x})& cdots& frac{partial}{partial{{x_n}}}f_{m}(mathbf{x})\ end{pmatrix}_{mtimes{n}} \ mathbf{X}in{R^n} \ nabla f_{i}{(mathbf{x})}=frac{partial}{partial{mathbf{x}}}f_{i}(mathbf{x}) = [frac{partial}{partial{{x_1}}}f_{i}(mathbf{x}), frac{partial}{partial{{x_2}}}f_{i}(mathbf{x}), cdots, frac{partial}{partial{{x_n}}}f_{i}(mathbf{x})] xy= f1(x)f2(x)fm(x) = xf1(x)xf2(x)xfm(x) = x1f1(x)x1f2(x)x1fm(x)x2f1(x)x2f2(x)x2fm(x)xnf1(x)xnf2(x)xnfm(x) m×nXRnfi(x)=xfi(x)=[x1fi(x),x2fi(x),,xnfi(x)]

  • 对于 f i ( x ) = f i ( [ x 1 , x 2 , ⋯   , x n ] ) = x i f_i(mathbf{x})=f_i([x_1,x_2,cdots,x_n])= x_i fi(x)=fi([x1,x2,,xn])=xi (构成的)的恒等函数 f ( x ) = x mathbf{f(x)} = mathbf{x} f(x)=x,我们可以计算得到它的雅克比矩阵(这里的 m 等于 n)

    • y = f ( x ) = ( f 1 ( x ) , f 2 ( x ) , ⋯   , f n ( x ) ) = x mathbf{y=f(x)}=(f_1(mathbf{x}),f_2(mathbf{x}),cdots,f_n(mathbf{x}))=mathbf{x} y=f(x)=(f1(x),f2(x),,fn(x))=x

    • 注意这里的函数 f mathbf{f} f是向量输入 x mathbf{x} x,同时向量输出 y mathbf{y} y

      • 假设它么的维数分别是 n , m n,m n,m,且有 m = n m=n m=n
      • 对上述恒等函数求jacobi matrix
    • ∂ y ∂ x = ( ∂ ∂ x 1 f 1 ( x ) ∂ ∂ x 2 f 1 ( x ) ⋯ ∂ ∂ x n f 1 ( x ) ∂ ∂ x 1 f 2 ( x ) ∂ ∂ x 2 f 2 ( x ) ⋯ ∂ ∂ x n f 2 ( x ) ⋮ ∂ ∂ x 1 f m ( x ) ∂ ∂ x 2 f m ( x ) ⋯ ∂ ∂ x n f m ( x ) ) m × n = ( ∂ ∂ x 1 x 1 ∂ ∂ x 2 x 1 ⋯ ∂ ∂ x n x 1 ∂ ∂ x 1 x 2 ∂ ∂ x 2 x 2 ⋯ ∂ ∂ x n x 2 ⋮ ∂ ∂ x 1 x m ∂ ∂ x 2 x m ⋯ ∂ ∂ x n x m ) m × n = n 2 = ( 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 ) n × n frac{partialmathbf{y}}{partial{mathbf{x}}} =begin{pmatrix} frac{partial}{partial{{x_1}}}f_{1}(mathbf{x})& frac{partial}{partial{{x_2}}}f_{1}(mathbf{x})& cdots& frac{partial}{partial{{x_n}}}f_{1}(mathbf{x})\ frac{partial}{partial{{x_1}}}f_{2}(mathbf{x})& frac{partial}{partial{{x_2}}}f_{2}(mathbf{x})& cdots& frac{partial}{partial{{x_n}}}f_{2}(mathbf{x})\ vdots\ frac{partial}{partial{{x_1}}}f_{m}(mathbf{x})& frac{partial}{partial{{x_2}}}f_{m}(mathbf{x})& cdots& frac{partial}{partial{{x_n}}}f_{m}(mathbf{x})\ end{pmatrix}_{mtimes{n}} \ =begin{pmatrix} frac{partial}{partial{{x_1}}}x_1& frac{partial}{partial{{x_2}}}x_1& cdots& frac{partial}{partial{{x_n}}}x_1\ frac{partial}{partial{{x_1}}}x_2& frac{partial}{partial{{x_2}}}x_2& cdots& frac{partial}{partial{{x_n}}}x_2\ vdots\ frac{partial}{partial{{x_1}}}x_m& frac{partial}{partial{{x_2}}}x_m& cdots& frac{partial}{partial{{x_n}}}x_m\ end{pmatrix}_{mtimes{n}=n^2} =begin{pmatrix} 1 &0 &cdots&0 \ 0 &1 &cdots&0 \ vdots&vdots&ddots&vdots\ 0 &0 &cdots&1 \ end{pmatrix}_{ntimes{n}} xy= x1f1(x)x1f2(x)x1fm(x)x2f1(x)x2f2(x)x2fm(x)xnf1(x)xnf2(x)xnfm(x) m×n= x1x1x1x2x1xmx2x1x2x2x2xmxnx1xnx2xnxm m×n=n2= 100010001 n×n

Types of matrix derivative

TypesScalarVectorMatrix
Scalar ∂ y ∂ x frac{partial y}{partial x} xy ∂ y ∂ x frac{partial mathbf{y}}{partial x} xy ∂ Y ∂ x frac{partial mathbf{Y}}{partial x} xY
vector ∂ y ∂ x frac{partial y}{partial mathbf{x}} xy ∂ y ∂ x frac{partial mathbf{y}}{partial mathbf{x}} xy
Matrix ∂ y ∂ X frac{partial y}{partial mathbf{X}} Xy

数量函数和向量函数

  • 下面的内容将反复涉及到数量函数向量函数(以及矩阵函数)
  • 由于本人不是数学专业的,通过搜索相关资料获取可能不太准确的解释
  • 来源
    • newbing AI
    • wikipedia
  • preface:
    • 数量函数和向量函数之间的区分主要根据输出对象(是标量还是向量)
    • 它们都可能接收向量作为输入

数量函数

  • 数量函数是一个实值函数,它把每个空间点映射到一个实数或物理量
    • 例如, f ( x , y , z ) = x 2 + 4 y + 2 y z 5 f(x,y,z) = x^2 + 4y + 2yz^5 f(x,y,z)=x2+4y+2yz5 是一个数量函数
    • 数量函数接收一个数或者一个向量等作为参数(而不一定是一个数),但其计算结果是一个数

向量函数

  • 向量函数是一个把实数或向量映射到多维向量的函数

    • 例如, f ( t ) = ( c o s t , s i n t , t ) f(t) = (cos t, sin t, t) f(t)=(cost,sint,t) 是一个在 R 3 R^3 R3中的向量函数
    • 个人理解
      • 向量函数接收一个数或者向量作为参数,其计算结果是一个向量(向量可以只包含一个数)
      • 如此看来,数量函数是向量函数的一个特例
  • 向量函数

    • 向量值函数,有时也称为向量函数,是一个单变量或多变量的、值域是多维向量或者无穷维向量的集合的函数。
    • 向量值函数的输入可以是一个标量或者一个向量(定义域的维度可以是1或大于1);
    • 定义域的维度不取决于值域的维度。
    • A vector-valued function, also referred to as a vector function, is a mathematical function of one or more variables whose range is a set of multidimensional vectors or infinite-dimensional vectors.
    • The input of a vector-valued function could be a scalar or a vector (that is, the dimension of the domain could be 1 or greater than 1);
    • the dimension of the function’s domain has no relation to the dimension of its range.

向量求导

向量对标量求导

  • 由于向量可看成仅有一列的矩阵,最简单的矩阵求导向量求导

  • 通过如下方式表达大部分向量微积分:

    • n维向量构成的空间M(n,1)等同为欧氏空间 R n R^n Rn, 标量 M ( 1 , 1 ) M(1,1) M(1,1)等同于R
  • 向量 y = [ y 1 y 2 ⋯ y m ] T {displaystyle mathbf {y} ={begin{bmatrix}y_{1}&y_{2}&cdots &y_{m}end{bmatrix}}^{mathsf {T}}} y=[y1y2ym]T关于标量 x x x的导数可以(用分子记法)写成

    • y i = y i ( x ) y_i=y_i(mathbf{x}) yi=yi(x)多元(输入)标量(输出)函数

      • i = 1 , 2 , ⋯   , m i=1,2,cdots,m i=1,2,,m
      • 对标量 x x x进行广播,再分别求导
    • ∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y m ∂ x ] {displaystyle {frac {partial mathbf {y} }{partial x}}={begin{bmatrix}{frac {partial y_{1}}{partial x}}\{frac {partial y_{2}}{partial x}}\vdots \{frac {partial y_{m}}{partial x}}\end{bmatrix}}} xy= xy1xy2xym

  • 在向量微积分中,向量 y mathbf {y} y关于标量变量 x x x的导数也被称为向量 y mathbf {y} y的切向量(在 x x x方向的), ∂ y ∂ x {displaystyle {frac {partial mathbf {y} }{partial x}}} xy

  • 例子

    • 简单的样例包括欧式空间中的速度向量,它是位移向量(看作关于时间的函数)的切向量。
    • 更进一步而言, 加速度是速度的切向量。

标量对向量求导(数量函数对向量求导)

  • 标量y对向量 x = [ x 1 x 2 ⋯ x n ] {displaystyle mathbf {x} ={begin{bmatrix}x_{1}&x_{2}&cdots &x_{n}end{bmatrix}}} x=[x1x2xn]的导数可以(用分子记法)写成

    • ∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] {displaystyle {frac {partial y}{partial mathbf {x} }}={begin{bmatrix}{frac {partial y}{partial x_{1}}}&{frac {partial y}{partial x_{2}}}&cdots &{frac {partial y}{partial x_{n}}}end{bmatrix}}} xy=[x1yx2yxny]

      • d y d x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] {displaystyle {frac {d y}{dmathbf {x} }}={begin{bmatrix}{frac {partial y}{partial x_{1}}}&{frac {partial y}{partial x_{2}}}&cdots &{frac {partial y}{partial x_{n}}}end{bmatrix}}} dxdy=[x1yx2yxny]
      • 对被求导的多元函数 y = y ( x ) y=y(mathbf{x}) y=y(x)进行广播(broadcasting),再进行求导
    • ( ∂ y ∂ x ) T = ( ∂ y ∂ x 1 ∂ y ∂ x 2 ∂ y ∂ x 3 ) (frac{partial{y}}{partial{mathbf{x}}})^T =begin{pmatrix} frac {partial y}{partial mathbf {x_1} }\ frac {partial y}{partial mathbf {x_2} }\ frac {partial y}{partial mathbf {x_3}} end{pmatrix} (xy)T= x1yx2yx3y

    • 这里将 x mathbf{x} x定义成行向量,有的地方也定义成列向量,但是表达的内涵是一样的

  • 在向量微积分中,标量y在的空间 R n R^n Rn(其独立坐标是x的分量)中的梯度是标量y对向量x的导数的转置。

  • 在物理学中,电场是电势的负梯度向量。

  • 标量函数f(x)对空间向量x在单位向量u(在这里表示为列向量)方向上的方向导数可以用梯度定义

    • ∇ u f ( x ) = ∇ f ( x ) ⋅ u displaystyle nabla _{mathbf {u} }{f}(mathbf {x} )=nabla f(mathbf {x} )cdot mathbf {u} uf(x)=f(x)u

      • u = ( cos ⁡ α , cos ⁡ β , cos ⁡ γ ) u=(cosalpha,cosbeta,cosgamma) u=(cosα,cosβ,cosγ),即该单位向量是由u方向的方向余弦构成的

      • ∇ f ( x ) u = ( ∂ y ∂ x 1 , ∂ y ∂ x 2 , ∂ y ∂ x 3 ) ⋅ ( cos ⁡ α , cos ⁡ β , cos ⁡ γ ) = ( ∂ y ∂ x 1 ∂ y ∂ x 2 ∂ y ∂ x 3 ) ( cos ⁡ α , cos ⁡ β , cos ⁡ γ ) = ( ∂ y ∂ x ) T u nabla{f(x)}u=(frac {partial y}{partial mathbf {x_1} },frac {partial y}{partial mathbf {x_2} },frac {partial y}{partial mathbf {x_3} }) cdot(cosalpha,cosbeta,cosgamma) \=begin{pmatrix} frac {partial y}{partial mathbf {x_1} }\ frac {partial y}{partial mathbf {x_2} }\ frac {partial y}{partial mathbf {x_3}} end{pmatrix}(cosalpha,cosbeta,cosgamma) =(frac{partial{y}}{partial{mathbf{x}}})^Tmathbf{u} f(x)u=(x1y,x2y,x3y)(cosα,cosβ,cosγ)= x1yx2yx3y (cosα,cosβ,cosγ)=(xy)Tu

        • x = ( x 1 , x 2 , x 3 ) mathbf x=(x_1,x_2,x_3) x=(x1,x2,x3)

向量求导@梯度记法????

  • 使用刚才定义的标量对向量的导数的记法,可以把方向导数写作:

  • ∇ u f ( x ) = ( ∂ ∂ x f ( x ) ) ⊤ u 简写 : ∇ u f = ( ∂ f ∂ x ) ⊤ u displaystyle nabla _{mathbf {u} }f(mathbf{x})=left({frac {partial }{partial mathbf {x} }f(mathbf{x})}right)^{top }mathbf {u} \简写: \ displaystyle nabla _{mathbf {u} }f=left({frac {partial f}{partial mathbf {x} }}right)^{top }mathbf {u} uf(x)=(xf(x))u简写:uf=(xf)u

  • 这类记法在证明乘法法则和链式法则的时候非常直观,因为它们与我们熟悉的标量导数的形式较为相似。

补充@数量函数对于向量的导数

  • 在场论中,对数量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)定义梯度向量为:

    • g r a d   f = ∇ f = ( ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ) grad:f=nabla{f}=(frac{partial{f}}{partial{x}},frac{partial{f}}{partial{y}},frac{partial{f}}{partial{z}}) gradf=f=(xf,yf,zf)

    • 可以理解为数量函数 f ( x , y , z ) f(x,y,z) f(x,y,z)对向量 ( x , y , z ) (x,y,z) (x,y,z)的导数(是一种简单的数量(标量)函数对向量求导)

    • 设向量 x = ( x 1 , ⋯   , x n ) T mathbf{x}=(x_1,cdots,x_n)^T x=(x1,,xn)T, f ( x ) = f ( x 1 , ⋯   , x n ) f(mathbf{x})=f(x_1,cdots,x_n) f(x)=f(x1,,xn)是以向量 x mathbf{x} x为自变量的数量函数,(即n元函数),规定数量函数( f ( x ) f(mathbf{x}) f(x))对于向量 x mathbf{x} x的导数为:

      • d y d x = ( ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ) T {displaystyle {frac {d y}{dmathbf {x} }}={begin{pmatrix}{frac {partial y}{partial x_{1}}}&{frac {partial y}{partial x_{2}}}&cdots &{frac {partial y}{partial x_{n}}}end{pmatrix}}}^T dxdy=(x1yx2yxny)T

导数法则

  • x = ( x 1 , ⋯   , x n ) boldsymbol{x}=(x_1,cdots,x_n) x=(x1,,xn)

    • 注意粗体和细体的含义区别
  • f ( x ) = f ( x 1 , ⋯   , x n ) f(boldsymbol{x})=f(x_1,cdots,x_n) f(x)=f(x1,,xn)

  • h ( x ) = h ( x 1 , ⋯   , x n ) h(boldsymbol{x})=h(x_1,cdots,x_n) h(x)=h(x1,,xn)

  • d [ f ( x ) ± h ( x ) ] d x = d f ( x ) d x ± d h ( x ) d x d f ( x ) h ( x ) d x = d f ( x ) d x h ( x ) + f ( x ) d h ( x ) d x begin{array}{l} frac{mathrm{d}[f(boldsymbol{x}) pm h(boldsymbol{x})]}{mathrm{d} boldsymbol{x}} =frac{mathrm{d} f(boldsymbol{x})}{mathrm{d} boldsymbol{x}} pm frac{mathrm{d} h(boldsymbol{x})}{mathrm{d} boldsymbol{x}} \\ frac{mathrm{d} f(boldsymbol{x}) h(boldsymbol{x})}{mathrm{d} boldsymbol{x}} =frac{mathrm{d} f(boldsymbol{x})}{mathrm{d} boldsymbol{x}} h(boldsymbol{x})+f(boldsymbol{x}) frac{mathrm{d} h(boldsymbol{x})}{mathrm{d} boldsymbol{x}} end{array} dxd[f(x)±h(x)]=dxdf(x)±dxdh(x)dxdf(x)h(x)=dxdf(x)h(x)+f(x)dxdh(x)

  • x = ξ = ( ξ 1 ( t ) , ⋯   , ξ n ( t ) ) T mathbf{x=xi}=(xi_1(t),cdots,xi_{n}(t))^T x=ξ=(ξ1(t),,ξn(t))T,是一个函数向量(列向量)

    • 简记 ξ i = ξ i ( t ) xi_{i}=xi_i(t) ξi=ξi(t)

    • f ( x ) = f ( ξ ) = f ( ξ 1 , ⋯   , ξ n ) f(mathbf{x})=f(mathbfxi)=f(xi_1,cdots,xi_n) f(x)=f(ξ)=f(ξ1,,ξn)结果是标量

    • d f d t = d d t f ( x ) = ( d f d x ) T d x d t frac{df}{dt}=frac{d}{dt}f(mathbf{x}) =(frac{df}{dmathbf{x}})^Tfrac{d{mathbf{x}}}{dt} dtdf=dtdf(x)=(dxdf)Tdtdx

  • 推导:

    • 首先确定, d d t f ( x ) frac{d}{dt}f(mathbf{x}) dtdf(x)是一个接收向量输入的标量函数对自变量t进行求导(中间变量为 ξ i xi_i ξi),结果是一个标量(和t相同)

    • ( d f d x ) = ( d f d ξ 1 , ⋯   , d f d ξ n ) T (frac{df}{d{mathbf{x}}})=(frac{df}{dxi_1},cdots,frac{df}{dxi_n})^T (dxdf)=(dξ1df,,dξndf)T

    • 由偏导数复合函数求导法则(偏导数的链式法则):

    • d f d t = d d t f ( x ) = ∑ i = 1 n d f d ξ i d ξ i d t = ( d f d ξ 1 , ⋯   , d f d ξ n ) ( d ξ 1 d t , ⋯   , d ξ n d t ) T = ( d f d x ) T d x d t frac{df}{dt}=frac{d}{dt}f(mathbf{x}) =sum_{i=1}^{n}frac{df}{dxi_i}frac{dxi_i}{dt} =(frac{df}{dxi_1},cdots,frac{df}{dxi_n}) (frac{dxi_1}{dt},cdots,frac{dxi_n}{dt})^T \ =(frac{df}{d{mathbf{x}}})^Tfrac{dmathbf{x}}{dt} dtdf=dtdf(x)=i=1ndξidfdtdξi=(dξ1df,,dξndf)(dtdξ1,,dtdξn)T=(dxdf)Tdtdx

  • A = ( a i j ) n × A=(a_{ij})_{ntimes{}} A=(aij)n×是常量矩阵, x = ( x 1 , ⋯   , x n ) T mathbf{x}=(x_1,cdots,x_n)^T x=(x1,,xn)T

    • 证明 f ( x ) = x T A x f(mathbf{x})=mathbf{x^{T}}Amathbf{x} f(x)=xTAx的导数 ∂ f ∂ x = ( A + A T ) x frac{partial{f}}{partial{mathbf{x}}}=(A+A^T)mathbf{x} xf=(A+AT)x

    • 首先考察二次型 f ( x ) f(mathbf{x}) f(x)本质上是一个二次多项式,是一个数值函数(只不过这个多项式可以用矩阵乘法表达)

    • f ( x ) = f(mathbf{x)}= f(x)=使用标量函数对向量的求导法则

    • f ( x ) = x T A x = ∑ i , j = 1 n a i j x i x j 记矩阵 S = ( a 11 x 1 x 1 a 12 x 1 x 2 ⋯ a 1 n x 1 x n a 21 x 2 x 1 a 22 x 2 x 2 ⋯ a 2 n x 2 x n ⋮ ⋮ ⋮ a n 1 x n x 1 a n 2 x n x 2 ⋯ a n n x n x n ) n × n 记矩阵 J n 为 n 阶全 1 矩阵 则 f ( x ) = ∑ i , j S i j = ∑ i n ∑ j n S i j = T r ( S J n ) f(mathbf{x})=mathbf{x^{T}}Amathbf{x} =sum_{i,j=1}^{n}a_{ij}x_ix_j \ 记矩阵S=begin{pmatrix} a_{11}x_1x_1&a_{12}x_1x_2&cdots&a_{1n}x_1x_n \ a_{21}x_2x_1&a_{22}x_2x_2&cdots&a_{2n}x_2x_n \ vdots&vdots&&vdots\ a_{n1}x_nx_1&a_{n2}x_nx_2&cdots&a_{nn}x_nx_n \ end{pmatrix}_{ntimes{n}} \记矩阵J_{n}为n阶全1矩阵 \ 则f(mathbf{x})=sum_{i,j}S_{ij}=sum_{i}^{n}sum_{j}^{n}S_{ij} =Tr(SJ_n) f(x)=xTAx=i,j=1naijxixj记矩阵S= a11x1x1a21x2x1an1xnx1a12x1x2a22x2x2an2xnx2a1nx1xna2nx2xnannxnxn n×n记矩阵Jnn阶全1矩阵f(x)=i,jSij=injnSij=Tr(SJn)

      • 上面展示了计算矩阵所有元素之和的记号和方法
      • 矩阵S有助于理解对 ∂ ∂ x 1 ∑ i , j = 1 n a i j x i x j frac{partial{}}{partial{x_1}}sum_{i,j=1}^{n}a_{ij}x_ix_j x1i,j=1naijxixj的求导结果
    • d f d x = ( ∂ ∂ x 1 ∑ i , j = 1 n a i j x i x j , ⋯   , ∂ ∂ x n ∑ i , j = 1 n a i j x i x j ) T = ( 2 a 11 x 1 + ( a 12 + a 21 ) x 2 + ⋯ + ( a 1 n + a n 1 ) x n ⋮ ( a 1 n + a n 1 ) x 1 + ( a n 2 + a 2 n ) x 2 + ⋯ + 2 a n n x n ) = ( ∑ j = 1 n ( a 1 j + a j 1 ) x j ⋮ ∑ j = 1 n ( a n j + a j n ) x j ) = ( ∑ j = 1 n ( a 1 j ) x j + ∑ j = 1 n ( a j 1 ) x j ⋮ ∑ j = 1 n ( a n j ) x j + ∑ j = 1 n ( a j n ) x j ) = ( ∑ j = 1 n ( a 1 j ) x j ⋮ ∑ j = 1 n ( a n j ) x j ) + ( ∑ j = 1 n ( a j 1 ) x j ⋮ ∑ j = 1 n ( a j n ) x j ) = ( a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n ⋮ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n ) + ( a 11 x 1 + a 21 x 2 + ⋯ + a n 1 x n ⋮ a 1 n x 1 + a 2 n x 2 + ⋯ + a n n x n ) = A x + A T x = ( A + A T ) x frac{df}{d{mathbf{x}}} =(frac{partial{}}{partial{x_1}}sum_{i,j=1}^{n}a_{ij}x_ix_j, cdots, frac{partial{}}{partial{x_n}}sum_{i,j=1}^{n}a_{ij}x_ix_j)^T \ =begin{pmatrix} 2a_{11}x_1+(a_{12}+a_{21})x_2+cdots+(a_{1n}+a_{n1})x_n\ vdots\ (a_{1n}+a_{n1})x_1+(a_{n2}+a_{2n})x_2+cdots+2a_{nn}x_n end{pmatrix} \ =begin{pmatrix} sum_{j=1}^{n}(a_{1j}+a_{j1})x_j\ vdots\ sum_{j=1}^{n}(a_{nj}+a_{jn})x_j\ end{pmatrix} %\ =begin{pmatrix} sum_{j=1}^{n}(a_{1j})x_j+sum_{j=1}^{n}(a_{j1})x_j\ vdots\ sum_{j=1}^{n}(a_{nj})x_j+sum_{j=1}^{n}(a_{jn})x_j\ end{pmatrix} \ =begin{pmatrix} sum_{j=1}^{n}(a_{1j})x_j\ vdots\ sum_{j=1}^{n}(a_{nj})x_j end{pmatrix} +begin{pmatrix} sum_{j=1}^{n}(a_{j1})x_j\ vdots\ sum_{j=1}^{n}(a_{jn})x_j end{pmatrix} \ =begin{pmatrix} a_{11}x_1+a_{12}x_2+cdots+a_{1n}x_n\ vdots\ a_{n1}x_1+a_{n2}x_2+cdots+a_{nn}x_n end{pmatrix} \ +begin{pmatrix} a_{11}x_1+a_{21}x_2+cdots+a_{n1}x_n\ vdots\ a_{1n}x_1+a_{2n}x_2+cdots+a_{nn}x_n end{pmatrix} \=Amathbf{x}+A^Tmathbf{x}=(A+A^T)mathbf{x} dxdf=(x1i,j=1naijxixj,,xni,j=1naijxixj)T= 2a11x1+(a12+a21)x2++(a1n+an1)xn(a1n+an1)x1+(an2+a2n)x2++2annxn = j=1n(a1j+aj1)xjj=1n(anj+ajn)xj = j=1n(a1j)xj+j=1n(aj1)xjj=1n(anj)xj+j=1n(ajn)xj = j=1n(a1j)xjj=1n(anj)xj + j=1n(aj1)xjj=1n(ajn)xj = a11x1+a12x2++a1nxnan1x1+an2x2++annxn + a11x1+a21x2++an1xna1nx1+a2nx2++annxn =Ax+ATx=(A+AT)x

向量对向量求导????

  • 前面两种情况可以看作是向量对向量求导在其中一个是一维向量情况下的特例

  • 类似地我们将会发现有关矩阵的求导可被以一种类似的方式化归为向量求导

  • 分量为函数的向量 y = [ y 1 y 2 ⋯ y m ] T {displaystyle mathbf {y} ={begin{bmatrix}y_{1}&y_{2}&cdots &y_{m}end{bmatrix}}^{mathsf {T}}} y=[y1y2ym]T对输入向量 x = [ x 1 x 2 ⋯ x n ] T {displaystyle mathbf {x} ={begin{bmatrix}x_{1}&x_{2}&cdots &x_{n}end{bmatrix}}^{mathsf {T}}} x=[x1x2xn]T的导数 x → y i ( x ) mathbf{x}to{y_i(mathbf{x})} xyi(x),可以(用分子记法) 写作

    • Note: y i = y i ( x ) y_i=y_i(mathbf{x}) yi=yi(x), i = 1 , 2 , ⋯   , m i=1,2,cdots,m i=1,2,,m

    • 这部分在开头做过展示(Jacobi Matrix)

    • ∂ y ∂ x = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ∂ y m ∂ x 2 ⋯ ∂ y m ∂ x n ] {displaystyle {frac {partial mathbf {y} }{partial mathbf {x} }}={begin{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}}} xy= x1y1x1y2x1ymx2y1x2y2x2ymxny1xny2xnym

      • 每一行相当于函数 y i y_i yi对向量 x mathbf{x} x求导
      • y mathbf{y} y中包含了n个向量,所以 y mathbf{y} y x mathbf{x} x会产生n行,它们构成矩阵 ∂ y ∂ x frac{partial{mathbf{y}}}{partial{mathbf{x}}} xy
  • 在向量微积分中,向量函数y对分量表示一个空间的向量 x mathbf{x} x的导数也被称为前推 (微分),或雅可比矩阵

    • In vector calculus, the derivative of a vector function y with respect to a vector x whose components(分量) represent a space is known as the pushforward (or differential), or the Jacobian matrix.
    • 在向量微积分中,向量函数y关于向量x的导数(其分量表示空间)被称为推进(或微分),或称为雅克比矩阵。
  • 向量函数 f mathbf{f} f R n R^n Rn空间中向量v的前推 d   f ( v ) = ∂ f ∂ v d   v displaystyle d,mathbf {f} (mathbf {v} )={frac {partial mathbf {f} }{partial mathbf {v} }}d,mathbf {v} df(v)=vfdv

矩阵求导

  • 有两种类型的矩阵求导可以被写成相同大小的矩阵:矩阵对标量求导和标量对矩阵求导。
  • 它们在解决应用数学的许多领域常见的最小化问题中十分有用。
  • 类比于向量求导,相应的概念有切矩阵梯度矩阵

矩阵对标量求导(切矩阵)

  • 函数矩阵 Y mathbf{Y} Y对标量变量 x x x的导数被称为切矩阵,(用分子记法)可写成:

    • y i j = y i j ( x ) y_{ij}=y_{ij}(mathbf{x}) yij=yij(x), x mathbf{x} x是1维还是多维不影响公式

      • y i j = y i j ( x ) y_{ij}=y_{ij}(x) yij=yij(x)是上述形式的特例

      • ∂ Y ∂ x = [ ∂ y 11 ∂ x ∂ y 12 ∂ x ⋯ ∂ y 1 n ∂ x ∂ y 21 ∂ x ∂ y 22 ∂ x ⋯ ∂ y 2 n ∂ x ⋮ ⋮ ⋱ ⋮ ∂ y m 1 ∂ x ∂ y m 2 ∂ x ⋯ ∂ y m n ∂ x ] {displaystyle {frac {partial mathbf {Y} }{partial x}}={begin{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_{m1}}{partial x}}&{frac {partial y_{m2}}{partial x}}&cdots &{frac {partial y_{mn}}{partial x}}\end{bmatrix}}} xY= xy11xy21xym1xy12xy22xym2xy1nxy2nxymn

标量函数对变量矩阵求导

  • 标量(函数 y y y)对(变量)矩阵 X mathbf{X} X求导

    • 标量函数 y ( X ) y(X) y(X)可以接收一个矩阵,计算该矩阵(的某个属性值(标量))返回标量
  • 定义在元素是独立变量的 p × q p×q p×q矩阵 X ∈ R n × n Xin{mathbb{R}^{ntimes{n}}} XRn×n上的标量函数 y y y X X X的导数可以(用分子记法)写作

    • ∂ y ∂ X = [ ∂ y ∂ x 11 ∂ y ∂ x 21 ⋯ ∂ y ∂ x p 1 ∂ y ∂ x 12 ∂ y ∂ x 22 ⋯ ∂ y ∂ x p 2 ⋮ ⋮ ⋱ ⋮ ∂ y ∂ x 1 q ∂ y ∂ x 2 q ⋯ ∂ y ∂ x p q ] {displaystyle {frac {partial y}{partial mathbf {X} }}={begin{bmatrix}{frac {partial y}{partial x_{11}}}&{frac {partial y}{partial x_{21}}}&cdots &{frac {partial y}{partial x_{p1}}}\{frac {partial y}{partial x_{12}}}&{frac {partial y}{partial x_{22}}}&cdots &{frac {partial y}{partial x_{p2}}}\vdots &vdots &ddots &vdots \{frac {partial y}{partial x_{1q}}}&{frac {partial y}{partial x_{2q}}}&cdots &{frac {partial y}{partial x_{pq}}}\end{bmatrix}}} Xy= x11yx12yx1qyx21yx22yx2qyxp1yxp2yxpqy
  • 定义矩阵上的标量函数例如矩阵的行列式(它们都接收方阵作为参数,而返回一个标量值)

    • y ( X ) = ∣ X ∣ y(X)=|X| y(X)=X
    • y ( X ) = T r ( X ) y(X)=Tr(X) y(X)=Tr(X)

矩阵求导@梯度记法????

  • 类比于向量微积分 ∂ x ∂ y frac{partial{mathbf{x}}}{partialmathbf{y}} yx

    • ∇ u f ( x ) = ( ∂ ∂ x f ( x ) ) ⊤ u displaystyle nabla _{mathbf {u} }f(mathbf{x})=left({frac {partial }{partial mathbf {x} }f(mathbf{x})}right)^{top }mathbf {u} uf(x)=(xf(x))u
  • 矩阵对变量求导常被写成如下形式:

    • ∇ X y ( X ) = ∂ y ( X ) ∂ X displaystyle nabla _{mathbf {X} }y(mathbf {X} )={frac {partial y(mathbf {X} )}{partial mathbf {X} }} Xy(X)=Xy(X)
  • 类似地,标量函数 f ( X ) f(X) f(X)关于矩阵X在方向Y的方向导数可写成

    • ∇ Y f = tr ⁡ ( ∂ f ∂ X Y ) displaystyle nabla _{mathbf {Y} }f=operatorname {tr} left({frac {partial f}{partial mathbf {X} }}mathbf {Y} right) Yf=tr(XfY)
  • 梯度矩阵经常被应用在估计理论的最小化问题中,比如卡尔曼滤波算法的推导,因此在这些领域中有着重要的地位。

最后

以上就是含蓄果汁为你收集整理的ML@矩阵微积分基础矩阵微积分@Matrix calculus的全部内容,希望文章能够帮你解决ML@矩阵微积分基础矩阵微积分@Matrix calculus所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部