原文请点击
关于最小二乘问题的求解,之前已有梯度下降法,还有比较快速的牛顿迭代。今天来介绍一种方法,是基于矩阵求导来计算的,它的计算方式更加简洁高效,不需要大量迭代,只需解一个正规方程组。
在开始之前,首先来认识一个概念和一些用到的定理。矩阵的迹定义如下:
一个 n*n 的矩阵的迹是指的主对角线上各元素的总和,记作tr(A)。即
tr(A)=∑i=1naii
定理1:
tr(AB)=tr(BA)
证明:tr(AB)=∑ni=1(AB)ii=∑ni=1∑mj=1AijBji=∑mj=1∑ni=1BjiAij=∑mj=1(BA)jj=tr(BA)
定理2:
tr(ABC)=tr(CAB)=tr(BCA)
证明:把AB或者BC当作整体,由定理1可知道成立
定理3:
∂tr(AB)A=∂tr(BA)A=BT, 其中A是 m*n的矩阵,B是n*m的矩阵。
证明:
tr(AB)=⎡⎣⎢⎢⎢⎢a11a21⋮am1a12a22⋮am2⋯⋯⋱⋯a1na2n⋮amn⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢b11b21⋮bn1b12b22⋮bb2⋯⋯⋱⋯b1mb2m⋮bnm⎤⎦⎥⎥⎥⎥
我们只考虑对角线上的元素,那么有
tr(AB)=∑ni=1a1ibi1+∑ni=1a2ibi2+...+∑ni=1amibim=∑mi=1∑nj=1aijbji
∂tr(AB)∂A=bji=BT
定理4:
∂tr(ATB)∂A=∂tr(BAT)∂A=B
证明:
证明步骤和定理3一样, 很容易,不再赘述。
定理5:
tr(A)=tr(AT)
定理6:
如果 a 是一个实数, 那么有 tr(a)=a
定理7:
∂tr(ABATC)∂A=CAB+CTABT
证明:
分步骤求导:
∂tr(ABATC)∂A=∂tr(ABATC)∂A+∂tr(ATCAB)∂A
=(BATC)T+CAB
=CAB+CTABT
好了,有了上述7个定理,就可以来求最小二乘解了。设
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpZNE9TOW1PR1JpTWpNd1pUSXlZekE1TWpWaFpXRmxPR0ZqTURZM1pXWmlOREJqT1M1d2JtYz0=)
那么进一步得到
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpFeU5pOHdZekprWXpSaFpHRmpOak5tTURJMFptRTNObVk1TVRjek1tVmpPRE0xTmk1d2JtYz0=)
接下来会涉及到矩阵求导,因为
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpNNE1TODFNalUyWmpGak5qWTJaamszT0RoaE5XWTRaR0k0TURnNFlqSmtNems0WkM1d2JtYz0=)
那么进一步利用矩阵求导并利用上述定理,得到
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpVd09DOHpZV0V3TnpneE9EbGlOVEppTnpCbE5tTXhOakppT1RSaE9UVTFZMkZpTkM1d2JtYz0=)
我们知道在极值点处梯度值为零,即
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpnM015OWlNekpsT0Rjell6WTVaV0V3TlRWbU1EQTJZVFUxT0RNM05qVmtNVGhrT1M1d2JtYz0=)
上述得到的方程组叫做正规方程组,那么最终得到
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9YUhSMGNITTZMeTl3YVdGdWMyaGxiaTVqYjIwdmFXMWhaMlZ6THpRek1pOHdaVEk0TmpVMU9XSTFZekprTVdVMVl6QmhPVEUwT0RGaE9XTXdOVGRsT0M1d2JtYz0=)
这样最小二乘问题只需解一个线性方程组即可,不再需要像梯度下降那样迭代了。
既然说到了正规方程组,在介绍一种方程组,叫做超定方程组,它的定义为:把方程个数大于未知量个数的方
程组叫做超定方程组。通常来说,对于一个超定方程组来说,求最小二乘解只需要两边同时乘的转
置,然后得到正规方程组,然后解这个方程就得到了最小二乘解。