矩阵求导的基本方法

前言

在学习最小二乘法线性回归时,对利用矩阵求逆计算最优解的做法感到疑惑,于是试图总结了一点点关于“标量对向量求导”的方法。由于没有参考太多资料,文章中可能充满了大大小小的错误,因此,如有谬误,欢迎各位读者以各种形式指出。

感谢我的室友胡佬的大力支持,没有他的支持,我可能没有勇气把这些公式整理成一篇博客。

一些约定

  1. 不加说明的,提到“向量”,都指“列向量”;
  2. 不加说明的,下文中所有求导过程均以 θ \theta θ 为自变量;
  3. 倘若 y y y 是标量函数, θ = ( θ 1 ⋯ θ n ) T \theta=(\theta_1\cdots \theta_n)^T θ=(θ1θn)T 是变量向量,我们称 y y y θ \theta θ 的导数为 ∂ y ∂ θ = ( ∂ y ∂ θ 1 , ⋯   , ∂ y ∂ θ n ) T \frac{\partial y}{\partial \theta}=\left(\frac{\partial y}{\partial \theta_1},\cdots,\frac{\partial y}{\partial \theta_n}\right)^T θy=(θ1y,,θny)T。更一般地,我们要求梯度向量 ∂ y ∂ θ \frac{\partial y}{\partial \theta} θy θ \theta θ 的系数向量具有 相同的形状(即行数、列数分别对应相等);
  4. A = ( a 1 , ⋯   , a m ) T A=(a_1,\cdots,a_m)^T A=(a1,,am)T 是向量函数, θ = ( θ 1 ⋯ θ n ) T \theta=(\theta_1\cdots \theta_n)^T θ=(θ1θn)T 是变量向量,则我们约定 A ′ = ∂ A T ∂ θ A'=\frac{\partial A^T}{\partial \theta} A=θAT,其中 A ′ A' A 是一个 n n n m m m 列的函数矩阵,其中 A i j = ∂ A j ∂ θ i A_{ij}=\frac{\partial A_j}{\partial \theta_i} Aij=θiAj,即 A ′ A' A 中每行对应一个自变量,每列对应一个因变量。定义 A i ′ A'_i Ai 表示矩阵 A ′ A' A 的第 i i i 行,即 A i ′ = [ a 1 ′ , ⋯   , a m ′ ] θ i A'_i=\left[a_1',\cdots,a_m'\right]_{\theta_i} Ai=[a1,,am]θi,是一个 m m m行向量
  5. 转置原则,即:
    ∂ A T ∂ θ = ( ∂ A ∂ θ ) T \frac{\partial A^T}{\partial \theta}=\left(\frac{\partial A}{\partial \theta}\right)^T θAT=(θA)T

规则零: ∂ c ∂ θ = 0 \frac{\partial c}{\partial \theta}=0 θc=0

c c c 为标量常量, θ = ( θ 1 , ⋯   , θ n ) T \theta=(\theta_1,\cdots,\theta_n)^T θ=(θ1,,θn)T 为所有自变量构成的向量。 c c c 是常量,所以求导结果为 0 = ( 0 , ⋯   , 0 ) T ⏞ n 个 0 0=\overbrace {(0,\cdots,0)^T}^{n 个 0} 0=(0,,0)T n0

规则一: ∂ ( X T θ ) ∂ θ = X T ; ∂ ( θ T X ) ∂ θ = X \frac{\partial \left(X^T\theta\right)}{\partial \theta}=X^T;\frac{\partial \left(\theta^TX\right)}{\partial \theta}=X θ(XTθ)=XT;θ(θTX)=X

  1. X = ( x 1 , ⋯   , x n ) T X=(x_1,\cdots,x_n)^T X=(x1,,xn)T 为常向量,因此:

θ T X = x 1 θ 1 + ⋯ + x n θ n \theta^TX=x_1\theta_1+\cdots +x_n\theta_n θTX=x1θ1++xnθn

根据约定 3 得到:
∂ ( θ T X ) ∂ θ = ( x 1 , ⋯   , x n ) T = X \frac{\partial \left(\theta^T X\right)}{\partial \theta}=(x_1,\cdots,x_n)^T=X θ(θTX)=(x1,,xn)T=X

