zoukankan      html  css  js  c++  java
  • 基于高斯过程的贝叶斯优化(三)GP超参数的估计

    前面的文章大致描述了基于高斯过程(GP)贝叶斯优化的原理框架,该框架中也存在了几个参数,本篇文章简单介绍如何对他们进行估计。

    首先介绍一下贝叶斯优化框架的超参数有哪些:

    回忆我们将高斯过程表述为以下形式:

    [f ( x ) sim G P left( m ( x ) , k left( x , x ^ { prime } ight) ight)]

    其中$m(x)$表示均值函数,一般都设为0,不需要更新,我们更关心的是核函数k,核函数的选取主要有两种:squared exponential kernel以及Matern kernel

    下面给出两种核函数的具体形式:

    squared exponential kernel:

    [k left( mathbf { x } _ { i } , mathbf { x } _ { j } ight) = exp left( - frac { 1 } { 2 } left( mathbf { x } _ { i } - mathbf { x } _ { j } ight) ^ { T } operatorname { diag } ( oldsymbol { heta } ) ^ { - 2 } left( mathbf { x } - mathbf { x } ^ { prime } ight) ight)]

    其中$operatorname { diag }oldsymbol( { heta })$表示对角阵

    Matern kernel:

    [k left( mathbf { x } _ { i } , mathbf { x } _ { j } ight) = frac { 1 } { 2 ^ { < - 1 } Gamma ( zeta ) } left( 2 sqrt { zeta } left| mathbf { x } _ { i } - mathbf { x } _ { j } ight| ight) ^ { zeta } H _ { zeta } left( 2 sqrt { zeta } left| mathbf { x } _ { i } - mathbf { x } _ { j } ight| ight)]

    实践中,Jasper Snoek[1]推荐采用Matern kernel。

    问题在于如何对核函数中存在的超参数进行估计呢?

    实际中一般有两种方法,极大似然与MCMC估计法,先介绍采用极大似然方法更新超参数。

    极大似然方法

    极大似然通过直接使得GP超参数$ heta$的后验分布最大化进行计算。

    [L = log p ( y | heta ) = - frac { 1 } { 2 } y ^ { T } left( K + sigma _ { n } ^ { 2 } I ight) ^ { - 1 } y - frac { 1 } { 2 } log left| K + sigma _ { n } ^ { 2 } I ight| - frac { n } { 2 } log 2 pi]

    注意这里的形式是加了噪声项的高斯模型。其中$y  = f left( mathbf { x }   ight) + epsilon,$,并且$epsilon sim mathcal { N } left( 0 , sigma _ { ext { noise } } ^ { 2 } ight)$,此时的协方差矩阵K为

    [mathbf { K } = left[ egin{array} { c c c } { k left( mathbf { x } _ { 1 } , mathbf { x } _ { 1 } ight) } & { dots } & { k left( mathbf { x } _ { 1 } , mathbf { x } _ { t } ight) } \ { vdots } & { ddots } & { vdots } \ { k left( mathbf { x } _ { t } , mathbf { x } _ { 1 } ight) } & { dots } & { k left( mathbf { x } _ { t } , mathbf { x } _ { t } ight) } end{array} ight] + sigma _ { ext { nois } } ^ { 2 } I]

    此时:

    [P left( y _ { t + 1 } | mathcal { D } _ { 1 : t } , mathbf { x } _ { t + 1 } ight) = mathcal { N } left( mu _ { t } left( mathbf { x } _ { t + 1 } ight) , sigma _ { t } ^ { 2 } left( mathbf { x } _ { t + 1 } ight) + sigma _ { ext { noise } } ^ { 2 } ight)]

    其中

    [mu _ { t } left( mathbf { x } _ { t + 1 } ight) = mathbf { k } ^ { T } left[ mathbf { K } + sigma _ { ext { noise } } ^ { 2 } I ight] ^ { - 1 } mathbf { y } _ { 1 : t }]

    [sigma _ { t } ^ { 2 } left( mathbf { x } _ { t + 1 } ight) = k left( mathbf { x } _ { t + 1 } , mathbf { x } _ { t + 1 } ight) - mathbf { k } ^ { T } left[ mathbf { K } + sigma _ { ext { noise } } ^ { 2 } I ight] ^ { - 1 } mathbf { k }]

    MCMC方法

    MCMC方法是通过马尔科夫链实现对一个复杂分布p(x)进行采样的技术。这里直接略过对MCMC方法的基本介绍。

    注意到我们的最终目的仍然是求模型M中某个特定超参数下acquisition function值,因此,可以通过条件概率方法进行展开

    [hat { a } left( mathbf { x } ; left{ mathbf { x } _ { n } , y _ { n } ight} ight) = int a left( mathbf { x } ; left{ mathbf { x } _ { n } , y _ { n } ight} , heta ight) p ( heta | left{ mathbf { x } _ { n } , y _ { n } ight} _ { n = 1 } ^ { N } ) mathrm { d } heta]

    这里的$ heta$表示GP中的超参数,而 $left{ mathbf { x } _ { n } , y _ { n } ight} _ { n = 1 } ^ { N }$表示的针对模型M选择超参数(x)并进行评估的结果(y)。为了估计这个积分的值,我们需要实现对分布$ p ( heta | left{ mathbf { x } _ { n } , y _ { n } ight} _ { n = 1 } ^ { N } )$的采样。注意到这里

    [p ( heta | left{ mathbf { x } _ { n } , y _ { n } ight} _ { n = 1 } ^ { N } ) propto p( heta) p(left{ mathbf { x } _ { n } , y _ { n } ight} _ { n = 1 } ^ { N } | heta)]

    也就是说只要再给GP超参数$ heta$提供一个先验让上式右边可以具体计算,分布$ p ( heta | left{ mathbf { x } _ { n } , y _ { n } ight} _ { n = 1 } ^ { N } )$就能通过MCMC方法就行采样。在这里还存在一个问题,当对$ heta$进行采样时,如果采用Metropolis-Hastings采样方法,由于接受率可能很低,而在计算接受概率时势必需要根据新采样的$ heta$重新计算其后验概率,这可能造成很大的计算开销,因此Iain Murray[2]等人改进了Elliptical Slice sampling方法进行采样,并取得了较好的效果。

    References

    [1] Snoek J , Larochelle H , Adams R P . Practical Bayesian Optimization of Machine Learning Algorithms[J]. Advances in neural information processing systems, 2012.

    [2] Murray I , Adams R P . Slice sampling covariance hyperparameters of latent Gaussian models[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2010.

    [3] Brochu E , Cora V M , De Freitas N . A Tutorial on Bayesian Optimization of Expensive Cost Functions, with Application to Active User Modeling and Hierarchical Reinforcement Learning[J]. Computer Science, 2010.

  • 相关阅读:
    hive实现根据用户分组,按用户记录求上下两条记录的时间差
    国外互联网公司大数据技术架构研究
    Hadoop源码解析之 rpc通信 client到server通信
    一致性哈希与java实现
    spark 对hbase 操作
    Spark MLlib(下)--机器学习库SparkMLlib实战
    PHP源码进行加密(仅linux)
    有个问题需要将字符串(大数字)计算相加并转换成字符串,传递的参数是字符串。
    Js中Array 函数使用方法
    phpstorm配置xdebug调试
  • 原文地址:https://www.cnblogs.com/statruidong/p/10577625.html
Copyright © 2011-2022 走看看