矩阵向量求导-刘建平Pinard|笔记
矩阵向量求导-刘建平Pinard|笔记
- 矩阵向量求导(刘建平Pinard) 笔记
- 原文链接声明
- 一、求导定义与求导布局
- 原文图片
- 个人笔记
- 二、矩阵向量求导之定义法
- 原文图片
- 个人笔记
- 三、矩阵向量求导之微分法
- 原文图片
- 个人笔记
- 四、矩阵向量求导链式法则
- 原文图片
- 个人笔记
- 五、矩阵对矩阵的求导
- 原文图片
- 个人笔记
- 原文链接声明
矩阵向量求导(刘建平Pinard) 笔记
原文链接声明
声明:本文中内容均为转载自刘建平Pinard的博客,笔记部分为博主个人学习笔记。如有侵权,立即改善!
刘建平老师的博客地址:https://www.cnblogs.com/pinard/
本文中所涉及到的博客的地址:
机器学习中的矩阵向量求导(一) 求导定义与求导布局
机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法
机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导
一、求导定义与求导布局
原文图片
个人笔记
矩阵向量求导引入
行向量大小:1 × n
列向量大小:n × 1
对于同一个求导过程,选择哪一种布局都可以,但必须贯彻到底。不能在中途的某些部分使用其他布局。
向量与标量之间的求导,以向量所在位置的布局为主。向量与向量求导的布局,以分子布局为主。
二、矩阵向量求导之定义法
原文图片
个人笔记
补充求导(1.)里面的测试。
∂xTx∂x⇒∂∑i=1nxi2xj=2xj=2x{\partial x^T x \over \partial x} \Rightarrow {\partial \sum_{i=1}^{n} x_i^2 \over x_j} = 2x_j = 2x ∂x∂xTx⇒xj∂∑i=1nxi2=2xj=2x对于∂xTAx∂x{\partial x^T A x \over \partial x}∂x∂xTAx中如果A是对称矩阵,则可以简化为2Ax2Ax2Ax的形式
在求解上面的∂xTAx∂x{\partial x^T A x \over \partial x}∂x∂xTAx的过程中,中间的式子推导过程为
∂xTAx∂x⇒∂∑i=1n∑j=1nxiAijxj∂xk=∂(∑i=1,i≠knxiAikxk+∑j=1,j≠knxkAkjxj+Akkxk2)∂xk=∑i=1,i≠knxiAik+∑j=1,j≠knAjkxk+2Akkxk⇔∑i=1nxiAik+∑j=1nAjkxk=ATx+Ax{\partial x^T A x\over \partial x} \Rightarrow {\partial \sum_{i=1}^n \sum_{j=1}^n x_i A_{ij} x_j \over \partial x_k}\\ = {\partial(\sum_{i=1,i\neq k}^n x_i A_{ik} x_k + \sum_{j=1,j\neq k}^n x_k A_{kj} x_j + A_{kk}x_k^2) \over \partial x_k }\\ = {\sum_{i=1,i\neq k}^n x_i A_{ik} + \sum_{j=1,j\neq k}^n A_{jk} x_k + 2A_{kk}x_k} \Leftrightarrow \\ {\sum_{i=1}^n x_i A_{ik} + \sum_{j=1}^n A_{jk} x_k} = A^T x + Ax ∂x∂xTAx⇒∂xk∂∑i=1n∑j=1nxiAijxj=∂xk∂(∑i=1,i=knxiAikxk+∑j=1,j=knxkAkjxj+Akkxk2)=i=1,i=k∑nxiAik+j=1,j=k∑nAjkxk+2Akkxk⇔i=1∑nxiAik+j=1∑nAjkxk=ATx+Ax向量求导的法则
- 常量对向量求导为0,类比dCdx=0{dC\over dx} = 0dxdC=0
- 加法法则,前提条件是 f 是值域在 R 的函数,类比标量。∂(c1f1(x)+c2f2(x))∂x=c1∂f1x+c2∂f2x{\partial(c_1f_1(x) + c_2f_2(x))\over \partial x} = c_1 {\partial f_1\over x} + c_2 {\partial f_2\over x}∂x∂(c1f1(x)+c2f2(x))=c1x∂f1+c2x∂f2。
- 乘法法则,前提条件 f,g 是值域在 R 的函数,类比标量。∂f(x)g(x)x=f(x)∂g(x)∂x+∂f(x)xg(x){\partial f(x) g(x)\over x} = f(x) {\partial g(x) \over \partial x} + {\partial f(x) \over x} g(x)x∂f(x)g(x)=f(x)∂x∂g(x)+x∂f(x)g(x)
- 除法法则,前提条件 f,g 是值域在 R 的函数,类比标量。∂f(x)g(x)∂x=1g2(x)(g(x)∂f(x)∂x+f(x)∂g(x)∂x){\partial{f(x) \over g(x)} \over \partial x}= {1\over g^2(x)}(g(x) {\partial f(x) \over \partial x} + f(x) {\partial g(x) \over \partial x})∂x∂g(x)f(x)=g2(x)1(g(x)∂x∂f(x)+f(x)∂x∂g(x))
总结:加减乘除等法则与标量相同,但是需要注意每个求导之后的维度。最终维度需要跟最后的结果相对应。
求不出来的时候就用定义来求。
三、矩阵向量求导之微分法
原文图片
个人笔记
基本公式;
1.d(X+Y)=dX+dY2.d(XY)=dX⋅Y+X⋅dY3.d(XT)=(dX)T4.d(tr(X))=tr(dX)5.d(X⊙Y)=X⊙dY+dX⊙Y,哈达玛乘积:对应点乘6.dσ(X)=σ′(X)⊙dX7.d(X−1)=−X−1(dX)X−18.d∣X∣=∣X∣tr(X−1dX)\begin{aligned} 1.& d(X+Y) = dX + dY\\ 2.& d(XY) = dX \cdot Y + X \cdot dY\\ 3.& d(X^T) = (dX)^T\\ 4.& d(tr(X)) = tr(dX)\\ 5.& d(X \odot Y) = X \odot dY + dX \odot Y,哈达玛乘积:对应点乘\\ 6.& d\sigma(X) = \sigma'(X) \odot dX\\ 7.& d(X^{-1}) = -X^{-1}(dX) X^{-1}\\ 8.& d|X| = |X|tr(X^{-1} dX) \end{aligned} 1.2.3.4.5.6.7.8.d(X+Y)=dX+dYd(XY)=dX⋅Y+X⋅dYd(XT)=(dX)Td(tr(X))=tr(dX)d(X⊙Y)=X⊙dY+dX⊙Y,哈达玛乘积:对应点乘dσ(X)=σ′(X)⊙dXd(X−1)=−X−1(dX)X−1d∣X∣=∣X∣tr(X−1dX)其中矩阵的迹为主对角线元素之和,换算成矩阵上的内容就相当于:
同颜色线的所有元素对应相乘然后相加的结果。就是tr(A⋅B)tr(A \cdot B)tr(A⋅B)
对于迹函数的性质:
1.标量x,tr(x)=x2.tr(AT)=tr(A)3.tr(AB)=tr(BA)4.tr(X+Y)=tr(X)+tr(Y)5.tr((A⊙B)TC)=tr(AT(B⊙C))\begin{aligned} 1.&标量x,tr(x) = x\\ 2.&tr(A^T) = tr(A)\\ 3.&tr(AB) = tr(BA)\\ 4.&tr(X+Y) = tr(X) + tr(Y)\\ 5.&tr((A \odot B)^T C) = tr(A^T (B \odot C)) \end{aligned} 1.2.3.4.5.标量x,tr(x)=xtr(AT)=tr(A)tr(AB)=tr(BA)tr(X+Y)=tr(X)+tr(Y)tr((A⊙B)TC)=tr(AT(B⊙C))补充一个迹函数求导的步骤:
目标:tr(AdX)dXtr(AdX)=∑i=1shape(A).rows∑j=1shape(A).colsAi,jdXj,itr(AdX)dXi,j=Aj,i默认为分母布局,也就是跟dXi,j对应tr(AdX)dXi,j=AT\begin{aligned} &目标:{tr(A dX)\over dX}\\ &tr(A dX) = \sum_{i=1}^{shape(A).rows} \sum_{j=1}^{shape(A).cols} A_{i,j} dX_{j,i}\\ &{tr(A dX) \over dX_{i,j}} = A_{j,i}\\ &默认为分母布局,也就是跟dX_{i,j}对应\\ &{tr(A dX) \over dX_{i,j}} = A^T \end{aligned} 目标:dXtr(AdX)tr(AdX)=i=1∑shape(A).rowsj=1∑shape(A).colsAi,jdXj,idXi,jtr(AdX)=Aj,i默认为分母布局,也就是跟dXi,j对应dXi,jtr(AdX)=AT简单例题的全部步骤:
y=aTXbdy=d(aT)Xb+aTdXb+aTXdb,d常量=0dy=aTdXb用迹:dy=tr(dy)=tr(aTdXb)=tr((aTdX)⋅b)⇒利用tr的性质3dy=tr(baTdX)∂y∂X=abT\begin{aligned} & y = a^T X b\\ & dy = d(a^T) Xb + a^T dX b + a^T X db,d常量=0\\ & dy = a^T dX b\\ & 用迹:dy = tr(dy) = tr(a^T dX b) = tr((a^T dX) \cdot b)\\ & \Rightarrow_{利用tr的性质3} dy = tr(b a^T dX)\\ & {\partial y\over \partial X} = ab^T \end{aligned} y=aTXbdy=d(aT)Xb+aTdXb+aTXdb,d常量=0dy=aTdXb用迹:dy=tr(dy)=tr(aTdXb)=tr((aTdX)⋅b)⇒利用tr的性质3dy=tr(baTdX)∂X∂y=abT迹函数对向量矩阵的一个求导
1.∂tr(AB)∂A=BT2.∂tr(AB)∂B=AT3.∂tr(WTAW)∂W=(A+AT)W4.∂tr(BTXTCXB)∂X=(C+CT)XBBT\begin{aligned} 1.&{\partial tr(AB) \over \partial A} = B^T\\ 2.&{\partial tr(AB) \over \partial B} = A^T\\ 3.&{\partial tr(W^T A W) \over \partial W} = (A+A^T)W\\ 4.&{\partial tr(B^TX^TCXB) \over \partial X} = (C+C^T)XBB^T \end{aligned} 1.2.3.4.∂A∂tr(AB)=BT∂B∂tr(AB)=AT∂W∂tr(WTAW)=(A+AT)W∂X∂tr(BTXTCXB)=(C+CT)XBBT
四、矩阵向量求导链式法则
原文图片
个人笔记
关于布局:在一个求导的题目中,需要保证所用的所有布局相同。例如本文中向量对向量求导全部使用分子布局。
关于(2.标量对多个向量的链式求导法则)中的公式,其使用的是分母布局,而且其中的∂z∂y\partial z\over \partial y∂y∂z用的也是分母布局,而不是上一节中的分子布局。
可以利用求导之后的矩阵大小作为判断求导布局等是否与原文相似的必要条件。
在使用分子布局求导l=(Xθ−y)T(Xθ−y),z=Xθ−y,l=zTzl=(X\theta-y)^T(X\theta-y),z=X\theta-y,l=z^Tzl=(Xθ−y)T(Xθ−y),z=Xθ−y,l=zTz的时候,需要注意:∂l∂z=2z{\partial l\over \partial z} = 2z∂z∂l=2z是使用的分母布局,而不是分子布局。因此需要将其进行转置才能带入到对应的链式法则中。
常用的标量对矩阵的求导公式有:
1.z=f(Y),Y=AX+B→∂z∂X=AT⋅∂z∂Y,对于Y是矩阵和向量都成立2.z=f(Y),Y=XA+B→∂z∂X=∂z∂Y⋅AT,对于Y是矩阵和向量都成立\begin{aligned} 1.&z=f(Y),Y=AX+B \rightarrow {\partial z\over \partial X} = A^T \cdot {\partial z\over \partial Y}&,对于Y是矩阵和向量都成立\\ 2.&z=f(Y),Y=XA+B \rightarrow {\partial z\over \partial X} = {\partial z\over \partial Y} \cdot A^T&,对于Y是矩阵和向量都成立 \end{aligned} 1.2.z=f(Y),Y=AX+B→∂X∂z=AT⋅∂Y∂zz=f(Y),Y=XA+B→∂X∂z=∂Y∂z⋅AT,对于Y是矩阵和向量都成立,对于Y是矩阵和向量都成立
这里使用的布局都是分母布局,因为最后答案要求的布局为分母布局。所以Y=AX+B,YX′=AT,而不是AY=AX+B,Y'_X=A^T,而不是AY=AX+B,YX′=AT,而不是A。可以通过维度之间的乘法变换来验证公式中的顺序。
存疑:矩阵求导中链式法则的顺序是如何的?为何一遍放在前面,一边放在后面?
五、矩阵对矩阵的求导
原文图片
个人笔记
注意看清最前面声明的布局方式说明!
补充向量化的相关方法:
定义矩阵之间的求导为其向量化后的求导,是重新定义;而不是对原定义的另一种描述。
因为其向量化后求解的矩阵大小与原始定义的矩阵大小不同,因此不是相同的一种方式。
克罗内克积:定义在任何两个矩阵之间的运算
A⊗B=[a1,1Ba1,2B…a1,nB⋮⋮⋮am,1Bam,2B…am,nB]A \otimes B = \\ \begin{bmatrix} a_{1,1}B & a_{1,2}B & \dots & a_{1,n}B\\ \vdots & \vdots & & \vdots\\ a_{m,1}B & a_{m,2}B & \dots & a_{m,n}B \end{bmatrix} A⊗B=⎣⎢⎡a1,1B⋮am,1Ba1,2B⋮am,2B……a1,nB⋮am,nB⎦⎥⎤
原文链接声明
声明:本文中内容均为转载自刘建平Pinard的博客,笔记部分为博主个人学习笔记。如有侵权,立即改善!
刘建平老师的博客地址:https://www.cnblogs.com/pinard/
本文中所涉及到的博客的地址:
机器学习中的矩阵向量求导(一) 求导定义与求导布局
机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法
机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导
矩阵向量求导-刘建平Pinard|笔记相关推荐
- 机器学习中矩阵向量求导
以下内容是根据刘建平的求导博客做的相关笔记 一.导数的定义与布局 1. 相关说明 2.导数布局 导数部分有分子布局和分母布局两种情况. 分子布局和分母布局相差一个转置. 标量对向量求导布局 向量对向量 ...
- 矩阵向量求导 (转载与整理)
矩阵向量求导 (转载与整理) 矩阵向量求导 (转载与整理) 1.[刘建平Pinard老师](https://www.cnblogs.com/pinard/)的博客文章(机器学习中的矩阵向量求导) 2. ...
- 机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
在机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法中,我们讨论了使用微分法来求解矩阵向量求导的方法.但是很多时候,求导的自变量和因变量直接有复杂的多层链式求导的关系,此时微分法使用起来也有些麻烦. ...
- 机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
在机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法中,我们讨论了定义法求解矩阵向量求导的方法,但是这个方法对于比较复杂的求导式子,中间运算会很复杂,同时排列求导出的结果也很麻烦.因此我们需要其他的 ...
- 机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法
在机器学习中的矩阵向量求导(一) 求导定义与求导布局中,我们讨论了向量矩阵求导的9种定义与求导布局的概念.今天我们就讨论下其中的标量对向量求导,标量对矩阵求导, 以及向量对向量求导这三种场景的基本求解 ...
- 机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导
在矩阵向量求导前4篇文章中,我们主要讨论了标量对向量矩阵的求导,以及向量对向量的求导.本文我们就讨论下之前没有涉及到的矩阵对矩阵的求导,还有矩阵对向量,向量对矩阵求导这几种形式的求导方法. 本文所有求 ...
- 机器学习中的矩阵向量求导(一) 求导定义与求导布局
在之前写的上百篇机器学习博客中,不时会使用矩阵向量求导的方法来简化公式推演,但是并没有系统性的进行过讲解,因此让很多朋友迷惑矩阵向量求导的具体过程为什么会是这样的.这里准备用几篇博文来讨论下机器学习中 ...
- 矩阵向量求导(Vector derivation)
原文:http://www.cnblogs.com/huashiyiqike/p/3568922.html https://blog.csdn.net/hongqiang200/article/det ...
- 矩阵向量求导(Matrix calculus)
#原文地址 **注:**不要把它和几何运算或者是向量运算混淆 #前言: 在数学中,矩阵微积分是进行多变量微积分的一种特殊符号,特别是在矩阵的空间上. 它将关于许多变量的单个函数的各种偏导数和/或关于单 ...
最新文章
- Java四种引用简介
- Spring4.x新特性
- 数据挖掘 —— 有监督学习(回归)
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...
- Sqli-labs less 47
- NSIS UI 美化类插件分享
- 达芬奇17(DaVinci Resolve Studio 17)兼容big surv17.0b9最新版
- 关于账号密码校验的两种IO流操作
- TCP长连接(KeepAlive)
- 【HAVENT原创】nginx 配置
- 鸿蒙系统屏幕解锁问题,鸿蒙系统解锁卡退黑屏
- 本科论文查重经验分享
- D. Berserk And Fireball(Educational Codeforces Round 91 (Rated for Div. 2))
- 智能系统概论——初识百度AI平台
- 重建oracle inventory
- 只读ppt如何获得可编辑版本?
- 产品破局思考:一个思维,一种策略
- networkx 画图布局
- SpringBoot - Lombok使用详解1(基本介绍、安装配置、var和val)
- 用C#做床位一览功能(下)