Sequential Model-Based Optimization(SMBO)

来源:互联网 发布:恩牛网络怎么样 编辑:程序博客网 时间:2024/06/05 16:42

The Gaussian Process Approach(GP)

所谓概率模型,是指训练模型的形式是P(Y|X)。输入是X,输出是Y,训练后模型得到的输出不是一个具体的值,而是一系列的概率值(对应于分类问题来说,就是输入X对应于各个不同Y(类)的概率),然后我们选取概率最大的那个类作为判决对象(软分类–soft assignment)。所谓非概率模型,是指训练模型是一个决策函数Y=f(X),输入数据X是多少就可以投影得到唯一的Y,即判决结果(硬分类–hard assignment)
高斯混合模型概述

1.1. 单高斯模型(Single GaussianModel, SGM)

N(x;μ,C)=1(2π)n|C|exp[12(xμ)TC1(xμ)](1)
对于单高斯模型,由于可以明确训练样本是否属于该高斯模型(如训练人脸肤色模型时,将人脸图像肤色部分分割出来,形成训练集),故μ通常由训练样本均值代替,由样本方差代替。为了将高斯分布用于模式分类,假设训练样本属于类别K,那么,式(1)可以改为如下形式:
N(x/K)=1(2π)n|C|exp[12(xμ)TC1(xμ)](2)

式(2)表明样本属于类别K的概率大小。从而将任意测试样本输入式(2),均可以得到一个标量,然后根据阈值t来确定该样本是否属于该类别,阈值t可以为经验值,也可以通过实验确定。

1.2高斯混合模型(Gaussian Mixture Model,GMM)

高斯混合模型就是用高斯概率密度函数(正态分布曲线)精确地量化事物,它是一个将事物分解为若干的基于高斯概率密度函数(正态分布曲线)形成的模型。s是单一高斯概率密度函数的延伸。
假设有一批观测数据

X={x1,x2,...,xn}
,数据个数为n个。取H中的某一部分样本点生成单一的高斯模型,K个单一的高斯模型投票选择最大概率的分类就形成了混合高斯模型。

假设每个高斯模型在混合模型所占的比例αj,则有这些观测数据分布密度函数如下:
p(xi)=Mj=1αjNj(xj;μj,Cj),Mj=1αj=1
其中Nj(x;μj,Cj)=1(2π)n|Cj|exp[12(xμj)TC1j(Xμj)]
表示第j个的单一高斯模型。其中μ表示x数学期望或均值,C表示协方差矩阵。
φj=(αj,μj,Cj),GMM一共有M个SGM,通过样本集X来估计来估计GMM的所有参数: 令Φ=(φ1,φ2,...,φM)T,样本X的概率公式为:
p(X|Φ)=Ni=1Mj=1αjNj(Xi;μj,Cj)
通过EM(Expectation Maximum)算法对GMM参数进行估计。
算法流程:
(1)初始化
方案1:协方差矩阵Cj0设为单位矩阵,每个模型比例的先验概率αj0=1/M,均值μj0设为随机数。
(2)估计步骤(E-step)
αj的后验概率为
βij=αjNj(xiΦ)Mk=1αkNk(xi;Φ),1in,1jM
(3)最大化步骤(M-step)
αj=Ni=1βijN
更新权值:
μj=Ni=1xiβijNi=1βij
更新均值:
Cj=Ni=1βij(xiμTj)(xiμTj)TNi=1βij
更新方差矩阵
(4)收敛条件
不断地迭代步骤(2)与(3),重复更新上面的三个值,直到|p(X|Φ)p(X|Φ)|ε,其中为更新参数后计算的值,即前后两次迭代得到的结果变化小于一定程度则终止迭代,通常ε=105

高斯过程的某个x得到的f(x)是个不确定的过程。
如何通俗易懂的了解高斯模型
https://www.zhihu.com/question/46631426?sort=created

详细讲解期望最大化算法的高斯过程的实施
http://www.cnblogs.com/549294286/p/3273290.html

全局超参数优化

全局超参数可以使用多种方法,有grid search 和random search.

  • grid search 对参数空间一一举例,类似枚举,对连续型float型枚举不出来所有个体的参数空间并不适用,且时间花费较大。
  • random search 对参数空间随机搜索,其搜索范围遍布整个搜索区域,但是对于评估函数时间花费较大的优化函数,其效果并不理想。
  • 因此,新的时序模型全局优化(SMBO)出现了:

Sequential Model-Based Optimization(SMBO)

Model-based optimization 方法是生成可以预测性能并可以使用其来进行优化的一个回归模型(也称之为响应面模型)。
SMBO也是如此,它不停的迭代去训练模型,再基于该模型收集其他的数据。
对训练集

