序言

这篇文章使用中文书写,旨在分析高斯过程动态模型(Gaussian Process Dynamical Models, GPDM)。在中文互联网,人们对 GPDM 的概念知之甚少,模型本身也相对“古老”,因此作一篇对 GPDM 模型、算法和使用场景的简要分析。

注意,本篇文章基于 Wang et al., 2006, Gaussian Process Dynamical Models 。GPDM 在离散时间序列上也被称为 Gaussian Process State-Space Model。

该工作的介绍:http://www.dgp.toronto.edu/~jmwang/gpdm/

另外,也欢迎大家关注我的个人页面:keyonc.top

GPDM 简介

For example, imagine a mouse is moving in a maze, but we only record the firing rates of its hippocampal place cells. The latent variable is the mouse position, which we know is a relatively smooth trajectory in 3D space, and the observations, neuron firing rates, are a nonlinear function of this latent variable. Can we infer the position of the mouse given just its firing rates? This is the type of question the GPDM attempts to answer.

上面这个生动的例子给了 GPDM 一个大致的工作原理:模型将观测空间中复杂的高维数据映射到低维空间中分析其时序性和动态过程。

GPDM 是来自多伦多大学的 Jack Meng-Chieh Wang 在 2005 年的 Master 学位毕业论文。论文介绍了用于非线性时间序列分析的高斯过程动态模型(GPDM)。一个 GPDM 包括一个低维的隐空间(Latent Space)及其相关动态信息,以及一个从隐空间到观测空间的映射。作者以闭式将模型参数边缘化,从而使上述动态和观测映射都被建模为高斯过程,相当于一个 observation_GP 和一个 dynamic_GP。因此,该动态系统是非参数模型,该模型考虑了模型的不确定性。

在实验部分,作者用 CMU 的人类运动数据上训练该模型(其中每个姿势都是 62 维),并通过从后验分布中取样合成新的运动过程。作者使用了不同协方差函数和抽样方法之间的预测结果的比较,并演示了 GPDM 在填补缺失数据上的简单应用。最后,为了说明隐空间的不确定性,作者探索了超参数的不同先验设置,并使用蒙特卡洛期望最大化算法(Monte Carlo expectation-maximization)展示了一些初步的 GPDM 学习结果。

相关工作

高斯过程(Gaussian Process, GP) 是观测值出现在一个连续域(例如时间或空间)的随机过程。在机器学习的语境下,高斯过程是一种通用的监督学习方法,旨在解决回归和概率分类问题。高斯过程的优点包括能对观测值进行插值、预测结果是概率分布的、可以指定不同的内核等。但是,高斯过程在高维空间中效率较低。在编程实验中,常见的 GP 框架包括基于 Pytorch 的 GPyTorch 和 Matlab 工具包 GPML 等。

高斯过程隐变量模型(Gaussian Process Latent Variable Model, GPLVM)是一种无监督的非线性降维方法,它使用高斯过程来学习高维数据的低维表示,是 PCA 的一种泛化。在高斯过程回归的中,我们给定输入 XXX 和输出 YYY ,并选择一个核函数,学习最能描述从 XXX 到 YYY 的映射的超参数。在 GPLVM 中,我们没有给定 XXX,只给定 YYY。

GPDM 的方法直接地受到无监督的 GPLVM 的启发。GPLVM 对观察数据的联合分布和它们在低维隐空间的相应表示进行建模,这个分布可以被用作新测量的推断的先验。然而,GPLVM 不是一个动态模型:它假设数据于数据之间是相互独立的。因此,GPLVM 不关注数据的时间连续性(时序性),也不对隐空间的动态过程进行建模。说到底,高斯过程动态模型(GPDM)可以被视为一种增强的高斯过程隐变量模型(GPLVM),其中隐变量按照其自身的高斯过程演化。

模型与方法

给定观测空间数据 Y=[y1…yT]⊤\mathbf Y=\lbrack{\mathbf y}_1\dots{\mathbf y}_T\rbrack^\topY=[y1​…yT​]⊤ ,其中包含 TTT 个观测点,每项具有 DDD 维,而这些观测数据点按照时间顺序 ttt 排列。令 X=[x1…xT]⊤\mathbf X=\lbrack{\mathbf x}_1\dots{\mathbf x}_T\rbrack^\topX=[x1​…xT​]⊤ 是 QQQ 维的隐变量,一般来说 Q≪DQ \ll DQ≪D 。

