首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >"深恶痛绝"的超参

"深恶痛绝"的超参

作者头像
炼丹笔记
发布2021-05-14 17:36:07
8560
发布2021-05-14 17:36:07
举报
文章被收录于专栏:炼丹笔记炼丹笔记

时晴,文章框架源于引文[1]

说到超参,不得不先提到参数,这两个是有本质区别的。对于神经网络而言,学习率、batchsize等都是超参,而参数就是网络中所有的weight。可以这样简单的区分超参和参数,在模型训练前需要固定的参数就是超参,而参数受到训练数据和超参的影响,按照优化目标逐步更新,到最后得到该超参下的最优模型。超参的重要性不言而喻,那么如何正确的设定超参呢?

如何选择好的超参

  • 手动调超参: 用这个方法,需要人工按照试验过程中得出的经验人工指定各个超参的组合,这个过程冗长且乏味,如果有大量的超参,组合是指数级别增加,手动调是不切实际的。
  • 自动调超参: 用这个方法,超参会用一种算法自动优化。

调整超参的方法

Random Search

先给出每个超参可能的值,然后每次迭代使用这些值的随机组合训练模型,参考最终的评估指标,选择最好效果的超参。

Grid Search 网格搜索大家也并不陌生,同随机搜索不同的是,会按照一种特定的顺序选择超参,参考最终的评估指标,选择最好的超参。如下图所示:

贝叶斯优化

和用梯度下降方法找到最优参数降低模型loss类似,找正确的超参也是一个优化问题,贝叶斯优化帮助我们在较少的尝试次数下找到最优解。通过已经观测到的提升的细节,定义一个函数,知道超参的采样。

详情见 https://en.wikipedia.org/wiki/Bayesian_optimization。

Tree-structured Parzen estimators (TPE)

这个方法和贝叶斯方法类似,并不是对p(y|x)进行建模(x表示超参,y表示我们要优化的模型),而是对p(x|y)和p(y)进行建模。TPE的缺点就是该方法没有描述各个超参之间的联系,该方法在实践效果非常好。

详情见 https://optunity.readthedocs.io/en/latest/user/solvers/TPE.html。

超参调参算法

Hyperband

这是一种随机搜索的方法,但是有一些探索理论的指导,从而合理分配搜索各个参数的时间。

详情见论文《Hyperband: A Novel Bandit-Based Approach to Hyperparameter Optimization》 https://arxiv.org/pdf/1603.06560.pdf

Population-based training (PBT)

这种方法集成了2种常用的参数搜索方法(随机搜索,人工搜索),用于神经网络模型调超参。PBT先用随机参数并行训练多个模型,这些模型并不是相互独立的。该算法使用population的信息去提炼超参,并决定用哪种参数。

详情见 https://deepmind.com/blog/article/population-based-training-neural-networks

BOHB

混合贝叶斯方法和Hyperband方法进行超参搜索。

详情见 https://www.automl.org/blog_bohb/

超参利器

  • Scikit-learn(grid search, random search): https://scikit-learn.org/stable/
  • Hyperopt: http://hyperopt.github.io/hyperopt/
  • Scikit-Optimize: https://scikit-optimize.github.io/
  • Optuna: https://optuna.org/
  • Ray.tune: https://docs.ray.io/en/latest/tune/index.html

参考文献

1.https://neptune.ai/blog/hyperparameter-tuning-in-python-a-complete-guide-2020

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档