【机器学习中的矩阵求导】(五)矩阵对矩阵求导

简介: 假如有p×q矩阵F要对m×n的矩阵X求导,根据第一篇求导布局的定义,矩阵F的pq个元素要对矩阵X的mn个值分别求导,所以求导结果一共有mnpq个,求导的结果如何排列:

一、矩阵对矩阵求导的定义

假如有p×q矩阵F要对m×n的矩阵X求导,根据第一篇求导布局的定义,矩阵F的pq个元素要对矩阵X的mn个值分别求导,所以求导结果一共有mnpq个,求导的结果如何排列:

1.1 两种求导的定义:image.png

二、矩阵对矩阵求导的微分法

向量化的矩阵对矩阵求导,主要是为了使用类似于前面讲过的微分法求导。之前(三)标量对向量矩阵求导的微分法里有:

image.png

搜索

网络异常,图片无法展示
|

网络异常,图片无法展示
|

足迹

动态

消息

【机器学习中的矩阵求导】(五)矩阵对矩阵求导

网络异常,图片无法展示
|

山顶夕景

网络异常,图片无法展示
|
于 2021-11-30 20:21:31 发布
网络异常,图片无法展示
|
439
网络异常,图片无法展示
|

分类专栏:# 数学math文章标签:矩阵论机器学习

版权

28 篇文章12 订阅

订阅专栏

学习总结

(1)这个task所有求导布局都是分母布局。为了适配矩阵对矩阵的求导,这次的向量对向量的求导,也是以分母布局为准(和之前的不一样)。

(2)由于矩阵对矩阵求导的结果包含【克罗内克积,Kronecker积】,因此和之前的其他类型的矩阵求导不同,在机器学习算法优化中,一般不在推导的时候使用矩阵对矩阵的求导,除非只是做定性的分析。如果遇到矩阵对矩阵的求导不好绕过,一般可以使用机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则中第三节最后的几个链式法则公式来避免

文章目录

一、矩阵对矩阵求导的定义

假如有p×q矩阵F要对m×n的矩阵X求导,根据第一篇求导布局的定义,矩阵F的pq个元素要对矩阵X的mn个值分别求导,所以求导结果一共有mnpq个,求导的结果如何排列:

1.1 两种求导的定义:

(1)矩阵 F FF 对矩阵 X XX中的每个值 X i j X_{i j}Xij 求导,这样对于矩阵 X XX 每一个位置 ( i , j ) (i, j )(i,j)求导得到一个矩阵∂ F ∂ X i j \frac{\partial F}{\partial X_{i j}}XijF可以理解为矩阵X XX的每个位置都被替换为一个p×q的矩阵,最后得到一个mp×nq的矩阵

(2)和1类似,可以看做矩阵F FF中的每个值F k l F_{k l}Fkl分别对矩阵 X XX 求导,即矩阵 F FF中每一个位置( k , l ) (k, l)(k,l)对矩阵X XX求导得到一个矩阵∂ F k l ∂ X \dfrac{\partial F_{k l}}{\partial X}XFkl,可以理解为矩阵F FF的每个位置都被替换成一个m×n的矩阵,然后得到一个mp×nq的矩阵

小结:但这两种定义在实际中很难用,不如用(三)微分法求导。

1.2 主流的矩阵对矩阵求导定义

现在主流的矩阵对矩阵求导定义是对矩阵先做向量化,然后使用向量对向量的求导

这里的向量化一般使用列向量,即矩阵对矩阵的求导可以表示为:∂ F ∂ X = ∂ v e c ( F ) ∂ vec ⁡ ( X ) \frac{\partial F}{\partial X}=\frac{\partial v e c(F)}{\partial \operatorname{vec}(X)}XF=vec(X)vec(F)

对于矩阵F,列向量化,vec ⁡ ( F ) \operatorname{vec}(F)vec(F)的维度是pq×1的向量,vec ⁡ ( X ) \operatorname{vec}(X)vec(X)的维度是mn×1的向量。

最终求导的结果,使用分母布局,得到 mn×pq 的矩阵。

二、矩阵对矩阵求导的微分法

向量化的矩阵对矩阵求导,主要是为了使用类似于前面讲过的微分法求导。之前(三)标量对向量矩阵求导的微分法里有:

d f = tr ⁡ ( ( ∂ f ∂ X ) T d X ) d f=\operatorname{tr}\left(\left(\frac{\partial f}{\partial \mathbf{X}}\right)^{T} d \mathbf{X}\right)df=tr((Xf)TdX)

矩阵对矩阵求导有:vec ⁡ ( d F ) = ∂ vec ⁡ ( F ) T ∂ vec ⁡ ( X ) vec ⁡ ( d X ) = ∂ F T ∂ X vec ⁡ ( d X ) \operatorname{vec}(d F)=\frac{\partial \operatorname{vec}(F)^{T}}{\partial \operatorname{vec}(X)} \operatorname{vec}(d X)=\frac{\partial F^{T}}{\partial X} \operatorname{vec}(d X)vec(dF)=vec(X)vec(F)Tvec(dX)=XFTvec(dX)

和之前标量对矩阵的微分法相比,这里的迹函数被矩阵向量化代替了。

2.1 矩阵向量化的主要运算法则

