目前在研究Automated Machine Learning,其中有一个子领域是实现网络超参数自动化搜索,而常见的搜索方法有Grid Search、Random Search以及贝叶斯优化搜索。前两者很好理解,这里不会详细介绍。本文将主要解释什么是体统(沉迷延禧攻略2333),不对应该解释到底什么是贝叶斯优化。

1|0I Grid Search & Random Search

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

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

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

2|0II Bayesian Optimization

假设一组超参数组合是X=x1,x2,...,xnX=x1,x2,...,xn(xnxn表示某一个超参数的值),而这组超参数与最后我们需要优化的损失函数存在一个函数关系,我们假设是f(X)f(X)。

而目前机器学习其实是一个黑盒子(black box),即我们只知道input和output,所以上面的函数ff很难确定。所以我们需要将注意力转移到一个我们可以解决的函数上去,下面开始正式介绍贝叶斯优化。

假设我们有一个函数f:X→Rf:X→R,我们需要在X⊆XX⊆X内找到

x∗=argminx∈Xf(x)(1)(1)x∗=argminx∈Xf(x)

当ff是凸函数且定义域XX也是凸的时候,我们可以通过已被广泛研究的凸优化来处理,但是ff并不一定是凸的,而且在机器学习中ff通常是expensive black-box function,即计算一次需要花费大量资源。那么贝叶斯优化是如何处理这一问题的呢?

2|11. 详细算法

Sequential model-based optimization (SMBO) 是贝叶斯优化的最简形式,其算法思路如下:

下面详细介绍一下上图中的算法:

1. Input:

  • ff: 就是那个所谓的黑盒子
  • XX:是输入数据,例如图像、语音等。
  • SS:是Acquisition Function(采集函数),这个函数的作用是用来选择公式(1)中的xx,后面会详细介绍这个函数。
  • MM:是基于输入数据假设的模型,即已知的输入数据xx都是在这个模型上的,可以用来假设的模型有很多种,例如随机森林,Tree Parzen Estimators(想要了解这两种的可以阅读参考文献[1])等,但是本文主要介绍高斯模型

2. InitSamples(f,x)→D

这一步骤就是初始化获取数据集D=(X1,Y1),...,(Xn,Yn)D=(X1,Y1),...,(Xn,Yn),其中Yi=f(Xi)Yi=f(Xi),这些都是已知的。

3. 循环选参数TT次

因为每次选出参数xx后都需要计算f(x)f(x),而正如前面介绍的没计算一次函数ff,都会消耗大量资源,所以一般需要固定选参次数(或者是函数评估次数)

  • p(y|x,D)←FITMODEL(M,D)p(y|x,D)←FITMODEL(M,D)

首先我们预先假设了模型MM服从高斯分布,且已知了数据集DD,所以可以通过计算得出具体的模型具体函数表示。假设下图中的绿色实现就是基于数据集DD经过计算后的服从高斯分布模型。可以看到Each additional band of green is another half standard deviation on the output distribution.

那么高斯分布是如何计算的呢?

因为我们已经假设ff~GP(μ,K)GP(μ,K)。 (GP:高斯过程,μ:均值 K:协方差kernel,)。所以预测也是服从正态分布的,即有p(y|x,D)=N(y|μ^,σ^2)p(y|x,D)=N(y|μ^,σ^2)

  • xi←argmaxx∈XS(X,p(y|X,D))xi←argmaxx∈XS(X,p(y|X,D))

现在已经将假设的模型计算出来了,那么下一步我们需要基于假设模型的基础上选择满足公式(1)的参数了,也就是选择XX,那么如何选择呢?这就涉及到了Acquisition Function,为了让文章篇幅更易阅读,想了解Acquisition Function移步到文末。

  • yi←f(xi)yi←f(xi)

既然参数选出来了,那么当然就是要计算咯。例如我们通过上述步骤已经选出了一组超参数xixi,那么我们下一步就是将超参数带入网络中去进行训练,最后得到输出yiyi。这一步骤虽然expensive,但是没办法还是得走啊。

  • D←D⋃(xi,yi)D←D⋃(xi,yi)

更新数据集。

