贝叶斯优化

  • 1、问题的提出
  • 2、贝叶斯基础知识
  • 3、贝叶斯优化流程
    • 3.1 高斯过程回归(GPR)
    • 3.2、采集函数

1、问题的提出

在介绍贝叶斯优化之前,我们先来介绍一下机器学习的一般思路,机器学习可以看作是一个黑盒子模型,我们输入一个X,通过机器学习模型得到一个输出y,也即是:

图中样本矩阵如下图:

      通过机器学习模型,我们可以给每一个特征分配一个权重w,如果有m个特征,那么就有m个权重w,这些权重可以组成一个参数矩阵W,机器学习就是通过对大量样本进行训练,更新并确定这个权重矩阵的(以三个特征为例,见下图)。

由上介绍我们可知,要想获得一个比较好的预测结果,我们需要较多的有标签样本进行训练,但是如果在实际应用中获得样本的标签成本较高,我们当然希望能利用较少的样本来获得更好的收益。贝叶斯优化就是来解决训练样本获取成本高、样本少这个问题的。除了贝叶斯优化以外,主动学习也可以解决此类问题,这里不做过多介绍。

2、贝叶斯基础知识

①后验概率就是已知结果求原因(P因|果);似然估计是由因求果P(果|因);先验概率是由历史求因(P(因))。见下图:

上图1点击这观看原地址,图2点击这查看原地址,通过这两个链接,就可以熟悉贝叶斯公式。

3、贝叶斯优化流程

贝叶斯优化的简要流程如下图:

通过上图我们可以发现,贝叶斯优化中的难点在于对高斯过程回归和采集函数的理解,下面进行介绍。

3.1 高斯过程回归(GPR)

GPR假设y值服从联合高斯分布(先验),根据训练集X可以得到最优的核矩阵,从而得到后验以估计测试集y*。则:


直接上代码,我们以一维为例:

import numpy as np
import matplotlib.pyplot as pltclass GPR:def __init__(self,optimize=True):self.is_fit = Falseself.train_X,self.train_y = None,Noneself.params = {"l":0.5,"sigma_f":0.2}self.optimize = optimizedef fit(self,X,y):self.train_X = np.asarray(X)self.train_y = np.asarray(y)self.is_fit = Truedef predict(self,X):if not self.is_fit:print("GPR Model not fit yet")returnX = np.asarray(X)kxx = self.kernel(self.train_X,self.train_X)kpp = self.kernel(X,X)kxp = self.kernel(self.train_X,X)kxx_inv = np.linalg.inv(kxx+1e-8*np.eye(len(self.train_X)))mu = kxp.T.dot(kxx_inv).dot(self.train_y)conv = kpp - kxp.T.dot(kxx_inv).dot(kxp)return mu,convdef kernel(self,x1,x2):dist_matrix = np.sum(x1**2, 1).reshape(-1, 1) + np.sum(x2**2, 1) - 2 * np.dot(x1, x2.T)return self.params["sigma_f"] ** 2 * np.exp(-0.5 / self.params["l"] ** 2 * dist_matrix)

上面的代码中:
     train_X和train_y是已经知道的训练样本和标签。 X是需要预测的样本,核函数用的是高斯核函数,见下

代码 self.params = {“l”:0.5,“sigma_f”:0.2}中的sigma_f就是公式中的σ,l就是公式中的l。这样代码中定义的函数kernel就是高斯核函数。有应为y∗y*y∗=K(X∗,X)K(X*,X)K(X∗,X)K(X,X)−1K(X,X)^{-1}K(X,X)−1 。predict函数中就是计算通过计算K(X∗,X)K(X*,X)K(X∗,X)和K(X,X)−1K(X,X)^{-1}K(X,X)−1来得到均值和方差的。

3.2、采集函数

高斯过程回归的核心公式是y∗y*y∗=K(X∗,X)K(X*,X)K(X∗,X)K(X,X)−1K(X,X)^{-1}K(X,X)−1,其中的K(X∗,X)K(X*,X)K(X∗,X)和K(X,X)−1K(X,X)^{-1}K(X,X)−1都是已知的,我们可以根据该式获得新样本X∗X*X∗的预测值y∗y*y∗,贝叶斯优化是通过迭代来逐步实现目标的,通过高斯过程回归完成了对单个未知样本的预测,而采集函数就是通过高斯过程回归中计算出的均值和方差来决定下一个取值点的应该怎么取,常见的采集函数有UCB,PI,EI三种:
①UCBUCBUCB(Upper confidence bound):
        UCBUCBUCB=μ(x)μ(x)μ(x)+kσ(x)kσ(x)kσ(x),其中,μ(x)μ(x)μ(x)为均值,σ(x)σ(x)σ(x)为方差。
②PIPIPI(probability of improvement):
       PI(x)PI(x)PI(x)=P(f(x)≥f(x+)+υ)P(f(x)≥f(x^{+})+υ)P(f(x)≥f(x+)+υ)=Φ(μ(x)−f(x+)−υσ(x))Φ(\frac{μ(x)−f(x^{+})−υ}{σ(x)})Φ(σ(x)μ(x)−f(x+)−υ​)
     超参数vvv用于调节探索和开发,f(x+)f(x^{+})f(x+)是现有的最大值,vvv=0倾向于收敛到f(x+)f(x^{+})f(x+)附近,Φ(•)Φ(•)Φ(•)表示正态累计分布函数。其原理是找到未知点的函数值比f(x+)f(x^{+})f(x+)大的概率,取这些点中概率最大的点,具体比f(x+)f(x^{+})f(x+)大多少不考虑,这里通过Z-scores标准化法,让每个未知点函数值大于f(x+)f(x^{+})f(x+)的概率可以进行比较。
      Z-scores标准化法,x−μσ\frac{x−μ}{σ}σx−μ​为观察点,μ 为所有观察点的均值,σ为所有观察点标准差,x−μσ\frac{x−μ}{σ}σx−μ​的概率密度函数符合标准正态分布。