按照 Wang 在论文中的人体运动实验,Y\mathbf YY 代表了运动记录仪中记录下的人体各关节的数据,而这个关节数一共有 62 个,因此对于每一帧 yt{\mathbf y}_tyt​ ,有 D=62D=62D=62 。显然,当人体在进行走路或者慢跑时,这些关节都是以一定的周期规律进行运动的,因此 62 个关节数据显然有些冗余,而在高维空间的计算开销是相当大的,此时我们需要利用隐变量 X\mathbf XX 保存 Y\mathbf YY 的主要信息。我们人为设定隐空间维度为 Q=3Q = 3Q=3 ,通过 Y\mathbf YY 来生成每一帧对应的 X\mathbf XX 。此时我们只需要在低维空间进行动态分析,即可完成相当高精度的重建。

考虑以下一阶马尔可夫动态(first-order Markov dynamics):
xt=f(xt−1;A)+nx,tyt=g(xt;B)+ny,t(1)\begin{aligned} \mathbf{x}_t &= f(\mathbf{x}_{t-1}; \mathbf{A}) + \mathbf{n}_{x,t} \\ \mathbf{y}_t &= g(\mathbf{x}_{t}; \mathbf{B}) + \mathbf{n}_{y,t} \end{aligned} \tag{1} xt​yt​​=f(xt−1​;A)+nx,t​=g(xt​;B)+ny,t​​(1)
其中 fff 和 ggg 是分别具有参数 A\mathbf{A}A 和 B\mathbf{B}B 的映射,而 nx,t\mathbf{n}_{x,t}nx,t​ 和 ny,t\mathbf{n}_{y,t}ny,t​ 是零均值的高斯噪声。为什么说隐空间中的动态是马尔可夫的呢?如上式,xt\mathbf{x}_{t}xt​ 只依赖于它的上一时刻对应的隐变量 xt−1\mathbf{x}_{t-1}xt−1​ 和动态关系 fff ,而 yt\mathbf{y}_{t}yt​ 只依赖于它对应的隐变量 xt\mathbf{x}_{t}xt​ 和映射关系 ggg 。

下图展示了时序的非线性隐变量模型。

作者认为,当 GPDM 被应用于非线性场景(也就是绝大多数场景)中,fff 和 ggg 将会是一些基函数(basis function)的线性组合:
f(x;A)=∑k=1Kakϕk(x)g(x;B)=∑m=1Mbmψm(x)(2)\begin{aligned} f(\mathbf{x}; \mathbf{A}) &= \sum_{k=1}^{K} \mathbf{a}_k \phi_k(\mathbf{x}) \\ g(\mathbf{x}; \mathbf{B}) &= \sum_{m=1}^{M} \mathbf{b}_m \psi_m(\mathbf{x}) \end{aligned} \tag{2} f(x;A)g(x;B)​=k=1∑K​ak​ϕk​(x)=m=1∑M​bm​ψm​(x)​(2)
其中参数 A\mathbf{A}A 和 B\mathbf{B}B 变成了基函数的参数向量,仅此而已。

从实际的角度来看,准确找出这些参数和基函数无疑非常困难。然而,如果我们把这个问题转换为贝叶斯的视角,那么 fff 和 ggg 的具体形式,甚至包括那些基函数本身,都不是必需的。因此,这些参数和基函数是应当被边缘化掉的(marginalize out)。

这篇论文最难也是最精巧的部分就是如何边缘化参数 A\mathbf{A}A 和 B\mathbf{B}B 。这里我直接引入 Gundersen 的推导作为详细的推导内容补充,并简单地说一下这一步做了什么事情。

