array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 Gaussian Process Implicit Surface的原理理解 - 爱码网

Gaussian Process Implicit Surface 的原理

Gaussian Process Implicit Surface下文简称(GPIS) 最早是由 Microsoft Research, Cambridge, UK 提出来的, 论文可见GPIS。这篇文章主要是介绍如何使用高斯来拟合surface 或者曲线。 从Implicit Surface 中的 implict 可以看出来,对于要处理的曲线或者曲面,我们不对他们进行参数化, 取而代之的是利用 一些限制条件来定义曲面的集合。 我们可以从数学角度进行描述
S 0 = { x ∈ R d ∣ f ( x ) = 0 }   ( 1 ) \mathrm{S}_0=\{x\in R^d| f(x)=0\} \, (1) S0={xRdf(x)=0}(1)
我们可以看出,所有满足函数 f ( x ) = 0 f(x)=0 f(x)=0 的点都落在我们的曲面或者曲线上。 从这个表达式我们至少有以下几个问题需要回答

  1. f ( x ) f(x) f(x)这个函数如何表示?
  2. 我们如何找到 满足方程 (1) 的点的集合
  3. 我们如何保证找到的点是误差最小

针对以上三个问题,Microsoft Research 提出了用Gaussian Process 来处理。正如刚才提出的 implicit surface 是一个隐式的表达形式,也就说任何满足限制条件的都可以成为 f ( x ) f(x) f(x)的表示形式。GP 被广泛的应用到数据拟合的工作中,因而可以作为 f ( x ) f(x) f(x)的数学表达。高斯拟合有一个非常重要的组成部分就是对于kernel function 的选择。现存有很多不同的kernel function,GPIS 这篇文章提出了一个新的convariance function 就是 thin plate spline covariance。 根据维基百科的解释

Thin plate splines (TPS) are a spline-based technique for data interpolation and smoothing.
TPS has been widely used as the non-rigid transformation model in image alignment and shape matching

TPS 很多的集合特性:

  1. 它可以用来描述光滑的曲面,并且满足无限可导
  2. 不需要人工调参
  3. 它具有用于变形和参数估计的封闭式解决方案
  4. 它的能量方程是可以得到物理的解释

基于这几个特性,GPIS 文章得出结论 发现 thin plate splineregularizer (TPS 调节器) 可以利用他的能量方程 从而得到一个光滑的 的函数
E ( f ) = ∫ Ω ( ▽ T ▽ f ( x ) ) 2 d x E(f)=\int_\Omega(\bigtriangledown^T \bigtriangledown f(x) )^2 dx E(f)=Ω(Tf(x))2dx
其中 Ω \Omega Ω 是 感兴趣的区域。 根据文章给出的结论,我们可以得出在3D 情况下 kernel function 可以描述成
k i j = 2 r i j 3 − 3 C r i j 2 + C 3 k_{ij}=2r_{ij}^3-3Cr_{ij}^2+C^3 kij=2rij33Crij2+C3
其中 r r r 是两点之间的距离, C C C 是这个集合中距离的最大值 C = max ⁡ r i j C=\max r_{ij} C=maxrij.
所以我们可以根据高斯算法得出,GPIS 是把问题变成一个经典的高斯回归问题, 我们可以把
f ( x ) ∼ N ( 0 , K ( X , X ) + σ T I σ ) f(x) \sim N(0, K(\mathcal{X},\mathcal{X})+\sigma^TI\sigma) f(x)N(0,K(X,X)+σTIσ)
其中 K ( X , X ) + σ T I σ ) K(\mathcal{X},\mathcal{X})+\sigma^TI\sigma) K(X,X)+σTIσ) 就是协方差矩阵(covariance matrix) 由 k i j k_{ij} kij 组成。 所以我们对于已知已经落在曲面上的点可以训练出一个高斯模型
α = [ K ( X , X ) + σ T I σ ) ] − 1 y \alpha=[K(\mathcal{X},\mathcal{X})+\sigma^TI\sigma)] ^{-1}y α=[K(X,X)+σTIσ)]1y
现在就出现一个问题,根据implicit surface 我们知道y 是所有落在曲面上的点对应的值,并且是0。 可是这样我们就会出现一个问题,因为 α \alpha α 就会一直是0 ,为了解决这个问题,GPIS 引入了 Signed distance function(SDF) 的概念, 简而言之就是重新定义两个集合 叫做outlier X 1 \mathcal{X}_1 X1 和 inliner X − 1 \mathcal{X}_{-1} X1 的集合. outlier 就是点落在曲面外,inliner 可以简单的认为落在曲面以内(当然这种说法不够准确),更准确的描述是说,现在你有一个传感器, 传感器可以区分检测到点在物体表面还是离物体还有一些距离(outlier),以及点落在传感器检测不到的地方(inliner)。
Gaussian Process Implicit Surface的原理理解

我们定义
y = { 0 , if  x ∈ X 0 1 , if  x ∈ X 1 − 1 , if  x ∈ X − 1 y=\begin{cases} 0,& \text{if } x \in \mathcal{X}_0 \\ 1,& \text{if } x \in \mathcal{X}_1 \\ -1,& \text{if } x \in \mathcal{X}_{-1} \end{cases} y=0,1,1,if xX0if xX1if xX1
所以用于训练的最终集合就是由三个部分组成 X = { X 0 ∪ X 1 ∪ X − 1 } \mathcal{X}=\{\mathcal{X}_{0} \cup \mathcal{X}_{1} \cup \mathcal{X}_{-1} \} X={X0X1X1}. 现在如果我们需要预测一个新点是否落在曲面上,我们就可以利用高斯的预测方程来解决,方程如下
y ⋆ = k X , x ⋆ T α y_{\star}=k_{\mathcal{X},x_{\star}}^T\alpha y=kX,xTα
所以如果 y ⋆ ≈ 0 y_{\star} \approx 0 y0, 我们就可以认为 x ⋆ x_{\star} x 也是落在曲面上,如果 y ⋆ ≈ 1 y_{\star} \approx 1 y1,我们就可以认为 x ⋆ x_{\star} x 是曲面之外,如果 y ⋆ ≈ − 1 y_{\star} \approx -1 y1,我们就可以认为 x ⋆ x_{\star} x 是曲面之内。
对于每个预测值,我们也可以获取它的covariance 值 用来检测它的 不确定性
V = k ( x ⋆ , x ⋆ ) − k X , x ⋆ T α k X , x ⋆ V=k(x_{\star},x_{\star})-k_{\mathcal{X},x_{\star}}^T\alpha k_{\mathcal{X},x_{\star}} V=k(x,x)kX,xTαkX,x

相关文章: