在实际 机器学习工作中,最常用的就是 实值函数 y 对向量 x或矩阵 X 求导,比如最简单的线性回归问题中由目标函数 $ dJ(w) $求解最佳参数向量 $w $。
-
矩阵/向量求导问题中要明确是什么量对什么量求导,得到的是什么形式的量
- 实值函数对向量求导,结果是同样维度和方向的向量
- 实值函数对矩阵求导,结果是同样维度的矩阵
本文以线性回归问题中由目标函数 d J ( w ) dJ(w) dJ(w)求解最佳参数向量 w w w问题为例子,介绍个人总结的一点机器学习矩阵求导的的技巧和方法,其中包括:
1. 全微分与偏导数关系
2. 迹技巧
3. 常用的矩阵求导公式
一. 利用矩阵偏导数与微分的关系
1.1 实值函数对向量的微分
1.2 实值函数对矩阵的微分
1.3 上面两个公式的应用
- 由上面的两个公式,若我们可以把标量函数f的全微分形式写出来,那么,对于实值函数对向量求导的类型,只需把全微分中dX前面的项求转置便可得到
∂
f
∂
X
\frac{\partial f}{\partial X}
∂X∂f。
-
例子: 线性回归
-
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(Xw−Y)T(Xw−Y)+(Xw−Y)Td(Xw−Y)
= 2 ( X w − Y ) T X d w =2(Xw-Y)^TXd{w} =2(Xw−Y)TXdw`
= ( 2 ∗ X T X w − 2 ∗ X T Y ) T d w = (2*X^TXw - 2*X^TY )^Td{w} =(2∗XTXw−2∗XTY)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)=2∗XTXw−2∗XTY
-
- 应用上面的的两个公式,可以证明一些矩阵求导的公式(见下面第三部分的例子)。
- 标量函数 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} dX−1=−X−1dXX−1此式可在 X X − 1 = I XX^{-1}=I XX−1=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)=a∗trA ,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(Xw−Y)T(Xw−Y)
= ▽ 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(wTXTXw−YTXw−wTXTY+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(Xw−Y)T(Xw−Y)
= ▽ 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(wTXTXw−YTXw−wTXTY+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(Xw−Y)T(Xw−Y)
= ▽ 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(wTXTXw−YTXw−wTXTY+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)−2∗▽wtr(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(Xw−Y)T(Xw−Y)
= ▽ 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(wTXTXw−YTXw−wTXTY+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)−2∗▽wtr(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)−2∗▽wtr(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)−2∗▽wtr(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),I是1维单位矩阵 - 以及 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(Xw−Y)T(Xw−Y)
= ▽ 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(wTXTXw−YTXw−wTXTY+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)−2∗▽wtr(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)−2∗▽wtr(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)−2∗▽wtr(YTXw)
= 2 ∗ X T X w − 2 ∗ X T Y = 2*X^TXw-2* X^TY =2∗XTXw−2∗XTY
- 注:
- 这里应用 ▽ 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 ∂x∂xTAx=(AT+A)x
-
∂ x T x ∂ x = 2 x \frac{\partial x^Tx}{\partial x}= 2x ∂x∂xTx=2x
-
∂ β T x ∂ x = β \frac{\partial \beta^Tx}{\partial x}= \beta ∂x∂βTx=β
-
∂ x T β ∂ x = β \frac{\partial x^T\beta}{\partial x}= \beta ∂x∂xTβ=β
-
-
证明第一条公式:
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 ∂x∂xTAx=(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(Xw−Y)T(Xw−Y)
= ▽ 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(wTXTXw−YTXw−wTXTY+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 =2∗XTXw−XTY−XTY
= 2 ∗ X T X w − 2 ∗ X T Y = 2*X^TXw - 2*X^TY =2∗XTXw−2∗XTY
- 注:求导公式忘了可以用微分转换和迹技巧推导。