跟李沐学AI:实用机器学习 | 第九章
9.1 模型调参
手动调参
从一个好的基线开始,从工具包或者论文中的设置选择起始参数。
每次调一个超参数的值,观察性能变化。
虽然SGD在参数调得好的情况下模型效果会优于Adam,但是Adam相比于SGD,相对来说对超参数没那么敏感,调参方便一些。
记录所有训练日志和超参数,工具:TensorBoard,weights&bias
重复实验很难,因为:①环境 ②代码 ③随机性(随机种子)
自动调参Automated Machine Learning AutoML
Hyperparameter optimization(HPO)、Neural architecture search(NAS)
9.2 超参数优化HPO
搜索空间

HPO算法:black box or multi-fidelity
- 黑盒:把训练任务当做一个黑盒
- multi-fidelity:修改训练任务加速搜索 ①训练采样到的小数据集 ②减小模型尺寸(更少的层数、通道) ③早期停止

Black box
Grid search:穷举,评估所有的组合,可以找到最好的结果,但是会遭受维度灾难
Random search:尝试n个随机组合,比Grid search更高效(最常用!!)
n的选择可以通过运行时间、best_result的变化来选,觉得OK了就可以停止
Bayesian optimization (BO):迭代地学习从超参数到目标函数之间的映射
- 代理模型surrogate model:估计目标函数和超参数的关系,如概率回归模型,随机森林、高斯过程……
- 获取函数acquisition function:acquisition高意味着不确定性高,根据获取函数采样下一轮尝试的超参数。Trade off exploration and exploitation(探索和利用之间的权衡)
- limitation:早期和随机搜索差不多,后期效果好一些;优化过程是串行的。
Multi-Fidelity
Successive Halving:选取n个超参数,每个超参数训练m个epoch (n>m),留下最好的n/2个超参数再训练m个epoch,留下(n/2)/2个超参数再训练2m个epoch…… 直到只剩下最后1-2个超参数。(训练任务减半,训练时间翻倍)基于预算选取n和m。
Hyperband:多跑几次Successive Halving
9.3 网络架构搜索NAS
一个神经网络有不同类型的超参数:拓扑结构(layers),单层参数(kernel_size, channels, hidden_outputs)
NAS使神经网络的设计自动化:定义搜索空间、搜索空间搜索策略、性能估计

NAS with Reinforcement Learning
The One-shot Approach:既训练框架,又训练模型参数(常用的是DARTS)
- 可微的架构搜索Differentiable architecture search

Scaling CNNs
CNN可以从三个方面进行调整:更多层(Deeper)、更多输出通道(Wider)、增加输入图片像素(Larger inputs)
EfficientNet:提出了一种综合调整方法

ps:FLOP,计算复杂度
研究方向
- NAS结果的可解释性
- 嵌入边缘设备的搜索架构:边缘设备的数据隐私性、处理器多样性、能耗限制。最小化模型损失和硬件延迟

- 做一些扩展使机器学习更加自动化
更多推荐
所有评论(0)