贝叶斯优化算法python实例_贝叶斯优化/Bayesian Optimization
最近心情不好,写篇文章让大家开心一下吧。介绍一下世界上最好的算法:贝叶斯优化。
背景介绍
近年来深度神经网络大火,可是神经网络的超参(hyperparameters)选择一直是一个问题,因为大部分时候大家都是按照玄学指导手动调参,各位调参的同学也跟奇异博士一样算是master of mystic arts了。由于这个原因,贝叶斯优化(Bayesian Optimization,以下简称BO)开始被好多人用来调神经网络的超参,在这方面BO最大的优势是sample efficiency,也就是BO可以用非常少的步数(每一步可以想成用一组超参数来训练你的神经网络)就能找到比较好的超参数组合。另一个原因是BO不需要求导数(gradient),而正好一般情况下神经网络超参的导数是求不出来的。这两个原因导致BO成为了如今世界上最好的调超参的方法(当然了我可能有粉丝滤镜)。
其实BO不是只能用来调超参的,因为他是一个非常general的gradient-free global optimization的方法,所以他的适用场景一般有两个特点:(1)需要优化的function计算起来非常费时费力,比如上面提到的神经网络的超参问题,每一次训练神经网络都是燃烧好多GPU的;(2)你要优化的function没有导数信息。所以如果你遇到的问题由以上两个特点的话直接闭着眼睛用BO就行了。当然了这么说还是有点太暴力了,因为有一些特殊的问题结构也会影响BO的效果,比如需要调的参数太多的话,或者参数里面有太多discrete parameter的话BO的效果都会受影响,当然了这两种场景也是BO目前的open problem之二。
贝叶斯优化算法
BO算法理解起来其实非常简单。比如我们要优化的function是
,其中的domain
一般是compact的,也有一些paper为了简便会assume
是discrete的。然后假设我们要解决的优化问题是
。
BO是一个sequential decision-making problem,也就是我们有好多iterations。在每一个iteration
,我们选一个输入
(比如我们选一组神经网络的超参),然后我们用选择的
来看对应的function 的值
(比如这一组超参对应的神经网络的validation accuracy);可是大多数情况下我们都只能观测到一个有噪声的值,也就是我们观测到的是
,其中 是一个zero-mean Gaussian distribution:
, 是noise variance。然后呢,我们把新观测到的这组值
加到我们所有的观测到的数据里面,然后进行下一个iteration
。
这时候长得好看的同学可能看出来了,BO问题的核心是在每一个iteration里面如何选择我要观测哪一个
。在BO里面
是通过优化另一个function来选择的:acquisition function
;也就是
。长得好看的同学可能又发现了,我们这是把一个优化问题替换成了好多个优化问题,所以这个acquisition function必须是优化起来非常非常容易才行。另外在设计这个acquisition function的时候最重要的一点是他要做好一个balance,这就引出了传说中的exploration-exploitation trade-off:在选下一个点
的时候,我们既想要去尝试那些我们之前没有尝试过的区域的点(exploration),又想要去选择根据我们目前已经观测到的所有点预测的 的值比较大的点(exploitation)。为了能很好地balance这两点,对于domain里面任意一个点 ,我们既需要预测对应的
的值(为了exploitation),又需要知道对应的
的uncertainty(为了exploration)。这时候最合适的模型已经呼之欲出了:Gaussian Process(GP)。
关于GP在这里就不详细介绍了,知乎上有不少好文章大家可以去复习一下。在这里大家需要知道的是,假设现在我们已经跑完了 个BO的iteration,也就是我们现在手里的数据是
,那么我们根据GP的预测,整个domain里面任意一点 对应的
的值服从一维高斯分布,而且对应的posterior mean和posterior variance可以写成closed-form。GP的公式在这里就不重复了,我们就把对应的mean和variance表示成
和
,他们两个可以分别理解为用来做exploitation和exploration的信息。这个应该不难理解,因为预测的posterior mean就相当于我们预测的
的值,然后posterior variance就相当于我们对于
的uncertainty。现在呢,上面提到的acquisition function
就可以通过
和
计算出来了。目前常用的acquisition function有以下几种:
Gaussian Process-Upper Confidence Bound (GP-UCB):
Expected Improvement (EI):
(Predictive) Entropy Search:
[未完待续]
贝叶斯优化的理论
贝叶斯优化的研究前沿
结论
贝叶斯优化算法python实例_贝叶斯优化/Bayesian Optimization相关推荐
- 差分进化算法python 指派问题_多目标优化算法
本书实用性强,摒弃工具书中难懂的理论讲解,通过使用具体数值实例进行浅显易懂的讲解,保证大学低年级学生凭借现有的数学基础知识也可以完全理解书中介绍的网络数学模型和遗传算法的解法.书中丰富的数值实例能够加 ...
- 摩尔斯电码转换python编码_摩尔斯电码到英文python3
我想用Python 3将摩尔斯电码转换成英文 我已经设法使用这个将英语转换成莫尔斯码 http://code.activestate.com/recipes/578407-simple-morse-c ...
- shell sort 最后一列排序_十个必知的排序算法|Python实例系列[1]
实例内容: 十个必知的排序算法具体代码,并简略的得知每种算法对于不同长度数列的排序时间 十大排序: 1.冒泡排序2.选择排序3.插入排序4.希尔排序5.归并排序6.快速排序7.堆排序8.计数排序9.桶 ...
- 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用
粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...
- 数据结构python版 答案,中国大学 MOOC_数据结构与算法Python版_章节测验答案
中国大学 MOOC_数据结构与算法Python版_章节测验答案 更多相关问题 认识的本质是()A.肯定世界是可知的B.主体对客体的能动反映C.主体对客体的直观反映D.实践是 水灰比是影响混凝土()的主 ...
- mooc数据结构与算法python版期末测验_中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案...
中国大学MOOC(慕课)_数据结构与算法Python版_测试题及答案 更多相关问题 采用fopen()函数打开文件,支持文件读取的参数有: [简答题]简单阐述高分子材料热-机械特征及成型加工的关系,并 ...
- 鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2)
鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2) 引言 1.鲸鱼优化算法WOA 1.1 WOA算法原理介绍 1.1.1 包围猎物 1.1.2 气泡网式攻击猎物(开发阶段) 1.1.3 寻 ...
- 企业网站 源码 e-mail_天津seo优化套餐服务收费_天津网站优化关键词价格
天津华阳在线专注于SEO关键词排名优化,品牌网站建设,营销型网站建设,App.小程序开发,搜索引擎seo优化,竞价托管sem,品牌口碑建设与代运营等服务.企业通过引进前BAT产品经理不断丰富产品线优化 ...
- 【优化算法】改进的侏儒猫鼬优化算法(IDMO)【含Matlab源码 2314期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[优化算法]改进的侏儒猫鼬优化算法(IDMO)[含Matlab源码 2314期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...
最新文章
- mysql filde_备份一个约250G的mysql实例【xtrabackup备份方案对比】
- 【QM-03】Dynamic Modification Rule (动态修改规则)
- Boost:基于boost::asio模块引用计数程序
- luogu2839 [国家集训队]middle
- Table中Family和Qualifier的关系与区别(转载)
- [计组]压缩BCD码指二进制编码的十进制
- Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面
- Spark之hive的UDF自定义函数
- 平面设计素材|现代色彩风格的海报设计
- android网络编程登录和验证,ASP.NET实现用户注册和验证功能(第4节)
- 持久化消息队列memcacheq的安装配置
- 【优化算法】正弦余弦算法(SCA)【含Matlab源码 1308期】
- java semaphore 原理_Java并发编程原理与实战二十八:信号量Semaphore
- 苹果手机绕id软件_苹果手机如何安装LINE社交软件
- SQL Server 2019的下载与安装
- CodeForces - 1359
- 【51nod】2589 快速讨伐
- Vue3 + elementplus 分页组件英文改为中文
- oracle 倒库详细步骤,超详细的倒车入库步骤
- 《redis设计与实现》-读书笔记
热门文章
- PC时代IE浏览器获胜,Web时代呢?
- 中国知网文献引用导入EndNote9.X,Web of science导入endnote以及谷歌学术导入endnote图文详解,全网最细版本适用EndNote9.x,Endnote20版本
- html5 容器上下居中显示,移动端常见问题(水平居中和垂直居中)
- Vue开发者工具Vue.js devtools Vue开发者工具安装步骤 包含Vue2 和 Vue3
- 对@RequestMapping的简单理解(浅显理解)
- 【tiny4412】按键控制led灯亮灭
- Centos(rocky,red Hat)搭建npt服务,采用阿里ntp时间,保证时间一致性时间
- 怎么在线录制电脑内部声音
- 014.西门子PLC与变频器USS通讯
- Flex布局 - 仿携程网移动端首页案列练习