矩阵向量化的主要运算法则:

  • 线性性质:vec ⁡ ( A + B ) = vec ⁡ ( A ) + vec ⁡ ( B ) \operatorname{vec}(A+B)=\operatorname{vec}(A)+\operatorname{vec}(B)vec(A+B)=vec(A)+vec(B)
  • 矩阵乘法:vec ⁡ ( A X B ) = ( B T ⨂ A ) vec ⁡ ( X ) \operatorname{vec}(A X B)=\left(B^{T} \bigotimes A\right) \operatorname{vec}(X)vec(AXB)=(BTA)vec(X),其中⨂ \bigotimes是克罗内克积
  • 矩阵转置:vec ⁡ ( A T ) = K m n vec ⁡ ( A ) \operatorname{vec}\left(A^{T}\right)=K_{m n} \operatorname{vec}(A)vec(AT)=Kmnvec(A),其中A AA是m×n的矩阵,K m n K_{m n}Kmn是mn×mn的交换矩阵,用于矩阵列向量化和行向量化之间的转换。
  • 逐元素乘法:vec ⁡ ( A ⊙ X ) = diag ⁡ ( A ) vec ⁡ ( X ) \operatorname{vec}(A \odot X)=\operatorname{diag}(A) \operatorname{vec}(X)vec(AX)=diag(A)vec(X),其中diag ⁡ ( A ) \operatorname{diag}(A)diag(A)是mn×mn的对角矩阵,对角线上的元素是矩阵A按列向量化后排列出来的。

2.2 克罗内克积的主要运算法则

  • ( A ⨂ B ) T = A T ⨂ B T (A \bigotimes B)^{T}=A^{T} \bigotimes B^{T}(AB)T=ATBT
  • vec ⁡ ( a b T ) = b ⨂ a \operatorname{vec}\left(a b^{T}\right)=b \bigotimes avec(abT)=ba
  • ( A ⨂ B ) ( C ⨂ D ) = A C ⨂ B D (A \bigotimes B)(C \bigotimes D)=A C \bigotimes B D(AB)(CD)=ACBD
  • K m n = K n m T , K m n K n m = I K_{m n}=K_{n m}^{T}, K_{m n} K_{n m}=IKmn=KnmT,KmnKnm=I

利用上面的性质,求出vec ⁡ ( d F ) \operatorname{vec}\left(dF\right)vec(dF)关于vec ⁡ ( d X ) \operatorname{vec}\left(dX\right)vec(dX)的表达式,即表达式左边的转置即为我们要求的 ∂ vec ⁡ ( F ) ∂ vec ⁡ ( X ) \dfrac{\partial \operatorname{vec}(F)}{\partial \operatorname{vec}(X)}vec(X)vec(F) ,或者说 ∂ F ∂ X \dfrac{\partial F}{\partial X}XF

三、矩阵对矩阵求导栗子

微分法求解矩阵对矩阵求导的栗子。

3.1 例题1

image.png

image.png

相关文章
|
5月前
|
机器学习/深度学习 搜索推荐 算法
【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解
【阿旭机器学习实战】【37】电影推荐系统---基于矩阵分解
|
6月前
|
机器学习/深度学习 Python
【Python 机器学习专栏】混淆矩阵与 ROC 曲线分析
【4月更文挑战第30天】本文介绍了机器学习中评估模型性能的两种工具——混淆矩阵和ROC曲线。混淆矩阵显示了模型在不同类别上的预测情况,包括真正例、假正例、真反例和假反例,帮助评估模型错误类型和数量。ROC曲线则通过假正率和真正率展示了模型的二分类性能,曲线越接近左上角,性能越好。文章还提供了Python中计算混淆矩阵和ROC曲线的代码示例,强调它们在模型选择、参数调整和理解模型行为中的应用价值。
196 0
|
6月前
|
机器学习/深度学习 搜索推荐 算法
python机器学习:推荐系统实现(以矩阵分解来协同过滤)
python机器学习:推荐系统实现(以矩阵分解来协同过滤)
|
6月前
|
机器学习/深度学习 JavaScript Python
GEE机器学习——混淆矩阵Classifier.confusionMatrix()和errorMatrix()和exlain()的用法(js和python代码)
GEE机器学习——混淆矩阵Classifier.confusionMatrix()和errorMatrix()和exlain()的用法(js和python代码)
175 0
|
6月前
|
机器学习/深度学习 人工智能 算法
【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
【1月更文挑战第26天】【人工智能】<吴恩达-机器学习>批量梯度下降&矩阵和向量运算概述
|
机器学习/深度学习 监控 PyTorch
机器学习 - 混淆矩阵:技术与实战全方位解析
机器学习 - 混淆矩阵:技术与实战全方位解析
458 0
|
机器学习/深度学习
【吴恩达机器学习笔记】三、矩阵
【吴恩达机器学习笔记】三、矩阵
81 0
|
机器学习/深度学习 算法
【机器学习】分类模型评价指标(混淆矩阵、ROC)(已修改,放心看)
【机器学习】分类模型评价指标(混淆矩阵、ROC)(已修改,放心看)
191 0
|
机器学习/深度学习
机器学习中矩阵求导法则
矩阵求导的本质上就是矩阵中元素对元素的求导,只是将其按照矩阵的形式进行一些规范化的写法罢了
121 0
|
6月前
|
机器学习/深度学习 存储 搜索推荐
利用机器学习算法改善电商推荐系统的效率
电商行业日益竞争激烈,提升用户体验成为关键。本文将探讨如何利用机器学习算法优化电商推荐系统,通过分析用户行为数据和商品信息,实现个性化推荐,从而提高推荐效率和准确性。
239 14