即使在中等规模的数据集上,训练神经网络也可能很昂贵。根据配置空间(第 19.1.1.2 节),超参数优化需要数十到数百次函数评估才能找到性能良好的超参数配置。正如我们在19.3 节中看到的 ,我们可以通过利用并行资源显着加快 HPO 的整体时钟时间,但这并不会减少所需的总计算量。
在本节中,我们将展示如何加速超参数配置的评估。随机搜索等方法为每个超参数评估分配相同数量的资源(例如,epoch 数、训练数据点)。图 19.4.1 描绘了一组使用不同超参数配置训练的神经网络的学习曲线。经过几个 epoch 之后,我们已经能够在视觉上区分性能良好和次优的配置。然而,学习曲线是嘈杂的,我们可能仍然需要全部 100 个 epoch 来确定表现最好的一个。
多保真超参数优化将更多资源分配给有前途的配置,并尽早停止对性能不佳的配置的评估。这加快了优化过程,因为我们可以为相同的资源总量尝试更多的配置。
更正式地说,我们扩展了第 19.1.1 节中的定义 ,这样我们的目标函数 f(x,r)获得额外的输入 r∈[rmin,rmax], 指定我们愿意为配置评估花费的资源量x. 我们假设错误 f(x,r)随着r,而计算成本c(x,r)增加。通常, r表示训练神经网络的时期数,但它也可以是训练子集大小或交叉验证折叠数。
19.4.1。连续减半
使随机搜索适应多保真度设置的最简单方法之一是连续减半 (Jamieson 和 Talwalkar,2016 年,Karnin等人,2013 年)。基本思想是从N配置,例如从配置空间随机采样,并训练它们中的每一个 rmin只有时代。然后,我们丢弃一部分表现最差的试验,并对其余试验进行更长时间的训练。重复这个过程,更少的试验运行更长时间,直到至少有一个试验达到rmax时代。
更正式地说,考虑最低预算rmin(例如 1 个 epoch),最大预算rmax,例如 max_epochs
在我们之前的例子中,还有一个减半常数 η∈{2,3,…}. 为简单起见,假设 rmax=rminηK, 和K∈I. 那么初始配置的数量是N=ηK. 让我们定义一组梯级 R={rmin,rminη,rminη2,…,rmax}.
一轮连续减半的过程如下。我们从跑步开始N试验到第一梯级rmin. 对验证错误进行排序,我们保持顶部1/η分数(相当于ηK−1配置)并丢弃所有其余的。幸存的试验被训练用于下一个梯级(rminηepochs),然后重复该过程。在每个梯级,一个1/η部分试验存活下来,他们的训练继续进行η倍大的预算。有了这个特别的选择N, 只有一个试验将被训练到全部预算rmax. 一旦这样一轮连续的减半完成,我们就会用一组新的初始配置开始下一轮,迭代直到总预算用完。
我们将第 19.2 节HPOScheduler
的基类子类化 ,以实现连续减半,允许通用 对象对配置进行采样(在我们下面的示例中,它将是 a )。此外,用户必须通过最少的资源HPOSearcher
RandomSearcher
rmin, 最大资源 rmax和η作为输入。在我们的调度程序中,我们维护一个配置队列,这些配置仍需要针对当前梯级进行评估ri. 每次我们跳到下一个梯级时,我们都会更新队列。
评论
查看更多