机器学习之矩阵求导

0 前提及说明

在机器学习算法学习过程中,理论推导每当涉及到矩阵求导时,以往都是不求甚解,为更加深入理解算法,特此在这里整理近日的学习心得。下面进入正题。

前提:若 x x 为向量,则默认 x x 为列向量, xT x T 为行向量,即我们默认使用列向量。

1 矩阵求导类型

根据 Y Y X的不同类型(标量(Scalar)、向量(Vector)、矩阵(Matrix)给出下表:

类型标量 y y 向量y矩阵 Y Y
标量 x x yx yx ∂ y ∂ x Yx ∂ Y ∂ x
向量 x x yx ∂ y ∂ x yx ∂ y ∂ x
矩阵 X X yX ∂ y ∂ X

2 布局的约定(Layout Conventions)

矩阵求导本质上还是多元变量的微积分问题,只不过应用在了矩阵空间上,有两种约定(即布局):分子布局,分母布局。两种约定的求导结果有互为转置的关系,即约定不同,求导规则和结果都不同。

  • 分子布局(Numerator Layout):即根据列向量 y y 和行向量 xT x T (即与x相反)布局,这有时被称为雅可比公式。
  • 分母布局(Denominator Layout):即根据行向量 yT y T 和列向量 x x (即与y相反)布局,这有时被称为Hessian公式。一些作者将这种布局称为梯度,区别于雅可比矩阵(分子布局),即它的转置。下面给出维基百科关于两种布局的举例。

2.1 分子布局

  • 标量/行向量: yxT=[yx1yx2yxn] ∂ y ∂ x T = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋯ ∂ y ∂ x n ] ⟹ 行向量
  • 列向量/标量: yx=y1xy2xynx ∂ y ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋮ ∂ y n ∂ x ] ⟹ 列向量
  • 列向量/行向量: yxT=y1x1y2x1ynx1y1x2y2x2ynx2y1xny2xnynxnm×n ∂ y ∂ x T = [ ∂ y 1 ∂ x 1 ∂ y 1 ∂ x 2 ⋯ ∂ y 1 ∂ x n ∂ y 2 ∂ x 1 ∂ y 2 ∂ x 2 ⋯ ∂ y 2 ∂ x n ⋮ ⋮ ⋱ ⋮ ∂ y n ∂ x 1 ∂ y n ∂ x 2 ⋯ ∂ y n ∂ x n ] ⟹ m × n 的矩阵( y y m m 维,x n n 维),矩阵的行按行向量展开,矩阵的列按列向量展开
  • 标量/矩阵(p×q维 ): yX=yx11yx12yx1qyx21yx22yx2qyxp1yxp2yxpqq×p ∂ y ∂ X = [ ∂ y ∂ x 11 ∂ y ∂ x 21 ⋯ ∂ y ∂ x p 1 ∂ y ∂ x 12 ∂ y ∂ x 22 ⋯ ∂ y ∂ x p 2 ⋮ ⋮ ⋱ ⋮ ∂ y ∂ x 1 q ∂ y ∂ x 2 q ⋯ ∂ y ∂ x p q ] ⟹ q × p 维矩阵,相当先转置,再对应元素求导。
  • 矩阵( m×n m × n )/标量(仅分子布局): Yx=y11xy21xym1xy12xy22xym2xy1nxy2nxymnxm×n ∂ Y ∂ x = [ ∂ y 11 ∂ x ∂ y 12 ∂ x ⋯ ∂ y 1 n ∂ x ∂ y 21 ∂ x ∂ y 22 ∂ x ⋯ ∂ y 2 n ∂ x ⋮ ⋮ ⋱ ⋮ ∂ y m 1 ∂ x ∂ y m 2 ∂ x ⋯ ∂ y m n ∂ x ] ⟹ m × n 维矩阵

2.2 分母布局

  • 标量/列向量: yx=yx1yx2yxn ∂ y ∂ x = [ ∂ y ∂ x 1 ∂ y ∂ x 2 ⋮ ∂ y ∂ x n ] ⟹ 列向量
  • 行向量/标量: yTx=[y1xy2xymx] ∂ y T ∂ x = [ ∂ y 1 ∂ x ∂ y 2 ∂ x ⋯ ∂ y m ∂ x ] ⟹ 行向量
  • 行向量/列向量: yTx=y1x1y1x2y1xny2x1y2x2y2xnymx1ymx1ymxnn×m ∂ y T ∂ x = [ ∂ y 1 ∂ x 1 ∂ y 2 ∂ x 1 ⋯ ∂ y m ∂ x 1 ∂ y 1 ∂ x 2 ∂ y 2 ∂ x 2 ⋯ ∂ y m ∂ x 1 ⋮ ⋮ ⋱ ⋮ ∂ y 1 ∂ x n ∂ y 2 ∂ x n ⋯ ∂ y m ∂ x n ] ⟹ n × m 的矩阵( y y m m 维,x n n 维),矩阵的行按行向量展开,矩阵的列按列向量展开
  • 标量/矩阵(p×q维 ): yX=yx11yx21yxp1yx12yx22yxp2yx1qyx2qyxpqp×q ∂ y ∂ X = [ ∂ y ∂ x 11 ∂ y ∂ x 12 ⋯ ∂ y ∂ x 1 q ∂ y ∂ x 21 ∂ y ∂ x 22 ⋯ ∂ y ∂ x 2 q ⋮ ⋮ ⋱ ⋮ ∂ y ∂ x p 1 ∂ y ∂ x p 2 ⋯ ∂ y ∂ x p q ] ⟹ p × q 维矩阵,对应元素直接求导即可。

