©作者 | 丹师

单位 | 伯明翰大学

研究方向 | 机器学习

本文来自于一篇博士论文,上周查阅 Cross Validated 时候发现的。这篇论文让我眼前一亮是使用 Kalman filter(卡尔曼滤波)去解决机器学习(Deep Gaussian Process, DGP)的问题。而且论文的外审专家和答辩评委(pre-examiner, opponent)是 David Duvenaud 和 Manfred Opper,两人都是机器学习 GP 和 SDE 的大牛,论文的质量应该是有保证的。论文比较长而且其第 2,3 章的内容不是我的专业而且和 GP 没多大关系,因此只讨论第四章。第四章的内容貌似大部分来源于这个论文。

论文标题:

State-space deep Gaussian processes with applications

关键词:

高斯过程,状态空间,卡尔曼滤波

论文链接:

https://github.com/zgbkdlm/dissertation/blob/main/dissertation.pdf

https://link.springer.com/article/10.1007/s11222-021-10050-6

https://aaltodoc.aalto.fi/handle/123456789/111268

代码链接:

https://github.com/zgbkdlm/dissertation

这也是笔者第一次写学习笔记,花了好长时间阅读,如有错误请大佬评论区指出勿喷。

背景介绍

高斯过程(Gaussian process),以下简称 GP [1],是一种广泛应用于机器学习中的概率模型。如果一个过程 是 GP 的话,我们一般我们用以下公式来表示:

上述公式中,C 是核函数(kernel function),也叫协方差函数(covariance function),另外 C 有两个超参数 需要人工设定或者从数据集中学习、估计。e 代表观测的高斯噪声。以下我们假设 f 的均值函数(mean function)是 0。

GP 的优势主要是因为他是 Infinite-dimensional 模型。怎么理解呢?设想神经网络,其网络权值需要从数据中学习,而且学到的值是 deterministic 固定的。而 GP 是 non-parametric,从数据中学到是一个分布,是一个关于函数的后验分布,因此包含无限种取值可能性。但相应的,这牺牲了 GP 的计算复杂度。

GP 主要有两个问题:

1. 计算复杂度高;

2. 对非稳态(non-stationary)的数据表现不好。

这也是这篇论文所关注的问题。我们先看一下这两个问题怎么回事:

假设我们有一个数据集 ,那么后验分布也是个高斯过程,而且后验分布的均值和方差为 [1]:

▲ GP posterior, 图片来源于[1].

可以看到,上公式有个矩阵求逆,而且这个矩阵的大小是和数据的数量 N 有关的,因此 GP 回归问题的计算复杂度为 。如果 N 特别大的话 GP 会很耗时。解决这个问题的典型方法有比如 sparse GP 等模型。

那么另外一个 non-stationary 的问题是什么意思的?我们平常最常用的 kernel,比如 squared exponential, Matern 等都是构建 stationary GP。这个  stationary 意思是 ,也就是说 GP 的概率分布是平移不变的(translation invariant)。通俗点说,stationary 假设 GP 的“特征(比如平滑性、频率等)”随时间是不会变化的。

这个假设对很多应用不切合实际。比如说,方波在跳变处会有特征的变化,图像在物体边缘处也会有明显的特征变化。解决这个 stationary 的问题那就是使用 non-stationary GP,主要思路就是使超参数 是随时间变化的。目前有 GP experts [2] 及其他方法 [3][4][5]。当然,还有一种方法那就是用深度高斯过程(Deep Gaussian Process,以下简称 DGP)[6]。

我们下面介绍这篇论文是怎么解决这两个问题的。


主要做了什么

如前所述,这篇论文主要是为了解决 GP 计算复杂度和引入 non-stationarity 的问题。根据我的理解,论文作者的思路是用随机微分方程(stochastic differential equations,以下简称 SDE)来构建 GP。

如果要构建 non-statioanry GP,那就使用多层级联 SDE 来构建一个系统,在这系统中,GP 的参数(及其参数的参数, 如此类推)也由 SDE 构建。这就是论文作者所称的 state-space deep Gaussian process(以下简称 SS-DGP)。

