通过一个例子快速上手矩阵求导
来源:互联网 发布:钱咖试客类似的软件 编辑:程序博客网 时间:2024/04/28 02:47
前提及说明
第一次遇见矩阵求导,大多数人都是一头雾水,而搜了维基百科看也还是云里雾里,一堆的名词和一堆的表格到底都是什么呢?这里总结了我个人的学习经验,并且通过一个例子可以让你感受如何进行矩阵求导,下次再遇到需要进行矩阵求导的地方就不会措手不及。
在进行概念的解说之前,首先大家需要先知道下面的这个前提:
前提: 若
x 为向量,则默认x 为列向量,xT 为行向量
布局的概念
布局简单地理解就是分子
- 分子布局(Numerator-layout): 分子为
y 或者分母为xT (即,分子为列向量或者分母为行向量) - 分母布局(Denominator-layout): 分子为
yT 或者分母为x (即,分子为行向量或者分母为列向量)
为了更加深刻地理解两种布局的特点和区别,下面是从维基百科中布局部分拿来的例子:
分子布局
标量/向量: (分母的向量为行向量)
向量/标量: (分子的向量为列向量)
向量/向量: (分子为列向量横向平铺,分母为行向量纵向平铺)
标量/矩阵: (注意这个矩阵部分是转置的,而下面的分母布局是非转置的)
矩阵/标量:
分母布局
标量/向量: (分母的向量为列向量)
向量/标量: (分子的向量为行向量)
向量/向量: (分子为行向量纵向平铺,分母为列向量横向平铺)
标量/矩阵: (矩阵部分为原始矩阵)
一个求导的例子
问题
说明:
y、w 为列向量,X 为矩阵
式子演化
看到这个例子不要急着去查表求导,先看看它的形式,是
然后就可以写成四个部分求导的形式如下(累加后求导=求导后累加):
求导
∂yTy∂w 求导 :∂yTy∂w=0
说明:分子部分为标量,分母部分为向量,找到维基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第1行的位置,因为分母为列向量,因此为分母布局,对应的求导结果就是
∂yTXw∂w 求导 :∂yTXw∂w=XTy
说明:同样的,在维基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第11行的位置,对应的求导结果就是
∂wTXTy∂w 求导 :∂wTXTy∂w=∂(wTXTy)T∂w=∂yTXw∂w=XTy
说明:因为分子为标量,标量的转置等于本身,所以对分子进行转置操作,其等价于第二部分。
∂wTXTXw∂w 求导 :∂wTXTXw∂w=2XTXw
说明:同样的,在维基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第13行的位置,矩阵的转置乘上本身(
整合
把四个部分求导结果进行相应的加减就可以得到最终的结果:
现在你再看看维基百科里那成堆的表格,是不是觉得异常实用了!
参考文献
- 维基百科 Matrix calculus
- 求导的例子来自《机器学习实战》-第八章 回归 138页
- 通过一个例子快速上手矩阵求导
- 快速上手一个项目
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 矩阵求导
- 事务传播行为 隔离级别
- DLL高级技术之延迟载入
- 一个故事
- 解决Android的Activity启动后页面没有绘制黑屏问题
- Java工程师成神之路
- 通过一个例子快速上手矩阵求导
- java堆压测
- 图像有用区域
- JAVA gc垃圾回收机制
- YTU:C语言习题 矩形法求定积分
- MyReport实践:为ERP系统添加打印功能
- [LeetCode] Validate Binary Search Tree
- 移动硬盘打不开,提示“文件或目录损坏无法读取”
- leetCode题解