优化|贝叶斯优化系列(二):大规模贝叶斯优化算法

在这里插入图片描述

原文:When Gaussian Process Meets Big Data: A Reviewof Scalable GPs
原文作者:Haitao Liu , Yew-Soon Ong
论文解读者:赵进

编者按

高斯过程模型因其出色的预测性能在仿真建模中得到了广泛应用,然而在当今大数据时代,其高昂的计算成本越来越成为一个突出的问题。为了应对这一挑战,研究人员提出了多种可扩展的高斯过程模型。本文详细介绍了当前主流的一些可扩展高斯过程模型,并对它们进行了对比分析。

摘要

本文专门回顾了最先进的可扩展高斯模型,包括全局近似和局部近似两大领域。在全局近似方面,本文关注稀疏近似方法,包括修改先验进行精确推理的先验近似、保留精确先验进行近似推理的后验近似,以及利用核矩阵特定结构的结构化稀疏近似。在局部近似方面,则关注专家混合模型,通过多个局部专家的模型平均来提高预测效果。最后,文章讨论了可扩展高斯模型在不同情况下的扩展性和未解决的问题,以启发未来研究的新思路。

引言

大数据带来的海量信息和不断发展的计算机硬件推动了机器学习的成功,但也给高斯过程回归(GPR)带来了挑战。作为一种著名的非参数、可解释的贝叶斯模型,高斯模型的时间复杂度为 O ( n 3 ) \mathcal{O}(n^{3}) O(n3)。为了在保持预测质量的同时提高可扩展性,人们提出了多种可扩展的高斯模型,可大致分为以下几类:

  • 全局近似:通过全局提炼来近似核矩阵 K n n \boldsymbol{K}_{nn} Knn。这种提炼可以通过以下几种方式实现:
    • 使用 m ( m ≪ n ) m(m≪n) m(mn) 个点的训练数据子集,得到一个较小的核矩阵 K m m \boldsymbol{K}_{mm} Kmm
    • 移除 K n n \boldsymbol{K}_{nn} Knn 中不相关的元素,得到一个稀疏核矩阵 K ~ n n \tilde{\boldsymbol{K}}_{nn} K~nn
    • Nyström 近似,选择 m m m 个诱导点来近似 K n n \boldsymbol{K}_{nn} Knn,即 K n n ≈ K n m K m m − 1 K m n \boldsymbol{K}{nn} \approx \boldsymbol{K}{nm} \boldsymbol{K}{mm}^{-1} \boldsymbol{K}_{mn} KnnKnmKmm1Kmn
  • 局部近似:遵循分而治之的思想,关注训练数据的局部子集。局部近似每次只需处理包含 m 0 ( m 0 ≪ n ) m_0(m_0≪n) m0(m0n) 个数据点的局部专家。此外,为了生成具有有效不确定性的平滑预测,采用了专家混合或产品的模型平均法。

全局近似

全局近似主要通过以下3种方式近似核矩阵 K n n \boldsymbol{K}_{nn} Knn

数据子集 (Subset of Data)

SoD是通过使用训练数据 D D D的一个子集 D s o d D_{sod} Dsod来近似完整 GP 的最简单策略。因此,SoD在时间复杂度为 O ( m 3 ) \mathcal{O}(m^3) O(m3)的情况下保留了标准高斯推理,因为它操作的核矩阵 K m m \boldsymbol{K}_{mm} Kmm仅包含 m m m个 ( m ≪ n m≪n mn) 数据点。尽管SoD在数据冗余的情况下能产生合理的预测均值,但由于子集的限制,它在产生预测方差时表现不佳,容易导致过拟合。

对于 D s o d D_{sod} Dsod的选择,有几种方法:

  • 可以随机从 D D D中选择 m m m个点;
  • 使用聚类技术(如 k k k-means 和 KD 树)将数据分成 m m m个子集,并选择每个子集的中心点;
  • 采用主动学习标准(如微分熵、信息增益和匹配追踪)来依次选择数据点,但这会带来更高的计算成本。
稀疏核(Sparse Kernels)

