当前位置: 首页 > news >正文

深度学习调参新思路:Hyperband早停机制提升搜索效率

Hyperband是机器学习中一个相当实用的超参数调优算法,核心思路是用逐次减半来分配计算资源。说白了就是让一堆配置先跑几轮,表现差的直接踢掉,剩下的继续训练更多轮次。

这个方法的巧妙之处在于平衡了探索和利用。你既要试足够多的配置组合(探索),又要给有潜力的配置足够的训练时间(利用)。传统方法要么试得不够多,要么每个都试要很久浪费时间。

本文我们来通过调优一个lstm来展示Hyperband的工作机制,并和贝叶斯优化、随机搜索、遗传算法做了对比。结果挺有意思的。

Hyperband的工作原理
Hyperband结合了多臂策略和逐次减半算法(SHA)。多臂问题其实就是在探索新选择和利用已知好选择之间做权衡。

SHA则是具体的资源分配策略如下:给随机采样的配置分配固定预算(比如训练轮数),每轮评估后踢掉表现最差的,把剩余预算分给剩下的。Hyperband更进一步,用不同的初始预算跑多次SHA,这样既能快速筛选,又不会遗漏那些需要长时间训练才能显现优势的配置。

相比其他调优方法,Hyperband在处理大搜索空间时速度和效率优势明显。

