本文内容主要来自
https://docs.ray.io/en/master/tune/api_docs/schedulers.html
在调优过程中,一些超参数优化算法被称为“scheduling algorithms”,这些算法可以提前终止坏的尝试(trial),可以暂停尝试,复制尝试,调整尝试的参数。
这些schedulers都会接受当前实验的metric作为参数,根据metric决定是否终止trial等。
Hyperband
Hyperband用资源的角度来看待超参数搜索的问题。因为超参数搜索的问题非常像Bandit问题。
我训练网络时间较短时,我不太信任此时各个网络的表现能代表超参数的表现;时间越长,对这组超参数到底好不好就越清楚;等网络训练到收敛时,我就认为此时的表现能代表超参数的好坏。
但是受限于计算资源,我不可能每一组参数都训练到收敛,所以需要提前终止一些看起来表现不好的超参数的训练过程。
SuccessiveHalving算法就是干这个,这个算法很简单,就是训练网络r步,我们评估所有超参数的表现,从中间挑出表现最好的 1 / η 1/\eta 1/η组参数继续训练 η ∗ r \eta*r η∗r步,以此类推,越往后需要评估的网络数量越少,但是两次评估之间训练的步数越多。
SuccessiveHalving算法有两个参数 η , s \eta,s η,s。 η \eta η控制每次剔除多少比例的参数, s s s控制总共剔除几次。因为我们的算法要保证至少有一个网络要训练到收敛,初始训练的步数 r r r<