Paper Reading - 综述系列 - Hyper-Parameter Optimization(下)

更多可见计算机视觉-Paper&Code - 知乎

目录

搜索策略

网格搜索

随机搜索

贝叶斯优化

结论


接着上一篇继续说

搜索策略

网格搜索

将每个超参数的搜索空间离散化为笛卡尔积。然后使用每个超参数配置独立并行的进行训练,最后选择最好的。简单粗暴且会导致维度灾难,训练次数与超参数量成指数关系

随机搜索

网格搜索的一种变体,从某个参数分布中随机采样可能的参数值进行实验,搜索过程持续到候选集耗尽,或者性能满足条件为止。与网格搜索相比,随机搜索有以下优点:

  1. 随机搜索的各个参数可以从不同分布中生成,因此对于参数不服从均匀分布时效果更好
  2. 随机搜索时间越久,找到局部最优的可能性越大,而网格搜索无法保证。

不过同样随机搜索的计算量大,且需要用户具有一点的先验知识设定超参范围。后续提出的基于随机搜索的Hyperband方法使用了early stop策略,提前drop掉表现不好的参数。并且使用Sccessive Halving算法去分配资源,假设有n组超参数组合,然后对这n组超参数均匀地分配预算并进行验证评估,根据验证结果淘汰一半表现差的超参数组,然后重复迭代上述过程直到找到最终的一个最优超参数组合。因此Hyperband能评估更多的超参组合

贝叶斯优化

HPO经典论文

贝叶斯优化是全局优化的经典方法,它能够平衡探索和利用以防止陷入局部最优,利用前面已经搜索过的参数的表现,来推测下一步怎么走会比较好,从而减少搜索空间,大大提升搜索效率。贝叶斯优化优势在于:

  1. 用户不需要对参数分布具备先验知识
  2. 贝叶斯优化能够使用更少的试验次数来寻找最佳参数,并且贝叶斯优化不需要考虑目标函数是随机还是离散,是凸函数还是非凸函数。

贝叶斯优化主要分为两部分

  • 对目标函数进行建模的贝叶斯概率(surrogate)代理模型,用于减少直接计算量
  • 用于确定下一个采样点的(acquisition)采集函数

算法过程可以描述如下:

  1. 建立代理模型的先验分布
  2. 获得在代理模型上表现最好的超参数集
  3. 用当前的代理模型计算获取函数
  4. 将超参数集应用于目标函数
  5. 用新结果更新代理模型

重复步骤2-5,直到找到最佳配置或达到资源限制为止。调优的目的是要找到一组最优的超参组合,能使目标函数f达到全局最小值。且f是expensive blackbox function,计算量大且黑盒

如图就是随机搜索的操作,随机采样10个点的目标函数f(x),确实有个点挺靠近全局最优点的,那是不是在它附近再采样几个点就可以了呢,显然不行这种方法会很容易陷入局部最优。且fx的计算是非常复杂的,所以我们用代理函数去拟合它

贝叶斯优化使用了高斯过程(gasussian processes, GP)去构建代理模型,关于高斯过程的具体原理可以参考相关文章,这里简单提一下,大致说来高斯过程就是无穷维的正态分布,,因此具有以下性质

  • 具有一系列关于连续域(时间或空间)的随机变量的联合,且针对每一个时间或是空间点上的随机变量都是服从高斯分布的。
  • 单个GP由mean function与covariance function(kernal)共同唯一决定
  • mean function决定的样本出现的整体位置,若是0的话就是在y=0就是基准线,因此常常对数据样本进行归一化。同样使用线性function也是可以的
  • covariance function(kernel function) 用于寻找不同输入点之间的关系,并反映在输出样本的位置上。最终利用点与点之间关系,就能以输入的训练数据预测未知点的值。不同的核函数的选择取决于数据性质

在确定mean=0和核函数=PER的情况下,不同的sample对应不同的曲线,仍是随机服从正太分布的

那么GP会基于给定的输入和输出,推断出一个模型,假设我们从f(x)采样了4个点,然后我们把这4个点交给GP,它会返回一个代理模型,绿色实线,绿色条带是输出分布的标准差(Uncertainty)。有了代理模型,再去找下一个合适的超参值,就能带入到计算开销相对较小的代理模型中,评估给定超参值的情况。

那么如何找到下一个合适的点,去哪里找呢

  • 已开发区域:在绿色实线上最低的超参点。因为很可能它附近存在全局最优点。
  • 未探索区域::绿色实线上还未被探索的区域。相比于0.15-0.25区间,0.65-0.75区间更具有探索价值(即该区间Uncertainty更大)。探索该区域有利于减少我们猜测的方差。

为了实现以上探索和开发的平衡(exploration-exploitation trade-off),贝叶斯优化使用了采集函数(acquisition function),它能平衡好全局最小值的探索和开发。采集函数有很多选择,其中最常见的是expectated of improvement(EI)

f' 是目前观察到的最小值,x是超参值,我们希望utility function输出越大越好(即找到的x能获得比当前最小值还小),基于u(x),EI采集函数如下所示:

具有最高的EI的超参值x会被选择。且提高EI有两个方法:

  • 减少均值函数 u(x)
  • 增加方差K(x,x)

所以EI的提高是建立在均值和方差的trade-off,也就是exploration-exploitation trade-off,美妙的符合上了我们的需求。如图x=1的时候,EI函数值最大,因此下一个超参数x选1

下面是一个小动画,展示了单个超参数的贝叶斯优化。

当然贝叶斯也是有缺点的,比如不能并行独立搜索。需要完成该次学习才能启动一个新的过程,因为需要更新高斯过程,同时更新采集函数,需要之前积累的计算结果。其次贝叶斯优化搜索处理连续空间中的超参数,无法搜索离散空间。且如果评估数据量很大,高斯过程的计算成本会很高。

结论

选择正确的超参数优化算法取决于当前具体任务,算力预算。如果模型非常简单并且可以快速运行,随机搜索就足够了。如果使用 Hyperband、BOHB则可以在更高效的找到最优参数,且搜索期间能够断点继续

猜你喜欢

转载自blog.csdn.net/weixin_43953700/article/details/124552752