稀疏核通过特别设计的紧支撑核直接实现核矩阵 K n n \boldsymbol{K}_{nn} Knn的稀疏表示 K ~ n n \tilde{\boldsymbol{K}}_{nn} K~nn,即当 ∣ x i − x j ∣ \left|\boldsymbol{x}_i - \boldsymbol{x}j\right| xixj超过某个阈值时,令 k ( x i , x j ) = 0 k(\boldsymbol{x}_i, \boldsymbol{x}_j) = 0 k(xi,xj)=0。只使用 K ~ n n \tilde{\boldsymbol{K}}_{nn} K~nn 中的非零元素参与计算。使用紧支撑核的高斯模型,其计算复杂度为 O ( α n 3 ) \mathcal{O}(\alpha n^3) O(αn3) 0 < α < 1 0 < \alpha < 1 0<α<1。构建有效紧支撑核的主要挑战是要确保 K ~ n n \tilde{\boldsymbol{K}}_{nn} K~nn 为正半定矩阵,即 v ⊤ K ~ n n v ≥ 0 , ∀ v ∈ R n \boldsymbol{v}^{\top} \tilde{\boldsymbol{K}}_{nn} \boldsymbol{v} \geq 0, \forall \boldsymbol{v} \in \mathbb{R}^n vK~nnv0,vRn

稀疏近似(Sparse Approximations)

通常, 特征分解有助于选择前 m m m个特征值来近似 K n n \boldsymbol{K}_{nn} Knn,即 K n n ≈ U n m Λ m m U n m ⊤ \boldsymbol{K}_{nn} \approx \boldsymbol{U}_{nm} \boldsymbol{\Lambda}_{mm} \boldsymbol{U}_{nm}^{\top} KnnUnmΛmmUnm。然后,可以通过 Sherman-Morrison-Woodbury 公式计算逆矩阵
( K n n ϵ ) − 1 ≈ σ ϵ − 2 I n + σ ϵ − 2 U n m ( σ ϵ 2 Λ m m − 1 + U n m ⊤ U n m ) − 1 U n m ⊤ \left(\boldsymbol{K}_{n n}^\epsilon\right)^{-1} \approx \sigma_\epsilon^{-2} \boldsymbol{I}_n+\sigma_\epsilon^{-2} \boldsymbol{U}_{n m}\left(\sigma_\epsilon^2 \boldsymbol{\Lambda}_{m m}^{-1}+\boldsymbol{U}_{n m}^{\top} \boldsymbol{U}_{n m}\right)^{-1} \boldsymbol{U}_{n m}^{\top} (Knnϵ)1σϵ2In+σϵ2Unm(σϵ2Λmm1+UnmUnm)1Unm
以及通过 Sylvester 行列式定理计算行列式
∣ K n n ϵ ∣ ≈ ∣ Λ m m ∣ ∣ σ ϵ 2 Λ m m − 1 + U n m ⊤ U n m ∣ \left|\boldsymbol{K}_{n n}^\epsilon\right| \approx\left|\boldsymbol{\Lambda}_{m m}\right|\left|\sigma_\epsilon^2 \boldsymbol{\Lambda}_{m m}^{-1}+\boldsymbol{U}_{n m}^{\top} \boldsymbol{U}_{n m}\right| KnnϵΛmm σϵ2Λmm1+UnmUnm
从而使计算复杂度达到 O ( n m 2 ) \mathcal{O}(nm^2) O(nm2) 。然而,特征分解本身是一个 O ( n 3 ) \mathcal{O}(n^3) O(n3)的操作,因此,我们使用 m m m个数据点来近似 K n n \boldsymbol{K}_{nn} Knn的特征函数,得到 Nyström 近似
K n n ≈ Q n n = K n m K m m − 1 K n m ⊤ \boldsymbol{K}_{n n} \approx Q_{n n}=\boldsymbol{K}_{n m} \boldsymbol{K}_{m m}^{-1} \boldsymbol{K}_{n m}^{\top} KnnQnn=KnmKmm1Knm
这极大地提高了大规模高斯过程模型的效率。然而,这种近似可能会产生负的预测方差,因为它并不是一个完整的生成概率模型。Nyström 近似仅适用于训练数据,无法保证核矩阵的正定性。

局部近似

受分而治之思想的启发,局部近似通过局部专家来提高高斯过程的可扩展性。此外,相较于全局近似,局部化可以更好地捕捉非平稳特征。局部近似包括直接使用纯局部专家进行预测的朴素局部专家模型,以及通过模型平均提升预测效果的专家混合和专家组合模型

朴素局部专家模型(Naive Local Experts)

通常来说,距离较远的点对之间的相关性较低。因此,在数据集 D D D的子集上训练的局部专家有望以较低的时间复杂度产生合理的预测。为此诞生了朴素局部专家模型,该模型让局部专家 M i \mathcal{M}i Mi代表由 X i X_i Xi定义的子区域 Ω i \Omega_i Ωi。在 x ∗ ∈ Ω i \boldsymbol{x}_* \in \Omega_i xΩi处的预测可表示为 p ( y ∗ ∣ D , x ∗ ) ≈ p i ( y ∗ ∣ D i , x ∗ ) p(y_* \mid \mathcal{D}, \boldsymbol{x}_*) \approx p_i(y* \mid \mathcal{D}_i, \boldsymbol{x}_*) p(yD,x)pi(yDi,x)

