A Gentle Introduction to Deep Sets and Neural Processes
关于 Deep Sets 和 Neural Processes的简单介绍
Link: https://gordonjo.github.io/post/deepsets_nps/
Author:
Jonathan Gordon
Machine Learning PhD Student
My research interests include probabilistic machine learning, deep learning, and approximate Bayesian inference.
这篇博客中,作者谈了最近对Deep Sets 和 Neural Processes的理解,并在这篇文章中列出了这些模型的重要的组成的部分。作者主要关注 meta-learning,所以这篇文章也将从 meta-learning的背景介绍开始。
Quick Background on Meta-Learning
首先是(有监督的)meta-learning,在标准的有监督学习中,通常会比较关注学习/近似函数( f f f),此函数会建立输入( x x x)和输出( y y y)之间的映射。一个有监督的学习算法( L L L)可以被认为是当给出上述的输入输出数据对,返回一个近似的函数( f ^ \hat{f} f^)。如果( L L L)是一个比较好的学习算法,那么在某种意义上 f ^ ≈ f \hat{f} \approx f f^≈f。
在met-learning中,面对的数据集不是一个很大的类似上面的数据集,而是由许多个任务组成的数据集,每个任务包含一个context set( D c D_c Dc)和target set( D t D_t Dt)(类似训练集和测试集)。每个集合中包含可变数量的输入输出数据对。面临假设是,尽管输入和输出之间的映射可能会因任务而有所不同,但任务共享一些统计属性,如果对其进行适当建模,则应会提高学习算法的整体性能。
因此,元学习的目标是学会生成从数据集映射到函数逼近器的黑箱算法(元学习的目标有点泰勒公式的意思,用一些学习到的简单函数去逼近一个新的函数)。换句话说,我们的目标是使用我们的数据集的任务训练模型,测试时候接受新的训练集,并生成函数近似者表现良好在看不见的数据相同的任务。
直观地说,元学习算法学习一种适合所有观察任务的学习算法。一个好的元学习算法会产生一个学习算法,这个学习算法具有与我们的训练集中的任务类似的理想性能(例如,产生好的函数逼近器,采样效率高,等等)。
图2:在元训练过程中提供了大量的少发任务。 元学习者学习将少量任务映射到有意义的预测分布。
元学习最引人注目的动机之一就是数据效率。 众所周知,神经网络需要大量数据集以供学习。 但是,已经观察到[1],例如,人类能够从少数例子中学习。
这是人类智能与我们当前的机器学习系统之间的主要区别,也是我们的学习系统渴望实现的极具吸引力的功能。 高效采样的学习者在许多应用程序中将非常有用,例如机器人技术,强化学习等。
这种思路导致了一种叫做few-shot learning(小样本学习) 的子研究领域。在这种情况下,仅向模型提供了执行模型所需的一些示例。 元学习是设计可以实现这一目标的模型的一种特别成功的方法。
图3:两个小样本学习问题的例子。(左)显示了一个示例图像(在红框中)。同一物体的所有图像必须从底部的设置中识别。(右)同样的情况,现在是字母。[1]的图像。
The Neural Process Family
接下来看Neural Process (NP)系列[2],NPs是最近推出的用于概率元学习的模型系列。 虽然存在一些有趣的潜在变体,但在这篇博客文章中,将重点关注条件神经过程(conditional neural processes,CNPs),它是NPs的一个简单的确定性变体。
CNP利用一系列映射直接对基于上下文集的某个感兴趣位置( x t x_t xt)的预测分布进行建模。 数学上,对于高斯预测可能性,可以将其表示为:
p ( y t ∣ x t , D c ) = N ( y t ; μ θ ( x t , D c ) , σ θ