不得不说,向量和矩阵真的是一门高深而又通用的学问,应用十分广泛,不信你可以往回看,前面有关线性代数的文章,哪一篇没个矩阵或者向量。所以呢,我们今天就来看一下向量的导数(矩阵求导)相关内容。
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)
上面式子整合,有:
分享到这里,最后一篇线性代数就结束啦,可是通往数学界的道路永远没有尽头哦~
编辑:yxc