天天看点

AI基础:矩阵求导,你一定要收藏

不得不说,向量和矩阵真的是一门高深而又通用的学问,应用十分广泛,不信你可以往回看,前面有关线性代数的文章,哪一篇没个矩阵或者向量。所以呢,我们今天就来看一下向量的导数(矩阵求导)相关内容。

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)  

上面式子整合,有:

分享到这里,最后一篇线性代数就结束啦,可是通往数学界的道路永远没有尽头哦~