使用贝叶斯优化对深度学习结构进行超参数优化

Posted

技术标签:

【中文标题】使用贝叶斯优化对深度学习结构进行超参数优化【英文标题】:Hyperparameter optimization for Deep Learning Structures using Bayesian Optimization 【发布时间】:2017-06-11 04:16:15 【问题描述】:

我为原始信号分类任务构建了一个 CLDNN(卷积、LSTM、深度神经网络)结构。

每个训练 epoch 运行大约 90 秒,超参数似乎很难优化。

我一直在研究各种优化超参数的方法(例如随机或网格搜索),并发现了贝叶斯优化。

虽然我还没有完全理解优化算法,但我喜欢它对我的帮助很大。

我想问几个关于优化任务的问题。

    如何针对深度网络设置贝叶斯优化?(我们尝试优化的成本函数是什么?) 我要优化的功能是什么?是 N epochs 后验证集的成本吗? 留兰香是完成这项任务的良好起点吗?对这项任务还有其他建议吗?

我将非常感谢您对此问题的任何见解。

【问题讨论】:

如果您对任何超参数优化工具持开放态度,您是否查看过 TPOT randalolson.com/2016/05/08/… 【参考方案1】:

虽然我还没有完全理解优化 算法,我喜欢它会对我有很大帮助。

首先,让我简要解释一下这部分。 贝叶斯优化方法旨在处理multi-armed bandit problem 中的探索-开发权衡。在这个问题中,有一个 unknown 函数,我们可以在任意点进行评估,但每次评估都需要成本(直接惩罚或机会成本),目标是使用尽可能少的试验找到其最大值可能的。基本上,权衡是这样的:你知道有限集合中的函数(其中一些是好的,一些是坏的),所以你可以尝试当前局部最大值附近的区域,希望改进它(利用),或者你可以尝试一个全新的空间区域,它可能会更好或更糟(探索),或者介于两者之间。

贝叶斯优化方法(例如 PI、EI、UCB),使用Gaussian Process (GP) 构建目标函数模型,并在每一步根据其 GP 模型选择最“有希望”的点(注意“有希望的”可以通过不同的特定方法进行不同的定义)。

这是一个例子:

真正的功能是[-10, 10] 区间上的f(x) = x * sin(x)(黑色曲线)。红点代表每次试验,红色曲线为 GPmean,蓝色曲线为均值加减一标准差。 如您所见,GP 模型并非处处匹配真实函数,但优化器相当快地识别出-8 周围的“热点”区域并开始利用它。

如何设置关于深度的贝叶斯优化 网络?

在这种情况下,空间由(可能转换的)超参数定义,通常是多维单元超立方体。

例如,假设您有三个超参数:学习率α in [0.001, 0.01]、正则化器λ in [0.1, 1](都是连续的)和隐藏层大小N in [50..100](整数)。优化空间是一个 3 维立方体[0, 1]*[0, 1]*[0, 1]。这个立方体中的每个点(p0, p1, p2)对应一个三位一体(α, λ, N),通过以下变换:

p0 -> α = 10**(p0-3)
p1 -> λ = 10**(p1-1)
p2 -> N = int(p2*50 + 50)

我要优化的功能是什么?是不是费用 N epochs 后的验证集?

没错,目标函数是神经网络验证准确率。显然,每次评估都很昂贵,因为它至少需要几个 epoch 进行训练。

还要注意,目标函数是随机的,即同一点上的两次评估可能略有不同,但它不是贝叶斯优化的障碍,尽管它明显增加了不确定性。

留兰香是这项任务的良好起点吗?任何其他 对这项任务的建议?

spearmint 是一个很好的库,你绝对可以使用它。我也可以推荐hyperopt。

在我自己的研究中,我最终编写了自己的小型库,主要有两个原因:我想编写精确的贝叶斯方法以使用(特别是,我发现 UCB 和 PI 的 portfolio strategy 收敛速度比其他任何东西都快,就我而言);此外,还有另一种技术可以节省多达 50% 的训练时间,称为learning curve prediction(这个想法是当优化器确信模型的学习速度不如其他领域快时跳过整个学习周期)。我不知道有任何库实现了这一点,所以我自己编写了代码,最终得到了回报。如果你有兴趣,代码是on GitHub。

【讨论】:

以上是关于使用贝叶斯优化对深度学习结构进行超参数优化的主要内容,如果未能解决你的问题,请参考以下文章

使用贝叶斯优化工具实践XGBoost回归模型调参

pytorch深度学习模型调参策略:采用贝叶斯工具进行最优参数搜索及最佳步数确认

Gridsearchcv 与贝叶斯优化

Python使用bayesian-optimization包的BayesianOptimization算法构建贝叶斯优化器获取机器学习模型最优超参数组合实战+代码

轻型 GBM 模型的贝叶斯优化

基于贝叶斯优化的超参数tuning