通过转置原则得到

∂ ( X T θ ) ∂ θ = ( ∂ ( θ T X ) ∂ θ ) T = X T \frac{\partial \left(X^T\theta\right)}{\partial \theta}=\left(\frac{\partial \left(\theta^T X\right)}{\partial \theta}\right)^T=X^T θ(XTθ)=(θ(θTX))T=XT

  1. X X X 是一个 n × m n\times m n×m 的常矩阵,现在只考虑 θ T X \theta^T X θTX 关于 θ \theta θ 求导,根据矩阵乘法的性质,可以得知: θ T X \theta^TX θTX 是一个 1 × m 1\times m 1×m 的行向量,关于 θ \theta θ 求导可以得到一个 n × m n\times m n×m 的矩阵。

考虑某一个自变量 θ i \theta_i θi ,有:
∂ ( θ T X ) ∂ θ i = ( X i 1 , ⋯   , X i m ) = X i \frac{\partial \left(\theta^TX\right)}{\partial \theta_i}=(X_{i1},\cdots,X_{im})=X_i θi(θTX)=(Xi1,,Xim)=Xi
究其原因, X X X 中与 θ i \theta_i θi 相乘的元素只有 X X X 的第 i i i 行中的元素。因此:

∂ ( θ T X ) ∂ θ = [ X 1 ⋮ X n ] = X \frac{\partial \left(\theta^TX\right)}{\partial \theta}=\left[ \begin{matrix} X_1\\ \vdots\\ X_n \end{matrix} \right]=X θ(θTX)=X1Xn=X

  1. X X X 是一个 n × m n\times m n×m 的常矩阵,现在考虑 ∂ ( X T θ ) ∂ θ \frac{\partial (X^T\theta)}{\partial \theta} θ(XTθ)。此时, F = X T θ F=X^T\theta F=XTθ 是一个 m × 1 m\times 1 m×1 的列向量,不符合前文中定义的求导规则(前文中的求导规则要求 m m m 维行向量函数对 n n n 维列向量求导,得到 n × m n\times m n×m 的梯度矩阵)。由转置原则,得到:

∂ ( X T θ ) ∂ θ = ( ∂ ( θ T X ) ∂ θ ) T = X T \frac{\partial (X^T\theta)}{\partial \theta}=\left(\frac{\partial \left(\theta^TX\right)}{\partial \theta}\right)^T=X^T θ(XTθ)=(θ(θTX))T=XT

规则二: ∂ ( A T B ) ∂ θ = ∂ A T ∂ θ ⋅ B + ∂ B T ∂ θ ⋅ A = A ′ B + B ′ A \frac{\partial (A^TB)}{\partial \theta}=\frac{\partial A^T}{\partial \theta}\cdot B+\frac{\partial B^T}{\partial \theta}\cdot A=A'B+B'A θ(ATB)=θATB+θBTA=AB+BA

据我观察,这条规则可以推导出本文中的所有规则。

A = ( a 1 , ⋯   , a m ) T A=(a_1,\cdots,a_m)^T A=(a1,,am)T 是向量函数,设 B = ( b 1 , ⋯   , b m ) T B=(b_1,\cdots,b_m)^T B=(b1,,bm)T 也是向量函数,此时 A T B A^TB ATB 为标量函数:

A T B = a 1 b 1 + ⋯ + a m b m A^TB=a_1b_1+\cdots +a_mb_m ATB=a1b1++ambm
考虑某个自变量 θ i \theta_i θi

∂ ( A T B ) ∂ θ i = [ ( a 1 ′ b 1 + a 1 b 1 ′ ) + ⋯ + ( a m ′ b m + a m b m ′ ) ] θ i = ( a 1 ′ , ⋯   , a m ′ ) ⋅ ( b 1 , ⋯   , b m ) T + ( a 1 , ⋯   , a n ) ⋅ ( b 1 ′ , ⋯   , b n ′ ) T = A i ′ B + B i ′ A \begin{aligned} \frac{\partial \left(A^TB\right)}{\partial \theta_i} &=\left[\left(a_1'b_1+a_1b_1'\right)+\cdots +\left(a_m'b_m+a_mb_m'\right)\right]_{\theta_i}\\ &=(a_1',\cdots,a_m')\cdot(b_1,\cdots,b_m)^T+(a_1,\cdots,a_n)\cdot(b_1',\cdots,b_n')^T\\ &=A'_iB+B'_iA\\ \end{aligned} θi(ATB)=[(a1b1+a1b1)++(ambm+ambm)]θi=(a1,,am)(b1,,bm)T+(a1,,an)(b1,,bn)T=AiB+BiA

