📝笔记:简明矩阵求导术之分子布局与分母布局

矩阵或者向量求导时经常会被分子/分母布局搞得头大,如什么时候转置,什么时候不转置。本文将简明介绍常用的矩阵/向量求导技巧。

简单例子

  1. ax 对向量x求导,举个例子: 令a=[12]x=[x1x2],则 ax=x1+2x2

于是

(1)axx=[(x1+2x2)x1(x1+2x2)x2]=[12]=a()

注意,上述结果以分母布局进行排布,具体见后一节的一般形式。

  1. Ax 对向量x求导,可以举一个具体的例子对求导过程进行推导。

A=[1234]x=[x1x2] 则:

(2)Ax=[1234][x1x2]=[x1+2x23x1+4x2]=[f1f2]

所以,

(3)Axx=[f1x1f2x1f1x2f2x2]=[1324]=A()

或者,

(4)Axx=[f1x1f1x2f2x1f2x2]=[1234]=A()

上述求导结果的排列方式分别展示了分母布局与分子布局。

一般形式

向量一般可以被认为成一维矩阵,默认按列进行排列。 向量对向量求导,如y/x,其中y=[y1ym]以及x=[x1xn]

于是y/x是一个拥有m×n元素的矩阵,那么应该如何组织这个矩阵呢?目前有两种矩阵排列方式,它们分别是:分子布局(Numerator Layout),分母布局(Denominator Layout)

分子布局

一句话就是按照分子的排列方式进行排列,分子原来怎样排列,求导之后的结果就怎样排列,如:

(5)yx=[y1x1y1xnymx1ymxn]yx

上式结果中,分子y的每个元素是是按照下标1...m按列排布,于是yxRm×n,这种形式也被叫做雅可比矩阵3Jacobian matrix)。

y是标量,x 是向量时:

(6)yx=[yx1yxn]yx

上述分子布局在标量对向量的求导的数据排布中并不常见。

分母布局

(7)yx=[y1x1ymx1y1xnymxn]

上式结果中,分母x的每个元素是是按照下标1...n按列排布,于是yxRn×m

y是标量,x是向量时: (8)yx=[yx1yxn]

这种标量对向量求导的情况非常常见,通常是以分母布局对求导结果进行排布

那么向量求导两种方式结果数据排布方式的图示效果如下图所示1

分子-分母布局图示

以上两种形式比较容易搞混(通常在是否使用转置之间徘徊),在使用时务必要说明使用哪种布局!但是实际读论文时很少看到作者写明到底用的哪种,此时需要结合上下文进行判断,推理出论文公式使用的何种布局。另外,值得说明的是,如果作者没有明确说明,自己又懒得看,这时候你可以认为作者使用了“混合布局”,具体地:yx 按照分子布局,yx 按照分母布局3

以分母布局为例,常用的矩阵求导公式有:

(9)xax=aAxx=AxAxx=(A+A)xux=(ux)

这里有个小技巧,即分母布局中要加个转置,这是为什么呢?因为分母布局中要求按照分母的排列方式进行组织(一般为列),而分子呢,则"被迫"需要进行转置,反映在求导结果上也就需要转置。

W为对称矩阵时,我们有如下公式2(10)s(xAs)TW(xAs)=2ATW(xAs)x(xs)TW(xs)=2W(xs)s(xs)TW(xs)=2W(xs)x(xAs)TW(xAs)=2W(xAs)A(xAs)TW(xAs)=2W(xAs)sT

小节3

  • 向量对向量求导

  • 标量对向量求导

特别需要注意的是: (11)uvx=uvx+vux()uvx=uxv+vxu()

其中u=u(x),v=v(x), uv为标量。

应用

最小化误差E

(12)E=i=1n(aixbi)2=Axb2

推导过程如下:

(13)E=Axb2=(Axb)(Axb)=(xAb)(Aab)=xAAxxAbbAx+bb

我们对每项进行求导:

(14)xAAxx=(AA+AA)x=2AAxxAbx=AbbAxx=(bA)=Abbbx=0()

所以:

(15)Ex=2AAxAbAb+0=2AAx2Ab

Ex=0,我们有:

(16)2AAx2Ab=0AAx=Abx=(AA)1Ab

x=(AA)1Ab就是上述线性最小二乘问题的解。

参考


  1. 1.Matrix Differentiation in Lecture CS5240 Theoretial Foundations in Multimedia, https://www.comp.nus.edu.sg/~cs5240/lecture/matrix-diff.pdf↩︎
  2. 2.Matrix Cookbook, http://www.math.uwaterloo.ca/~hwolkowi/matrixcookbook.pdf↩︎
  3. 3.Matrix calculus, https://en.jinzhao.wiki/wiki/Matrix_calculus↩︎
  4. 4.Vector/Matrix Calculus More notes on matrix differentiation.↩︎
  5. 5.Matrix Differentiation (and some other stuff), Randal J. Barnes, Department of Civil Engineering, University of Minnesota.↩︎
  6. 6.Matrix Calculus(一款矩阵求导计算器), http://www.matrixcalculus.org/↩︎