机器学习调参指南:提升模型性能的关键步骤

诸神缄默不语-个人CSDN博文目录

在机器学习和深度学习的领域中,模型的调参(参数优化)是一个至关重要的步骤。良好的参数设置可以显著提升模型的性能。本文将介绍在模型调参过程中的关键步骤和技巧。

1. 学习率 & 优化器

一般来说,越大的batch-size使用越大的学习率。
原理很简单,越大的batch-size意味着我们学习的时候,收敛方向的confidence越大,我们前进的方向更加坚定,而小的batch-size则显得比较杂乱,毫无规律性,因为相比批次大的时候,批次小的情况下无法照顾到更多的情况,所以需要小的学习率来保证不至于出错。

不同batch size对应不同的最优lr:
在这里插入图片描述

大多数采用的优化算法还是adam和SGD+monmentum。

Adam 可以解决一堆奇奇怪怪的问题(有时 loss 降不下去,换 Adam 瞬间就好了),也可以带来一堆奇奇怪怪的问题(比如单词词频差异很大,当前 batch 没有的单词的词向量也被更新;再比如Adam和L2正则结合产生的复杂效果)。用的时候要胆大心细,万一遇到问题找各种魔改 Adam(比如 MaskedAdam[14], AdamW 啥的)抢救。

但看一些博客说adam的相比SGD,收敛快,但泛化能力差,更优结果似乎需要精调SGD。

adam,adadelta等, 在小数据上,我这里实验的效果不如sgd, sgd收敛速度会慢一些,但是最终收敛后的结果,一般都比较好。

如果使用sgd的话,可以选择从1.0或者0.1的学习率开始,隔一段时间,在验证集上检查一下,如果cost没有下降,就对学习率减半. 我看过很多论文都这么搞,我自己实验的结果也很好. 当然,也可以先用ada系列先跑,最后快收敛的时候,更换成sgd继续训练.同样也会有提升.据说adadelta一般在分类问题上效果比较好,adam在生成问题上效果比较好。

adam收敛虽快但是得到的解往往没有sgd+momentum得到的解更好,如果不考虑时间成本的话还是用sgd吧。

adam是不需要特别调lr,sgd要多花点时间调lr和initial weights。

2. batch size

在显存足够的条件下,最好采用较大的batch-size进行训练,找到合适的学习率后,可以加快收敛速度。
另外,较大的batch-size可以避免batch normalization出现的一些小问题,参考1

3. 网格搜索

网格搜索(Grid Search)是一种通过遍历给定的参数组合来优化模型性能的方法。它适用于参数数量较少时的情况。将所有可能的参数组合进行尝试,找到最优的组合。

4. 随机搜索

与网格搜索相比,随机搜索(Random Search)在参数空间内随机选择参数组合进行尝试。这种方法适用于参数空间较大时,可以在更广阔的范围内搜索最优参数。

5. 贝叶斯优化

贝叶斯优化是一种更为高级的参数优化方法,它利用概率模型预测参数组合的效果,并据此更新搜索策略。这种方法在处理高维参数和复杂约束时非常有效。

6. 使用交叉验证避免过拟合

在调参过程中,使用交叉验证(Cross-validation)能有效避免模型过拟合。通过将数据集分为几部分,分别用作训练和验证,可以更准确地评估模型在未见数据上的性能。

7. 考虑正则化

正则化技术,如L1和L2正则化,可以帮助减少模型复杂度,防止过拟合,是调整模型的一个重要方面。

8.

8. 实验和记录

在调参过程中,进行大量的实验并记录每次实验的设置和结果是非常重要的。这有助于理解哪些参数对性能影响最大,以及如何进一步调整参数以提高性能。

9. 模型的早停法

在训练过程中使用早停法(Early Stopping)可以在模型开始过拟合之前停止训练,这是一种有效的防止过拟合的策略。

10. 总结

调参是一个既艺术又科学的过程。理解模型的工作原理和数据的特性是关键。同时,调参也需要实验和实践的经验。希望本文能够帮助你更有效地调整模型参数,提升你的机器学习和深度学习模型的性能。


调参是机器学习和深度学习项目成功的关键,希望通过这篇文章,你能获得调参的启发和指导,从而在你的项目中取得更好的成果。

本文撰写过程中使用到的其他参考资料

  1. 数据竞赛中如何优化深度学习模型

其他学习资料

  1. 学习率
    1. How Do You Find A Good Learning Rate
    2. Cyclical Learning Rates for Training Neural Networks
    3. 机器学习算法如何调参?这里有一份神经网络学习速率设置指南
    4. SGDR: Stochastic Gradient Descent with Warm Restarts
  2. 优化器
    1. MaskedAdam
  3. Searching for Activation Functions

  1. https://github.com/pytorch/pytorch/issues/4534:大致来说就是batch size为1时BN会出问题 ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸神缄默不语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值