zoukankan      html  css  js  c++  java
  • <转>浅谈:高斯过程与贝叶斯优化

    高斯过程(Gaussian process)

    高斯过程常在论文里面简写为GP。定义:如果随机过程的有限维分布均为正态分布,则称此随机过程为高斯过程或正态过程。

    首先我们来解读一下定义:

    第一个问题:什么是随机过程?

    大家都学过概率论,一定知道什么叫样本空间和随机变量(此处假设读者知道)。在概率论中,讲过样本空间,随机变量相当于是在样本空间中的一次采样,采样的结果是一个事件,在每次采样的时候都满足一定的分布。随机过程和随机变量的区别在于,样本空间里装的不是事件,装的是过程(一串事件)。每次的采样的结果是一个过程,比如一个序列,一个时间的函数等等。

    样本空间就是图中蓝紫色的部分,在蓝紫色空间中随便画一条函数,都是一个可能的随机过程。(这张图是盗用的“阿米斯丹猫的博客”)

    第二个问题:什么是“随机过程的有限维分布均为正态分布”?

    我们先来看一个随机序列:这是一个有限维n的序列,我们可以理解为一个无穷维序列进行的n次采样。在这里可以理解为时间,但是更准确的应该理解为一个连续的指标集。因为其一般性,就可以看成的有限维分布。

    所以“随机过程的有限维分布均为正态分布”就好理解了,即服从一个n元正太分布。

    在机器学习任务中,我们往往是假设我们的问题满足一个高斯过程的,或者通过核函数来“拓展”高斯过程对其他过程的表示能力。

    贝叶斯优化(Bayesian Optimization)

    贝叶斯优化的主要目的是与大部分机器学习算法类似,学习模型的表达形式 ,在一定范围内求一个函数的最大(小)值。

    这类往往很特殊:

    1. 没有解析表达或者形式未知,故而没办法用跟梯度有关的优化方法;

    2. 值的确定会受到一些外界干预(如人的干预)。

    贝叶斯优化算法核心步骤如下:

    (1).通过样本点对高斯过程 进行估计和更新。(后简称高斯过程)

    (2).通过提取函数acquisition function)来指导新的采样。(后简称提取函数)

    高斯过程:假设我们需要估计的模型服从高斯过程,即:

    这里的协方差矩阵要用到内积的核化,笔者理解为拓展了高斯过程表达其他过程的能力,毕竟在实际问题上直接假设一个过程服从高斯过程稍微有点牵强。

    假设有一组样本点

    为了简便推导,先假设数据提前被中心化,即,其中:

    对于一个新样本 ,由于新样本的加入会更新高斯过程的协方差矩阵:

    协方差矩阵更新过程如下:

    有了更新后的协方差矩阵就可以通过前t个样本估计出的后验概率分布:

    关于上述内容的推倒过程和核函数该如何选择的问题,请参考《Gaussian Processesfor Machine Learning》。

    提取函数:从上述高斯过程可以看出,通过采样可以得到目标函数的概率描述。那么很自然地,我们希望通过采样来精确这种描述。我们看论文的时候经常会在论述acquisition function 的地方看到两种采样思路,一种是explore和exploit:

    Explore:探索新的空间,这种采样有助于估计更准确的

    Exploit:在已有结果附近(一般是已有最大值附近)进行采样,从而希望找到更大的

    acquisition function的目的就旨在平衡这两种采样过程。

     

    这里举一个不太恰当的栗子,对于一个吃货,到一个陌生的城市去寻找美食,其实就是一个采样再评价的过程。(显然吃货可以吃遍全城,但是受限于囊中羞涩,不得不考虑如何优化采样)Exploit就是在曾经已经吃过的餐厅里,再细细品味寻找一个最优的;Explore就好像是寻找新的餐厅。acquisition function在这里的意义就在于寻找一个更加合理的策略去平衡这二者,给出一个下一次采样的目标饭点。这个问题就是一个典型的没有模型,而且采样结果受外界干预(人的主观评价)的例子。

    回归正题,在数据问题里,Explore是希望选择有更大方差的数据,Exploit是希望选择更接近均值的数据。
    常见的方法有:
    1. Expected Improvement

    2. Upper Confidence Bound

    下面一一介绍:

    方法1:Expected Improvement(EI)

    acquisition function:

    这里的定义为数据集D上的最大值。上面的定义式子并不直观,我们将其展开:

    我们为了推导方便定义一个扰动参数:

    其中是高斯分布的累计概率函数,是高斯分布的概率密度函数

    所以:

    方法2:Upper Confidence Bound(UCB)

    相比于上面的EI而言,UCB则更加简单粗暴,效果也十分不错。

    从式子可以看出来,UCB就是一个将Explore和Exploit进行了线性加权。

    到此为止,我们解决了模型的估计,更新(高斯过程)和再采样(提取函数)的过程。贝叶斯优化就是不断地进行采样,计算更新模型的过程。

  • 相关阅读:
    C++右值引用的参考
    U3D 文档 GPU INSTANCING
    UNITY statistic中的 SetPass和Batches
    时间复杂度
    转,数组遍历的三种方式
    bug纪录:PhotonServer-14052: 17:14:09.033
    关于.net standard 与 .net core, net framework
    【转】未能加载文件或程序集或它的某一个依赖项,系统找不到指定的文件
    C# 计时函数精度测试
    一张图看懂dex
  • 原文地址:https://www.cnblogs.com/jiadi321/p/9509882.html
Copyright © 2011-2022 走看看