有很多机器学习的模型的最优化参数不能像普通最小二乘法那样算出解析解,此时需要使用迭代优化方法。梯度下降优化方法是通过让w值沿着梯度下降的方向逐步迭代演进,从而使得损失函数最小化的过程。
梯度下降的数学表达式:
(1)
其中是步长,也叫学习率,学习率选的大,损失函数不收敛,选的小,收敛又太慢。:= 表示迭代运算。
在《机器学习学习笔记(4)----线性回归的数学解析》中我们推导过线性回归模型的损失函数的梯度公式:
(2)
把公式(2)代入到公式(1),就可以对w值进行迭代优化了。执行梯度下降算法的每一步都是基于整个训练集X计算梯度的,因此梯度下降也被称为批量梯度下降。因为每次都使用整个训练集样本计算梯度,在训练集很大时,梯度下降算法会运行缓慢。
我们对(2)式,把矩阵展开,进行计算:
对于梯度的推导结果,我们可以做如下近似处理,就是从训练集的样本中抽取小批量的样本进行计算,我们认为这个计算结果也是接近于用整个训练集计算的梯度结果:
(3)
把公式(3)代入到公式(1),得到:
(4)
这个就是小批量梯度下降优化方法。极端情况,我们取N=0,每次只随机计算一个样本,公式(4)简化为:
(5)
这个就是随机梯度下降优化方法,每次随机抽取一个样本进行计算,运算速度快,但收敛会不稳定。
相对而言,小批量梯度下降是介于批量梯度下降和随机梯度下降之间的折中方案,每一步既不使用整个训练集又不使用单个样本,而是使用一小批样本计算梯度。计算速度会比较快,但是收敛又相对稳定。
参考资料:
《Python机器学习算法:原理,实现与案例》
《快乐机器学习》