胶囊网络是个好主意吗?生成论视角

2020-07-16 10:20:15

刘易斯·史密斯,2020年7月10日我最近写了一篇关于胶囊网络的全概率版本的论文。在试图让这类模型发挥作用时,我发现胶囊网络背后的想法存在一些有趣的概念性问题。其中一些问题本质上有点哲学性质,我还没有想出一个好办法来把它们固定在ML会议论文中。但我认为,当我们设计新的概率视觉模型时,它们可以为研究提供信息(它们非常有趣),所以我试着在这里给出一些见解。这篇博客文章是我论文的配套文章:iStart从高层次的生成性概率解释中介绍胶囊,然后深入讨论我发现的概念性问题。我将在周五(7月17日)在ICML的面向对象学习研讨会上发表这篇论文,所以如果你想聊天的话请一定要过来。

胶囊网络的目标是显式地表示对象及其实例化参数,如位置、大小等。当我们说我们想要表现物体时,我们是什么意思?毕竟,正常的神经网络必须有一些对象的表示,才能对它们进行分类。广义地说,卷积网络学习在图像上扫描的特征检测器,而更抽象的特征检测器处理较早的特征检测器的输出。但是,虽然CNN中的特征检测器对应于对象,但是信息是按位置编码的-即,关于什么对象的信息被编码在哪些单元是活动的,并且关于该对象位置的信息也被特征地图中该单元被激活的位置编码。相反,“速率编码”神经元将只用位置编码对象身份,并通过数字向量表示对象的属性,如位置。例如,要从位置的“位置编码”表示移动到“速率编码”表示,一种简单的方法是跨激活图的空间维度获取Arg-max。

因此,通过显式地表示对象,我们的意思是拥有一个模型,该模型可以放置代码对象标识,但是速率代码可以放置其他信息,如对象位置、方向、颜色等等。还有其他实例化对象的模型。典型的例子包括出席、推断、重复和莫奈,它们表示固定数量的可交换“对象槽”1中的对象的实例化参数。除了速率编码信息之外,封装技术捕捉组合性的概念-即,更复杂的对象由更简单的对象的几何排列组成。像Air和Monet这样的模型没有这个功能-它们直接从像素映射到对象,而不是用更简单的对象构建对象。

从一组更简单的组件中建造物体的画面与上图中的几何图形的心理学概念相似(很可能最初直接受到了这种概念的启发),其想法是大脑可以识别一组在各种方向上都可以识别的简单物体(左侧的几何图形),而物体是通过识别这些形状的排列来识别的。例如,如果我们的模型中有代表实例化参数的“槽”,比如左边对象的姿势、变形和存在,那么我们就可以根据这些实例化参数之间的关系来识别右边的对象。在高级术语中,类似于“当对象5和对象3存在时,杯子就存在,以及它们的实例化参数和相互之间的关系”之类的东西。我没有资格评论这一理论在生物学上的合理性,但其想法是,与正常CNN中的特征检测器相比,高级编码表示可能要高效得多。

为了更具体地说明我们期望找到什么关系,我们需要稍微谈一下姿势。我们特别想用封装网络捕获的较低级别对象的实例化参数是仿射姿势。我所说的姿势的意思是,为了表示一个物体的位置,我们可以用从某个特定参考位置的变换来描述它。所有的位置坐标实际上只是描述变换-笛卡尔坐标系描述相对于给定坐标的任意参考点(原点)到达特殊位置的平移。仿射姿态是参考坐标系的仿射变换,在二维中有6个自由度。

仿射变换包括旋转、缩放、平移和剪切。还有其他类型的对象变换不能用仿射变换来表示:变形、颜色和纹理的变化等等。当然,我们对于两个对象是“同一个对象,通过变换相关”和“两个不同的对象”的概念取决于什么是“仿射变换”。当两个对象是“相同的对象,通过变换联系在一起”和“两个不同的对象”时,我们的概念取决于

我们可能对此感到兴奋的原因是,我们有一种既不随位置变化又线性的关系,这意味着如果我们能正确地捕捉到它,我们就可以有奇妙的概括;如果我们能够学习描述一个位置上的对象的关系,我们现在也知道如何在任何仿射位置上描述它!在实践中,将利用这一直觉的模型形式化被证明是相当具有挑战性的,但现在我们描述一下我们试图这样做的尝试。

我们在上面的一节中画的关于对象及其关系的图片有一种生成性的味道-一旦我们知道了顶级对象的姿势以及它是否存在,我们就知道如何安排组成它的所有低级对象。这些建议把这写成一个生成模型,在这个模型中,我们用给定的父母姿势上的儿童姿势上的条件分布来描述该模型(对于在场等情况也是如此)。有趣的是,大多数我觉得最受关注的胶囊论文,也就是那些建立在Sabour等人的动态路由论文上的论文,都是有鉴别力的,基于试图将聚类算法作为一种新颖的、不寻常的激活函数。希望在我们进行的过程中,我们会看到您如何从生成性的观点出发来实现这种聚类算法。