Wang 首先假设 B\mathbf{B}B 的每一行 bi\mathbf{b}_{i}bi​ 都具有一个独立的高斯先验(Gaussian prior),这意味着 Y\mathbf{Y}Y 中的某一项 yi\mathbf{y}_{i}yi​ 以 bi\mathbf{b}_{i}bi​ 为条件的分布,是一个 TTT 元正态分布。因为此时的 p(bi)p(\mathbf{b}_i)p(bi​) 和 p(yi∣bi)p(\mathbf{y}_i \mid \mathbf{b}_i)p(yi​∣bi​) 都是独立的高斯分布,因此边缘化参数 B\mathbf{B}B 的操作为:
p(Y∣X)=∏i=1Tp(yi∣X)=∣W∣T(2π)TD∣KY∣Dexp⁡{−12tr(KY−1YW2Y⊤)}(3)\begin{aligned} p(\mathbf{Y} \mid \mathbf{X}) &= \prod_{i=1}^{T} p(\mathbf{y}_i \mid \mathbf{X}) \\ &= \frac{|\mathbf{W}|^{T}}{\sqrt{(2\pi)^{TD} |\mathbf{K}_Y|^D}} \exp\Big\{-\frac{1}{2} \text{tr} \Big( \mathbf{K}_Y^{-1} \mathbf{Y} \mathbf{W}^2 \mathbf{Y}^{\top} \Big) \Big\} \end{aligned} \tag{3} p(Y∣X)​=i=1∏T​p(yi​∣X)=(2π)TD∣KY​∣D​∣W∣T​exp{−21​tr(KY−1​YW2Y⊤)}​(3)
作者继续假设 A\mathbf{A}A 的每一行是独立同正态分布的(i.i.d. Gaussian),与边缘化 B\mathbf{B}B 同样,首先需要推出 p(ad)p(\mathbf{a}_d)p(ad​) 和 p(xd∣ad)p(\mathbf{x}_d \mid \mathbf{a}_d)p(xd​∣ad​) 都是高斯的,进而(见引用)改写原模型式 (1)(1)(1) ,得到以下:
p(X)=∫p(X∣A)p(A)dA=p(x1)1(2π)Q(T−1)∣KX∣Qexp⁡{−12tr(KX−1XˉXˉ⊤)}(4)\begin{aligned} p(\mathbf{X}) &= \int p(\mathbf{X} \mid \mathbf{A}) p(\mathbf{A}) \text{d}\mathbf{A} \\ &= p(\mathbf{x}_1) \frac{1}{\sqrt{(2\pi)^{Q(T-1)}|\mathbf{K}_X|^Q}} \exp\Big\{-\frac{1}{2} \text{tr} \big( \mathbf{K}_X^{-1} \bar{\mathbf{X}} \bar{\mathbf{X}}^{\top} \big) \Big\} \end{aligned} \tag{4} p(X)​=∫p(X∣A)p(A)dA=p(x1​)(2π)Q(T−1)∣KX​∣Q​1​exp{−21​tr(KX−1​XˉXˉ⊤)}​(4)
其中对于隐空间映射 X→Y\mathbf{X} \rightarrow \mathbf{Y}X→Y ,作者在论文中采用了 RBF 核函数;对于隐空间中的动态高斯过程,采用了 linear + RBF 核函数。

在推理阶段,我们想要得到 p(X∣Y)p(\mathbf{X} \mid \mathbf{Y})p(X∣Y) 的后验,而其中
p(X∣Y)∝p(Y∣X)p(X)(5)p(\mathbf{X} \mid \mathbf{Y}) \propto p(\mathbf{Y} \mid \mathbf{X}) p(\mathbf{X}) \tag{5} p(X∣Y)∝p(Y∣X)p(X)(5)
因此 (1)(1)(1) 式中的对数后验应当是 (3)(3)(3) 式和 (4)(4)(4) 式的对数之和:
L(X)=Tlog⁡∣W∣−J2log⁡∣KY∣−12tr(KY−1YWY⊤)−Q2log⁡∣KX∣−12tr(KX−1XˉXˉ⊤).(6)\begin{aligned} &\mathcal{L}(\mathbf{X}) \\ &= T \log |\mathbf{W}| - \frac{J}{2} \log |\mathbf{K}_Y| - \frac{1}{2} \text{tr}(\mathbf{K}_Y^{-1} \mathbf{Y} \mathbf{W} \mathbf{Y}^{\top}) \\&- \frac{Q}{2} \log |\mathbf{K}_X|- \frac{1}{2} \text{tr}(\mathbf{K}_X^{-1} \bar{\mathbf{X}} \bar{\mathbf{X}}^{\top}). \end{aligned} \tag{6} ​L(X)=Tlog∣W∣−2J​log∣KY​∣−21​tr(KY−1​YWY⊤)−2Q​log∣KX​∣−21​tr(KX−1​XˉXˉ⊤).​(6)
代入我们上面设计的核函数并重写,我们只需优化后验:
p(X,β,α∣Y)∝p(Y∣X,β)p(X∣α)p(β)p(α).(7)p(\mathbf{X}, \boldsymbol{\beta}, \boldsymbol{\alpha} \mid \mathbf{Y}) \propto p(\mathbf{Y} \mid \mathbf{X}, \boldsymbol{\beta}) p(\mathbf{X} \mid \boldsymbol{\alpha}) p(\boldsymbol{\beta}) p(\boldsymbol{\alpha}). \tag{7} p(X,β,α∣Y)∝p(Y∣X,β)p(X∣α)p(β)p(α).(7)
最后,我们得到了学习 GPDM 需要的方法:最小化负数对数后验,相当于使 α\boldsymbol{\alpha}α、β\boldsymbol{\beta}β 和 X\mathbf XX 相对于负对数后验最小化:
L(X,β,α)=Tlog⁡∣W∣−J2log⁡∣KY∣−12tr(KY−1YWY⊤)−Q2log⁡∣KX∣−12tr(KX−1XˉXˉ⊤)+∑ilog⁡αi+∑ilog⁡βi.(8)\begin{aligned} \mathcal{L}(\mathbf{X}, \boldsymbol{\beta}, \boldsymbol{\alpha}) &= T \log |\mathbf{W}| - \frac{J}{2} \log |\mathbf{K}_Y| - \frac{1}{2} \text{tr}(\mathbf{K}_Y^{-1} \mathbf{Y} \mathbf{W} \mathbf{Y}^{\top}) \\ &- \frac{Q}{2} \log |\mathbf{K}_X| - \frac{1}{2} \text{tr}(\mathbf{K}_X^{-1} \bar{\mathbf{X}} \bar{\mathbf{X}}^{\top}) \\ &+ \sum_i \log \alpha_i + \sum_i \log \beta_i. \end{aligned} \tag{8} L(X,β,α)​=Tlog∣W∣−2J​log∣KY​∣−21​tr(KY−1​YWY⊤)−2Q​log∣KX​∣−21​tr(KX−1​XˉXˉ⊤)+i∑​logαi​+i∑​logβi​.​(8)

