1 调参概述
简单来说,就是一个玄学,没法科学解释每个参数的作用,只能靠经验和直觉
介绍了几个记录实验数据的工具,如tensorboard、weights&bias
2 超参数优化
又名HPO(HyperParameter Optimization),是用于寻找最佳超参数的一类算法,即用算法调参
首先确定每个超参数的范围(主要靠经验)和具体数值选择方式
然后选择算法:
- black box黑盒:不知道模型其中细节,直接试,对比结果
- grid search网格搜索:暴力穷举所有超参数组合
- random search随机搜索:随机组合超参数
- bayesian optimization贝叶斯优化:比较复杂,但比较火。
ML是学习从数据到预测中的函数,而BO是要学习从超参数到在该超参数上训练出的模型的评估指标中的函数。
BO中有两个模型,一个是采样超参数进行学习,一个模型是帮助前者判断下一个采样点选哪个。一开始的时候其实和随机搜索效果差不多,是个循序渐进的过程
- multi-fidelity多保真度:
即先验实验——a. 在子数据集上训练;b. 降低模型层数/复杂度;c. 模型一开始就不对劲时就停止- successive halving(SH):先选取n个超参数,每个超参数训练m遍,把参数表现最好的一半留下,剩下的一半丢掉,再训练m遍,最后得到最佳的参数(n、m也不好取)
- hyperband:即跑多个SH,每次修改n、m的值,如减半,有时候一次SH效果不好不代表真的不好
3 网络架构搜索
Neural Architecture Search,NAS
在深度神经网络如何通过算法来选取网络架构
-
NAS with reinforcement learning强化学习
把超参数看成时序文本作为RL网络的输入,使用RNN循环神经网络进行RL,将我们要构建的模型训练得到评估结果,结果不断反馈给RL网络,调整超参数
缺点是贵
-
the one-hot approach
只关注模型架构的好坏,只训练一些轮次,好的话就再完整地训练
-
differentiable architecture search 可微分搜索
假设每一层都有几个候选网络结构,如卷积核不同、通道数不同等
该层的第i个候选是Oi.l,若该层有n个候选,把这n个候选进行softmax加权和(权重通过学习得到),作为输出,每次选择参数时选择权重最大的候选
(Softmax函数可以将多分类的输出值转换为范围在[0, 1]、和为1的概率分布)
-
- scaling CNNs
调节CNN的三个方法- 增加层数,让网络更深
- 增加输出通道,让网络更宽
- 提高输入图像的分辨率,让输入更大
EfficientNet 则综合使用上面3个方法,用一些调节决策确定超参数