LS是Least Square的首字母。这一要说明的是:1/2是自己添加的,目的是为了约去对Jls进行微分时得到的2。平方误差可以理解为每一次观测残差的L2范数。所以很多情况下,最小二乘学习法也被称为L2范数损失最小化学习法。
如果使用线性模型:
训练样本的平方差Jls就能够表示为下面的形式:
在这里,y=(y1,..,yn)是训练输入的n维向量(更多的时候,我们把它称为标签),Φ是下式中定义的n*b阶矩阵,也称为设计矩阵。
训练样本的平方差Jls的参数向量Θ的偏微分可以计算得到:
当偏微分等于0时,可以取得极值,最小二乘关系可以表示为下式:
求解参数Θ的过程,实际上就是计算逆矩阵的过程,即:
我们需要注意的是:相对于只有方阵、非奇异矩阵才能定义逆矩阵,广义逆矩阵则是矩形矩阵或奇异矩阵都可以定义,是对逆矩阵的推广。
目标:使用三角多项式基函数:
基于参数的线性模型进行最小二乘法学习,实现对复杂非线性函数的近似。
对顺序为i的训练样本的平方差通过权重wi≥0进行加权,然后再采用最小二乘学习,这称为加权最小二乘学习法。
加权最小二乘学习法,与没有权重时相同。
通过下式可以进行求解:
上式中,W是以w1,w2,...,wn为对角元素的对角阵。
首先来考虑设计矩阵Φ的奇异值分解:
上述三个参量分别称为奇异值、左奇异向量、右奇异向量。奇异值全部是非负的,奇异向量满足正交性:
注意:使用MATLAB中的SVD函数,可以非常简单地进行奇异值求解。
进行奇异值分解后,Φ的广义矩阵Φ’就可以表示为下式:
设计矩阵Φ的维数为n*b,当训练样本数n或参数个数b是非常大的数值的时候,经常会出现计算机内存不足的现象。在这种情况下,使用随机梯度算法(SGD)往往会产生很好的效果。随机梯度是指,沿着训练平方误差Jls的梯度下降,对参数Θ一次进行学习的算法。其原理可以用下图表示:
一般而言,与线性模型相对应的训练平方误差Jls为凸函数。J(Θ)函数为凸函数是指,对于任意的两点Θ1,Θ2和任意的t∈[0,1];都有下式成立:
因为凸函数是只有一个峰值的函数,所以通过梯度法就可以得到训练平方误差Jls在值域范围内的最优解,即全局最优解。
对于下式的高斯核函数模型:
采用最小二乘法的随机梯度算法如下所示:
将训练样本数n设定为50,高斯核h设定为0.3,在本例中,从随机、任意的初始值开始学习,经过200次迭代后,基本上就得到了近似的函数结果。但是,如果在这之后想要得到较为理想的收敛结果,则共需要11556次的迭代结果。
梯度法的收敛速度,强烈依赖于梯度下降的幅度以及收敛结果的判断方法。如果能够合理地调整这些值得设置,收敛速度也能得到一定程度的提高。例如,对于梯度下降的步幅,可以首先将其设置为较大的值,然后慢慢地设置为较小的值。然而在实际操作过程中,想要将梯度下降的步幅设置为最优,是很困难的。
