通过一个例子快速上手矩阵求导
2016-03-10 20:46
459 查看
前提及说明
第一次遇见矩阵求导,大多数人都是一头雾水,而搜了维基百科看也还是云里雾里,一堆的名词和一堆的表格到底都是什么呢?这里总结了我个人的学习经验,并且通过一个例子可以让你感受如何进行矩阵求导,下次再遇到需要进行矩阵求导的地方就不会措手不及。在进行概念的解说之前,首先大家需要先知道下面的这个前提:
前提: 若 xx 为向量,则默认 xx 为列向量, xTx^T 为行向量
布局的概念
布局简单地理解就是分子 yy 、分母 xx 是行向量还是列向量。分子布局(Numerator-layout): 分子为 yy 或者分母为 xTx^{T} (即,分子为列向量或者分母为行向量)
分母布局(Denominator-layout): 分子为 yTy^{T} 或者分母为 xx (即,分子为行向量或者分母为列向量)
为了更加深刻地理解两种布局的特点和区别,下面是从维基百科中布局部分拿来的例子:
分子布局
标量/向量:(分母的向量为行向量)
向量/标量:
(分子的向量为列向量)
向量/向量:
(分子为列向量横向平铺,分母为行向量纵向平铺)
标量/矩阵:
(注意这个矩阵部分是转置的,而下面的分母布局是非转置的)
矩阵/标量:
分母布局
标量/向量:(分母的向量为列向量)
向量/标量:
(分子的向量为行向量)
向量/向量:
(分子为行向量纵向平铺,分母为列向量横向平铺)
标量/矩阵:
(矩阵部分为原始矩阵)
一个求导的例子
问题
∂(y−Xw)T(y−Xw)∂w\frac{\partial (y-Xw)^T(y-Xw)}{\partial w}说明: y、wy、w为列向量,XX为矩阵
式子演化
看到这个例子不要急着去查表求导,先看看它的形式,是u(w)∗v(w)u(w)*v(w)的形式,这种形式一般求导较为复杂,因此为了简化运算,我们先把式子展开成下面的样子(注意:(Xw)T=wTXT(Xw)^T=w^TX^T):∂(yTy−yTXw−wTXTy+wTXTXw)∂w\frac{\partial (y^Ty-y^TXw-w^TX^Ty+w^TX^TXw)}{\partial w}
然后就可以写成四个部分求导的形式如下(累加后求导=求导后累加):
∂yTy∂w−∂yTXw∂w−∂wTXTy∂w+∂wTXTXw∂w\frac{\partial y^Ty}{\partial w}-\frac{\partial y^TXw}{\partial w}-\frac{\partial w^TX^Ty}{\partial w}+\frac{\partial w^TX^TXw}{\partial w}
求导
∂yTy∂w\frac{\partial y^Ty}{\partial w}求导 : ∂yTy∂w=0\frac{\partial y^Ty}{\partial w}=0说明:分子部分为标量,分母部分为向量,找到维基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第1行的位置,因为分母为列向量,因此为分母布局,对应的求导结果就是 00 。
∂yTXw∂w\frac{\partial y^TXw}{\partial w}求导 : ∂yTXw∂w=XTy\frac{\partial y^TXw}{\partial w}=X^Ty
说明:同样的,在维基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第11行的位置,对应的求导结果就是 XTyX^Ty 。
∂wTXTy∂w\frac{\partial w^TX^Ty}{\partial w}求导 : ∂wTXTy∂w=∂(wTXTy)T∂w=∂yTXw∂w=XTy\frac{\partial w^TX^Ty}{\partial w}=\frac{\partial (w^TX^Ty)^T}{\partial w}=\frac{\partial y^TXw}{\partial w}=X^Ty
说明:因为分子为标量,标量的转置等于本身,所以对分子进行转置操作,其等价于第二部分。
∂wTXTXw∂w\frac{\partial w^TX^TXw}{\partial w}求导 : ∂wTXTXw∂w=2XTXw\frac{\partial w^TX^TXw}{\partial w}=2X^TXw
说明:同样的,在维基百科中的Scalar-by-vector identities表格,在表格中匹配形式到第13行的位置,矩阵的转置乘上本身(XTXX^TX)为对称矩阵当做表格中的AA ,所以得到求导结果 2XTXw2X^TXw 。
整合
把四个部分求导结果进行相应的加减就可以得到最终的结果:∂yTy∂w−∂yTXw∂w−∂wTXTy∂w+∂wTXTXw∂w=0−XTy−XTy+2XTXw=−2XT(y+Xw)\frac{\partial y^Ty}{\partial w}-\frac{\partial y^TXw}{\partial w}-\frac{\partial w^TX^Ty}{\partial w}+\frac{\partial w^TX^TXw}{\partial w}=0-X^Ty-X^Ty+2X^TXw=-2X^T(y+Xw)
现在你再看看维基百科里那成堆的表格,是不是觉得异常实用了!
参考文献
维基百科 Matrix calculus求导的例子来自《机器学习实战》-第八章 回归 138页
相关文章推荐
- 一个故事
- Java工程师成神之路
- 忘记Oracle系统管理员sys的密码
- 浏览器兼容性问题,主要针对IE6~7
- 事务传播行为 隔离级别
- Git、GitHub、SVN
- 动态规划(背包问题):HRBUST 1377 金明的预算方案
- Caffe中的优化方法
- leetcode:Perfect Squares
- [开源项目]Hibernate基本使用
- 输出斐波那契数列
- hdu 2181 哈密顿绕行世界问题(dfs)
- Java基本程序设计结构(Java核心技术卷Ⅰ)
- Ubuntu- Reading package lists... Error! 解决方案
- 服务器负载均衡的基本功能和实现原理
- Android APK反编译就这么简单 详解(附图)
- Hbase 快速入门之 --案例讲解与表结构设计
- Linux下Vim的配置
- uva10801(最短路问题)
- Android之Socket通信(一)