矩阵向量求导-刘建平Pinard|笔记

矩阵向量求导(刘建平Pinard) 笔记

原文链接声明

声明:本文中内容均为转载自刘建平Pinard的博客,笔记部分为博主个人学习笔记。如有侵权,立即改善!

刘建平老师的博客地址:https://www.cnblogs.com/pinard/

本文中所涉及到的博客的地址:

机器学习中的矩阵向量求导(一) 求导定义与求导布局
机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法
机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导

一、求导定义与求导布局

原文图片

矩阵向量求导-刘建平Pinard|笔记

个人笔记

  1. 矩阵向量求导引入

    行向量大小:1 × n

    列向量大小:n × 1

  2. 对于同一个求导过程,选择哪一种布局都可以,但必须贯彻到底。不能在中途的某些部分使用其他布局。

  3. 向量与标量之间的求导,以向量所在位置的布局为主。向量与向量求导的布局,以分子布局为主。

二、矩阵向量求导之定义法

原文图片

矩阵向量求导-刘建平Pinard|笔记

个人笔记

  1. 补充求导(1.)里面的测试。
    xTxxi=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

  2. 对于xTAxx{\partial x^T A x \over \partial x}中如果A是对称矩阵,则可以简化为2Ax2Ax的形式

  3. 在求解上面的xTAxx{\partial x^T A x \over \partial x}的过程中,中间的式子推导过程为
    xTAxxi=1nj=1nxiAijxjxk=(i=1,iknxiAikxk+j=1,jknxkAkjxj+Akkxk2)xk=i=1,iknxiAik+j=1,jknAjkxk+2Akkxki=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

  4. 向量求导的法则

    • 常量对向量求导为0,类比dCdx=0{dC\over dx} = 0
    • 加法法则,前提条件是 f 是值域在 R 的函数,类比标量。(c1f1(x)+c2f2(x))x=c1f1x+c2f2x{\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}
    • 乘法法则,前提条件 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)
    • 除法法则,前提条件 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})

    总结:加减乘除等法则与标量相同,但是需要注意每个求导之后的维度。最终维度需要跟最后的结果相对应。

  5. 求不出来的时候就用定义来求。

三、矩阵向量求导之微分法

原文图片

矩阵向量求导-刘建平Pinard|笔记

个人笔记

  1. 基本公式;
    1.d(X+Y)=dX+dY2.d(XY)=dXY+XdY3.d(XT)=(dX)T4.d(tr(X))=tr(dX)5.d(XY)=XdY+dXY,:6.dσ(X)=σ(X)dX7.d(X1)=X1(dX)X18.dX=Xtr(X1dX) \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}

  2. 其中矩阵的迹为主对角线元素之和,换算成矩阵上的内容就相当于:

    同颜色线的所有元素对应相乘然后相加的结果。就是tr(AB)tr(A \cdot B)

矩阵向量求导-刘建平Pinard|笔记

  1. 对于迹函数的性质:
    1.xtr(x)=x2.tr(AT)=tr(A)3.tr(AB)=tr(BA)4.tr(X+Y)=tr(X)+tr(Y)5.tr((AB)TC)=tr(AT(BC)) \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}

  2. 补充一个迹函数求导的步骤:
    tr(AdX)dXtr(AdX)=i=1shape(A).rowsj=1shape(A).colsAi,jdXj,itr(AdX)dXi,j=Aj,idXi,jtr(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}

  3. 简单例题的全部步骤:
    y=aTXbdy=d(aT)Xb+aTdXb+aTXdb,d=0dy=aTdXbdy=tr(dy)=tr(aTdXb)=tr((aTdX)b)tr3dy=tr(baTdX)yX=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}

  4. 迹函数对向量矩阵的一个求导
    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}

四、矩阵向量求导链式法则

原文图片

矩阵向量求导-刘建平Pinard|笔记

个人笔记

  1. 关于布局:在一个求导的题目中,需要保证所用的所有布局相同。例如本文中向量对向量求导全部使用分子布局。

  2. 关于(2.标量对多个向量的链式求导法则)中的公式,其使用的是分母布局,而且其中的zy\partial z\over \partial y用的也是分母布局,而不是上一节中的分子布局。

  3. 可以利用求导之后的矩阵大小作为判断求导布局等是否与原文相似的必要条件。

  4. 在使用分子布局求导l=(Xθy)T(Xθy),z=Xθy,l=zTzl=(X\theta-y)^T(X\theta-y),z=X\theta-y,l=z^Tz的时候,需要注意:lz=2z{\partial l\over \partial z} = 2z是使用的分母布局,而不是分子布局。因此需要将其进行转置才能带入到对应的链式法则中。

  5. 常用的标量对矩阵的求导公式有:
    1.z=f(Y),Y=AX+BzX=ATzY,Y2.z=f(Y),Y=XA+BzX=zYAT,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}
    这里使用的布局都是分母布局,因为最后答案要求的布局为分母布局。所以Y=AX+B,YX=AT,AY=AX+B,Y'_X=A^T,而不是A

  6. 可以通过维度之间的乘法变换来验证公式中的顺序。

  7. 存疑:矩阵求导中链式法则的顺序是如何的?为何一遍放在前面,一边放在后面?

五、矩阵对矩阵的求导

原文图片

矩阵向量求导-刘建平Pinard|笔记

个人笔记

  1. 注意看清最前面声明的布局方式说明!

  2. 补充向量化的相关方法:

    矩阵向量求导-刘建平Pinard|笔记

  3. 定义矩阵之间的求导为其向量化后的求导,是重新定义;而不是对原定义的另一种描述。

    因为其向量化后求解的矩阵大小与原始定义的矩阵大小不同,因此不是相同的一种方式。

  4. 克罗内克积:定义在任何两个矩阵之间的运算
    AB=[a1,1Ba1,2Ba1,nBam,1Bam,2Bam,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}

原文链接声明

声明:本文中内容均为转载自刘建平Pinard的博客,笔记部分为博主个人学习笔记。如有侵权,立即改善!

刘建平老师的博客地址:https://www.cnblogs.com/pinard/

本文中所涉及到的博客的地址:

机器学习中的矩阵向量求导(一) 求导定义与求导布局
机器学习中的矩阵向量求导(二) 矩阵向量求导之定义法
机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
机器学习中的矩阵向量求导(三) 矩阵向量求导之微分法
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
机器学习中的矩阵向量求导(五) 矩阵对矩阵的求导