尽管朴素局部专家能够捕捉局部结构带来的非平稳特征,但在子区域边界上会产生不连续的预测,并且由于未能考虑长期的空间相关性,导致泛化能力较差。为了解决不连续性问题,研究者们假设了连续性条件,使相邻的局部 专家在边界上共享几乎相同的预测结果。然而,该假设存在预测方差不一致甚至为负的问题,并且仅适用于低维度。

相比之下,模型平均策略更为流行,通过对接下来阐述的专家混合或组合模型,能够很好地将多个专家的预测结果平滑化。

专家混合模型(Mixture of Experts)

专家混合模型通过结合具有各自参数的本地和多样化专家,以提高整体准确性和可靠性。专家混合模型通常表示为高斯混合模型:
p ( y ∣ x ) = ∑ i = 1 M g i ( x ) p i ( y ∣ x ) p(y \mid \boldsymbol{x})=\sum_{i=1}^M g_i(\boldsymbol{x}) p_i(y \mid \boldsymbol{x}) p(yx)=i=1Mgi(x)pi(yx)
其中, g i ( x ) g_i(\boldsymbol{x}) gi(x)是权重函数,通常采用参数化形式,例如softmax或probit函数,并且可以被认为是专家指示器 z z z i i i的概率 p ( z = i ) = π i p(z=i)=\pi_i p(z=i)=πi。公式中的权重函数通过对输入空间的概率划分来管理混合模型,以定义各个专家负责的子区域。专家可以是各种机器学习模型,例如线性模型和支持向量机。

专家混合模型的训练通常假设数据是独立同分布的,因此我们通过最大化因子化的对数似然函数 ∑ t = 1 n log ⁡ p ( y t ∣ x t ) \sum_{t=1}^n \log p(y_t \mid x_t) t=1nlogp(ytxt)来同时学习门控函数和专家,这可以通过基于梯度的优化器,或更常用的 EM 算法实现。这种联合学习允许通过数据和专家自身以概率(软)划分输入空间,并为不同但重叠的子区域指定不同的专家。最终,在 x ∗ \boldsymbol{x}_* x 处的预测分布为:
p ( y ∗ ∣ D , x ∗ ) = ∑ i = 1 M g i ( x ∗ ∣ D ) p i ( y ∗ ∣ D , x ∗ ) p\left(y_* \mid \mathcal{D}, \boldsymbol{x}_*\right)=\sum_{i=1}^M g_i\left(\boldsymbol{x}_* \mid \mathcal{D}\right) p_i\left(y_* \mid \mathcal{D}, \boldsymbol{x}_*\right) p(yD,x)=i=1Mgi(xD)pi(yD,x)
其中, g i ( x ∗ ∣ D ) g_i(\boldsymbol{x}_* \mid \mathcal{D}) gi(xD)可以视为后验概率 p ( z ∗ = i ∣ D ) p(z_*=i \mid \mathcal{D}) p(z=iD),称为责任度。

专家组合模型(Product of Experts)

不同于通过加权求和多个概率分布(专家)的专家混合方法,专家组合方法通过将这些概率分布相乘来规避专家混合法中的权重分配问题:
p ( y ∣ x ) = 1 Z ∏ i = 1 M p i ( y ∣ x ) p(y \mid x)=\frac{1}{Z} \prod_{i=1}^M p_i(y \mid x) p(yx)=Z1i=1Mpi(yx)
其中, Z Z Z是归一化因子,但这会使最大化似然函数 ∑ i = 1 n log ⁡ p ( y i ∣ x i ) \sum_{i=1}^n \log p\left(y_i \mid \boldsymbol{x}_i\right) i=1nlogp(yixi)出现问题。