这个生成性模型应该是什么样子的呢?在这里介绍一些符号可能会有帮助。假设我们有一组高级对象(由索引)和一组简单对象(由索引)。具体来说,你可以想象这些就是前面这篇文章中的JON图中的对象-左边的简单对象由索引,右边的复杂对象由索引。根据图形模型中的术语,我们还可以将复杂对象描述为“父对象”,将组成它们的简单对象描述为该父对象的“子对象”。

我们知道我们希望高级对象有一个姿势(对于父对象,对于哪个父对象)。我们可能还需要包含avariable,它告诉我们某个特定的对象是否存在-让我们称其为Avariable。(如果将其称为“”表示存在,那会很好,但不幸的是,概率和父母也是以p开头的)。我们可以想象,当对一个场景进行采样时,我们从某个任意的先验分布中随机决定我们的高级对象的这些属性--例如,

注意,我们画的是以单位矩阵为中心的分布,而不是零-这是因为我们希望“默认”位置是对象的规范方向。是表示对象姿势的仿射矩阵。5实际上,我们可能希望提供更详细的前提,包括父对象之间或类似对象之间的交互,但这在概念上暂时可以了。

现在,我们如何确定孩子们的姿势呢?当然,如果我们知道物体属于父母,那么我们就知道它的姿势应该以相应的相对姿势转换成的父母姿势为中心,这是我们前面的论证。但是我们如何决定一个简单的物体属于哪个父母呢?一种解决方案是在模型中设置固定数量的对象“槽”,并让每个对象选择它所属的父项。或许可以允许子项或父项在同一图像中重复多次,但这会使事情变得非常复杂。对于固定数量的对象,我们可以给每个简单的对象一个编码的选择变量;一个可以取值的分类变量。显然,简单对象只能是实际存在的父对象的一部分,我们可以引入一些额外的参数来表示父对象解释该子对象的先验概率。

一旦我们知道哪个复杂对象对简单对象负责,它的姿势就应该以父对象的姿势为中心,通过相应的父子相对姿势进行转换;

我们还需要把分布放在它的存在之上。亲和力参数在这里可以起到双重作用-。

这个简单的草图给了我们一个有点像高斯混合的模型,父母扮演聚类均值的角色,孩子扮演点的角色,只是每个点有单独的变换参数。这也是(某种程度上)在EMrouting的胶囊论文中使用的一个模型,尽管在那篇论文中没有明确地写出来。但是,通过推导EM过程,推导出以孩子的姿态和存在为条件的父母姿态和存在的最大似然解,就可以从该模型中灵活地推导出与本文提出的EM路由算法类似的算法。广义地说,EM布线论文使用这个过程作为层之间的非线性,但这并不对应于任何全局生成模型。

我们还可以很容易地将此模型扩展到对象的顺序层次结构,第一级对象由简单对象组成,第二级对象由第一级对象组成,依此类推。然而,一个相当明显的问题是,我们很少看到物体的直接姿势作为输入-相反,我们看到的是一个用像素数组表示的场景。所以我们的模型需要以某种方式连接到像素空间,这样我们才能对它做任何事情。

在这里,图片变得有点难看。我们在这里讨论了几个问题-首先,我们希望强制模型将姿势和外观的其他方面分开,但至少对于标准的网络体系结构来说,很难正确推断姿势6。其次,Ifour模型是灵活的,然后我们引入了使用姿势解释变化和使用其余模型潜在空间之间的可识别性问题。例如,如果我们给最低级别的对象一个VAE样式设置,这样他们既有姿势变量,又有潜在的外观代码,那么模型可能会学会总是将姿势设置为任意值,并用潜在代码解释所有的视觉变化。通过足够仔细的设计或许可以绕过这个问题,但是在探索这种模型时,一个简单的解决办法就是简单地使模板模型变得非常简单。最简单可能的做法是将每个最低级别的“部分”与一个小的、固定的图像模板相关联。在这种情况下,模型被迫使用姿态变量来修改部件的外观。为了绘制图像,我们根据胶囊的姿态变量对每个面片进行变换,并使用Alpha合成将它们合成为最终图像(如果面片的Presence变量为开的话)。

再说一次,这个模型是非常有限制性的,不太可能真正扩展到现实的数据。然而,即使这样,我们也发现这种模式的运作方式存在一些缺陷。