2.3 总结归纳

类型标量 y y 向量y m m 维) 矩阵Y m×n m × n 维)
标量 x x yx 标量 yx ∂ y ∂ x
分子布局: m m 维列向量
分母布局:m行向量
Yx ∂ Y ∂ x m×n m × n 维)
仅分子类型
向量 x x n n 维) yx
分子布局: n n 维行向量
分母布局:n维列向量
yx ∂ y ∂ x
分子布局: m×n m × n 维矩阵
分母布局: n×m n × m 维矩阵
矩阵 X X p×q p × q 维) yX ∂ y ∂ X
分子布局: q×p q × p 维矩阵
分母布局: p×q p × q 维矩阵

3 常用公式

以下公式来源于维基百科,在此仅给出本人在学习过程中涉及到到的求导公式,随着不断学习会加以更新,链式法则与普通实数运算基本一致。

3.1 向量对向量求导

条件表达式分子布局 y y xT x T 分母布局 x x yT y T
a a 不是 x x 的函数 ax= ∂ a ∂ x = 0 0
xx= ∂ x ∂ x = E E
A A 不是 x x 的函数 Axx= ∂ A x ∂ x = A A AT A T
xTAx= ∂ x T A ∂ x = AT A T A A

3.2 标量对向量求导

条件表达式分子布局 y y xT x T 分母布局 x x yT y T
a a 不是x的函数 ax= ∂ a ∂ x = 0T 0 T 0 0
A A 不是 x x 的函数 xTAxx= ∂ x T A x ∂ x = xT(A+AT) x T ( A + A T ) (A+AT)x ( A + A T ) x
A A 不是 x x 的函数, A A 为实对称矩阵 xTAxx= ∂ x T A x ∂ x = 2xTA 2 x T A 2Ax 2 A x

4 矩阵求导实践之线性回归

4.1 线性回归回顾

对于线性回归我们一般假设 p(y|x;θ) p ( y | x ; θ ) ~ N(μ,σ2) N ( μ , σ 2 ) ,由广义线性模型得到假设函数 hθ(x)=θTxhθ(X)=Xθ h θ ( x ) = θ T x ⇔ h θ ( X ) = X θ ,再由最大似然估计方法得到等价的极小值损失函数

J(θ)=12i=1m(hθ(x(i)y(i)))2 J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) − y ( i ) ) ) 2
,且 J(θ) J ( θ ) 为一个凸函数,也有系数写成 12m 1 2 m 的。首先推导最小二乘法(也就是正规方程): θ=(XTX)1XTy θ = ( X T X ) − 1 X T y
首先将损失函数写为矩阵形式: J(θ)=12(Xθy)T(Xθy) J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) ,下面对 J(θ) J ( θ ) 进行矩阵求导。

4.2 最小二乘法推导

θ(J(θ))=θ[12(Xθy)T(Xθy)]=θ[12(θTXTyT)(Xθy)]=12θ(θTXTXθθTXTyyTXθ+yTy)=12(2XTXθXTyXTy+0)=XTXθXTy=XT(Xθy)(1)(2)(3)(4)(5)(6) (1) ∇ θ ( J ( θ ) ) = ∇ θ [ 1 2 ( X θ − y ) T ( X θ − y ) ] (2) = ∇ θ [ 1 2 ( θ T X T − y T ) ( X θ − y ) ] (3) = 1 2 ∇ θ ( θ T X T X θ − θ T X T y − y T X θ + y T y ) (4) = 1 2 ( 2 X T X θ − X T y − X T y + 0 ) (5) = X T X θ − X T y (6) = X T ( X θ − y )

  • 注意 XTX X T X 为实对称矩阵; θ θ 为 列 向 量 ,因此求导依据分子布局

由此可求得驻点 θ=(XTX)1XTy θ = ( X T X ) − 1 X T y ,即最小二乘法表达式。

4.3 线性回归梯度下降推导

由4.2可得损失函数的导数 θ(J(θ))=XT(Xθy) ∇ θ ( J ( θ ) ) = X T ( X θ − y ) ,因此可得每轮迭代的梯度表达式 θ=θαXT(Xθy)θj=θjαθjJ(θ)=[y(i)hθ(x(i))]xj(i) θ = θ − α X T ( X θ − y ) ⇔ θ j = θ j − α ∂ ∂ θ j J ( θ ) = [ y ( i ) − h θ ( x ( i ) ) ] x j ( i )

参考文献

感谢阅读,敬请斧正!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值