如果 GP 或者 SS-DGP 是用 SDE 来表达的,那么他们就是马尔科夫过程(Markov process),因此可以使用(non-linear)卡尔曼滤波(Kalman filter)去解决他们的回归 regression 问题。卡尔曼滤波的计算是非常快的,计算复杂度是线性只有 ,因此也就解决了计算复杂度的问题。


正文

我们先从如何构建 DGP 来引入 non-stationary 的问题。假设 是一个 GP,用前面的公式表示也就是:

这里有两个参数 。那么为了引入 non-stationarity,我们可以让参数也随时间变化,比如:

那么以此类推是不是也可以让 也随时间变化?我们因此可以构建一个深层结构:

这就是所谓的一种深度高斯过程(Deep Gaussian Process, DGP)。这里需要注意三点:

1. 这种 DGP 和 Damianou 等人在 2013 提出的 DGP [6] 有些许区别。此处的 DGP 是基于 parameterization,而 Damianou 等人的 DGP 是基于 composition 的。详情见 [7] 或者论文的 Introduction 有介绍。

2. kernel 的选择很局限。普通的 kernel 比如,squared exponential 和 matern 等其实并不允许其参数 随时间变化,否则的话 covariance 不能保证正定。而能让参数变化的 kernel 目前并不多 [4]。这也是后面要讲的 SS-DGP 的优点之一,因为并不受限于选择合适的 kernel 函数。

3. 求后验分布 很耗时也很复杂。可以使用 variational inference 估计,也可以用 MCMC 采样。

然后论文作者稍微泛化了一下这种 DGP:

▲ 原文公式4.17

▲ 原文公式4.17

然后定义 为 DGP。上式中带上下标的 代表每层的 GP,而 代表每层 GP 的参数 GP(应该是这样,说实话我没怎么看懂这部分的 notation 和那些上下标)。

然后重点来了,用随机微分方程(SDE)怎么表示这种 DGP 呢?

▲ 原文公式4.20

上式 SDE 系统中的每一个子 SDE 都是 conditionally 线性 SDE,也就是对应每个 GP。这就是 SS-DGP。对比普通的 DGP,SS-DGP 有什么优势呢?

1. SS-DGP 是 Markov process,也就是说后验分布可以通过非线性卡尔曼滤波解决,当然需要对 SDE 离散化以得到离散的状态空间如 这种。

2. 不需要指定 kernel ,只需要指定 SDE 的函数如上式的 ,... 等,因此不用担心 covariance 的正定问题。论文还探讨了这种 SS-DGP 构建的解的存在和唯一性(solution existence and uniqueness),由于不是笔者的专业,因此不作评。

论文有一个特殊例子可以更方便理解,可以看到, 被两个下层 GP 和 来表示它的 。

Example 4.16 所示的 SS-DGP 的样本如下所示:

▲ 可以看到 ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍有‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍很明显的 non-stationarity,其特征随时间随机变化。比如黑线在0~2s左右很平稳,但7~10s时震荡的很厉害。蓝线在2~4s和5~6s很震荡,但其他时间很平稳。这些特性在 stationary GP 中是几乎不会出现的。

滤波方面不是笔者的强项,总之公式 4.38 也就是 SS-DGP 可以用非线性卡尔曼滤波求后验分布(第二章应该有介绍怎么对这种系统滤波的)。

最后放一下论文中 SS-DGP 的一些 regression 实验:

▲ 可以看到 SS-DGP 对信号跳变的处理很好。右图:粒子滤波和平滑的估计

▲ 可以看到 SS-DGP 对信号频率的变化也处理的很好。图中 EKFS 是扩展卡尔曼滤波

我能理解的大概也就这么多吧。最后做个总结和评价。

▲ 笔者认为的各种 GP, DGP 模型的关系。因为并不是所有的 GP 都能用状态空间 SDE 表达,因此 SS-DGP 要比 DGP“小”一些。

个人评价

