模型的调参,超参数的优化

📅 2026/7/22 18:59:17
模型的调参,超参数的优化
9.1模型的调参选取一个好的超参数得到一个好的结果是比较花时间的过程1一般会从一个好的基线开始。基线是什么选一个质量比较高的工具包其中设了不错的参数虽然可能对我们的问题不算是最好 的但是是一个不错的开始点如果要做的东西是跟某些论文相关可以看看该论文里面的超参数是什么有些超参数 跟特定的数据集有关这些超参数在一般的情况下都不错有了比较好的起始点之后调整超参数后再重新训练模型再去看看验证集上的结果精度、损失2一次调一个值多个值同时调可能会不知道谁在起贡献看看模型对超参数的敏感度是什么样子没调好一个超参数模型可能会比较差但是调好了也只是到了还不错的范围想对超参数没那么敏感的话可以使用比较好的模型【在优化算法中使用Adam(对有些超参数没那么敏感调参会简单很多)而不是SGD在比较小的区域比较好】实验管理的注意事项每次调参一定要做好笔记训练日志、超参数记录下来这样可以与之前的实验做比较也好做分享与自己重复自己的实验最简单的做法是将log记录到txt上把超参数和关键性指标训练误差放在excel中*Tensorboardtensorflow开发的一个可视化工具weightkbias允许在训练的时候用他们的API然后把实验记录下来后上传到他们的网页上就可以进行比较重复一个实验是非常难的开发的环境用的硬件是什么、新旧GPU可能会有点不一样用的库的版本Python本身也要去注意代码开发要做好版本控制可以将每个版本的代码放在同一个地方 需求的库也放在这里要注意随机性改变了随机种子模型抖动比较大的话说明代码的稳定性不是很好AutoML 让机器学习民主化不需要博士学位也能获得专业级的模型效果。但它不是万能的人类数据科学家的价值在于定义问题、理解业务、以及创造性地设计解决方案。9.2超参数的优化人工手动调学习率、骨干网络、检测器、batch size 等参数效率极低靠程序自动遍历、筛选最优模型配置。Search Space 搜索空间告诉程序要调哪些参数、取值范围是什么HPO 算法两种策略1. Black-box黑盒 HPO核心定义在超参优化中将完整训练流程视作黑盒每一组待测试超参配置trial都必须完整跑完全部训练周期得到最终验证指标后才会评判优劣2. Multi-fidelity多保真度 HPO核心定义通过修改训练任务、降低单次试验计算开销大幅加速超参搜索1采样缩小后的子集数据集进行训练2缩减模型规模例如减少网络层数、通道数3提前终止效果差的超参配置的训练过程Black-box 虽然会贵一点但是任务计算量比较小或优化算法不知道的话这个方法会比较好Multi-fidelity知道一些任务的细节可以将任务弄小一点这样每次试验的时候成本没有那么高。Grid search遍历规则预先给每个超参划定离散取值列表程序穷举所有参数笛卡尔积组合执行逻辑空间内每一组参数都完整训练评估不漏掉任何搭配优点全局全覆盖只要网格划分足够细一定能找到空间内最优参数逻辑简单、易实现 缺点组合数量随超参数量指数爆炸你之前那张多骨干、多检测器的大搜索空间完全无法使用算力消耗极高。Random search采样规则不遍历全部组合设置最大试验次数n每次从搜索空间随机抽取一组参数核心优势高维空间下随机采样更容易命中关键敏感超参的优质取值同等算力下效果普遍优于网格搜索优点不会产生指数级组合爆炸适合中等规模搜索空间代码实现简单缺点无法保证覆盖全部参数组合存在错过全局最优的风险纯随机无历史信息复用算力依然有浪费。Bayesian OptimizationBO贝叶斯优化迭代学习超参数 (HP) 到目标函数的映射关系基于过往所有调参实验结果依靠当前模型预测值挑选下一组最值得测试的超参。Surrogate模型就是拟合超参数与目标函数之间关系的模型可以采用概率的一些regression模型可以使用随机森林或者是高斯过程随着采样的越来越多对整个模型的进步会越来越准。获取函数Acquisition function是贝叶斯优化中另一个要建模的模型它会去评估下一个点应该去取谁对每一个超参数都会去预测一个值在一开始的时候其实跟random search差不多获取函数还不够好就只能随机挑值来做再后期的时候建模比较准会比较好一点随机搜索是并行的算法贝叶斯优化是顺序的算法采下一个点需要等上一个完成才行Successive Halving连续减半算法假设初始n16组参数基础轮次m5第 1 轮16 组全部训练 5epoch → 淘汰后 8 组最优保留第 2 轮8 组再训练 5epoch → 淘汰后 4 组最优保留第 3 轮4 组训练 10epoch → 淘汰后 2 组最优保留第 4 轮2 组训练 20epoch → 最终留下 1 组最优完整训练首先选取n个超参数然后每个超参数训练m个epoch把数据扫个m遍然后把好的超参数留下一半剩下的一半不要epoch还是m在下一次迭代超参数还是留下一半而epoch变成了原来的两倍这样的过程一直重复直至留下一个超参数为止。n与m的选取要基于预算而言的预算多n就取大一点但是n与m不好取Hyperband超带算法循环执行多组不同配比的 Successive Halving第一轮n极大m极小 → 海量低保真粗筛极致探索全局搜索空间后续每一轮逐步降低n、拉高m → 减少采样数量给剩余配置分配更长训练轮次深度挖掘优质区域多轮结果融合同时兼顾全局探索与局部精细调优。hyperband的好处是说对n与m的选取不会那么敏感会多跑几次多几个组合这样就不用怎么操心n还有算法在exploration与exploitation的权衡这个算法都算了一遍