不得不说,向量和矩阵真的是一门高深而又通用的学问,应用十分广泛,不信你可以往回看,前面有关线性代数的文章,哪一篇没个矩阵或者向量。所以呢,我们今天就来看一下向量的导数(矩阵求导)相关内容。
1、定义和约定
矩阵求导的本质是多元函数求导,可以理解为把求导的结果排列为矩阵形式,方便表达与计算。但是矩阵求导本身有一个混乱的地方,就是行、列向量的差异,所导致的结果的差异。而这个差异将导致最后结果出现转置问题。事实上,对于最后求导的结果,很多教材的处理是不一样的,本质上,这只是一个
问题。本章采用非转置结果,也即是得到结果是雅克比矩阵,同时后面将解释非转置结果。
是目前找到关于矩阵求导最详细的结果,因此这里的结果将保持和
的结果一致,
相关内容可进一步阅读:https://en.wikipedia.org/wiki/Matrix_calculus#Layout_conventions。
约定:
-
标量用普通小写字母表示,如
,
-
向量用带箭头小写字母表示,如
,且其中元素为:
- 矩阵用大写字母表示,如:
-
所有向量均默认为列向量,即
为列向量,而
-
分子布局(
):分子为
(列向量)或分母为
(行向量),或者说分子保持原始形式,分母为转置形式。
-
分母布局(
):分子为
(行向量)或分母为
(列向量),或者说分子为转置形式,分母保持为原始形式。
需要注意的是,以下公式的原始计算式子,
上是不做转置的,但是为了统一,下文是使用了转置。例如分子布局的标量对向量,
上是 ,而本文是 ,但无论是
2、分子布局
(1)标量对向量:分子
为标量,分母
为行向量
(2)向量对标量:分子
为列向量,分母
为标量
(3)向量对向量:分子
为列向量,分母
例如
是
矩阵,
是
列向量,则
是
列向量,记
,那么
其中
(4)标量对矩阵。这里的书写与一些网上的博客不一样,但是计算结果是一样。网上一般是
,但是为了避免混淆,这里的分母部分不再写为
,而是
。
是一个
这里看到是转置的。
(5)矩阵对标量
3、分母布局
(1) 标量对向量:分子
为标量,分母
为列向量
(2) 向量对标量:分子
为行向量,分母
为标量
(3) 向量对向量:分子
为行向量,分母
例如
是
矩阵,
是
列向量,则
是
列向量,记
,那么
(4) 标量对矩阵。
这里看到是正的。
4、其他写法
一个小众的写法(邹博写法):向量对向量求偏导,可以看到分子分母都是列向量,这种情况其实不好推导。
是
矩阵,
是
列向量,则
是
列向量,记
,那么
第一个元素
对第一个元素
求导,得到
。因为
是列向量,因此
第一个元素
对第二个元素
,得到
,按照
形状,写在第二行第一列,以此类推,得到
推广得到:
需要注意的是,所谓的布局,其实就是起始计算公式的分子和分母采用的行列设置。关于详细的各个矩阵求导的基础结果,可以进一步阅读
:https://en.wikipedia.org/wiki/Matrix_calculus#Scalar-by-vector_identities
5、常用结果
一些常用的结果(原始向量不做说明,均为列向量):
向量对向量:(向量对向量得矩阵,没严格验证)
标量对向量(标量对向量,向量是行得行,是列得列,没严格验证)
; 若
是对称阵 ,
; 若
是对称阵 ,
其实通过上面的式子可以发现,求导结果类似于我们函数求导的结果,唯一差异在于转置以及前后关系。而这一点,如果不想记忆,可以通过结果是行向量还是列向量“猜”到。
推导:
接下来我们计算误差平方和
所以分子肯定是行向量乘以列向量。而因为
是一个列向量,因此也一定是
这种形式得到的列向量(而不是
)
(1)
(标量对向量,且标量和
(2)
(3) (标量对向量,标量的转置等于本身,查看上面公式)
(4)
上面式子整合,有:
分享到这里,最后一篇线性代数就结束啦,可是通往数学界的道路永远没有尽头哦~