{(Θ1,O1),...,(Θn,On)}
进行模型训练,其中
Θi={(Θi,1,...,Oi,d)}
表示一组参数配置,d表示d个需要配置的参数,O表示该组参数可得的观测值(fitness/性能),给一组新的参数Θn+1,模型的目标就是去预测它的性能On+1

SMBO也可以表示为每一次迭代都会基于其已经求过评估的域H=(x1,f(x1),...,xn,f(xn))求得其某种模型分布(GP,或者是密度分布),假设为GP,按照某种规则(Probability of Improvement,Expected Improvement,GP Upper Confident Bound),一般为EI,推介一个新的x(x=argminxnf(xn)), 并对这个新推介的x,求评价函数f(x),再将其(x,f(x))加入到域H,更新GP分布,重新推介x,如此循环。

SMBO(f,M0,T,S)
  HΘ
  For t1 to T
      xargminx S(x,Mt1)
     Evaluate f(x),
     HH(x,f(x))
     Fit a new model Mt to H
  return H
f表示评价函数(loss function),M0表示某种分布模型(GP),S表示请求函数,会基于模型M0及优化标准(EI\PI\GP-UCB,推介一个下次评价的x

SMBO已经大量使用于适应度函数代价太大的应用中,譬如真实的适应度函数f:χR有很高的复杂度,而近似的f更容易评价。SMBO典型的内部循环对于这种替代进行大量的数值优化\或者说替代改变。最大化替代点x被作为计算真实评估值的提议点。这种动态的学习机制算法模板如下:SMBO算法优化标准不是从模型f中得到的x,而是通过观测历史域H得到的模型f

通过对H进行建模得到近似f的两种策略:GP和tree-structured Parzen estimator

GP:

高斯进程(GP)简要表示为在某个连续空间上的观测域的统计模型,GP的每个点的输入空间都是正态分布的随机变量,确定期望mean和协方差函数,就可以得到一个GP(协方差函数有多种形式,用kernel表示)。
https://en.wikipedia.org/wiki/Kernel_density_estimation
关于期望为0,kernel 为k
f的先验分布是一个期望为0,kernel为k的GP,其条件概率分布也就是基于样本H=(xi,F(xi))ni=1也是一个GP过程。
用GP对模型f进行建模,设置y是在观测域H,y=min{f(xi),1in}上的最优值。模型pM是观测域H的后验高斯分布。

GP每次迭代时间代价与观测域H的三次方与优化参数个数线性相关。然而评估函数f(x)的时间复杂度甚至高于立方的复杂度。

该算法的优化标准是Expected Improvement (EI).当然也可以是Probability of Improvement and EI,最小化极小值条件熵等等。EI是最原始的而且在很多设置中表现性能很好,EI是在关于 f:χRN的模型pM下的f(x)超过界限y的期望:

EIy(x):=max(yy,0)pM(y|x)dy  (1)

tree-structured Parzen estimator

处理高维的适应度评估预算比较小的超参数优化。高斯进程方法主要对py|x)进行建模,而TPE主要对于模型p(x|y)p(y).TPE算法将配置空间转换为非参数型的密度分布。配置空间可以使用均匀分布、对数均匀分布、定量的对数均匀分布,分类变量表示。TPE算法对其做了转换:均匀分布截断高斯混合模型;对数分布指数的截断高斯混合模型;分类权重分配分类,使用观测域H上的不同的{x(1),...x(k)}值在非参数密度分布下,可以在配置空间上产出一系列不同的密度分布。

TPE定义了p(x|y)用以下两种表达方式:
p(x|y)=l(x) if y<y
p(x|y)=g(x) if yy
l(x)表示观测值x(i)的损失函数比y小的密度组成,g(x)表示观测值x(i)的损失函数大于等于y小的密度组成。GP一般支持y少于最好观测损失,而TPE的y大于最好的观测f(x),它选择y点作为观测值y分位点γp(y<y)=γ,l,g都是树状的形式存储,因此从l中得到根据评估g(x)/l(x)很容易可以得到一系列的推荐值x,每次迭代的时间代价与|H|大小线性成线性增长,也与优化参数个数成正相关。

根据对在基于k近邻算法在观测域B={x(1),...,x(k)}H上生成模型,TPE是一个以围绕每个点x(i)B的等价权重的高斯先验分布混合器。其每个高斯分布的标准偏离表示为左右邻居的距离。对于离散的值,假设N个x的先验分布均为pi,后验分布表示为Npi+Ci,Ci表示在B上发生的概率。
优化p(x|y)代替优化px|yp(y),主要利用对EI的优化,EI是一个理想推介x的方法:

EIy(x):=y(yy)p(y|x)dy=y(yy)p(x|y)p(y)p(x)dy

通过构造γ=p(y<y)p(x)=Rp(x|y)p(y)dy=γl(x)+(1γ)g(x)
所以
y(yy)p(x|y)p(y)dy=l(x)y(yy)p(y)dy=γyl(x)l(x)yp(y)dy

所以,最后EIy(x):=γyl(x)l(x)yp(y)dyγl(x)+(1γ)g(x)(γ+g(x)l(x)(1γ))1.这最后的表达式表示对点x最大化改进是最大概率的l(x)和最小概率的g(x),则树结构形式的lg可以得到许多的改进点从函数l通过g(x)/l(x),因此每次迭代都会返回一个具有最大的EI的合适点x

细节部分:
模型g(x)l(x)其实也是高斯过程(GP)。可自适应的parzen评估器基于观测域K个近邻点组成的β={x(1),...,x(K)}H,每个连续参数都被特征为范围(a,b)之间的均匀先验,或者是高斯分布,或者是对数均匀分布。TPE为以x(i)β为中心的等价的权重先验权重,偏离被设置为其左右邻居的最大距离的每个高斯分布。在对于离散的情况,假设先验是N个概率为pi的向量,后验概率向量表示的是Npi+Ci,其中Ci表示的是在β中选择i的发生概率.对数均匀分布表示在对数域上的均匀分布。

其最主要的效率改进是只需要每次对最理想的x求评估而且其推荐点将总是往有可能好的方向发展。

hyperopt:就是一个关于超参数优化的开源项目;该开源目前只实现了随机搜索和TPE算法。

主要包括四个部分:
- 参数空间的表示:normal/choice/uniform等多种转换形式
- loss function :评价函数,也可能加入其他条件,譬如时间
- hyper parameter optimization algorithm(HPOA)超参数优化的主题部分
- database 实验过程中已计算的点和评估值

该项目还有用mongodb进行存储数据。
下面有个简单的例子:

from hyperopt import fmin, tpe, hpbest = fmin(fn=lambda x: x ** 2,    space=hp.uniform('x', -10, 10),    algo=tpe.suggest,    max_evals=100)print best

一些跟常用的Hyperopt和贝叶斯优化相关的软件
使用Hyperopt优化的软件:
hyperopt-sklearn -使用hyperopt优化across sklearn estimators (Work In Progress).
hyperopt-convnet -优化convolutional architectures for image classification (Work In Progress)
hyperopt-dbn - 优化深度认知网络(Deep Belief Networks)

其他贝叶斯优化软件:
SMAC - Sequential Model-based Algorithm Configuration (based on regression trees).
Spearmint - Gaussian-process SMBO in Python.
BayesOpt - Bayesian optimization toolbox

有几种改进:

1、在TPE算法过程中,有一种权重改进,试验点越新得到,权重越大,概率越大,越容易被选择到,观测值T,取最好的T/4的点去评估l(x)的分布。
2、GP算法前30次迭代使用的点都是随机样本得到的,到30代之后的样本点来自于历史域H;TPE算法的初始域是根据用户定义的先验分布GP随机得到的20个点。meta-learning :基于对类似数据得到的好的超参数列表在新的数据上处理也能到好的结果,因此,对超参数SMBO方法加入记忆功能,遗传机制,让其初始化H都带有之前训练的参数列表。

本文所有均根据以下论文得到:
[1]Sequential Model-Based Optimization for General Algorithm Configuration
主要介绍了SMBO算法,并对其进行改进得到了强化版本ROAR
[2]Making a Science of Model Search
主要讲了介绍了hyperopt四个概念,对不同数据集LFW,Pibfig83,CIFAR-10用TPE和 随机搜索两种算法进行了对比
[3]Initializing Bayesian Hyperparameter Optimization via Meta-Learning
[4]Practical Bayesian optimization of machine learning algorithms
介绍了具有GP前验的贝叶斯优化:介绍了贝叶斯优化用到的请求函数:三个标准:Probability of Improvement(PI标准),Expected Improvement(EI标准),GP Upper Confidence Bound(GP-UCB标准),显示了高斯先验的重要性,可能极大程度影响贝叶斯优化成功或失败
[5]Algorithms for Hyper-Parameter Optimization
主要介绍了GP及GP的EI优化,TPE及TPE的EI优化,然后对随机搜索及SMBO算法在对DBN超参数优化上做了比较。
[6]Random Search for Hyper-Parameter Optimization
主要内容介绍了随机搜索在超参数优化方面的应用

0 0