但在任何情况下,这至少为我们提供了一个可以使用的模型。使用最低级别对象的模板模型,我们可以继续写下整个模型的联合概率。一旦我们有了联合概率,我们就可以推导出一个变分下限,并以此为目标来训练一个不对称参考网络,它将给我们在以图像为条件的潜变量上的后验结果,类似于VAE编码器。在实践中,我们用概率编程语言Pyro实现了我们的模型。这里我略过了几个重要的实现细节,特别是我们如何处理模型中的离散变量和编码器中的体系结构,但我不想陷入比我已经做过的更多细节的泥潭-如果您感兴趣,您可以参考本文了解更多细节。

有几种方法可以训练这种模式。在我们的论文中,我们探索了无监督训练,尽管原则上我们可以研究其他范式;例如,如果你愿意在顶级对象和标签之间强制显式关联,你可以让这种事情做半监督学习或类似的事情。

回想一下,胶囊网络的目标,很大程度上也是评估它们的实验标准,是对未见的观点或训练过程中看不到的数据的转换的概括。如上所述,这背后的逻辑是,给定学习的对象-子变换矩阵,部分的姿势和对象的姿势之间的关系的线性关系。

我们可以在这种情况下对我们的模型进行评估,我们发现我们在MNIST和Affnist上获得了与其他非监督胶囊方法相当的性能,MNIST和Affnist是一个由MNIST和AFNIST组成的数据集,其中MNIST由温和变换扩展而成。

表:对正常MNIST训练的模型的潜伏期分类结果,显示了对旋转和仿射变换的概括(Affnist)。表示仅基于顶级存在的分类,也表示我们还可以使用姿势。VAE是一个简单的基线,用于显示非姿势感知模型的执行情况。也许你可以通过摆弄VAE拱门,在原始数字方面做得更好一些。但趋势是明确的。

然而,亲和主义实际上并不是对新观点泛化的一个很强的测试,因为它只包含大约20度的旋转,以及类似的比例和剪切上的微小变化。但原则上,我们这里的生成模型可以表达它在任何仿射变换中学到的任何对象,这就是为什么我们还测试旋转到180度的原因。当然,在这一点上,我们预计性能会有所下降,尤其是因为一些MNIST数字在这次旋转时变得很难区分(6和9是彼此的近仿射变换)。

但我们不一定要期望我们的模型在这次测试中会泛化,因为我们使用的是摊销(神经编码器)推理,所以即使生成模型泛化,我们的编码过程也可能不适用于分布外的数据。测试这是否是唯一原因的一种方法是看看当我们用这种增加的数据训练模型时会发生什么。如果胶囊将帮助我们概括为看不见的转变,我们应该期待它们也会有所帮助,如果我们在训练集中有这些转变的话。

然而,有趣的是,我们并没有真正看到这一点。这是当我们增加旋转度时,基于增加的数据训练的模型的性能图表;

为了验证这不是特定于我们的实验设置,我们还使用堆叠式胶囊自动编码器进行了这个实验,这是一个与我们的工作密切相关的胶囊配方,尽管没有明确的概率。我们看到了类似的效果,我们认为这是一个证据,表明这是一个更广泛的模型的问题,而不是我们具体实施的问题。

正如我们可以看到的,在这种情况下,我们的模型和SCAE看起来都不是特别好,我们可以通过可视化模型对方向有很大差异的图像的重建来感受正在发生的事情;

如前所述,我们可以看到,该模型对图像的相应部分使用了相同的模板,但对于方向差异较大的图像,它对不同的部分使用了不同的模板。7个。

当然,这打破了关于对象是如何组成的假设,这应该首先导致胶囊的表现优势!我们假设变换的对象将被表示为一组变换的部分,但这一假设没有得到尊重,相反,我们用不同的部分来表示对象的变换。这意味着图像的旋转版本不能表示为规范方向的转换版本。

在我解决其中一些问题之前,我想快速地证明我所讨论的实验是在基于MNIST的数据集的“玩具”设置中。一般来说,这是一个非常公平的批评-MNIST是一个不切实际的容易的数据集,关于它的结论通常不会转移到其他情况。话虽如此,我认为这不是其中之一。具体地说,我们谈论的是MNIST上的一个特别失败。MNIST是一个简单的数据集,这通常是一些听起来很酷的方法无法推广的原因,但可以肯定的是,它很容易,这意味着对失败的模拟更加令人担忧!

有了这一点,我认为这些问题有几个可能的原因。第一个问题是可识别性。这个模型学习到的模板有一个明显的问题,那就是很多模板彼此非常相似。这可能是对存在于图像中的每种对象中只能有一种的限制的反应-在这方面不那么天真(例如,允许重复的对象或允许一定数量的对象的“感受场”)可能会改善这一点。

.