2|22. Acquisition Function

Acquisition Function的选择可以有很多种,下面将分别介绍不同的AC function。

1) Probability of improvement

假设f′=minff′=minf,这个f′f′表示目前已知的ff的最小值。

然后定义utility function如下:

u(x)={o,1,if f(x)>f′if f(x)≤f′ u(x)={o,if f(x)>f′1,if f(x)≤f′

其实也可以把上面的u(x)u(x)理解成一个reward函数,如果f(x)不大于f'就有奖励,反之没有。

probability of improvement acquisition function定义为the expected utility as a function of x:

aPI(x)=E[u(x)|x,D]=∫f′−∞N(f;μ(x),K(x,x))df=Φ(f′;μ(x),K(x,x))aPI(x)=E[u(x)|x,D]=∫−∞f′N(f;μ(x),K(x,x))df=Φ(f′;μ(x),K(x,x))

之后只需要求出a(x)a(x)的最大值即可求出基于高斯分布的满足要求的xx。

2) Expected improvement

上面的AC function有个缺点就是找到的xx可能是局部最优点,所以有了Expected improvement。f′f′的定义和上面一样,即f′=minff′=minf。utility function定义如下:

u(x)=max(0,f′−f(x))u(x)=max(0,f′−f(x))

因为我们最初的目的是找到使得f(x)最小的x,所以这个utility function的含义很好理解,即接下来找到的f(x)f(x)比已知最小的f′f′越小越好,然后选出小的程度最大的那个f(x)f(x)和f′f′之间的差距的绝对值作为奖励,如果没有更小的那么奖励则为0.

AC function定义如下:

aEI(x)=E[u(x)|x,D]=∫f′−∞(f′−f)N(f;μ(x),K(x,x))df=(f′−μ(x))Φ(f′;μ(x),K(x,x))+K(x,x)N(f′;μ(x),K(x,x))aEI(x)=E[u(x)|x,D]=∫−∞f′(f′−f)N(f;μ(x),K(x,x))df=(f′−μ(x))Φ(f′;μ(x),K(x,x))+K(x,x)N(f′;μ(x),K(x,x))

通过计算使得aEIaEI值最大的点即为最优点。

上式中有两个组成部分。要使得上式值最大则需要同时优化左右两个部分:

  • 左边需要尽可能的减少μ(x)μ(x)
  • 右边需要尽可能的增大方差(或协方差)K(x,x)K(x,x)

但是二者并不同能是满足,所以这是一个exploitation-exploration tradeoff。

3) Entropy search

4) Upper confidence bound

3|0Reference

  • [1] Sigopt.com. Bayesian Optimization Primer (2018). [online] Available at: https://sigopt.com/static/pdf/SigOpt_Bayesian_Optimization_Primer.pdf [Accessed 26 Oct. 2018].
  • [2] Cse.wustl.edu. Bayesian Optimization (2018). [online] Available at: https://www.cse.wustl.edu/~garnett/cse515t/spring_2015/files/lecture_notes/12.pdf [Accessed 26 Oct. 2018].
  • [3] Anon,How does Bayesian optimization work? (2018). [online] Available at: https://www.quora.com/How-does-Bayesian-optimization-work [Accessed 26 Oct. 2018].

