BATCH批量训练和梯度下降动量法(李宏毅老师机器学习2021笔记)

优化问题

随着训练时间推移,损失函数的大小开始在某一值处震荡,但是并没有降低到理想程度,原因是梯度为零

梯度为零的点

梯度为零有两种可能

如图所示,这两点是critical point

  • 局部最小点:接下来无路可走
  • 鞍点:可以逃离(数学依据,一般比较复杂,不采用数学方法上的检测)

局部最优

事实上, 通常我们选定的参数维度较高,在高维空间中,局部最优的情况是少见的。

如何解决陷入critical的难题?

BATCH

将数据集分批训练,假设有 n n n个数据,每一个batch的大小为batch_size,则共有n//batch_szie+1个batch,称为一个epoch。每进行一次epoch,都要shuffle操作(打乱数据集数据喂入模型的顺序,以获得较好的效果)。

  • 全批量梯度下降法full_batch,batch_size = n
  • 随梯梯度下降法,batch_size = 1
  • 小批量梯度下降法mini_batch,batch_size = 1-n

一次梯度更新和一轮梯度更新时间对比群

大batch和小batch的性能对比

在训练集上,batch_size越小,性能越佳;batch_size越大,性能越差,为什么?

如图所示,如果采用full_batch,当梯度为零时,不太好逃离局部最小,因为是在整个训练集上做的损失函数;而如果采用mini_batch,因为每一次梯度下降由于batch的数据不同,损失函数也略不一样,即使某个batch上的损失函数陷入局部最小,但是在训练其他batch的时候可能逃离局部最小,所以可能达到更好的效果。

在测试集上,同样batch_size越小,性能越佳;batch_size越大,性能越差,为什么?

机器学习的假设是训练集和测试集数据来自同一分布,但是训练损失函数和测试损失函数还会略有不同,如图所示,我们把梯度为零的局部最小点分为两种

  • flat minima
  • sharp minima
    在flat minima附近,训练集的损失函数和测试集的损失函数大体相当,但是在sharp minima附近,却可能截然相反,造成测试误差和训练误差有很大的不同,而采用full_batch训练,更有可能使模型陷入sharp minima。

small batch和large batch比较

如图所示,第二列中为什么训练short_batch和训练large_batch时间接近?
答:并行计算

动量momentum

动量梯度下降是根据现实世界物体运动的惯性而提出的,在梯度下降中,即使下降到局部最小值点出,也可以由于惯性而跳出局部最小值点,从而避开了critical point。

对比一下梯度下降法和动量梯度下降法

  • 梯度下降法

初始化参数 θ 0 \theta^0 θ0
计算梯度 g 0 g^0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值