因此得到:

∂ ( A T B ) ∂ θ = [ A 1 ′ B + B 1 ′ A ⋮ A n ′ B + B n ′ A ] = [ A 1 ′ ⋮ A n ′ ] ⋅ B + [ B 1 ′ ⋮ B n ′ ] ⋅ A = A ′ B + B ′ A \frac{\partial \left(A^TB\right)}{\partial \theta}=\left[ \begin{matrix} A_1'B+B_1'A\\ \vdots\\ A_n'B+B_n'A \end{matrix} \right]=\left[ \begin{matrix} A_1'\\ \vdots\\ A_n' \end{matrix} \right]\cdot B+\left[ \begin{matrix} B_1'\\ \vdots\\ B_n' \end{matrix} \right]\cdot A=A'B+B'A θ(ATB)=A1B+B1AAnB+BnA=A1AnB+B1BnA=AB+BA

这个公式具有很简洁的形式,十分类似标量函数中乘积导数的求法。

规则三: ∂ ( θ T X T X θ ) ∂ θ = 2 X T X θ \frac{\partial \left(\theta^TX^TX\theta\right)}{\partial \theta}=2X^TX\theta θ(θTXTXθ)=2XTXθ

从乘积角度证明

这个公式在计算最小二乘估计的最优参数时有着重要的最用。其中 X X X 是一个 m × n m\times n m×n 的矩阵, θ \theta θ 是一个 n × 1 n\times 1 n×1 的列向量。因此 X θ X\theta Xθ m × 1 m\times 1 m×1 的列向量。

不难发现,令 A = B = X θ A=B=X\theta A=B=Xθ 即可带入规则二计算导数:

∂ ( θ T X T X θ ) ∂ θ = A ′ B + B ′ A = ( X T ) X θ + ( X T ) X θ = 2 X T X θ \frac{\partial \left(\theta^TX^TX\theta\right)}{\partial \theta}=A'B+B'A=(X^T)X\theta+(X^T)X\theta=2X^TX\theta θ(θTXTXθ)=AB+BA=(XT)Xθ+(XT)Xθ=2XTXθ

从二次型角度证明

这个结论是比较显然的,因为 θ T X T X θ \theta^TX^TX\theta θTXTXθ 是以 θ \theta θ 为变量的二次型,其中 A = X T X A=X^TX A=XTX 一定是 n n n 阶对称矩阵。有:

θ T A θ = ∑ i = 1 n ∑ j = 1 n θ i θ j A i j \theta^TA\theta=\sum_{i=1}^n\sum_{j=1}^n\theta_i\theta_jA_{ij} θTAθ=i=1nj=1nθiθjAij

考虑对某个 θ k \theta_k θk 求导,列出与 θ k \theta_k θk 有关的所有项:

( θ T A θ ) θ k ′ = ( 2 θ k ( ∑ j = 1 , j ≠ k n θ j A k j ) + θ k 2 A k k ) ′ = ( 2 ∑ j = 1 , j ≠ k n θ j A k j ) + 2 θ k A k k = 2 ∑ j = 1 n θ j A k j = 2 A k θ (\theta^TA\theta)'_{\theta_k}=\left(2\theta_k\left(\sum_{j=1,j\neq k}^n\theta_jA_{kj}\right)+\theta_k^2A_{kk}\right)'=\left(2\sum_{j=1,j\neq k}^{n}\theta_jA_{kj}\right)+2\theta_kA_{kk}=2\sum_{j=1}^{n}\theta_jA_{kj}=2A_k\theta (θTAθ)θk=2θkj=1,j=knθjAkj+θk2Akk=2j=1,j=knθjAkj+2θkAkk=2j=1nθjAkj=2Akθ

