超参数调试

本文来自于网易云课堂

调试处理

神经网络的改变会涉及到许多不同的超参数的设置,对于超参数而言,如何找到一套好的设定呢?本节会学习一些系统的组织超参数调试过程的技巧。深度学习需要设置许多超参数,但这些超参数的设置是有优先级的,其中Adrew Ng认为α是需要调试的最重要的超参数,其次是β,hidden units和mini-batch size,然后是layers和learning rate decay。如果应用Adam算法,β1β2ϵ基本上不会调整.。
那么该如何选择调试值呢?
在早些的机器学习算法中,如果有2个超参数,常见的做法是在网格中取点,然后系统的研究这些值。如下图所示,你可以尝试所有的25个点并选择合适的点。当参数的数量较少时,这个方法很实用。
超参数调试
在深度学习领域,Adrew Ng推荐采用随机选择点。用这些随机选择的点试验超参数的效果。之所以这么做的原因是,对于你要解决的问题你很难提前知道哪个超参数更重要。采用2个极端的例子,假如参数1很重要,参数2一点都不重要,那么采用格子的方法,可能怎么调节参数2都没什么效果,但参数1只有5个选择,但是对于随机选择点,参数1有25个选择。
超参数调试
对于大量参数,很难知道哪个更重要,随机取值表明探索重要超参数的潜在值。
当你给超参数取值时,另一个惯例是采用由粗略到精细的策略。在随机取值中,你可能发现某个区域的效果会比较好,那么接下来要做的就是放大这一区域并继续随机取值
超参数调试

虽然超参数的随机取值可以提升搜索效率,但这并不意味着随机均匀取值,而是选择合适的标尺来探究这些超参数,这很重要。
超参数调试
超参数调试
总结一下,在对数坐标上取值,取最小值的对数就得到a值,取最大值的对数就得到b值,所以在对数轴上的10a10b区间取值,你可以在ab之间随机均匀的选取r值,然后把超参数设置为10r,这就是在对数轴上取值的过程。
如果你没有在超参数选择中做出正确的标尺决定,也别担心,即使你再线性标尺上均匀的取值,你也会得到还不错的结果。

实际超参数调整的时候有两种方式,熊猫方式(Pandas)和鱼子酱方式(Caviar),熊猫每次生很少的宝宝,所以熊猫妈妈会对其精心呵护,而鱼类每次产卵会产生非常多的卵,比如一个亿,鱼妈妈不会精心照料哪一个,而只是寄希望于其中一些生存的好。对于实际调节也一样,如果你只能一次尝试一个,那就用熊猫方式,如果你的算力充足,可以尝试鱼子酱方式。