矩阵向量求导
2021-9-13
| 2023-8-6
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
 
标量对标量的求导可以表示为,有些时候,有一组标量 来对一个标量 的求导,那么会得到一组标量求导的结果:
如果把这组标量写成向量的形式,即得到维度为的一个向量对一个标量 的求导,那么结果也是一个维的向量:
可见,所谓向量对标量的求导,其实就是向量里的每个分量分别对标量求导,最后把求导的结果排列在一起,按一个向量表示而已。类似的结论也存在于标量对向量的求导,向量对向量的求导,向量对矩阵的求导,矩阵对向量的求导,以及矩阵对矩阵的求导等。
 
总而言之,所谓的向量矩阵求导本质上就是多元函数求导,仅仅是把把函数的自变量,因变量以及标量求导的结果排列成了向量矩阵的形式,方便表达与计算,更加简洁而已。
为了便于描述,后面如果没有指明,则求导的自变量用 表示标量, 表示 维向量, 表示 维度的矩阵,求导的因变量用 表示标量, 表示维向量, 表示维度的矩阵。
 

矩阵向量求导定义

根据求导的自变量和因变量是标量,向量还是矩阵,有9种可能的矩阵求导定义,如下:
自变量\因变量
标量
向量
矩阵
标量
向量
矩阵
维度为的一个向量 对一个标量 的求导,那么结果也是一个 维的向量: 。这是表格里面向量对标量求导的情况。这里有一个问题没有讲到,就是这个维的求导结果排列成的维向量到底应该是列向量还是行向量?
这个问题的答案是:行向量或者列向量皆可!毕竟求导的本质只是把标量求导的结果排列起来,至于是按行排列还是按列排列都是可以的。但是这样也有问题,在机器学习算法法优化过程中,如果行向量或者列向量随便写,那么结果就不唯一,乱套了。
为了解决这个问题,引入求导布局的概念。
 

矩阵向量求导布局

为了解决矩阵向量求导的结果不唯一,引入求导布局。最基本的求导布局有两个:分子布局(numerator layout)和分母布局(denominator layout )。
对于分子布局来说,求导结果的维度以分子为主,比如对于上面对标量求导的例子,结果的维度和分子的维度是一致的。也就是说,如果向量是一个维的列向量,那么求导结果也是一个维列向量。如果如果向量是一个 维的行向量,那么求导结果 也是一个 维行向量。
对于分母布局来说,求导结果的维度以分母为主,比如对于上面对标量求导的例子,如果向量是一个 维的列向量,那么求导结果是一个维行向量。如果如果向量是一个m维的行向量,那么求导结果是一个m维的列向量向量。
可见,对于分子布局和分母布局的结果来说,两者相差一个转置。
再举一个例子,标量 对矩阵 求导,那么如果按分母布局,则求导结果的维度和矩阵的维度是一致的。如果是分子布局,则求导结果的维度为
 
稍微麻烦点的是向量对向量的求导。比如维列向量 维列向量求导。它的求导结果在分子布局和分母布局各是什么呢?对于这2个向量求导,那么一共有 个标量对标量的求导。求导的结果一般是排列为一个矩阵。
如果是分子布局,则矩阵的第一个维度以分子为准,即结果是一个 的矩阵,如下:
上边这个按分子布局的向量对向量求导的结果矩阵,一般叫做雅克比 (Jacobian)矩阵。有的资料上会使用来定义雅克比矩阵,意义是一样的。
如果是按分母布局,则求导的结果矩阵的第一维度会以分母为准,即结果是一个 的矩阵,如下:
上边这个按分母布局的向量对向量求导的结果矩阵,一般叫做梯度矩阵。有的资料上会使用来定义梯度矩阵,意义是一样的。
 
有了布局的概念,对于求导类型,可以各选择一种布局来求导。但是对于某一种求导类型,不能同时使用分子布局和分母布局求导。但是在机器学习算法原理的资料推导里,并没有看到说正在使用什么布局,也就是说布局被隐含了,这就需要自己去推演,比较麻烦。但是一般来说会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准对于向量对对向量求导,有些分歧以分子布局的雅克比矩阵为主
具体总结如下:
自变量\因变量
标量
列向量
矩阵
标量
/
分子布局:维列向量(默认布局) 分母布局:维行向量
分子布局: 矩阵(默认布局)
列向量
分子布局:维行向量 分母布局:维列向量(默认布局)
分子布局:雅克比矩阵(默认布局) 分母布局:梯度矩阵
/
矩阵
分子布局:矩阵 分母布局:矩阵(默认布局)
/
/
 
  • Scikit-Learn
  • 模型的评价指标定义法
    目录