【机器学习中的矩阵求导】(一)求导布局

举报
野猪佩奇996 发表于 2022/01/23 01:32:27 2022/01/23
【摘要】 学习总结 假设: x x x表示标量; ...

学习总结

假设: x x x表示标量; X X X表示m×n维的矩阵;求导的因变量用 y y y表示标量; Y Y Y表示 p × q p×q p×q维矩阵

自变量/因变量 标量 y y y 列向量 y \mathbf{y} y 矩阵 Y \mathbf{Y} Y
标量 x x x / ∂ y ∂ x \frac{\partial \mathbf{y}}{\partial x} ∂x∂y​
分子布局:m维列向量(默认布局)
分母布局:m维行向量
∂ Y ∂ x \frac{\partial \mathbf{Y}}{\partial x} ∂x∂Y​
分子布局:p×q(默认布局)
分母布局:q×p
列向量 x \mathbf{x} x ∂ y ∂ x \frac{\partial {y}}{\partial \mathbf{x}} ∂x∂y​
分子布局:n维行向量(默认布局)
分母布局:n维列向量
∂ y ∂ x \frac{\partial \mathbf{y}}{\partial \mathbf{x}} ∂x∂y​
分子布局:m×n雅克比矩阵(默认布局)
分母布局:n×m梯度矩阵
/
矩阵 X \mathbf{X} X ∂ y ∂ X \frac{\partial y}{\partial \mathbf{X}} ∂X∂y​
分子布局:n×m矩阵
分母布局:m×n矩阵(默认布局)

一、符号规定

一组标量 y i y_i yi​,对一个标量 x x x求导可以表示为:
∂ y i ∂ x \frac{\partial y_{i}}{\partial x} ∂x∂yi​​然后将每个求导的值排成一个向量表示。类似的结论也存在于标量对向量的求导,向量对向量的求导,向量对矩阵的求导,矩阵对向量的求导,以及矩阵对矩阵的求导等。

  • x x x表示标量
  • X X X表示m×n维的矩阵
  • 求导的因变量用 y y y表示标量
  • Y Y Y表示 p × q p×q p×q维矩阵

 自变量  \  因变量   标量  y  向量  y  矩阵  Y  标量  x ∂ y ∂ x ∂ y ∂ x ∂ Y ∂ x  向量  x ∂ y ∂ x ∂ y ∂ x ∂ Y ∂ x  矩阵  X ∂ y ∂ X ∂ y ∂ X ∂ Y ∂ X

 自变量 ∖ 因变量  标量 x 向量 x 矩阵 X 标量 y∂y∂x∂y∂x∂y∂X 向量 y∂y∂x∂y∂x∂y∂X 矩阵 Y∂Y∂x∂Y∂x∂Y∂X  自变量  ∖  因变量   标量  y  向量  y  矩阵  Y  标量  x ∂ y ∂ x ∂ y ∂ x ∂ Y ∂ x  向量  x ∂ y ∂ x ∂ y ∂ x ∂ Y ∂ x  矩阵  X ∂ y ∂ X ∂ y ∂ X ∂ Y ∂ X
 自变量 \ 因变量  标量 x 向量 x 矩阵 X​ 标量 y∂x∂y​∂x∂y​∂X∂y​​ 向量 y∂x∂y​∂x∂y​∂X∂y​​ 矩阵 Y∂x∂Y​∂x∂Y​∂X∂Y​​​

二、矩阵向量求导布局

分子布局(numerator layout)和分母布局(denominator layout )。

2.1 分子布局:

求导的结果以分子为主,即求导的结果与分子(即 ∂ y i ∂ x \frac{\partial y_{i}}{\partial x} ∂x∂yi​​的分子)的维度相同,如果y是一个m维的列向量,则求导的结果也是一个m维的列向量。

2.2 分母布局:

求导的结果以分母为主,如果y是一个m维的列向量,则求导的结果也是一个m维的行向量。所以分子布局和分母布局的结果是转置关系。

2.3 栗子

