[机器学习] 矩阵求导最小二乘问题

原文请点击
关于最小二乘问题的求解,之前已有梯度下降法,还有比较快速的牛顿迭代。今天来介绍一种方法,是基于矩阵求导来计算的,它的计算方式更加简洁高效,不需要大量迭代,只需解一个正规方程组。

在开始之前,首先来认识一个概念和一些用到的定理。矩阵的迹定义如下:

一个 n*n 的矩阵的迹是指的主对角线上各元素的总和,记作tr(A)。即

tr(A)=i=1naii

定理1:
tr(AB)=tr(BA)

证明:tr(AB)=i=1n(AB)ii=i=1nj=1mAijBji=j=1mi=1nBjiAij=j=1m(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)=[a11a12a1na21a22a2nam1am2amn]=[b11b12b1mb21b22b2mbn1bb2bnm]

我们只考虑对角线上的元素,那么有

tr(AB)=i=1na1ibi1+i=1na2ibi2+...+i=1namibim=i=1mj=1naijbji

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个定理,就可以来求最小二乘解了。设
[机器学习] 矩阵求导最小二乘问题

那么进一步得到
[机器学习] 矩阵求导最小二乘问题

接下来会涉及到矩阵求导,因为
[机器学习] 矩阵求导最小二乘问题

那么进一步利用矩阵求导并利用上述定理,得到
[机器学习] 矩阵求导最小二乘问题

我们知道在极值点处梯度值为零,即
[机器学习] 矩阵求导最小二乘问题

上述得到的方程组叫做正规方程组,那么最终得到
[机器学习] 矩阵求导最小二乘问题

这样最小二乘问题只需解一个线性方程组即可,不再需要像梯度下降那样迭代了。

既然说到了正规方程组,在介绍一种方程组,叫做超定方程组,它的定义为:把方程个数大于未知量个数的方

程组叫做超定方程组。通常来说,对于一个超定方程组来说,求最小二乘解只需要两边同时乘的转

置,然后得到正规方程组,然后解这个方程就得到了最小二乘解。