下图展示了Hyperband如何逐步给获胜配置(#4)分配更多资源,虽然最开始的预算分配是随机的:

Hyperband工作流程

整个过程从Bracket 1开始,创建很多超参数配置,每个分配少量预算。然后逐步减少配置数量,同时增加幸存者的预算。到了Bracket 2,只给Bracket 1的幸存者(配置#1和#4)更多预算。最终在Bracket 3把全部预算给最优配置#4。

这种做法能有效探索广泛配置范围,同时快速淘汰表现差的,在探索和利用间找到平衡。

算法的四个关键步骤
定义预算和减半因子
首先要定义最大资源预算R(单个模型能训练的总轮数)和减半因子η(决定淘汰激进程度的预设因子)。减半因子常用2、3或4。每步都用η来减少配置数量,用η来增加幸存者预算。

计算Bracket数量
算法跑一系列bracket,每个bracket是用不同起始预算的完整SHA运行。最大bracket索引s_max的计算公式是:

其中η是减半因子,R是最大资源预算。算法从s_max个bracket迭代到零。

运行逐次减半
对每个bracket s,Hyperband确定起始的超参数配置数量n_s。有意思的是,初始预算小的bracket配置数量大,初始预算大的bracket配置数量小。

配置数量的数学定义:

其中n_s是当前bracket要评估的配置数量,R是最大资源预算,η是减半因子,s_max是最大bracket数,s是当前bracket索引。

每个bracket的初始预算r_s计算公式:

Hyperband先采样n_s个随机超参数配置,用初始预算r_s轮训练每个。然后根据性能选出前n_s/η个配置。这些"幸存者"继续训练更多轮,总共r_s⋅η轮。

这个减半候选数量、增加预算的过程持续进行,直到bracket中只剩一个配置或达到最大预算。

选择最终配置
所有bracket跑完后,选择表现最好的配置作为最终结果。Hyperband的效率就来自快速丢弃表现差的配置,把资源用来训练更有前景的配置。

演示:支持向量分类器
我们用SVC来演示具体工作过程,调优正则化参数C和核系数gamma。

搜索空间:C取[0.1, 1, 10, 100],gamma取['scale', 'auto', 0.1, 1, 10]

设置最大预算R = 81,减半因子η = 3。

最大bracket索引计算得出:

所以Hyperband会为s = 4, 3, 2, 1, 0运行bracket。每个bracket有不同的起始配置数量和初始预算:

Bracket 1 (s = 4):1个配置,初始预算9
Bracket 2 (s = 3):3个配置,初始预算3
Bracket 3 (s = 2):9个配置,初始预算1
Bracket 4 (s = 1):27个配置,初始预算1/3
Bracket 5 (s = 0):81个配置,初始预算1/9
以Bracket 3为例说明SHA过程:

初始运行时,Hyperband随机采样9个超参数配置,用1轮小预算训练每个,记录性能,保留前3个最佳配置丢弃其余6个。

第二轮,3个幸存者用3轮更大预算训练,保留前1个最佳配置。

最终轮,剩余配置用9轮最终预算训练,记录最终性能。

总预算R = 81就这样分布在各个bracket中,高效找到最佳配置。
更多案例:
github.com/yjndsrt/cn/issues/966
github.com/yjndsrt/cn/issues/965
github.com/yjndsrt/cn/issues/964
github.com/yjndsrt/cn/issues/963
github.com/yjndsrt/cn/issues/962
github.com/yjndsrt/cn/issues/961
github.com/yjndsrt/cn/issues/960
github.com/yjndsrt/cn/issues/959
github.com/yjndsrt/cn/issues/958
github.com/yjndsrt/cn/issues/957
github.com/yjndsrt/cn/issues/956
github.com/yjndsrt/cn/issues/955
github.com/yjndsrt/cn/issues/954
github.com/yjndsrt/cn/issues/953
github.com/yjndsrt/cn/issues/952
github.com/yjndsrt/cn/issues/951
github.com/yjndsrt/cn/issues/950
github.com/yjndsrt/cn/issues/949
github.com/yjndsrt/cn/issues/948
github.com/yjndsrt/cn/issues/947
github.com/yjndsrt/cn/issues/946
github.com/yjndsrt/cn/issues/945
github.com/yjndsrt/cn/issues/944
github.com/yjndsrt/cn/issues/943
github.com/yjndsrt/cn/issues/942
github.com/yjndsrt/cn/issues/941
github.com/yjndsrt/cn/issues/940
github.com/yjndsrt/cn/issues/939
github.com/yjndsrt/cn/issues/938
github.com/yjndsrt/cn/issues/937
github.com/yjndsrt/cn/issues/936
github.com/yjndsrt/cn/issues/935
github.com/yjndsrt/cn/issues/934
github.com/yjndsrt/cn/issues/933
github.com/yjndsrt/cn/issues/932
github.com/yjndsrt/cn/issues/931
github.com/yjndsrt/cn/issues/930
github.com/yjndsrt/cn/issues/929
github.com/yjndsrt/cn/issues/928
github.com/yjndsrt/cn/issues/927
github.com/yjndsrt/cn/issues/926
github.com/yjndsrt/cn/issues/925
github.com/yjndsrt/cn/issues/924
github.com/yjndsrt/cn/issues/923
github.com/yjndsrt/cn/issues/922
github.com/yjndsrt/cn/issues/921
github.com/yjndsrt/cn/issues/920
github.com/yjndsrt/cn/issues/919
github.com/yjndsrt/cn/issues/918
github.com/yjndsrt/cn/issues/917

http://www.jsqmd.com/news/2578/

相关文章:

  • 解决推理能力瓶颈,用因果推理提升LLM智能决策
  • 记录一次附加属性失效全过程
  • Java 与物联网(IoT):边缘计算与智能终端应用
  • 为你的数据选择合适的分布:8个实用的概率分布应用场景和选择指南
  • AI 落地应用最新工具集
  • 台风呢
  • Day07-C:\Users\Lenovo\Desktop\note\code\JavaSE\Basic\src\com\David\method-Demo041比较难
  • 架设moon节点
  • 字符串哈希模板
  • Markdown基本与阿法
  • 一例电动车充电器防反接电路分析
  • isEmpty/isNotEmpty/isNotBlank/isBlank-isAnyEmpty/isNoneEmpty/isAnyBlank/isNoneBlank
  • NetCore+Web客户端实现gRPC实时推送
  • 个人项目作业
  • 软工第二次作业--王腾
  • 牛客周赛 Round 110 E,F题解
  • 第5章:路由(Routing)与直连交换机(Direct Exchange)
  • 搜索百科(4):OpenSearch — 开源搜索的新选择
  • JAVA的计算方式
  • 安装 elasticsearch-9.1.4 - 集群 和 kibana-9.1.4
  • 反码 原码 补码
  • 线性结构常见应用之栈[基于郝斌课程]
  • 实测对比:权威榜单之公众号排版Top 5(含效果对比与适用建议)
  • go的泛型
  • 原码补码反码
  • lc1034-边界着色
  • 【汽车电子】汽车功能安全标准 ISO 26262
  • ISO 26262的不同安全等级:ASIL-D ASIL-C ASIL-B ASIL-A
  • C#学习1
  • 02020405 EF Core基础05-EF Core反向工程、EF Core和ADO.NET Core的联系、EF Core无法做到的事情