正面:用状态空间法(如 non-linear kalman filters 等)去解决 DGP 的问题这个思路很新颖,可以看做是经典控制论和机器学习的相结合。解决 DGP 目前流行的方法多为 varitional inference 和 MCMC, 但这些方法大多计算耗时复杂,此文的方法确实提供了一个崭新的思路,而且计算非常快( 复杂度)。我认为这个计算优势特别重要,因为传统的 DGP 模型的复杂度会随着深度的增加而大幅增加,但是 SSDGP 的复杂度仍然还是 ,增加的只是状态空间的维度。

负面/疑问:

1. 我很想看到和其它 DGP 解决方法的比较比如 [6][8],尤其是计算时间的比较,我觉得这很重要但作者的论文并没有给出;

2. 其次我认为所谓的 DGP 模型可能有些 overkill:真的有必要去用多层?什么应用情况下我们用多层?增加层数出会怎样影响复杂度?关于这一点论文作者并没有给出充足的实验或者经验性/定性的讨论;

3. 当前的 SS-DGP 模型只适用于一维输入的数据,也既是时序列 time series。GP 中的 x 维度为一。如何推广到多维 ?或者 spatio-temporal ?论文最后好像对此有讨论,但说实话,没看懂。

声明:

此文中的图片、援引公式均为原论文作者所有。此文不违反原作者声明的 license。

参考文献

[1] abCarl Edward Rasmussen and Christopher K. I. Williams. Gaussian Processes for Machine Learning http://www.gaussianprocess.org/gpml/

[2] Carl Edward Rasmussen and Zoubin Ghahramani. Infinite Mixtures of Gaussian Process Experts https://proceedings.neurips.cc/paper/2001/file/9afefc52942cb83c7c1f14b2139b09ba-Paper.pdf

[3] Markus et al. Non-Stationary Gaussian Process Regression with Hamiltonian Monte Carlo http://proceedings.mlr.press/v51/heinonen16.pdf

[4] abPaciorek. NONSTATIONARY GAUSSIAN PROCESSES FOR REGRESSION AND SPATIAL MODELLING https://www.stat.berkeley.edu/~paciorek/diss/paciorek-thesis.pdf

[5] Christian Plagemann et al. Nonstationary Gaussian Process Regression using Point Estimates of Local Smoothness http://ais.informatik.uni-freiburg.de/publications/papers/plagemann08ecml.pdf

[6] abcAndreas C. Damianou Neil D. Lawrence. Deep Gaussian Processes http://proceedings.mlr.press/v31/damianou13a.pdf

[7] Dunlop et al., How Deep Are Deep Gaussian Processes? https://arxiv.org/abs/1711.11280

[8] Hugh Salimbeni, Marc Deisenroth. Doubly Stochastic Variational Inference for Deep Gaussian Processes https://arxiv.org/abs/1705.08933

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

