随机梯度下降法 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)
参考: