实用机器学习笔记二十五:超参数优化
前言:
本文是个人在 B 站自学李沐老师的实用机器学习课程【斯坦福 2021 秋季中文同步】的学习笔记,感觉沐神讲解的非常棒 yyds。
搜索空间:
超参数优化首先要确定在什么样的搜索空间里进行优化,下面以具体的目标检测的例子来说:
明确每一个超参数的搜索空间:
需要先选择一个预训练模型 model(backbone)
学习率的优化,从上图中可以看出,先对其取对数,参数就可以在 1-6 之间取,然后再从对数变回来。
根据经验需要好好设计超参数的搜索空间来提升效率
HPO 算法:
Black-box:
把每一次的训练当做一个黑盒,训练完成后,之需要把模型或者性能指标反馈给我们。
可以适用于任何机器学习算法
网格搜索:
实际上是一个穷举算法。把所有的组合都过一遍,最终返回最终结果
搜索空间随着超参数的数量呈指数级增加
代码示例:
随机搜索:
随机搜索即是随机在搜索空间里选择一组超参数来训练
由于是随机的选择,因此在一段时间之后,如果性能变化不大,可以提前结束优化过程
代码示例:
贝叶斯优化(BO):
迭代地学习一个超参数到目标函数的映射关系。在选择下一次超参数的时候是基于当前的评估。
Surrogate model:
拟合超参数到目标值的模型
通常是一个回归模型:随机森林,高斯过程等等都可以
下图中,黑色虚线表示目标函数,黑色实线表示 BO 优化的值,紫色区域表示预测的值,上下范围是置信区间。两个黑色的点表示已经采样过的点。绿色的线就表示获取函数。
获取函数:目的就是选择下一步要去采样的超参数
对每一个超参数都要去拟合一个值,值越大,表示越不置信。一个超参数如果可以使目标函数更好,和真实的值很接近了,就代表很置信了,就不用去拟合了。
选择不置信,同时可以使目标函数更好的超参数。
在探索和利用之间权衡。探索就是去未知的地方探索一下,利用就是知道这一块还不错,就多在这地方看看,多用用。
BO 的限制:
初始阶段,和随机搜索差距不大。
优化过程是序列的,需要前面的结果,无法并行。
Multi-fidelity:
不需要每次都把完整的数据集都进行训练。关心的只是哪一个超参数比另外一个超参数更好,只需要知道超参数的排序即可,所以可以使用近似值来代替:
对数据集进行采样,即使用子数据集
减小模型的大小。比如:使用 resnet18 做模拟
在训练的时候提前终止,根据曲线等数据指标趋势,就可以判断最后训练效果好不好,所以提前终止不好的训练,降低成本。
Successive Halving:
这个算法就是只保留最有潜力的超参数。
随机选择 n 组超参数训练 m 轮
重复这个过程,直到只剩下一组超参数
保留最好的 n/2 组超参数,并训练 2m 轮
保留最好的 n/4 组超参数,并训练 4m 轮
... ...
总计算开销变化不大:训练任务少了,但是训练轮数加倍了
Hyperband(常用):
在 Successive Halving 中:
n : exploration(探索)
m: exploitation(利用)
Successive Halving 需要在 n 和 m 大小之间权衡
Hyperband 是跑了多个 Successive Halving
一开始选择 n 大一点,m 小一点
后面慢慢把 n 变小,m 变大
版权声明: 本文为 InfoQ 作者【打工人!】的原创文章。
原文链接:【http://xie.infoq.cn/article/cceb6740eff4a3b5263225d67】。文章转载请联系作者。
评论