用状态空间法(卡尔曼滤波)解决深度高斯过程问题相关推荐

  1. 论文笔记 Inference in Deep Gaussian Processes using Stochastic Gradient Hamiltonia使用随机梯度哈密顿量蒙特卡罗推理深度高斯过程

    使用随机梯度哈密顿量蒙特卡罗推理深度高斯过程 0.摘要 深度高斯过程 (DGP) 是高斯过程的层次概括,它将经过良好校准的不确定性估计与多层模型的高度灵活性相结合. 这些模型的最大挑战之一是精确推断是 ...

  2. 论文笔记 Deep Gaussian Processes for Calibration of Computer Models 用于校准计算机模型的深度高斯过程

    0.摘要 黑盒计算机模型的贝叶斯校准为量化模型参数和预测的不确定性提供了一个既定的框架.传统的贝叶斯校准涉及计算机模型的仿真和使用高斯过程的加性模型差异项:然后使用马尔可夫链蒙特卡罗进行推理.这种校准 ...

  3. 论文笔记Deep Gaussian Processes深度高斯过程

    0.摘要 在本文中,我们介绍了深度高斯过程 (GP) 模型. 深度 GP 是基于高斯过程映射的深度信念网络. 数据被建模为多元 GP 的输出. 然后,该高斯过程的输入由另一个 GP 管理. 单层模型等 ...

  4. webgl中解决深度冲突-多边形偏移

    1.webgl中解决深度冲突-多边形偏移 1.什么是深度冲突? 就是当几何图形或者物体的两个表面极为接近时,就会使得表面看上去斑斑点点,这种现象就是 深度冲突. 看看这个缓冲区渲染出的效果 缓冲区数据 ...

  5. ElasticSearch利用Search After解决深度分页问题

    ElasticSearch利用Search After解决深度分页问题 1.ElasticSearch常见分页 2.ElasticSearch深度分页问题 3.ElasticSearch深度分页问题的 ...

  6. MySQL 如何解决深度翻页

    select * from table_a limit m,n; MySQL的 limit m,n 工作原理就是先读取符合where条件的前面m+n条记录,然后抛弃前m条,返回后面n条,所以m越大,偏 ...

  7. 深度学习 Day 3——解决深度学习环境配置问题

    深度学习 Day 3--解决深度学习环境配置问题 文章目录 深度学习 Day 3--解决深度学习环境配置问题 一.前言 二.问题:环境配置 三.解决问题 1.确定显卡驱动 2.安装 3.测试 4.不使 ...

  8. 独家 | 如何解决深度学习泛化理论

    作者:Dmytrii S. 翻译:陈之炎 校对:卢苗苗 本文共2360字,建议阅读5分钟. 本文与大家讨论深度学习泛化理论中的一些经验并试图对它做出解释. 我们可以从最新的关于深度学习"炼金 ...

  9. 论文速递:通过模拟大脑-解决深度学习中的灾难性遗忘

    来源:混沌巡洋舰 灾难性遗忘指的是:不像人类,当深度学习模型被训练完成新的任务时,他们很快就会忘记以前学过的东西.8月13号的自然通讯论文Brain-inspired replay for conti ...

最新文章

  1. Active Object pattern
  2. 计算机会计应用实训,计算机会计模拟实习报告.pdf
  3. linux shell head tail 用法简介
  4. @postconstruct注解方法没有执行_把对象的创建交给spring来管理(注解IOC)
  5. 深度linux支持安卓,深度操作系统 V20(1003)内测版招募:新增手机助手,支持安卓和 iOS 端,管理手机应用、文件...
  6. linux cmake变量,linux – CMake错误:此项目中使用了以下变量,但它们设置为NOTFOUND...
  7. PL/SQL Developer的错误提示弹框的文本显示乱码问题
  8. 婚姻是一堂需要认真学习的课程
  9. linq to sql 语法 学习笔记(1)
  10. 论文阅读(9) 鱼类洄游粒子图像测速技术综述 (2016)
  11. web安全工具库(笔记)----端口扫描(端口扫描器.exe)
  12. 1位全加器设计—— 原理图与VHDL设计初步
  13. python的parse函数没有执行——问题已解决
  14. 实验3:搜索算法求解8数码问题
  15. 黑莓装Linux系统,“黑莓的Linux桌面管理器”──Barry的使用
  16. 想学文字生成图片?3招告诉你描述文字生成图片怎么做
  17. Word如何快速设置多级标题并生成目录
  18. 3D打印机T3升级corexy  制作过程(一)
  19. 闲来无事,做个了批量看图的页面
  20. linux 欢迎语,一日一技 | 如何让你的终端欢迎语好看又有趣

热门文章

  1. 车用TVS管 SM8S系列 国产替代
  2. 刷新存储器的容量单位是什么_存储系统 半导体存储器
  3. 20211江西高考成绩查询,江西高考成绩查询系统
  4. mysql 线上加索引_MySQL加索引都经历了什么?
  5. 【设计模式】Spring的核心IOC容器中用到的设计模式
  6. C程序员眼里的Python
  7. linux以16进制查看文件
  8. Oracle on Azure
  9. python pycurl
  10. cacti-0.8.7d安装