矩阵/向量/标量间相互求导

    矩阵、向量都可以表示成张量的形式,向量是矩阵的特殊形式,按实际应用可分为标量对向量求导,标量对矩阵求导、向量对向量求导、矩阵对标量求导、矩阵对向量求导、矩阵对矩阵求导等,在深度学习的反向传播(BP)中所涉及求导不外乎以上几种形式,本篇结合实例分别介绍以上各种求导过程。

一、含标量的求导方式

    标量指的是一个实数,可看成一维向量,含标量的求导方式情形分类两类,一类是矩阵、向量对标量求导,另一类是标量对向量、矩阵求导。

1.1、矩阵、向量对标量求导

    这种情形下矩阵为函数矩阵,向量为函数向量,与数值型矩阵、向量不同,函数矩阵、函数向量中元素都是函数,例如有n行m列函数矩阵A,其中元素aij.png为一元变量x的函数,矩阵对标量x求导形式为:

AX.png

显然AX2.png形状与矩阵A一样,也是一个n行m列矩阵,再如y是一个n维列向量y=(y1,y2,y3,...yn)T,y对标量x求导形式为:

yx.png

以上两个例子可以看出,矩阵、向量对标量求导的结果是与原矩阵、向量形状一样的矩阵或向量,矩阵对标量求导的典型应用是求解线性微分方程。

1.2、标量对矩阵、向量求导:方阵迹的使用

    由于向量是特殊的矩阵,这种类型也可以统称为标量对矩阵求导,标量对矩阵求导在人工智能算法中很常见,在深度学习框架中,如pytorch、tensorflow要求损失函数的结果必须是一个实数,即标量,在反向传播时,第一层误差就是标量对向量或矩阵求导,然后再通过链式求导法则将第一层误差传播到其他层级神级元。如有多元函数y=f(x11,x12,...xnm),自变量xijn行m列的函数矩阵x,则标量y对矩阵x求导为:

yyx.png

自变量x为向量时,求导过程与标量对矩阵一样,如有多元函数y=f(x1,x2,...xn),自变量x为n维列向量即x=(x1,x2,...xn)T,标量y对x的求导结果为:

y.png

标量对矩阵或向量求导,其结果是与自变量形状一样的矩阵或向量,该性质与刚才介绍的'矩阵、向量对标量求导'一样,单纯的标量对矩阵或向量求导很简单,实际应用中往往会有下面形式的标量对矩阵求导:

y=XTAX

其中y∈R,为标量,X为n维列向量,A为Rn*n方阵,如果套用定义求导上式就会复杂,针对标量对矩阵或向量求导,最好的解决方案是'迹'的使用,方阵A的迹用tr(A)表示,其数学意义为方阵A的对角线元素之和,对于两个形状一样的矩阵A和B,A、B∈Rn*m,他们内积可表示为<A,B>,<A,B>等于将两个矩阵位置相同的元素相乘之后再整体求和,公式如下:

矩阵内积.png            (1)

矩阵内积是一个实数,可以证明<A,B>=tr(ATB),即矩阵内积等于其中一个矩阵转置后与另一个矩阵相乘,新的矩阵是一个方阵C∈Rm*m,方阵C迹等于A、B两个矩阵的内积,这里不提供证明过程,感兴趣的读者可以试一下,方阵C的对角线上的元素恰好是A、B两个矩阵相同位置元素相乘的结果,这与矩阵内积定义的运算结果一致,公式(1)可写成下面的等式:

内积即.png    (2)

显然一个标量的迹等于标量本身a=tr(a),其他常用迹的性质有:

迹的性质.png

注意tr(AB)=tr(BA)并不是说迹有交换性,这称为迹的循环置换性,多个矩阵相乘时可想象为一个循环队列,最前面的被挤入队列尾部,其他的顺次向前移动,例如有:tr(ABC)=tr(BCA)=tr(CAB),但是tr(ABC)tr(BAC)。

由数学分析知识知,对于一个多元函数y=f(x1,x2,...,xn),其微分形式为:

微分形式.png     (3)

从之前分析可知,标量对矩阵、向量求导与原矩阵、向量形状是一样的,(3)式实质为求fx.pngdx.png两个矩阵的内积,注意x都加粗,表示x是矩阵或向量,结合矩阵内积公式(2):内积即.png,式(3)可写成:

吉祥.png   (4)

在求标量对矩阵求导时,如果能最终处理成(4)的形式就可以得到fx.png具体形式,也就得到了标量对矩阵、向量的求导结果,矩阵的微分运算有以下性质:

WEIFRN.png

上面的公式中X、Y为矩阵,○符号代表两个矩阵逐元素相乘。再来看问题y=XTAX,求yx2.png过程如下:

XAX.png

得到yx2.png结果为:

R1.png

对于标量的表达式是多个矩阵的加、减、乘、除的复合类型时,使用迹可以很快捷的求出导数,强调一点是,使用迹来求导必须是标量对矩阵、向量求导的情形。目前主流的神经网络框架如pytorch、tensorflow都要求反向传播时必须为一个标量对矩阵求导,如pytorch使用损失函数backward()时,如果损失量不是一个标量,需要传递一个向量使得损失向量逐项相乘后变为一个标量,掌握标量对矩阵求导非常重要意义。

二、向量对向量求导

    这种情形在深度学习的反向传播中也很常见,几乎所有的神经网络反向传播中都有向量对向量求导,向量分为行向量与列向量,通过引入分子布局和分母布局抵消这向量求导时的形式上的差异性,将表达式yx2.png分子.png视为分子,分母.png视为分母,假设y是m维向量,x是n维向量,那么y中每个元素都是x各个元素的函数,例如有:

yi.png

所以无论采用哪种布局,求导结果中必须有形式1.png这些结果才有意义,分子布局会在列方向上先展开y向量:

分子求导.png

然后再在行方向上展开x:

分子布局1.png

分子布局求导结果是一个m*n的矩阵,本质是雅克比矩阵(jaccobi矩阵)。当求导采用分母布局时,在列方向上首先展开x,然后在行方向上展开y:

-免费试读结束-
登录|注册后打赏作者吧! 0.8元
上一篇  逻辑回归详解 下一篇 NMF非负矩阵分解
评论区