③EIEIEI(Expected improvement):

      其中,z=μ(x)−f(x+)σz=\frac{μ(x)−f(x^{+})}{σ}z=σμ(x)−f(x+)​,Φ(•)Φ(•)Φ(•)表示正态累计分布函数,f(x+)f(x^{+})f(x+)为现有最大值。EI函数解决了PI未考虑未知点,比已知最大点大多少的问题,EI函数求的是未知点函数值比)f(x+))f(x+))f(x+)大的期望。

3、贝叶斯优化相关理论知识相关推荐

  1. python37从零开始学_从零开始学Python【37】--朴素贝叶斯模型(理论部分)

    [知识铺垫] 在介绍如何使用贝叶斯概率公式计算后验概率之前,先回顾一下概率论与数理统计中的条件概率和全概率公式: 如上等式为条件概率的计算公式,表示在已知事件A的情况下事件B发生的概率,其中P(AB) ...

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

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

  3. 一步步教你轻松学朴素贝叶斯模型算法理论篇1

    一步步教你轻松学朴素贝叶斯模型理论篇1 (白宁超2018年9月3日17:51:32) 导读:朴素贝叶斯模型是机器学习常用的模型算法之一,其在文本分类方面简单易行,且取得不错的分类效果.所以很受欢迎,对 ...

  4. ​独家 | 一文读懂贝叶斯优化

    作者:Apoorv Agnihotri,Nipun Batra 翻译:王雨桐 校对:张一然 本文约6200字,建议阅读10+分钟. 本文将贝叶斯优化拆解为易于理解的小部分. 许多现代的机器学习算法都涉 ...

  5. 多任务进化优化算法(二) 多因子进化算法(MFEA)的理论基础、多任务贝叶斯优化以及MFEAII简介

    摘要 ​ 此篇博客主要介绍了MFEA理论推导及其改进算法MFEA-II.在多任务优化的情景下,如果任务之间存在潜在关系,那么高质量的解在这些任务之间的转移可以显著提高算法的性能.然而有的时候缺乏关于任 ...

  6. 基于R语言的代理模型(高斯过程、贝叶斯优化、敏感性分析、异方差性等)高级技术应用

    基于R语言的代理模型(高斯过程.贝叶斯优化.敏感性分析.异方差性等)高级技术应用 直播时间:10月30日-10月31日.11月6日-7日(4天+1周辅导练习) (上午9:30-12:00  下午14: ...

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

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

  8. 超参数优化 贝叶斯优化框架_mlmachine-使用贝叶斯优化进行超参数调整

    超参数优化 贝叶斯优化框架 机器 (mlmachine) TL; DR (TL;DR) mlmachine is a Python library that organizes and acceler ...

  9. 贝叶斯优化神经网络参数_贝叶斯超参数优化:神经网络,TensorFlow,相预测示例

    贝叶斯优化神经网络参数 The purpose of this work is to optimize the neural network model hyper-parameters to est ...

  10. 基于贝叶斯优化的离散组合序列问题调研

    基于贝叶斯优化的离散组合序列问题调研 标题 发表时间 作者 期刊 引用量 摘要 问题 心得体会 Applying Bayesian Approach to Combinatorial Problem ...

最新文章

  1. 康奈尔Nature论文:一种使用反向传播训练的深度物理神经网络
  2. hdu-4501-小明系列故事——买年货(四维背包)
  3. linux安装tomcat_【零基础学云计算】详述Linux系统中Tomcat部署及优化
  4. P1337-[JSOI2004]平衡点/吊打XXX【模拟退火】
  5. Ubuntu18.04设置DNS服务器(可用)
  6. linux 网卡bond
  7. Xshel和Xftp免费版
  8. 子网掩码最简单通俗的解释
  9. 面试备战笔记2019
  10. JAVA实现邮箱注册功能
  11. WIN32 获取programdata等指定的系统目录的路径
  12. 电商项目:高仿小米商城(一)
  13. 美团和支付宝,越来越像
  14. 银河麒麟操作系统开发_银河初级开发者指南
  15. strstr 函数介绍
  16. 网关短信php,通过ICQ网关发送手机短信的PHP源程序-PHP教程,PHP应用
  17. vb ping 计算机名称,vb实现ping
  18. mac修改shell
  19. 联想之殇:拥有摩托罗拉为何还在手机市场一败涂地?
  20. dB、dBm、dBw的区别

热门文章

  1. ORB-SLAM 解读(五) 地图点投影进行特征匹配
  2. 3-汇编语言中与内存访问相关的寄存器/操作(DS+数据段+SS/SP+栈相关操作)
  3. RHEL7.X安装12.2RAC时root.sh错误CLSRSC-400的解决方案
  4. ie为什么那么垃圾(不是ie垃圾,是ie用的人太多了,很多在用低版本)
  5. 10.15 iptables filter表小案例;10.16—10.18 iptables nat
  6. kvm virtio功能配置
  7. Spring Data JPA 介绍和使用
  8. XenApp/XenDesktop 7.12新功能LHC解读
  9. Create directory命令
  10. [转载]各种图像处理类库的比较及选择(The Comparison of Image Processing Libraries)