实验

实验部分我打算通过 CMU 人体运动实验和动态纹理实验(Zhu et al, 见 reference)来阐释,matlab 代码可以在文章开头的作者工作页中找到。

需要明确的是,学习 GPDM 的本质就是最小化负数对数后验。在 Wang 的论文中,我们将所有数据先减去均值,使用 PCA 来初始化隐空间的变量,然后使用共轭梯度法或随机梯度下降法来优化模型。

上图中,a 和 b 分别描述了 GPLVM 和 GPDM 学习的人体运动在三维隐空间中的轨迹。可以非常明显地观察到,GPLVM 描述的轨迹不如 GPDM 那么平滑,这是因为 GPDM 提供隐空间中的高斯动态先验。c 则展示了 GPDM 重建的 log variance,并用热力图的形式提供了置信度。d 中,绿色的曲线是模型使用混合蒙特卡洛(Hybrid Monte Carlo)采样得到的轨迹,红色则是这些采样的均值。e 图反应了 linear+rbf 的动态模型的整体学习情况,其中蓝线代表模型本身学习到的轨迹,红线是推理出来的轨迹,绿线是优化后的。通过推理得到的隐空间轨迹,我们基于高斯过程将其重建回高维观测空间,得到图中对应的不同姿态。

第二个实验来自 Zhu 的工作,其描述了采用多核的 GPDM 进行动态纹理的建模与生成。上图展示了一个 250 帧的视频,GPDM 将这个视频视为时序数据,通过学习视频来继续推理后面的帧数,并且取得了非常好的效果。在这个工作中,一个 120*90 分辨率的视频被直接展开到 10800 维度(也就是像素数),直接输入到 GPDM 中,隐空间设置为 20 维。这样,GPDM 就可以极大程度地减少了动态建模中不必要的运算成本,同时往后推理生成的视频也非常真实。

参考文献

http://www.dgp.toronto.edu/~jmwang/gpdm/

https://gregorygundersen.com/blog/2020/07/24/gpdm/

https://gregorygundersen.com/blog/2020/07/14/pca-to-gplvm/

https://pyro.ai/examples/gplvm.html

Wang J M, Fleet D J, Hertzmann A. Gaussian process dynamical models for human motion[J]. IEEE transactions on pattern analysis and machine intelligence, 2007, 30(2): 283-298.

Lawrence N. Gaussian process latent variable models for visualisation of high dimensional data[J]. Advances in neural information processing systems, 2003, 16.

