欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

随机梯度下降法 SGD

程序员文章站 2022-06-27 10:37:01
...

1. 梯度下降

batch_size = 1: SGD
batch_size = n: mini-batch
batch_size = 全部训练集大小:batch SGD

对比:
(1)batch SGD: 噪声小, 幅度大一些;
(2)mini-batch SGD: 效率高, 收敛快;
我们实际在pytorch等框架使用的SGD,只要指定的batch size不等于 1, 就是 mini-batch SGD。
(3)SGD:大部分时候向着全局最小值靠近, 但是有时候会远离最小值,SGD会有很多的噪声。 SGD永远不会收敛, 而是一直在最小值附近波动。一次只处理一个训练样本, 效率很低。

2. Batch_size 大小对训练效果的影响

(1)batch size 太小, 模型的表现效果很差, error飙升;
(2)batch size 增大,处理速度更快;
(3)随着batch_size增大, 达到相同精度需要的epoch会更多;
(4)由于最终收敛的精度会陷入不同的局部极值, 因此,batch size增大到某些时候,达到的最终收敛精度上的最优。

3. pytorch API

torch.optim.SGD(params, lr=<required parameter>, momentum=0, dampening=0, weight_decay=0, nesterov=False)

参考:

  1. 6. 随机梯度下降法(SGD);
  2. Is the SGD in Pytorch a real SGD?;
  3. Github sgd.py
相关标签: 算法