原文请点击
关于最小二乘问题的求解,之前已有梯度下降法,还有比较快速的牛顿迭代。今天来介绍一种方法,是基于矩阵求导来计算的,它的计算方式更加简洁高效,不需要大量迭代,只需解一个正规方程组。
在开始之前,首先来认识一个概念和一些用到的定理。矩阵的迹定义如下:
一个 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=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzY4OS9mOGRiMjMwZTIyYzA5MjVhZWFlOGFjMDY3ZWZiNDBjOS5wbmc=)
那么进一步得到
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzEyNi8wYzJkYzRhZGFjNjNmMDI0ZmE3NmY5MTczMmVjODM1Ni5wbmc=)
接下来会涉及到矩阵求导,因为
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzM4MS81MjU2ZjFjNjY2Zjk3ODhhNWY4ZGI4MDg4YjJkMzk4ZC5wbmc=)
那么进一步利用矩阵求导并利用上述定理,得到
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzUwOC8zYWEwNzgxODliNTJiNzBlNmMxNjJiOTRhOTU1Y2FiNC5wbmc=)
我们知道在极值点处梯度值为零,即
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzg3My9iMzJlODczYzY5ZWEwNTVmMDA2YTU1ODM3NjVkMThkOS5wbmc=)
上述得到的方程组叫做正规方程组,那么最终得到
![[机器学习] 矩阵求导最小二乘问题 [机器学习] 矩阵求导最小二乘问题](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzQzMi8wZTI4NjU1OWI1YzJkMWU1YzBhOTE0ODFhOWMwNTdlOC5wbmc=)
这样最小二乘问题只需解一个线性方程组即可,不再需要像梯度下降那样迭代了。
既然说到了正规方程组,在介绍一种方程组,叫做超定方程组,它的定义为:把方程个数大于未知量个数的方
程组叫做超定方程组。通常来说,对于一个超定方程组来说,求最小二乘解只需要两边同时乘的转
置,然后得到正规方程组,然后解这个方程就得到了最小二乘解。