高斯过程(Gaussian Processes, GPs)等贝叶斯类方法能够利用有效利用先验知识来对后验进行估计,但其计算复杂度高并难以准确指定先验分布. 另一方面,深度神经网络是非常好的函数近似,但每拟合一个新的函数都要从一个独立数据集开始.本文提出一种条件神经过程(Conditional Neural Processes, CNPs)方法结合上述两方面优点,既参考随机过程的先验知识的同时,又能够借助神经网络框架进行梯度训练. CNPs能够使用极少数的观测点来进行训练,然后扩展到复杂函数和大数据集上.本文方法在回归、分类以及图像补全三个基本机器学习任务上进行实验均得到很好的效果.
论文地址:
http://proceedings.mlr.press/v80/garnelo18a/garnelo18a.pdf
代码地址:
https://github.com/deepmind/neural-processes
数据集
1. 手写数字补全
本任务在MNIST数据集上进行图像补全,仅使用很少量的先验观测量信息就能进行很好的预测补全.
上图展示基于像素点位的图像补全. 左侧图片展示不同观测量下预测均值和方差的变化;右侧曲线展示模型准确度随着观测量的增加而上升. 很重要的一点是展现了模型利用先验知识的能力, 在无信息情况下仅能预测所有结果的平均值, 随着信息增加逐渐增加确定性,方差从最初的均匀覆盖逐渐到指定的局部区域.
2. 函数回归
1-D曲线回归任务.本任务使用两个不同的数据集,分别使用指数核的高斯过程生成两个不同的数据集: (1)使用固定参数kernel的高斯过程函数;(2)随机采样,在两个不同kernel的高斯过程函数上. 每一步训练从GPs采样一个曲线, 数据集及拟合效果如下:
在1-D曲线上的回归结果(黑线为真值函数),分别使用5个点(左侧)和50个点(右侧)作为先验观测量. 上面a中的两行分别代表均值和方差的预测,下面b一行代表不同kernel参数曲线的预测.
3. 分类
使用该模型在Omniglot数据集上完成one-shot任务.这个数据集包含1,623个类(字母)来自于50个不同的字母表,每一类仅含有20个对应样本,这个数据集很适合few-shot learning算法.
在训练时,将相同类别的输入聚合成条件vector; 在测试时,每个观测类输入一个样本,输出预测样本的类别. 因此模型的时间复杂度是常数m+n. 上述结果中CNP效果较MN(Matching Networks)稍差, 但模型体积远小于MN,时间复杂度更小.
模型
随机过程
对于输入
x
i
∈
X
x_i \in X
xi∈X和输出
y
i
∈
Y
y_i \in Y
yi∈Y对,定义集合
O
=
{
(
x
i
,
y
i
)
}
i
=
0
n
−
1
⊂
X
×
Y
O=\{(x_i,y_i)\}_{i=0}^{n-1} \subset X \times Y
O={(xi,yi)}i=0n−1⊂X×Y; 对于没有标签的点,定义集合
T
=
{
x
i
}
i
=
n
n
+
m
−
1
⊂
X
T=\{x_i\}_{i=n}^{n+m-1} \subset X
T={xi}i=nn+m−1⊂X, 我们将这两个集合分别称为观测值和目标值. 我们假设输出来自于以下过程:
P
P
P是函数簇
f
:
X
→
Y
f: X \rightarrow Y
f:X→Y服从的分布,即
f
∼
P
f \sim P
f∼P,集合
y
i
=
f
(
x
i
)
y_i=f(x_i)
yi=f(xi),定义以上过程为随机过程. 由
P
P
P定义随机变量集
{
f
(
x
i
)
}
i
=
0
n
+
m
+
1
\{f(x_i)\}_{i=0}^{n+m+1}
{f(xi)}i=0n+m+1的联合分布, 条件分布
P
(
f
(
T
)
∣
O
,
T
)
P(f(T) \mid O,T)
P(f(T)∣O,T); 我们的任务是给定
O
O
O, 对于每个
x
∈
T
x \in T
x∈T预测输出
f
(
x
)
f(x)
f(x).
一个经典的假设
f
f
f在有限数据集上的分布
P
P
P服从联合高斯分布, 这一类随机函数被称作高斯过程(GPs). 这种贝叶斯类的方法强制模型预测分布基于观测先验
O
O
O, 这种方法使得数据更有效, 但在实际场景中由于计算复杂度高以及难以指定很好的先验分布,导致难以应用.
条件神经过程(Conditional Neural Processes)
相比于随机过程,条件神经过程不需要强制指定先验分布,使用固定的观测
O
O
O的分布表示来参数化
f
(
T
)
f(T)
f(T)分布.
CNP定义为一个条件随机过程
Q
θ
Q_{\theta}
Qθ,其表示对于
x
∈
T
x \in T
x∈T上
f
(
x
)
f(x)
f(x)的概率分布. 假定
Q
θ
Q_{\theta}
Qθ具有置换不变性, 即如果
Q
’
Q’
Q’,
T
’
T’
T’是
Q
Q
Q,
T
T
T的排列组合, 则
Q
t
h
e
t
a
(
f
(
T
)
∣
O
,
T
)
=
Q
t
h
e
t
a
(
f
(
T
’
)
∣
O
,
T
’
)
=
Q
θ
(
f
(
T
)
∣
O
’
,
T
)
Q_{theta}(f(T) \mid O,T) = Q_{theta}(f(T’) \mid O,T’)=Q_{\theta}(f(T) \mid O’,T)
Qtheta(f(T)∣O,T)=Qtheta(f(T’)∣O,T’)=Qθ(f(T)∣O’,T). 我们用连乘的方式确保随机过程的正确性, 即
Q
θ
(
f
(
T
)
∣
O
,
T
)
=
∏
x
∈
T
Q
θ
(
f
(
x
)
∣
O
,
x
)
Q_{\theta}(f(T) \mid O,T) = \prod_{x \in T} Q_{\theta}(f(x) \mid O,x)
Qθ(f(T)∣O,T)=∏x∈TQθ(f(x)∣O,x).
CNP的特点是将作为条件的观测量嵌入成固定维度的表示:
其中
h
θ
:
X
×
Y
→
R
d
h_{\theta}:X \times Y \rightarrow \mathbb{R}^d
hθ:X×Y→Rd以及
g
θ
:
X
×
R
d
→
R
e
g_{\theta}:X \times \mathbb{R}^d \rightarrow \mathbb{R}^e
gθ:X×Rd→Re表示神经网络,
⊕
\oplus
⊕表示元素级的相加,
ϕ
i
\phi_i
ϕi表示参数化的条件
Q
θ
(
f
(
x
i
)
∣
O
,
x
i
)
=
Q
(
f
(
x
i
)
∣
ϕ
i
)
Q_{\theta}(f(x_i) \mid O,x_i) = Q(f(x_i) \mid \phi_i)
Qθ(f(xi)∣O,xi)=Q(f(xi)∣ϕi).
对于回归任务, 我们使用
ϕ
i
\phi_i
ϕi来参数化高斯分布
N
(
μ
i
,
s
i
g
m
a
i
2
)
\mathcal{N}(\mu_i, sigma_i^2)
N(μi,sigmai2)均值和方差
ϕ
i
=
(
μ
,
σ
i
2
)
\phi_i = (\mu, \sigma_i^2)
ϕi=(μ,σi2) . 对于分类任务,
ϕ
i
\phi_i
ϕi表示输出类别的概率
p
c
p_c
pc. 大部分的实验中
a
1
⊕
.
.
.
⊕
a
n
a_1 \oplus ... \oplus a_n
a1⊕...⊕an使用均值操作
(
a
1
+
.
.
.
+
a
n
)
/
n
(a_1 + ... + a_n)/n
(a1+...+an)/n.
训练CNPs
训练
Q
t
h
e
t
a
Q_{theta}
Qtheta预测
O
O
O,其中条件是在
O
O
O中随机挑选的子集. 这给模型增加了更多的不确定性. 具体做法是设
f
∼
P
f \sim P
f∼P,
O
=
{
(
x
i
,
y
i
)
}
i
=
0
n
−
1
O=\{(x_i,y_i)\}_{i=0}^{n-1}
O={(xi,yi)}i=0n−1作为观测值,
N
∼
u
n
i
f
o
r
m
[
0
,
.
.
.
,
n
−
1
]
N \sim uniform[0, ..., n-1]
N∼uniform[0,...,n−1]. 我们的条件子集是
O
O
O的前N个元素
O
N
=
{
(
x
i
,
y
i
)
}
i
=
0
N
⊂
O
O_N=\{(x_i,y_i)\}_{i=0}^N \subset O
ON={(xi,yi)}i=0N⊂O. 我们最小化负的条件对数概率:
由此
Q
θ
Q_{\theta}
Qθ包换观测量和为观测量. 在实践中我们使用采样进行蒙特卡洛估计.
结论
本文提出了一种条件神经过程(CNPs)方法结合贝叶斯类高斯过程和深度神经网络, 其能够很好的使用先验知识,并使用很小数据集来训练深度神经网络. 本文在基本机器学习任务回归、分类及图像补全上验证了模型效果,在使用很少数据训练提交较小的模型的同时,得到了不错的效果.
本文的CNP是对高斯过程的简单神经网络实现,可以通过模型调整实现更加精细的理论方法. 这项工作可以被视为学习高级抽象的一个步骤,这是当代机器学习的一大挑战.经过训练的CNP更为通用,因为它封装了一系列功能的高级统计数据.因此,它构成了一个高级抽象,可以重用于多个任务.

扫码识别关注,获取更多新鲜论文解读