贝叶斯优化(Bayesian Optimization)深入理解相关推荐

  1. 贝叶斯优化算法python实例_贝叶斯优化/Bayesian Optimization

    最近心情不好,写篇文章让大家开心一下吧.介绍一下世界上最好的算法:贝叶斯优化. 背景介绍 近年来深度神经网络大火,可是神经网络的超参(hyperparameters)选择一直是一个问题,因为大部分时候 ...

  2. 【机器学习】一文看懂贝叶斯优化/Bayesian Optimization

    点击上方,选择星标,每天给你送干货! 来自:AI部落联盟 今天想谈的问题是:什么是贝叶斯优化/Bayesian Optimization,基本用法是什么? 本文的定位是:帮助未接触.仅听说过.初次接触 ...

  3. [机器学习]超参数优化---贝叶斯优化(Bayesian Optimization) 理解

    背景 很多算法工程师戏谑自己是调参工程师,因为他们需要在繁杂的算法参数中找到最优的组合,往往在调参的过程中痛苦而漫长的度过一天.如果有一种方式可以帮助工程师找到最优的参数组合,那一定大有裨益,贝叶斯超 ...

  4. 贝叶斯优化 Bayesian Optimization

    贝叶斯优化算法(BOA) 贝叶斯优化算法BOA 背景介绍 贝叶斯优化流程 形式化 算法流程 核心算法 Prior Function Acquisition Function 参考文献 背景介绍 当前的 ...

  5. python机器学习手写算法系列——贝叶斯优化 Bayesian Optimization

    Bayesian Optimization 贝叶斯优化在无需求导的情况下,求一个黑盒函数的全局最优解的一系列设计策略.(Wikipedia) 最优解问题 最简单的,获得最优解的方法,就是网格搜索Gri ...

  6. 贝叶斯优化 Bayesian Optimization

    一.介绍   在机器学习的许多模型中,包括决策树.支持向量机.神经网络,都存在着大量的超参数需要凭经验设定(学习率.决策树深度.神经元个数等),也可以使用grid search或者random sea ...

  7. 贝叶斯优化(Bayesian Optimization)只需要看这一篇就够了,算法到python实现

    贝叶斯优化 (BayesianOptimization) 1 问题提出 神经网咯是有许多超参数决定的,例如网络深度,学习率,正则等等.如何寻找最好的超参数组合,是一个老人靠经验,新人靠运气的任务. 穷 ...

  8. 使用贝叶斯优化工具实践XGBoost回归模型调参

    0. 关于调参 0.1. 超参数 在机器学习的上下文中,超参数(hyper parameters)是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据.通常情况下,需要对超参数进行优化,给学 ...

  9. 超参数优---贝叶斯优化及其改进(PBT优化)

    目录 参考文献: 简介 贝叶斯优化方法为什么好 贝叶斯优化的适用条件 贝叶斯优化的历史与在神经网络中的应用 贝叶斯优化基本原理与流程 贝叶斯优化的经典变种及其文章 Python中的贝叶斯优化库 贝叶斯 ...

最新文章

  1. C语言的有序单链表合并
  2. 钉钉、支付宝合种树,2-4天领证,限量9个名额
  3. Java数组中文排序_Java模块 -- 数组/集合中文汉字排序(支持生僻汉字)
  4. 60阶单群同构于A5的证明
  5. Play 1.x框架学习之六:未登陆拦截机制 (Not Login intercept In play framework)
  6. @transaction 提交事务_Kafka 事务实现原理
  7. leetcode算法题--球会落何处
  8. DIV水平方向居中的几种方法
  9. 可视化 nltk_词嵌入:具有Genism,NLTK和t-SNE可视化的Word2Vec
  10. Ajax跨域提交JSON和JSONP
  11. 苹果手机怎么拍星空_手机拍星空,看这篇教程就够了!
  12. 我的爹,我的娘(2006-02-22 21:39:07)(新浪)
  13. 基于机器视觉的手机背光板划痕灰尘检测
  14. *第六周*数据结构实践项目二【建设链栈算法库】
  15. mdx格式的词典用什么软件打开_英专生必备词典
  16. 期货跟单软件:大数据排名展示跟随
  17. SG90舵机驱动程序
  18. WordPress 网站使用微信和支付宝支付插件功能
  19. 劳资蜀道山!6个高质量免费电子书网站!我看谁还不知道
  20. 推荐一个类似于国内知乎国外网站-Quora

热门文章

  1. 新书出版:步步惊“芯” —软核处理器内部设计分析
  2. APP冷启动和热启动之间的区别
  3. FireFox火狐浏览器调试响应式页面
  4. 5-Elasticsearch分词器
  5. Elasticsearch8重置elastic用户密码
  6. linux kdevelop,Linux_Linux下kdevelop使用SVN方法, 服务器端:nbsp - phpStudy
  7. KDevelop修改字体样式和大小
  8. 开漏输出,推挽输出,开集输出
  9. 将json字符串与实体类互相转换
  10. 英特尔杯作品 2010年一等奖作品摘要