Conditional Neural Processes (CNPs) vs Gaussian Processes (GPs)
1. 引言
在机器学习中,Gaussian Processes (GPs) 是一种灵活的非参数方法,能够用于回归和分类任务。然而,GPs 的计算复杂度较高,限制了其在大规模数据上的应用。Conditional Neural Processes (CNPs) 是一种结合神经网络和概率建模的技术,旨在克服 GPs 的计算挑战,同时保留其不确定性建模能力。
本文将详细介绍 CNPs 的原理,并对比 GPs 的数学基础,帮助理解 CNPs 如何实现高效的非参数学习。
2. Gaussian Processes (GPs)
2.1 GPs 的定义
GPs 是一种随机过程,其中任意有限个变量的联合分布都是多元高斯分布。给定输入数据
X
=
{
x
1
,
x
2
,
.
.
.
,
x
n
}
X = \{x_1, x_2, ..., x_n\}
X={x1,x2,...,xn},对应的函数值
Y
=
{
y
1
,
y
2
,
.
.
.
,
y
n
}
Y = \{y_1, y_2, ..., y_n\}
Y={y1,y2,...,yn} 被建模为高斯分布:
Y
∼
G
P
(
m
(
X
)
,
k
(
X
,
X
′
)
)
Y \sim \mathcal{GP}(m(X), k(X, X'))
Y∼GP(m(X),k(X,X′))
其中:
- 均值函数 m ( X ) m(X) m(X):定义了 GP 的中心趋势,通常设为零均值。
- 协方差函数 k ( X , X ′ ) k(X, X') k(X,X′):定义了不同输入点之间的相关性(常见的如 RBF 核)。
2.2 预测过程
给定训练数据
(
X
,
Y
)
(X, Y)
(X,Y) 和测试数据
X
∗
X^*
X∗,GP 计算测试点的后验分布:
P
(
Y
∗
∣
X
∗
,
X
,
Y
)
∼
N
(
μ
∗
,
Σ
∗
)
P(Y^* | X^*, X, Y) \sim \mathcal{N}(\mu^*, \Sigma^*)
P(Y∗∣X∗,X,Y)∼N(μ∗,Σ∗)
其中:
μ
∗
=
k
(
X
∗
,
X
)
k
(
X
,
X
)
−
1
Y
\mu^* = k(X^*, X) k(X, X)^{-1} Y
μ∗=k(X∗,X)k(X,X)−1Y
Σ
∗
=
k
(
X
∗
,
X
∗
)
−
k
(
X
∗
,
X
)
k
(
X
,
X
)
−
1
k
(
X
,
X
∗
)
\Sigma^* = k(X^*, X^*) - k(X^*, X) k(X, X)^{-1} k(X, X^*)
Σ∗=k(X∗,X∗)−k(X∗,X)k(X,X)−1k(X,X∗)
问题:计算复杂度为 O ( n 3 ) O(n^3) O(n3),由于需要求逆矩阵,使得 GPs 在大规模数据上计算成本极高。
3. Conditional Neural Processes (CNPs)
3.1 CNPs 的基本思想
CNPs 是一种神经网络模型,利用神经网络学习一个条件概率分布,以实现类似 GPs 的不确定性建模,但计算复杂度更低。
给定上下文数据
(
X
c
,
Y
c
)
(X_c, Y_c)
(Xc,Yc) 和目标点
X
t
X_t
Xt,CNP 直接学习后验分布:
P
(
Y
t
∣
X
t
,
X
c
,
Y
c
)
P(Y_t | X_t, X_c, Y_c)
P(Yt∣Xt,Xc,Yc)
3.2 CNPs 的架构
CNPs 由以下几个关键部分组成:
-
编码器 (Encoder):
- 每个上下文点 ( x i , y i ) (x_i, y_i) (xi,yi) 通过神经网络编码为潜在表示 r i r_i ri。
- 这些表示通过池化(如平均池化)整合成全局表示 r r r。
-
解码器 (Decoder):
- 目标点 X t X_t Xt 和全局表示 r r r 结合,通过神经网络预测 Y t Y_t Yt 的分布参数(如均值和方差)。
3.3 CNPs 的数学建模
CNPs 采用神经网络学习一个映射:
(
X
c
,
Y
c
,
X
t
)
→
P
(
Y
t
∣
X
t
,
X
c
,
Y
c
)
(X_c, Y_c, X_t) \to P(Y_t | X_t, X_c, Y_c)
(Xc,Yc,Xt)→P(Yt∣Xt,Xc,Yc)
具体步骤如下:
-
编码阶段:
- 每个上下文点映射为潜在表示:
r i = h enc ( x i , y i ) r_i = h_\text{enc}(x_i, y_i) ri=henc(xi,yi) - 通过池化函数整合所有上下文信息:
r = Aggregate ( { r i } ) r = \text{Aggregate}(\{r_i\}) r=Aggregate({ri})
- 每个上下文点映射为潜在表示:
-
解码阶段:
- 目标点
X
t
X_t
Xt 结合全局表示
r
r
r 预测输出:
( μ t , σ t ) = h dec ( X t , r ) (\mu_t, \sigma_t) = h_\text{dec}(X_t, r) (μt,σt)=hdec(Xt,r) - 最终
Y
t
Y_t
Yt 服从:
Y t ∼ N ( μ t , σ t 2 ) Y_t \sim \mathcal{N}(\mu_t, \sigma_t^2) Yt∼N(μt,σt2)
- 目标点
X
t
X_t
Xt 结合全局表示
r
r
r 预测输出:
3.4 训练目标
CNPs 采用最大似然估计 (MLE),优化目标为:
L
=
∑
t
log
P
(
Y
t
∣
X
t
,
X
c
,
Y
c
)
\mathcal{L} = \sum_t \log P(Y_t | X_t, X_c, Y_c)
L=t∑logP(Yt∣Xt,Xc,Yc)
4. CNPs vs GPs
特性 | Gaussian Processes (GPs) | Conditional Neural Processes (CNPs) |
---|---|---|
建模方式 | 经典概率模型 (基于核函数) | 神经网络建模条件概率 |
计算复杂度 | O ( n 3 ) O(n^3) O(n3) | O ( n ) O(n) O(n) |
表达能力 | 受限于核函数的选择 | 由神经网络灵活学习 |
不确定性 | 解析高斯分布 | 预测均值和方差 |
大规模适应性 | 受计算限制 | 可扩展至大规模数据 |
4.1 关键区别
- GPs 计算成本高,但提供解析的不确定性估计。
- CNPs 计算高效,并能学习复杂数据模式。
- GPs 需要定义核函数,而 CNPs 通过神经网络自动学习特征。
4.2 何时使用?
- 使用 GPs:当数据量小,并需要高精度的不确定性估计时。
- 使用 CNPs:当数据量大,或需要高效建模时。
5. 总结
Conditional Neural Processes (CNPs) 是一种高效的非参数学习方法,结合了神经网络的表达能力和 GPs 的不确定性建模能力。它通过神经网络学习条件分布,避免了 GPs 的计算复杂度问题,同时保持了对未知数据的灵活建模。
CNPs 在元学习、贝叶斯优化、时序预测等任务中表现优异,值得进一步研究和应用。