标量y对矩阵X求导,那么如果按分母布局,则求导结果的维度和矩阵X的维度m×n是一致的。如果是分子布局,则求导结果的维度为n×m。

对于标量对向量或者矩阵求导,向量或者矩阵对标量求导这4种情况,对应的分子布局和分母布局的排列方式已确定。

2.4 向量对向量的求导

这里讨论列向量对列向量的求导,比如m维列向量y对n维列向量x求导。
对于这2个向量求导,那么一共有mn个标量对标量的求导。求导的结果一般是排列为一个矩阵。如果是分子布局,则矩阵的第一个维度以分子为准,即结果是一个m×n的矩阵:
∂ y ∂ x = ( ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ∂ y m ∂ x 2 ⋯ ∂ y m ∂ x n ) \frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left(

∂y1∂x1∂y2∂x1⋮∂ym∂x1∂y1∂x2∂y2∂x2⋮∂ym∂x2⋯⋯⋱⋯∂y1∂xn∂y2∂xn⋮∂ym∂xn ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ y m ∂ x 1 ∂ y m ∂ x 2 ⋯ ∂ y m ∂ x n
∂x∂y​=⎝⎜⎜⎜⎜⎛​∂x1​∂y1​​∂x1​∂y2​​⋮∂x1​∂ym​​​∂x2​∂y1​​∂x2​∂y2​​⋮∂x2​∂ym​​​⋯⋯⋱⋯​∂xn​∂y1​​∂xn​∂y2​​⋮∂xn​∂ym​​​⎠⎟⎟⎟⎟⎞​
∂ y ∂ x T \frac{\partial \mathbf{y}}{\partial \mathbf{x}^{\mathbf{T}}} ∂xT∂y​

如果按照分母布局,求导的结果矩阵第一维度以分母为准,即以n维列向量为准,所以结果矩阵为n×m矩阵:
∂ y ∂ x = ( ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 … ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 … ∂ y m ∂ x 2 ⋮ ⋮ ⋱ ⋮ ∂ y 1 ∂ x n ∂ y 2 ∂ x n … ∂ y m ∂ x n ) \frac{\partial \mathbf{y}}{\partial \mathbf{x}}=\left(

∂y1∂x1∂y1∂x2⋮∂y1∂xn∂y2∂x1∂y2∂x2⋮∂y2∂xn……⋱…∂ym∂x1∂ym∂x2⋮∂ym∂xn ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 … ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 … ∂ y m ∂ x 2 ⋮ ⋮ ⋱ ⋮ ∂ y 1 ∂ x n ∂ y 2 ∂ x n … ∂ y m ∂ x n
∂x∂y​=⎝⎜⎜⎜⎜⎛​∂x1​∂y1​​∂x2​∂y1​​⋮∂xn​∂y1​​​∂x1​∂y2​​∂x2​∂y2​​⋮∂xn​∂y2​​​……⋱…​∂x1​∂ym​​∂x2​∂ym​​⋮∂xn​∂ym​​​⎠⎟⎟⎟⎟⎞​ ∂ y T ∂ x \frac{\partial \mathbf{y}^{\mathbf{T}}}{\partial \mathbf{x}} ∂x∂yT​

对于上面5种求导类型,可以各选择一种布局来求导。但是对于某一种求导类型,不能同时使用分子布局和分母布局求导。

在机器学习算法原理的资料推导里,我们并没有看到说正在使用什么布局,也就是说布局被隐含了,这就需要自己去推演,比较麻烦。但是一般来说我们会使用一种叫混合布局的思路,即如果是向量或者矩阵对标量求导,则使用分子布局为准,如果是标量对向量或者矩阵求导,则以分母布局为准。对于向量对对向量求导,有些分歧,后面统一以分子布局的雅克比矩阵为主。

Reference

(1)矩阵求导知识点总结:https://www.cnblogs.com/gyhhaha/p/11782212.html
(2)https://www.cnblogs.com/pinard/p/10750718.html

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/121450894

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。