幸运的是,因为 p i ( y ∣ x ) p_i(y \mid x) pi(yx)是高斯分布,多个高斯分布的乘积仍然是一个高斯分布,所以其边际似然可分解为
p ( y ∣ X ) = ∏ i = 1 M p ( y i ∣ X i ) p(\boldsymbol{y} \mid \boldsymbol{X})=\prod_{i=1}^M p\left(\boldsymbol{y}_i \mid \mathbf{X}_i\right) p(yX)=i=1Mp(yiXi)
其中, p i ( y i ∣ X i ) ∼ N ( y i ∣ 0 , K i + σ ϵ , i 2 I n i ) p_i\left(\boldsymbol{y}_i \mid \boldsymbol{X}_i\right) \sim \mathcal{N}\left(\boldsymbol{y}_i \mid \mathbf{0}, \boldsymbol{K}_i+\sigma_{\epsilon, i}^2 \boldsymbol{I}_{n_i}\right) pi(yiXi)N(yi0,Ki+σϵ,i2Ini) , , K i = k ( X i , X i ) ∈ R n i × n i \boldsymbol{K}_i = k(\boldsymbol{X}_i, \boldsymbol{X}_i) \in \mathbb{R}^{n_i \times n_i} Ki=k(Xi,Xi)Rni×ni n i n_i ni为专家 M i \mathcal{M}i Mi的训练数据大小。这种分解使得完整的核矩阵 K n n \boldsymbol{K}_{nn} Knn退化为对角块矩阵 diag ⁡ [ K 1 , ⋯ , K M ] \operatorname{diag}[\boldsymbol{K}_1, \cdots, \boldsymbol{K}_M] diag[K1,,KM],从而
K n n − 1 ≈ diag ⁡ ⁡ [ K 1 − 1 , ⋯ , K M − 1 ] \boldsymbol{K}_{nn}^{-1} \approx \operatorname{diag}⁡[\boldsymbol{K}_1^{-1}, ⋯ ,\boldsymbol{K}_M^{-1}] Knn1diag[K11,,KM1]
因此,给定 n i = m 0 n_i = m_0 ni=m0的情况下,计算复杂度显著降低至 O ( n m 0 2 ) \mathcal{O}(n m_0^2) O(nm02)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409975.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度翻译与TOP3在线翻译伙伴:2024年的黄金组合

在这个信息丰富的时代&#xff0c;语言帮助人们跨越地域界限进行交流。随着全球化的发展&#xff0c;高效的在线翻译工具变得越来越重要&#xff0c;它能帮我们更好地了解世界和不同的文化。今天&#xff0c;我们就来看看百度翻译和它的三个新对手之间的比较&#xff0c;一起找…

Codeforces Round 916 (Div. 3) E1. Game with Marbles(博弈论*1400)

感觉很难想。 如果你直接想的话&#xff0c;你就会发现有很多做法可以选择&#xff0c;而你根本不知道应该选哪个。 这时候可以先假设鲍勃已经取走了爱丽丝的所有的颜色的弹珠&#xff0c;&#xff08;并且以每个颜色一个弹珠的代价&#xff09;。 这时候每一项得分就是 S i …

Dubbo 内置容器:Spring Container

Dubbo 内置容器&#xff1a;Spring Container 1、核心点2、误解澄清 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Dubbo本身并不直接提供容器服务&#xff0c;而是深度集成了Spring框架&#xff0c;实现了对Spring Container的全面支持。…

游戏开发设计模式之原型模式

目录 原型模式的实现步骤 原型模式的优点 原型模式的应用场景 总结 原型模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在不同编程语言中实现原型模式&#xff1f; Java C# Python C JavaScript 原型模式与其他创建型设计模式&#xff08;如建造者模式、适…

Modern restaurant - building and interior (餐厅场景)

餐厅是模块化的,因此您可以使用提供的构造元素(如墙壁模块、地板模块、窗户、吧台、厨房模块、门、天花板模块等)进一步设计自己的餐厅。 图像和视频中显示的完整场景包含在此资源包中,可以用作游戏和3D项目的起点! ★ 主要特点 ★ 全模块化内饰和外观 全模块化厨房和餐厅…

PTA统计一行文本的单词个数

本题目要求编写程序统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串&#xff0c;各单词之间用空格分隔&#xff0c;空格数可以是多个。 输入格式: 输入给出一行字符。 输出格式: 在一行中输出单词个数。 输入样例: Lets go to room 209.输出样例: 5解题…

【惠农网-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

Backtrader 实现和理解海龟交易法

Backtrader 实现和理解海龟交易法 1. 海龟交易的理解 &#xff08;1&#xff09;资金管理 海龟将总资金分为N个交易单位&#xff0c;每个单位即称为头寸&#xff0c;划分的标准主要是参考标的的波动性。 波动性用一个指标量化即真实波动幅度均值&#xff08;ATR&#xff09;…

C_05_编译4阶段

c语言编译的4个阶段&#xff1a;预处理、 编译、 汇编、 链接 预处理阶段会在源代码中查找预编译指令&#xff0c;其中主要是头文件展开&#xff08;include)&#xff0c;宏定义&#xff08;defind&#xff09;&#xff0c;选择性编译&#xff08;ifdef&#xff09;三种指令 预…

