深度学习训练(优化)参数的玄学解释

本文探讨了深度学习优化过程中的关键要素,包括如何避免梯度局部最小和鞍部点,解释了大批次训练与小批次训练的权衡,以及引入动量来改善优化。此外,还讨论了学习率调整策略如衰减和warmup对模型稳定性和泛化能力的影响。提到在损失函数选择上,交叉熵通常优于MSE,并介绍了batch normalization如何平滑优化路径。最后,强调了正确设置学习率和使用适当优化策略对于模型性能的重要性。
摘要由CSDN通过智能技术生成

优化的目标:更好、更快

梯度局部最小

优化的头号敌人是梯度为零,梯度为零即有众所周知的局部最小,还有鞍部点。

但幸好在高维空间局部最小并非经常出现,例如下面左图,在一维空间上红点是局部最小,但在二维空间上红点是鞍部点。实际模型参数空间十分复杂,在右侧二维空间的局部最小也在高维空间中大多不是局部最小。

batch size

用大batch size还是小的呢?较大的batch size训练更快,较小的batch size精度和泛化能力更好。

What?batch size不是越大越好么?实际上不是的。较大batch容易得到陡峭的最优,但越陡峭模型在测试时容易不太稳定,泛化能力减弱。但是经过特别的设计,大的batch可以又快又好。

那平时训练时是不是用batch 1与8差别会很大呢?不是的。batch大小的差别到10k上才会有显著的差异。可以放心用“大”一点的batch了。

Momentum

既然局部最优是坑,那怎么趟过去呢?那就不要只看局部,便有了momentum(类似物理学动量),考虑之前所有梯度。

学习率

不同的参数需要不同学习率才能学习的较好,那么有没有什么自动的方法呢?最经典的就是Adam:RMSProp+momentum

上面没有直接修改学习率,对梯度小的情况有良好的改善,但还是可能出现问题

那么一些学习率调整策略(黑科技)便被提了出来,一是学习率衰减,而是warm up。学习率调整的策略(poly,cosine等结合warmup)目前也基本是各种训练的标配

损失函数

在one-hot问题中交叉熵优于MSE

batch normalization

之前已经知道模型空间十分复杂,看起来崎岖陡峭,不同维度梯度差异显著,这种情况下优化就比较费劲。那通过平滑岂不就让训练变容易。所以我们常对输入数据进行归一化,同理对特征层也可以归一化,比如batch normalization。正如下图所示

对特征做归一化和对输入数据做是相似的方法。实际上对输入数据是否做归一化,对训练影响不大(个人经验)。

这里蓝线比黑色虚线在效率和精度上都有显著提升…真实神器

参考:李宏毅 机器学习

https://www.bilibili.com/video/BV1Wv411h7kN?p=7

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值