梯度下降法存在一些变体, 本文讨论三种,即vanilla(batch),stochastic 和 mini-batch。不同之处在于,我们使用多少数据来计算目标函数的梯度。
1. 批量梯度下降法(Vanilla\Batch Gradient Descent)
Vanilla指的是某一事物标准,通常或者未修改的版本。所以批量梯度下降法就是基本的梯度下降法,即在整个数据集上对每个参数求目标函数的偏导数。
优点:
当目标函数为凸函数,批量梯度下降法必然会在全局最小值处收敛(否则可能会在局部极小值处收敛)
缺点:
每次更新我们都需要在整个数据集上求出所有的偏导数,因此批量梯度下降法的速度比较慢,甚至对于较大的、内存无法容纳的数据集,该方法甚至无法被使用。同时不能“在线”更新模型,也就是不能在运行时加入新的样本进行运算。
2. 随机梯度下降法(Stochastic Gradient Descent)
随机梯度下降法的每次更新,是仅选取数据集的一个样本求梯度。即如下公式。
θ j : = θ j + α ( y ( i ) − h θ ( x 0 ( i ) , x 1 ( i ) . . . , x n ( i ) ) ) x j i \theta_j:=\theta_j+\alpha(y_{(i)}-h_{\theta}(x^{(i)}_0,x^{(i)}_1... ,x^{(i)}_n))x^{i}_j θj