机器学习中的矩阵求导的一点总结(三种方法求线性回归最佳参数)


在实际 机器学习工作中,最常用的就是 实值函数 y 对向量 x或矩阵 X 求导,比如最简单的线性回归问题中由目标函数 $ dJ(w) $求解最佳参数向量 $w $。

  • 矩阵/向量求导问题中要明确是什么量对什么量求导,得到的是什么形式的量

    • 实值函数向量求导,结果是同样维度和方向向量
    • 实值函数矩阵求导,结果是同样维度矩阵

本文以线性回归问题中由目标函数 d J ( w ) dJ(w) dJ(w)求解最佳参数向量 w w w问题为例子,介绍个人总结的一点机器学习矩阵求导的的技巧和方法,其中包括:

1. 全微分与偏导数关系
2. 迹技巧
3. 常用的矩阵求导公式

一. 利用矩阵偏导数与微分的关系

1.1 实值函数对向量的微分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R4NLJSer-1622637371821)(https://www.zhihu.com/equation?tex=df+%3D+%5Csum_%7Bi%3D1%7D%5En+%5Cfrac%7B%5Cpartial+f%7D%7B%5Cpartial+x_i%7Ddx_i+%3D+%5Cfrac%7B%5Cpartial+f%7D%7B%5Cpartial+%5Cboldsymbol%7Bx%7D%7D%5ET+d%5Cboldsymbol%7Bx%7D+)]

1.2 实值函数对矩阵的微分

在这里插入图片描述

1.3 上面两个公式的应用
  • 由上面的两个公式,若我们可以把标量函数f的全微分形式写出来,那么,对于实值函数对向量求导的类型,只需把全微分中dX前面的项求转置便可得到 ∂ f ∂ X \frac{\partial f}{\partial X} Xf
    • 例子: 线性回归

    • d J ( w ) J(w) J(w)

      = d ( X w − Y ) T ( X w − Y ) + ( X w − Y ) T d ( X w − Y ) = d (Xw-Y)^T(Xw-Y) + (Xw-Y)^Td(Xw-Y) =d(XwY)T(XwY)+(XwY)Td(XwY)

      = 2 ( X w − Y ) T X d w =2(Xw-Y)^TXd{w} =2(XwY)TXdw`

      = ( 2 ∗ X T X w − 2 ∗ X T Y ) T d w = (2*X^TXw - 2*X^TY )^Td{w} =(2XTXw2XTY)Tdw

      因此, ▽ w J ( w ) = 2 ∗ X T X w − 2 ∗ X T Y \bigtriangledown_w J(w)= 2*X^TXw - 2*X^TY wJ(w)=2XTXw2XTY

  • 应用上面的的两个公式,可以证明一些矩阵求导的公式(见下面第三部分的例子)。
  • 标量函数 f 是矩阵X经加减乘法、行列式、逆、逐元素函数等运算构成,因此我们需要掌握这些向量/矩阵微分的运算法则迹的技巧
1.4 运算法则
  • 加减法 d ( X ± Y ) = d X ± d Y d(X\pm Y) = dX \pm dY d(X±Y)=dX±dY
  • 矩阵乘法 d ( X Y ) = d X Y + X d Y d(XY) = dX Y + X dY d(XY)=dXY+XdY
  • 转置 d ( X T ) = ( d X ) T d(X^T) = (dX)^T d(XT)=(dX)T
  • d tr ( X ) = tr ( d X ) d\text{tr}(X) = \text{tr}(dX) dtr(X)=tr(dX)
  • d X − 1 = − X − 1 d X X − 1 dX^{-1} = -X^{-1}dX X^{-1} dX1=X1dXX1此式可在 X X − 1 = I XX^{-1}=I XX1=I两侧求微分来证明。
1.5 迹技巧

矩阵的迹表示矩阵主对角线的总和,矩阵A的迹记为: tr ( A ) \text{tr}(A) tr(A), 迹有如下性质:

  • 标量套上迹: a = tr ( a ) a = \text{tr}(a) a=tr(a)
  • 转置: t r ( A T ) = t r ( A ) \mathrm{tr}(A^T) = \mathrm{tr}(A) tr(AT)=tr(A)
  • 线性: tr ( A ± B ) = tr ( A ) ± tr ( B ) \text{tr}(A\pm B) = \text{tr}(A)\pm \text{tr}(B) tr(A±B)=tr(A)±tr(B)
  • 矩阵乘法交换: tr ( A B ) = tr ( B A ) \text{tr}(AB) = \text{tr}(BA) tr(AB)=tr(BA)

二 用迹的性质简化矩阵求导问题。

性质1 t r a = a , t r ( a A ) = a ∗ t r A tr a = a, tr (aA) = a *tr A tra=a,tr(aA)=atrA ,a为标量
性质2 t r ( A + B ) = t r A + t r B tr (A+B) = trA + trB tr(A+B)=trA+trB

性质3 t r A B = t r B A , t r A B C = t r C A B = t r B C A trAB = tr BA,tr ABC = tr CAB = tr BCA trAB=trBA,trABC=trCAB=trBCA

性质4 t r A = t r A T tr A = tr A^T trA=trAT

性质5 ▽ A t r ( A B ) = B T \bigtriangledown_{A} tr (AB) = B^T Atr(AB)=BT
性质6 ▽ A t r ( A B A T C ) = C A B + C T A B T \bigtriangledown_{A} tr (ABA^TC) = CAB + C^TAB^T Atr(ABATC)=CAB+CTABT


实例计算:使用迹的技巧求解线性回归的最佳参数

▽ w J ( w ) = ▽ w t r J ( w ) \bigtriangledown_{w} J(w) =\bigtriangledown_{w} tr J(w) wJ(w)=wtrJ(w)

= ▽ w t r ( X w − Y ) T ( X w − Y ) = \bigtriangledown_{w} tr(Xw-Y)^T(Xw-Y) =wtr(XwY)T(XwY)

= ▽ w t r ( w T X T X w − Y T X w − w T X T Y + Y T Y ) = \bigtriangledown_{w} tr(w^TX^TXw-Y^TXw-w^TX^TY +Y^TY) =wtr(wTXTXwYTXwwTXTY+YTY)

  • 注:
    • 这里应该明确的是J(w) 是两个向量的内积,因此为标量,可以应用性质1: tr a = a
    • ▽ w J ( w ) \bigtriangledown_{w} J(w) wJ(w)是标量J(w)对一个向量 w 求导,其结果是一个向量,维数和w向量相同。

▽ w J ( w ) = ▽ w t r J ( w ) \bigtriangledown_{w} J(w) =\bigtriangledown_{w} tr J(w) wJ(w)=wtrJ(w)

= ▽ w t r ( X w − Y ) T ( X w − Y ) =\bigtriangledown_{w} tr(Xw-Y)^T(Xw-Y) =wtr(XwY)T(XwY)

= ▽ w t r ( w T X T X w − Y T X w − w T X T Y + Y T Y ) = \bigtriangledown_{w} tr(w^TX^TXw-Y^TXw-w^TX^TY +Y^TY) =wtr(wTXTXwYTXwwTXTY+YTY)

= ▽ w t r ( w T X T X w ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(w^TX^TXw)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wTXTXw)wtr(YTXw)wtr(wTXTY)

  • 注:
    • 这里应用 Y T Y Y^TY YTY 与 w 无关
    • 以及

t r ( A + B ) = t r A + t r B tr (A+B) = trA + trB tr(A+B)=trA+trB

▽ w J ( w ) = ▽ w t r J ( w ) \bigtriangledown_{w} J(w) =\bigtriangledown_{w} tr J(w) wJ(w)=wtrJ(w)

= ▽ w t r ( X w − Y ) T ( X w − Y ) = \bigtriangledown_{w} tr(Xw-Y)^T(Xw-Y) =wtr(XwY)T(XwY)

= ▽ w t r ( w T X T X w − Y T X w − w T X T Y + Y T Y ) = \bigtriangledown_{w} tr(w^TX^TXw-Y^TXw-w^TX^TY +Y^TY) =wtr(wTXTXwYTXwwTXTY+YTY)

= ▽ w t r ( w T X T X w ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(w^TX^TXw)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wTXTXw)wtr(YTXw)wtr(wTXTY)

= ▽ w t r ( w w T X T X ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(ww^TX^TX)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wwTXTX)wtr(YTXw)wtr(wTXTY)

= ▽ w t r ( w w T X T X ) − 2 ∗ ▽ w t r ( Y T X w ) = \bigtriangledown_{w} tr(ww^TX^TX)-2*\bigtriangledown_{w} tr(Y^TXw) =wtr(wwTXTX)2wtr(YTXw)

  • 注:
    • 这里应用 $trAB = tr BA (A=wTXTX,B=w) $
    • 以及 t r A T = t r A ( A = w T X T Y ) tr A^T = trA (A= w^TX^TY) trAT=trA(A=wTXTY)

▽ w J ( w ) = ▽ w t r J ( w ) \bigtriangledown_{w} J(w) =\bigtriangledown_{w} tr J(w) wJ(w)=wtrJ(w)

= ▽ w t r ( X w − Y ) T ( X w − Y ) = \bigtriangledown_{w} tr(Xw-Y)^T(Xw-Y) =wtr(XwY)T(XwY)

= ▽ w t r ( w T X T X w − Y T X w − w T X T Y + Y T Y ) = \bigtriangledown_{w} tr(w^TX^TXw-Y^TXw-w^TX^TY +Y^TY) =wtr(wTXTXwYTXwwTXTY+YTY)

= ▽ w t r ( w T X T X w ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(w^TX^TXw)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wTXTXw)wtr(YTXw)wtr(wTXTY)

= ▽ w t r ( w w T X T X ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(ww^TX^TX)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wwTXTX)wtr(YTXw)wtr(wTXTY)

= ▽ w t r ( w w T X T X ) − 2 ∗ ▽ w t r ( Y T X w ) = \bigtriangledown_{w} tr(ww^TX^TX)-2*\bigtriangledown_{w} tr(Y^TXw) =wtr(wwTXTX)2wtr(YTXw)

= ▽ w t r ( w I w T X T X ) − 2 ∗ ▽ w t r ( Y T X w ) = \bigtriangledown_{w} tr(wIw^TX^TX)-2*\bigtriangledown_{w} tr(Y^TXw) =wtr(wIwTXTX)2wtr(YTXw)

= ( X T X w I + X T X I w ) − 2 ∗ ▽ w t r ( Y T X w ) = (X^TXwI+X^TXIw)-2*\bigtriangledown_{w} tr(Y^TXw) =(XTXwI+XTXIw)2wtr(YTXw)

  • 注:
    • 这里应用
      ▽ A t r A B A T C = C A B + C T A B T ( A = w , C = X T X , B = I ) , I 是 1 维 单 位 矩 阵 \bigtriangledown_{A} trABA^TC = CAB + C^T AB^T (A=w,C=X^TX,B=I),I 是 1 维单位矩阵 AtrABATC=CAB+CTABT(A=w,C=XTX,B=I),I1
    • 以及 t r A T = t r A ( A = w T X T Y ) tr A^T = trA (A= w^TX^TY) trAT=trA(A=wTXTY)

▽ w J ( w ) = ▽ w t r J ( w ) \bigtriangledown_{w} J(w) =\bigtriangledown_{w} tr J(w) wJ(w)=wtrJ(w)

= ▽ w t r ( X w − Y ) T ( X w − Y ) = \bigtriangledown_{w} tr(Xw-Y)^T(Xw-Y) =wtr(XwY)T(XwY)

= ▽ w t r ( w T X T X w − Y T X w − w T X T Y + Y T Y ) = \bigtriangledown_{w} tr(w^TX^TXw-Y^TXw-w^TX^TY +Y^TY) =wtr(wTXTXwYTXwwTXTY+YTY)

= ▽ w t r ( w T X T X w ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(w^TX^TXw)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wTXTXw)wtr(YTXw)wtr(wTXTY)

= ▽ w t r ( w w T X T X ) − ▽ w t r ( Y T X w ) − ▽ w t r ( w T X T Y ) = \bigtriangledown_{w} tr(ww^TX^TX)-\bigtriangledown_{w} tr(Y^TXw)-\bigtriangledown_{w}tr(w^TX^TY) =wtr(wwTXTX)wtr(YTXw)wtr(wTXTY)

= ▽ w t r ( w w T X T X ) − 2 ∗ ▽ w t r ( Y T X w ) = \bigtriangledown_{w} tr(ww^TX^TX)-2*\bigtriangledown_{w} tr(Y^TXw) =wtr(wwTXTX)2wtr(YTXw)

= ▽ w t r ( w I w T X T X ) − 2 ∗ ▽ w t r ( Y T X w ) = \bigtriangledown_{w} tr(wIw^TX^TX)-2*\bigtriangledown_{w} tr(Y^TXw) =wtr(wIwTXTX)2wtr(YTXw)

= ( X T X w I + X T X I w ) − 2 ∗ ▽ w t r ( Y T X w ) = (X^TXwI+X^TXIw)-2*\bigtriangledown_{w} tr(Y^TXw) =(XTXwI+XTXIw)2wtr(YTXw)

= 2 ∗ X T X w − 2 ∗ X T Y = 2*X^TXw-2* X^TY =2XTXw2XTY

  • 注:
    • 这里应用 ▽ A t r a ( A B ) = B T \bigtriangledown_{A} tra (AB) = B^T Atra(AB)=BT

###三. 机器学习中常用的矩阵求导

  • 矩阵/向量求导问题中要明确是什么量对什么量求导,得到的是什么形式的量

    • 实值函数向量求导,结果是同样维度和方向向量
    • 实值函数矩阵求导,结果是同样维度矩阵
  • 重要的矩阵求导公式:公式证明可以用微分分解迹技巧证明。

    • ∂ x T A x ∂ x = ( A T + A ) x \frac{\partial x^TAx}{\partial x}= (A^T +A)x xxTAx=(AT+A)x

    • ∂ x T x ∂ x = 2 x \frac{\partial x^Tx}{\partial x}= 2x xxTx=2x

    • ∂ β T x ∂ x = β \frac{\partial \beta^Tx}{\partial x}= \beta xβTx=β

    • ∂ x T β ∂ x = β \frac{\partial x^T\beta}{\partial x}= \beta xxTβ=β

  • 证明第一条公式:
    d ( x T A x ) = d ( x T ) A x + x T d ( A x ) d{ (x^TAx)}= d(x^T )Ax+x^Td(Ax) d(xTAx)=d(xT)Ax+xTd(Ax)
    = ( A x ) T d x + x T ( A T ) T d x = (Ax)^Tdx+x^T(A^T)^Tdx =(Ax)Tdx+xT(AT)Tdx
    = ( x T A T + x T A ) d x =(x^TA^T+x^TA)dx =(xTAT+xTA)dx
    则:
    ∂ x T A x ∂ x = ( x T A T + x T A ) T = ( A T + A ) x \frac{\partial x^TAx}{\partial x}=(x^TA^T+x^TA)^T= (A^T +A)x xxTAx=(xTAT+xTA)T=(AT+A)x

  • 例子:线性回归问题中由目标函数 $ dJ(w) $求解最佳参数向量 $ w $问题

▽ w J ( w ) \bigtriangledown_{w} J(w) wJ(w)

= ▽ w ( X w − Y ) T ( X w − Y ) = \bigtriangledown_{w} (Xw-Y)^T(Xw-Y) =w(XwY)T(XwY)

= ▽ w ( w T X T X w − Y T X w − w T X T Y + Y T Y ) = \bigtriangledown_{w} (w^TX^TXw-Y^TXw-w^TX^TY +Y^TY) =w(wTXTXwYTXwwTXTY+YTY)

= ▽ w ( w T X T X w ) − ▽ w ( Y T X w ) − ▽ w ( w T X T Y ) = \bigtriangledown_{w} (w^TX^TXw)-\bigtriangledown_{w} (Y^TXw)-\bigtriangledown_{w}(w^TX^TY) =w(wTXTXw)w(YTXw)w(wTXTY)

= 2 ∗ X T X w − X T Y − X T Y = 2*X^TXw - X^TY - X^TY =2XTXwXTYXTY

= 2 ∗ X T X w − 2 ∗ X T Y = 2*X^TXw - 2*X^TY =2XTXw2XTY

  • 注:求导公式忘了可以用微分转换和迹技巧推导

参考文章:矩阵求导公式

参考文章:矩阵求导术
参考视频:吴恩达机器学习课程

参考文章:重要矩阵求导的公式

  • 18
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值