梯度下降(Gradient Descent)又称最速下降,是迭代法的一种,可以用于求解最小二乘法(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一。在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
在这里简单说一下三种梯度下降
Batch Gradient Descent
遍历全部的数据集,然后算一次损失函数,计算对各个参数的梯度然后更新参数。这也是我们常说的Gradient Descent。但该方法性能较好(因为所有训练样本一起做迭代,每次更新权重都是是整体cost function最小化),但是当样本较大时,每次更新需要把所有的样本查看一遍,开销大,速度较慢。
Stochastic Gradient Descent
每看到一个数据都计算一次损失函数,然后进行梯度更新。该方法速度快,但是收敛性能不好,可能在最优点盘旋,不会落在最优点。而且有可能两次参数的更新会抵消掉,从而造成目标函数的震荡。
Mini-batch Gradient Descent
将数据分为若干批,按照批来更新参数,这样一批中的数据共同决定了本次的梯度方向,属于batch和stochastic的折中,减少了随机性。而且在GPU中对矩阵可以平行运算,每批处理的事件和SGD单个数据处理的事件一样。但是batch size不易选择过大,过大会导致泛化能力的下降。