二倍是因为,叠加了第 k k k 行和第 k k k 列。单独加一个 A k k A_{kk} Akk 是为了防止重复覆盖。

因此:

∂ ( θ T A θ ) ∂ θ = [ 2 A 1 θ ⋮ 2 A n θ ] = 2 A θ = 2 X T X θ \frac{\partial \left(\theta^TA\theta\right)}{\partial \theta}=\left[ \begin{matrix} 2A_1\theta\\ \vdots\\ 2A_n\theta \end{matrix} \right]=2A\theta=2X^TX\theta θ(θTAθ)=2A1θ2Anθ=2Aθ=2XTXθ

规则四: ∂ ( X T θ ) m ∂ θ = m X ( X T θ ) m − 1 \frac{\partial \left( X^T\theta\right)^m}{\partial \theta}=mX\left(X^T\theta\right)^{m-1} θ(XTθ)m=mX(XTθ)m1

其中 X = ( x 1 , ⋯   , x n ) T X=(x_1,\cdots, x_n)^T X=(x1,,xn)T 是常列向量, X T θ X^T\theta XTθ 是标量函数。

对于 m = 2 m=2 m=2 带入规则三 验证即可:

( X T θ ) 2 = ( X T θ ) ⋅ ( X T θ ) = ( X T θ ) T ⋅ ( X T θ ) = θ T X X T θ \left(X^T\theta\right)^2=\left(X^T\theta\right)\cdot\left(X^T\theta\right)=\left(X^T\theta\right)^T\cdot \left(X^T\theta\right)=\theta^TXX^T\theta (XTθ)2=(XTθ)(XTθ)=(XTθ)T(XTθ)=θTXXTθ

由于 X T θ X^T\theta XTθ 是标量,所以转置并不会影响计算的结果,令 A = B = X T θ A=B=X^T\theta A=B=XTθ 解得 ∂ ( X T θ ) 2 ∂ θ = 2 X X T θ \frac{\partial \left( X^T\theta\right)^2}{\partial \theta}=2XX^T\theta θ(XTθ)2=2XXTθ

应用求导公式

利用求导公式计算最小二乘法的解

m × n m\times n m×n 矩阵 X X X 是数据特征,其中 每一行表示一个散点坐标,每一列表示一个特征。 n × 1 n \times 1 n×1 列向量 θ \theta θ 是所有回归系数, m × 1 m\times 1 m×1 向量 Y Y Y 是数据标签,每行是一个数据对应的标签。最小二乘法要解决的问题为“找到让代价函数最小化的系数组 θ \theta θ”,即:

min ⁡ θ { ( X θ − Y ) 2 } \min_\theta\{(X\theta-Y)^2\} θmin{(XθY)2}

其中 X θ − Y X\theta-Y XθY 是一个 m × 1 m\times 1 m×1 的向量,我们定义:

( X θ − Y ) 2 = ( X θ − Y ) T ( X θ − Y ) = θ T X T X θ − θ T X T Y − Y T X θ + Y T Y (X\theta-Y)^2=(X\theta-Y)^T(X\theta-Y)=\theta^TX^TX\theta-\theta^TX^TY-Y^TX\theta+Y^TY (XθY)2=(XθY)T(XθY)=θTXTXθθTXTYYTXθ+YTY

按照上述求导法则对上式求导(为了最终得到一个 n × 1 n\times 1 n×1 的梯度向量, ( Y T X θ ) ′ = X T Y \left(Y^TX\theta\right)'=X^TY (YTXθ)=XTY 而不是取 Y T X Y^TX YTX):

2 X T X θ − 2 X T Y = 0 2X^TX\theta-2X^TY=0 2XTXθ2XTY=0

Y T Y Y^TY YTY 为常数,在求导过程中消去了。当 X T X X^TX XTX 可逆时,可以解得:

θ = ( X T X ) − 1 X T Y \theta=\left(X^TX\right)^{-1}X^TY θ=(XTX)1XTY

时,函数取得极值,此时的 θ \theta θ 为代价函数的极小值点。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值