13.3. 小批量梯度下降算法
本文最后更新于 2024年1月27日 下午
小批量梯度下降算法
小批量梯度下降算法(Mini-batch gradient descent)是另一种改善由大数据造成的计算量问题的梯度下降算法。小批量梯度下降算法的思路介于批量梯度下降算法和随机梯度下降算法之间,在一些情况下的表现比随机梯度下降算法更为出色。
小批量梯度下降算法的思路
回顾之前的梯度下降算法:
- 批量梯度下降算法在一次迭代中使用了数据集中所有的样本
- 随机梯度下降算法在一次迭代中使用了数据集中的一个样本
而小批量梯度下降算法介于这两者之间,在一次迭代中选择使用\(b\)个样本,称为数据集中的一批(Batch)数据。\(b\)是每一批数据的批量大小(Batch-size)。通常\(b\)在2-100之间,常取\(b=10\)作为一次迭代所使用的数据量。
内循环的更新方程:
使用一个Batch的数据,求出平均梯度以更新\(θ_j\)。
\[θ_j:=θ_j-α\frac{1}{b}∑_{k=i}^{i+b-1}(h_θ(x^{(k)})-y^{(k)})x_j^{(k)}\]
更新指针\(i\)以切换到下一个batch:
\[i:=i+b\]
直到所有batch的数据都执行完这一流程,重复遍历直到找到使得\(J_{train}(θ)\)最小化的\(θ_j\)。
隐式并行性
如果有合适的向量化工具,小批量梯度下降算法在内循环的部分拥有并行性,意味着能够在一次迭代内能够并行计算多个batch的梯度并更新\(θ_j\)。虽然随机梯度下降也具有并行性,但是如果将随机梯度下降做并行处理,同时计算每一个样本的梯度,这样消耗的并行计算资源要比小批量梯度下降算法大得多。
因此如果将小批量算法利用合适的向量化工具并行化,其计算速度会比批量梯度下降和随机梯度下降要快的多。