超参数优化 贝叶斯优化(Bayesian Optimization) 理解

版权声明:本文为小墨鱼博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zwqjoy/article/details/89373581

背景

很多算法工程师戏谑自己是调参工程师,因为他们需要在繁杂的算法参数中找到最优的组合,往往在调参的过程中痛苦而漫长的度过一天。如果有一种方式可以帮助工程师找到最优的参数组合,那一定大有裨益,贝叶斯超参优化就是其中的一种。如果是单单罗列公式,可能会显得乏味,就用一些思考带上公式为大家分享。

目前在研究Automated Machine Learning, 其中有一个子领域是实现网络超参数自动化搜索,而常见的搜索方法有Grid Search、Random Search以及贝叶斯优化搜索。前两者很好理解,这里不会详细介绍。

我们希望找到最佳的超参数配置,帮助我们在验证/测试集的关键度量上得到最佳分数。

在计算力、金钱和时间资源有限的情况下,每个科学家和研究员都希望获得最佳模型。但是我们缺少有效的超参数搜索来实现这一目标。

 

Grid Search & Random Search

我们都知道神经网络训练是由许多超参数决定的,例如网络深度,学习率,卷积核大小等等。所以为了找到一个最好的超参数组合,最直观的的想法就是Grid Search,其实也就是穷举搜索,示意图如下。

但是我们都知道机器学习训练模型是一个非常耗时的过程,而且现如今随着网络越来越复杂,超参数也越来越多,以如今计算力而言要想将每种可能的超参数组合都实验一遍(即Grid Search)明显不现实,所以一般就是事先限定若干种可能,但是这样搜索仍然不高效。

所以为了提高搜索效率,人们提出随机搜索,示意图如下。虽然随机搜索得到的结果互相之间差异较大,但是实验证明随机搜索的确比网格搜索效果要好。


高斯过程

首先要知道什么是高斯过程,高斯过程也是正态分布,我们可以理解为一般世界的很多随机事件都是遵循这样的一个原则。比如买了1000次彩票,中奖的概率是多少,这就是一个典型的随机过程。比如在20楼向下扔皮球,砸中美女的概率也是一个随机过程。

在贝叶斯调参过程中,假设一组超参数组合是X=x1,x2,...,xn(xn表示某一个超参数的值),而这组超参数与最后我们需要优化的损失函数存在一个函数关系,最终的评估结果为Y,通过什么样的X可以取得最优的Y,我们假设是f(X), Y=F(X)

而目前机器学习其实是一个黑盒子(black box),即我们只知道input和output,所以上面的函数f(x)很难确定。所以我们需要将注意力转移到一个我们可以解决的函数上去.

于是可以假设这个寻找最优化参数的过程是一个高斯过程。高斯过程有个特点,就是当随机遍历一定的数据点并拿到结果之后,可以大致绘制出整个数据的分布曲线。


 

上图是一个高斯过程的图,就像人生的曲线,起起伏伏,命运造化弄人,需要不断地尝试才能知道最终的结果。所以如果要找到完整的人生的曲线,需要不停地在每一个单点尝试,直到真个曲线清晰。就知道做什么样的事情,可以到达高谷,好比在超参优化中就是什么样的参数可以得到好的结果。

贝叶斯优化的重要基础理论就是不断通过先验点去预测后验知识。

贝叶斯优化理论

还是这张图,把横轴看作是参数组合X,纵轴看作是这个参数的结果Y。可以通过已经构建的曲线,找到曲线上升的方向,从而在这个方向上继续探索,这样就可以大概率拿到更好的结果。在生活的轨迹上,如果找到一条明确通往幸福的路,可以继续向前探索,因为大概率可以成功,但也许也有会错过更好的机会,陷入局部最优解。请看上图中的五角星,如果我们处于它的位置,继续向上走会迎来一个高峰,但是如果后退,在下降一段时间之后可能会迎来更高的波峰,你该如何选择。

于是,在参数的探索中要掌握一个平衡:

    开发:在明确的曲线上扬方向继续走,大概率获得更好的结果,但是容易陷入局部最优。

    探索:除了在曲线上扬的方向,在其它的区域也不忘寻找

总结一下,贝叶斯超参优化跟生活很像,面对顺境选择继续向前,还是勇敢的跳出现状寻找更大的突破,这需要一个策略,在调参中这个策略可以自己定义一些方法去实现。把参数组合对结果的影响看作是一个高斯过程,把开发和探索的策略作为一个自定义函数去权衡,这就是贝叶斯超参带给我们的启迪。
 

参考:

https://blog.csdn.net/buptgshengod/article/details/81906225

猜你喜欢

转载自blog.csdn.net/zwqjoy/article/details/89373581