最小均方(Least Mean Square)可认为是机器学习里面最基本也比较有用的算法,神经网络中对参数的学习使用的就是LMS的思想,在通信信号处理领域LMS也非常常见,比如自适应滤波器。本文理论上介绍基于LMS的梯度下降算法(包括batch training/stochastic training)
1. 问题引入
假设有m组数据(三维空间上的点,形如:(x1,x2,y)),x表示输入,y表示输出,为了预测新的输入时,得到的输出,假设模型为线性如下:
接下来的问题在于求解omega值。首先我们引入平方损失函数:
该损失函数为最小二乘法中计算误差的函数,损失函数值越小,说明模型与当前已知数据的拟合程度越好,否则越差。因此,求解omega的目标就是求解J(w)最小,这就用到了LMS算法。
2. LMS算法
LMS算法是一个搜索算法,假设w从某个给定的初始值开始迭代,逐渐使J(W)朝着最小的方向变化,直到达到一个值使J(w)收敛。考虑梯度下降算法(gradient descent algorithm),它通过给定的w值快速的执行如下的更新操作:
其中alpha为学习率(Learning rate)。要对w更新,首先需要完成上面的求导,求导的结果带入式子后如下(对一个单一的训练实例j):
按照上述的更新方法,对多个实例的更新规则为:
while convergence {
for every j{
}}
这种更新的梯度下降方法称为batch gradient descent。还有一种更新的方式:采用随机的样本数据实例,如下:
while convergence {
for every j{
}}
这种方法称为stochastic gradient descent (或者incremental gradient descent)。两种方法的明显区别是batch的训练时间要比stochastic常,但效果可能更好。实际问题中,因为我们只需要找到一个接近使J(w)最小的值即可,因此stochastic更常用。
LMS到底能用来干嘛,其实上面已经很清楚了:参数训练中的求极值。