神经网络的优化问题-batchsize的选择

        令𝑓(𝒙; 𝜃)表示一个深度神经网络,𝜃 为网络参数,在使用小批量梯度下降进
行优化时,每次选取𝐾 个训练样本𝒮𝑡 = {(x^{\mathit{(k)}}, y^{\mathit{(k)}})},k = [1,..., K].第𝑡 次迭代(Iteration)
时损失函数关于参数𝜃 的偏导数为:

其中ℒ(⋅)为可微分的损失函数,𝐾 称为批量大小(Batch Size). 第𝑡 次更新的梯度g𝑡 定义为:

其中𝛼 > 0为学习率. 每次迭代时参数更新的差值Δ𝜃𝑡 定义为 

 从上面公式可以看出,影响小批量梯度下降法的主要因素有:1)批量大小𝐾、 2)学习率𝛼、 3)梯度估计.

本文介绍如何选择批量大小。

1.批量大小不影响随机梯度的期望,但会影响随机梯度的方差

        批量越大,随机梯度的方差越小,引入噪声也越小,训练越稳定,可以设置较大学习率
        批量较小时,需要设置较小的学习率,否则模型会不收敛

2.批量大小和学习率的关系?

        通常批量大小应该和学习率保持线性缩放规则

        假设batchsize为k,

\Delta \Theta _{t} = -\alpha g_{t}= -\frac{\alpha }{K} (\frac{\partial L_{1} + ......+ \partial L_{k}}{\partial \Theta _{t-1}})

        如果是batchsize是mk,

{\Delta \Theta _{t}}' = -\alpha g_{t}= -\frac{\alpha }{mK} (\frac{\partial L_{1} + ......+\partial L_{k} + \partial L_{k+1} + ....... + \partial L_{mk}}{\partial \Theta _{t-1}})

=\Delta \Theta _{t} = -m\alpha g_{t}= -\frac{\alpha }{K} (\frac{\partial L_{1} + ......+ \partial L_{k}}{\partial \Theta _{t-1}})

        可以假定{\partial L_{1} + ......+\partial L_{k} + \partial L_{k+1} + ....... + \partial L_{mk}} = m * ({\partial L_{1} + ......+\partial L_{k} + \partial L_{k+1}}),我们可以看到如果batchsize为mk,虽然它的样本的数量增加了,但是其梯度下降的速度和批量较小的k时是一样的,所以我们应该增大batchsize为mk时的学习率,以更快的收敛到最优解。从另一个方面来说,我们的batchisize越大,设置的学习率也应该越大,从而保证和批量较小的设置有同样速度的收敛效率。当然在实际应用中,两者并不是一个严格的线性关系,也就是说批量大小增大m倍,但是学习率不一定增大m倍。

         从图a可以看出,对于每一次的梯度更新,批量大小越大,下降效果越明显,并且下降曲线越平滑. 但从图b可以看出,如果按整个数据集上的回合(Epoch)数来看,则是批量样本数越小,下降效果越明显.适当小的批量会导致更快的收敛.这是因为虽然每次迭代批量大的损失下降更快,但是对于一个epoch,批量小的迭代次数多,所以在每个epoch反而批量小的收敛更快。 此外,批量大小和模型的泛化能力也有一定的关系.[Keskar et al., 2016]通 过实验发现:批量越大,越有可能收敛到尖锐最小值;批量越小,越有可能收敛到平坦最小值.

        批量大小的选择可以考虑几个方面:

        从效率上将,批量的大小应该充分利用GPU的并行计算能力,GPU能放多少就放多少。但是批量越大,优化效率反而慢,所以需要折衷。此外,批量越小,随机性越强,可以使得模型的泛化能力越强。如果训练数据很多,模型的泛化性就不是要考虑的指标,可以将批量大小设置最大以充分利用计算资源,但是如果训练数据较少,模型的泛化能力就需要考虑,这时应该将批量设置小一些。在具体实践中批量的大小还需要实验得出。

        

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值