mybatis-plus添加replace(自定义)方法,添加sql注入器SqlInjector

1. 继承DefaultSqlInjector import com.baomidou.mybatisplus.core.injector.AbstractMethod; import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; import com.baomidou.mybatisplus.core.metadata.TableInfo; import org.springframework.stereotype.Compon…

Qt_信号槽机制

文章目录 Qt中的信号槽机制1.在widget.h添加处理函数的声明2.添加处理函数的定义3.建立信号和槽的连接4.运行 Qt中的信号槽机制 本质就是给按钮的点击操作&#xff0c;关联上一个处理函数&#xff0c;当用户点击的时候&#xff0c;就会执行这个处理函数。 函数&#xff1a;stat…

Upscayl 采用开源人工智能技术,可以增强低分辨率图像的效果。

Upscayl 是一款免费开源的基于 AI 神经网络与深度学习的「图片画质提升 / 超分辨率软件」&#xff0c;可以做到“无损放大图片”&#xff0c;让你轻松将任意分辨率的图片、照片、壁纸放大到高清、超清甚至 4K 水平&#xff0c;大幅提升图片细节表现与清晰度&#xff01;效果比起…

用Python实现时间序列模型实战——Day 2: 时间序列的基本统计量

一、学习内容 1. 自相关函数 (ACF) 与偏自相关函数 (PACF) 自相关函数 (ACF)&#xff1a; 自相关函数用于衡量时间序列在不同时间滞后下的相关性。它描述了序列与自身滞后版本之间的相关性&#xff0c;滞后时间越长&#xff0c;相关性通常会减弱。自相关函数的计算公式为&am…

浏览器 V8 引擎

V8 引擎是 Google 开发的高性能 JavaScript 和 WebAssembly 引擎&#xff0c;最初是为了提升 Google Chrome 浏览器的性能而设计的。自 2008 年首次发布以来&#xff0c;V8 引擎不仅仅被用在 Chrome 浏览器中&#xff0c;还被广泛应用于其他 JavaScript 环境中&#xff0c;比如…

嵌入式系统课后习题(带答案)

资料截图&#xff08;部分&#xff09;&#xff1a; &#x1f680; 获取更多详细资料可点击链接进群领取&#xff0c;谢谢支持&#x1f447; 点击免费领取更多资料

前端通过draggable结合fabricjs实现拖拽至画布生成元素自定义编排功能

前端通过draggable结合fabricjs实现拖拽自定义编排功能 太久没有更新了&#xff0c;主要最近行情不太好失业了一段时间&#xff0c;一度到怀疑人生&#xff0c;然后就是做的东西大多没有什么含金量&#xff0c;没什么好分享的就很尴尬。 刚好最近遇到一个奇葩的需求&#xff0…

【李林880-2025版本】个人错题01 第十六章节——喻老讲解版

十六章 这里需要注意的是三个设的变量都要满足的不等式条件 根据题目的最长中间的一段需要满足大于其他两个变量的不等式条件 最后根据几何概型方法求出概率 两个情况 重要思想[逆事件] &#xff1a;7个正品找到了3个次品都找到了 这里首先从六个空中选出两个次品位置&…

《Web项目跨域请求后端Api设置Cookie失败问题?》

问题描述&#xff1a; 在web项目中跨域请求api时&#xff0c;api登录成功后需要向域名中设置cookie实现在两个域名下共享&#xff0c;但是登录接口返回成功&#xff0c;响应头中也有set-cookie&#xff0c;实际却无法设置到cookie中… web项目访问时的域名https://b.com/ api所…

【HarmonyOS 4.0】@BuilderParam 装饰器

1. BuilderParam 装饰器 BuilderParam 装饰器用于装饰自定义组件(struct)中的属性&#xff0c;其装饰的属性可作为一个UI结构的占位符&#xff0c;待创建该组件时&#xff0c;可通过参数为其传入具体的内容。参数必须满足俩个条件&#xff1a; 2.1 参数类型必须是个函数&#x…

C++ 设计模式——代理模式

C 设计模式——代理模式 C 设计模式——代理模式1. 主要组成成分2. 逐步构建代理模式2.1 抽象主题类定义2.2 真实主题类实现2.3 代理类实现2.4 主函数 3. 代理模式 UML 图代理模式 UML 图解析 4. 代理模式的优点5. 代理模式的缺点6. 代理模式的分类7. 代理模式和装饰者模式比较…