Ziqi Zhu, Xinge You, Shujian Yu, Jixin Zou, Haiquan Zhao, Dynamic texture modeling and synthesis using multi-kernel Gaussian process dynamic model, Signal Processing, Volume 124, 2016, Pages 63-71, ISSN 0165-1684, https://doi.org/10.1016/j.sigpro.2015.10.025.

高斯过程动态模型(GPDM)简析相关推荐

  1. 静态库调用_静态链接和动态链接对比简析

    0. 简介 在Linux环境下进行开发工作,代码要经过编译链接生成二进制可执行文件,才能被CPU识别并执行:程序的编译过程可以参考另外一篇文章<linux程序编译过程简析>:链接过程分为两 ...

  2. DHCP 实现动态 IP 上网简析

    首先,我们需要知道计算机是如何上网的. 计算机之间的通信是建立在五层架构上的,一台计算机要想实现与互联网中另外一台台计算机之间的通信,计算机至少需要知道下面四个参数: *本机的IP地址 *子网掩码 * ...

  3. CVPR2017oral注意力模型RA-CNN简析(转)

    mark一下,翻了好久的资料! http://www.tuan18.org/thread-2121-1-1.html 最近在关注注意力模型,为啥呢,我觉得这个跟人眼机理比较接近.同时,这个相当于让机器 ...

  4. 【动态内存管理】动态内存函数简析

    前言

  5. Linux 动态链接和静态链接简析(库名与库文件名)

    原文请见 Linux动态链接和静态链接简析 0. 库名与真正的库文件名 就拿数学库来说,他的库名是 m,他的库文件名是libm.so,很容易看出,把库文件名的头 lib 和尾.so去掉就是库名.(gc ...

  6. [2020-ECCV]PIPAL-a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration论文简析

    [2020-ECCV] PIPAL: a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration 论 ...

  7. [2020-CVPR] Dynamic Region-Aware Convolution 论文简析

    [2020-CVPR] Dynamic Region-Aware Convolution 论文简析 论文地址:https://arxiv.org/abs/2003.12243 参考代码地址(非官方): ...

  8. Unity3d资源反编译. AssetBundle格式简析+简单应用+爬坑

    ===================  Unity3d资源反编译工具 DisUnity ================ 源码:https://github.com/ata4/disunity 需要 ...

  9. ICDE-2020 论文简析:空间众包中的预测任务分配 : 一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing

    ICDE-2020 论文简析:空间众包中的预测任务分配:一种数据驱动的方法 Predictive Task Assignment in Spatial Crowdsourcing: A Data-dr ...

  10. Learning with Noisy Correspondence for Cross-modal Matching 文献翻译 代码简析

    Learning with Noisy Correspondence for Cross-modal Matching 基于噪声对应的跨模态匹配学习 Learning with Noisy Corre ...

最新文章

  1. ARM32页表-虚拟地址到物理地址的转换
  2. 终端复用命令行神器:tmux
  3. HTML DOM Element 对象
  4. MSSQL表分区的创建
  5. 给定一个投资组合的收益序列,以沪深300作为参照,分解该投资组合的α和β
  6. 一文读懂云上用户如何灵活应用定制化网络服务
  7. Spring Boot定时任务-cron表达式
  8. android 带图片的文本框
  9. Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
  10. No rule to make target ...
  11. AI人才平均月薪3万,最赚钱岗位出炉;上海人才吸引力跌至第四
  12. python循环输入数组_python数组循环处理方法
  13. modbus地址扫描_西门子PLC通信编程MODBUS通信举例
  14. 【原创】Magisk+Shamiko过APP ROOT检测
  15. godot 以 WebAssembly 为目标平台编译导出模板
  16. NOIP2015斗地主
  17. 解决Windows密码错误无法进入系统的问题
  18. C语言学习-- 计算机原理及二进制
  19. jquery使用 validate 插件进行验证是否通过
  20. oracle svip地址,木子李QQ8.9 显IP地址SVIP完整版

热门文章

  1. 学习CentOS6这一篇就够了
  2. pbr发光 unity_【学习笔记】Unity PBR的实现
  3. spyder数据分析
  4. ps计算机设置,做着ps电脑卡了怎么办 试试设置这四项
  5. 项目管理上的新问题 - 先有鸡还是先有蛋的问题新解
  6. Unity实现隐藏鼠标功能
  7. bzoj 1779: [Usaco2010 Hol]Cowwar 奶牛战争 (网络流)
  8. 股票策略03 | 基于机器学习的多因子策略
  9. 上海交通大学学生生存手册
  10. 基于you-get的视频批量下载