原文:How to represent part-whole hierarchies in a neural network [https://arxiv.org/pdf/2102.12627.pdf]
本文没有实现代码,仅仅描述 一个想法 ,集多种优势到一个假想系统GLOM [1]。 这些优势包括 transformer、神经场(neural field)、对比表示学习、知识蒸馏 、胶囊网络。GLOM 回答以下问题: 一个固定结构的神经网络怎么把图像解析成每个图像都有不同结构的部分-整体层次关系? 想法很简单,用id向量表示解析树的节点。 如果 GLOM 能运行,应用到视觉或语言, 它应该能显著地改善由 transformer类系统产生的表示的可解释性。
有力的生理学证据表明,人们把视觉解析成了part-whole hierarchies(下文均译为:部分-整体层次结构),并在部分和整体间建模不变的空间关系(观点),以此把部分和整转化为固定的坐标框架 。(译者:部分-整体关系 显然是位置不固定的)[Hinton,1979].
如果想让神经网络以人类的方式理解图像,必须指出神经网络怎么表示部分-整体层次关系的。这是困难的,因为一个真实的神经网络不能动态分配 一组节点以表示解析树中的一个节点[2]。(译者:部分_整体显然是树结构,根节点表示整体,下层节点表示部分)。神经网络不能动态分配神经元的这个缺陷 正是 "胶囊"系列模型试图解决的 [Sabour et al., 2017, Hinton et al., 2018,
Kosiorek et al., 2019]。这些模型假设一组神经元(胶囊)固定地表示图像中特定区域特定类型的一个部分。 这些预定义的、特定类型的胶囊 ,以及胶囊间 恰当的连接表示创建了一个解析树 。 本文以非常不同的方式 ,使用胶囊来表述部分-整体层次关系。
本文主要考虑单张静态图片,但GLOM很容易处理静态帧序列 ,所以单张静态图片被当成重复的图片序列。【译者:Hinton的论文并没有涉及感知移动问题,可以看看Numenta公司创始人Jeff Hawkins提出的千脑理论,而移动感知是千脑理论的核心组成部分。为了更好地训练GLOM模型识别物体,并解释大脑处理视觉的过程,Hinton可能需要结合移动来分析】
GLOM体系[3]由许多共用同样权重的列组成。每个列是空间局部自编码器的 堆积,自编码器?列表示一小块图像的多级别表示。
每个自编码器使用多层 bottom-up编码器 、多层 top-down 解码器转变上级 embedding为相邻下层 embedding 。 这里的层对应部分-整体层次关系中的 层。例如人脸,单个列可能聚焦在表示鼻孔、鼻子、脸、人的 embedding 向量[5] 上。 图1 显式 ,在单个列中,不同层的embedding如何交互。
下图1 没有表示不同列间同层的embedding间的交互。列间交互比列内交互更简单,因为列间不需要实现部分-整体坐标转化。列间交互更像multi-headed transformer中[Devlin et al., 2018]表示不同词块的列的加权注意力的交互。但是注意力是更简单的,因为query、key 、 value向量都是完全相同的embedding向量。(译者:列即解析树中的节点,节点间关系即注意力机制 , 节点内的下上编码器 、上下解码器表示部分-整体关系。)
列间交互的作用是通过使该水平上的每个嵌入向量回归到附近位置的其他类似向量,从而在某一水平上产生相同嵌入的岛屿(原词为islands)。这就产生了多个局部“回音室”,在这些回音室中,某个层次的embeddings主要关注其他类似的embeddings。
在每个离散时间和每一列中,将某一水平上的embedding更新为四个贡献的加权平均:
对于静态图像,在一个水平上的嵌入应该随着时间的推移而稳定下来,以产生几乎相同的向量的不同的岛(原词为islands)。如图2所示,这些岛在较高的层级上应该更大。使用相似岛来表征图像的解析,避免了分配神经元组来表示y上解析树的节点,或者提前为所有可能的节点留出神经元组。GLOM没有分配神经元来表示解析树中的节点并将节点指针指向其祖先和后代,而是分配适当的活动向量来表示节点,并对属于该节点的所有位置使用相同的活动向量。访问节点的祖先和后代节点的能力是通过自底向上和自顶向下的神经网络实现的,而不是通过使用内存中的表查找。
像BERT [Devlin et al., 2018],整个系统可以端到端地训练,从有缺失区域的输入图像重建最后时间步的图像,但目标函数也包括两个正则化器,在每一层鼓励接近相同向量的岛屿。正则化仅仅是在一个层次上的新embedding与自下而上和自上而下的预测之间的约束,增加这一约束有利于局部岛屿的形成。
图1:显示了GLOM体系结构的三个相邻级别之间的自底向上、自顶向下和同一级别的交互。 蓝色和红色的箭头代表自底向上和自顶向下的交互作用是由两个不同的神经网络实现的,它们有若干个隐藏层。 这些网络在层级对之间可能不同,而且它们是跨列和跨时间步长共享的。自上而下的网络应该使用正弦单元[Sitzmann et al.,2020]。对于静态图像,绿色箭头可以简单地缩放残差连接,在每一层实现embedding的时间平滑。对于视频,绿色连接可能是神经网络,学习基于胶囊的先前几个状态的时间动态。不同列中相同层次的embedding向量之间的交互是通过一个非自适应的、注意力加权的、局部平滑器(图中未显示的)实现的。
图2:展示了附近六列在特定时间内的embeddings的图片。所有显示的位置都属于同一个对象,场景级别还没有确定在一个共享向量上。每个位置的完整嵌入向量是通过将向量划分为部分-整个层次结构中的每个层级的单独部分来显示的,然后将层级的高维embedding向量显示为2d向量。这使得演示不同位置的嵌入向量对齐变得很容易。图中显示的不同层次上的相同向量岛表示一个解析树。但身份孤岛比短语结构语法要强大得多。他们很容易表征断开连接的对象,就像“这会使语法学家们慢下来吗?”
本文提出了使用相似向量的孤岛来表示图像解析树的想法,然后通过描述一个名为GLOM的虚构系统来探索这个想法的一些衍生物,该系统实现了这个想法。它总结了一些关于大脑可能如何执行GLOM的某些方面的推测。但首先有一些免责声明:
免责声明1: 人类视觉是一个采样过程,在此过程中,智能地选择fi xation点来获取执行任务所需的信息,使用在fi xation点附近具有更高分辨率的视网膜。相同的神经回路在每一个新突触中重复使用。出于本文的目的,我假设一个具有统一分辨率的单个视网膜或摄像机,并且只考虑fi rst固定时发生的情况。
免责声明2: 为了避免像“sub-sub-parts”这样麻烦的术语,我经常谈论部分和整体就好像在部分-整体层次结构中只有两个层次一样。但是在考虑层级L-1时,完整的embedding向量的一部分称为整体,在考虑级别L和L+1时,L也称为部分。
类似于通用计算机中的内存,对于一个特定图像,明显的方式来表示part-whole层次是创建一个特定的图结构图像通过动态分配一块内存区域给图中的节点,每个节点指针指向它连接的节点。将这种类型的动态创建的图与神经网络学习技术相结合最近显示出很大的前景[Bear等人,2020],但如果整个计算机是一个神经网络,如果我们希望神经网络的结构对所有图像都是相同的,那么如何表示每个图像都不同的部分-整体层次结构就不那么明显了。如果我们允许一个神经元的活动控制(译者理解:类似数字电路中的逻辑门控制)另外两个神经元之间的连接[Hinton, 1981c],就很容易使这种连接变得动态,但是,在没有能力分配y上的神经元的情况下,如何动态地创建一个图结构仍然不清楚。这在真实的神经网络中尤其如此,因为知识是在连接权中,而连接权不容易被复制。
一个相当麻烦的解决这个问题的方案是留出一组神经元,称为胶囊,为每个可能类型的对象或部分图像的每个区域[7],使用一个路由算法动态地连接一个小部分活跃胶囊到表征了解析图像的图(graph)。胶囊内神经元的活动可以代表某一部分的特性,如特定嘴或脸的姿势或变形。
通过大量的努力,使用胶囊的模型在小数据集的监督和非监督学习中取得了一些成功[Sabour等人,2017年,Hinton等人,2018年,Kosiorek等人,2019],但它们还没有很好地扩展到更大的数据集[Barham和Isard, 2019]。胶囊没有真正像随机梯度下降或 transformer一样有实用性的idea。胶囊的根本缺陷在于,它们使用一种混合物来模拟可能的部件集合。这就迫使人们做出一个艰难的决定:汽车的前灯和眼睛是否真的是截然不同的两个部件。如果它们是由同一个胶囊模拟的,那么胶囊就不能预测整体的特性。如果用不同的胶囊来模拟它们,则无法捕捉到它们与整体关系的相似性。
避免使用混合方法建模不同类型part的一种方法是拥有一套相同的“通用”胶囊,每个胶囊包含足够的知识建模任何类型的部分(part)[Locatello等人,2020,Srivastava等人,2019,Sun等人,2020b]。这允许每一个part的id具有不同的表示,从而允许在类似part之间更好地共享知识。在神经科学术语中,id是值编码而不是位置编码。然而,在决定每个part应该路由到哪个通用对象级胶囊时,它造成了对称破坏问题[8]。
通用胶囊的一个更激进的版本,避免了对称破坏和路由,是预先为图像中的每个位置分配一个通用胶囊。这些无处不在的通用胶囊可以用来代表在那个位置发生的任何东西。一个更复杂的版本是将若干个不同级别的无处不在的通用胶囊分配到每个位置,这样一个位置可以同时属于一个场景、一个对象、一个part和一个子part。本文探讨了这种部分-整体层次结构的抽象表示方法。它的灵感来自生物类比、数学类比和最近关于神经场表征的研究[Ha, 2016, Sitzmann et al.,2019]。
身体中的所有细胞都有整个基因组的副本。大脑细胞包含类似肝细胞的行为指令似乎是一种浪费,但它很方便,因为它让每个细胞都有自己的私人通道使DNA可以选择性表达任何性状。每个细胞对于每个基因都有一个表达强度,而表达强度的载体对于组成同一器官的细胞也是相似的。
与神经网络的类比是这样的:图像中的每个位置都对应着一个生物细胞。一个位置的完整 embedding向量就像一个细胞的基因表达强度向量。前向传递就像一个发育过程,允许新的基因表达强度向量由之前的表达强度向量决定。对象就像器官:它们是位置的集合,其嵌入向量在高层次上都非常相似。在一个对象中,embedding向量可能在对应于对象的part的较低层次上存在差异(见图2)。
Kolmogorov-Arnold叠加定理表明,每一个多元连续函数都可以表示为一个单变量连续函数的叠加[10]。例如,乘法可以表示为单个参数的对数的和,然后取幂。在机器学习术语中,当涉及到多参数函数时,加法是所有你需要的。当然,这假设您可以找到正确的单参数函数来编码您想要表示的多元函数的参数,然后再找到正确的函数来解码求和结果。Kolmogorov证明了这总是可以做到的,但用于证明的编码器函数是如此奇怪,以至于它们与神经网络没有实际关联。
然而,这个定理确实提出了一种有趣的方法,可以将来自多个不同地点的信息结合起来。也许我们可以学习如何在每个位置编码信息,这样简单地平均来自不同位置的编码是我们唯一需要的交互形式。这个想法已经用于set transformer中[Lee等人,2019],用于组合来自set中不同成员的信息。如果我们稍微修改这个建议以使用注意力加权局部平均,我们会得到一种特别简单的transformer形式,其中key、query和value都与embedding本身相同,位置之间的唯一交互是注意力—— 每个级别的加权平滑。所有的适应都发生在每个位置的自下而上和自上而下的神经网络中,如图 1 中的蓝色和红色箭头所示。这些网络在所有位置和所有时间步长之间共享,但可能不跨部分-整体层次结构的所有级别。
假设我们要表示图像中每个点的标量变量的值,例如深度或强度。一个简单的方法是将图像位置量化为像素,并使用一个数组来指定每个像素的标量变量。如果不同像素的值是相关的,则使用神经网络可能更有效,该神经网络将表示图像的代码向量作为输入并输出像素值数组。这就是自动编码器的解码器所做的。或者,我们可以使用神经网络,该网络将表示图像的代码向量加上表示图像位置的附加输入作为输入,并输出该位置的预测值。这被称为神经场 [12],这种使用神经网络的方式最近变得非常流行 [Ha, 2016, Sitzmann et al., 2020, Mildenhall et al., 2020]。图 3 显示了一个非常简单的示例,其中一组位置的强度都可以从相同的代码重建,即使强度不同。
图 3:使用单个像素作为位置的神经场的一个非常简单的示例。 四个像素的强度都可以用相同的代码 (a; b) 表示,即使它们的强度根据函数 f(x) = ax+b 变化。解码器有一个额外的输入来指定位置。
对于复杂的图像,神经网络可以将表示整个图像的代码向量加上表示图像位置的向量转换为该位置的值。但是,如果图像由熟悉的对象组成,而对象由熟悉的部分组成,那么使用神经场的层次结构会更有效[13]。在 GLOM 中,场景级自顶向下神经网络将场景向量加上图像位置转换为该位置的适当对象向量。该向量包括有关对象相对于相机的3-D 姿态的信息。属于同一对象的所有位置都被赋予完全相同的对象级向量。对象级自顶向下神经网络然后将对象向量加上位置转换为适合该位置的part向量,依此类推。例如,作用于完全相同的面部向量的完全相同的自上而下网络能够预测某些位置的鼻子向量和其他位置的嘴向量。
在部分-整体层次结构的符号 AI 表示中,每个节点都有一个唯一的符号或内存地址,而这个符号或地址与内容具有任意关系。 在 GLOM 中,特定级别的embedding向量由该级别岛中的所有位置共享,其作用与图中节点的地址相同,但该向量不是任意的。 自顶向下的神经网络必须从 L+1 层对象的embedding向量预测 L 层部分的embedding向量。 这涉及使用相对于在 L+1 层编码的相机的姿势和图像位置的表示来计算位置在对象的固有坐标系内的位置。 这决定了位置属于哪个级别 L 部分。
使用地址总线跟随指向已知对象的一部分表示的指针与使用自顶向下的神经网络来计算部分向量之间存在非常重要的区别。 与查表不同,自顶向下的神经网络发现,处理零件之间对称的形状要容易得多。 复制的部分,例如蜈蚣的腿,给神经网络增加的复杂性很小,即使腿沿着蜈蚣发生变化,只要它们以可预测的方式变化,这仍然是正确的。 与对象的内在坐标系对齐的双边对称性将自上而下的神经网络所需的容量降低了近两倍。
然而,神经网络要利用不与坐标系对齐的对称性要困难得多,而且人们通常不知道这种对称性。 例如,大多数人完全不知道立方体的三重旋转对称性,尽管它的名字,直到他们被迫使用通过立方体中心的身体对角线作为其内在的上下轴 [Hinton, 1979]。 然后他们不再知道立方体中的任何直角,因为这些角度不再与新的固有坐标系对齐[15]。
本节讨论在说明 GLOM 架构时需要做出的一些决策。
GLOM假设部分-整体层次结构具有固定深度。人们可以处理非常深的层次结构,在顶部附近有恒星,在底部附近有原子核。 处理如此巨大范围的方法是在世界实体和GLOM级别之间进行灵活的映射 [Hinton, 1990]。 这允许非常相同的神经元一次用于恒星,另一次用于原子核,这具有促进在非常不同尺度(如太阳系和原子)的结构之间进行类比的额外优势。神经硬件的递归重用引发了许多关于临时存储和控制流 [Ba et al., 2016] 的有趣问题,这些问题将在此处暂时解决。
合理的embedding层级数约为5。这允许瞳孔和眼白成为场景中最低级别的子子part,场景中的对象是人,part是人脸,子part是眼睛。 如果需要更精细的细节,例如虹膜的扩张,人们可能需要将世界重新映射到他们的硬件上,例如,面部成为场景[6]。
一个有趣的问题是自下而上和自上而下的神经网络是否可以跨级别和跨位置共享。 这不适用于较低级别的语言处理,其中不同级别的实体(如音素或单词)具有非常不同的属性,但视觉更加分形。 跨级别共享的一大优势是,当特定人脸在对象级别时用于特定人脸的向量表示将被迫与其在部件级别时的表示保持一致。 通过简单地将所有向量向上或向下复制几个级别,这将使将视觉世界重新映射到硬件上变得更加容易。 当眼睛处于物体级别时,使用眼睛的精细细节提取高度知情的眼睛向量表示之后,然后可以使用相同的向量来表示处于子part级别时的眼睛[17]。
位置可以像像素一样细粒度,或者它们可以对应于更大的图像块 [Dosovitskiy 等人,2020]。 在解释论文的基本思想时,为了避免额外的复杂性,我将假设所有级别的位置网格都保持不变,但这可能不是最佳选择。 粒度可能会在不同的embedding级别发生变化。 如果部分-整体层次结构中的较高级别使用更大的步幅,则自上而下的神经网络将需要为落在一个较高级别位置内的多个较低级别位置输出多个不同的预测。 类似地,自下而上的神经网络需要查看在上一层组合的所有低层位置。
对大空间上下文敏感同时还能看到细节的一种方便方法是拥有多个不同空间分辨率的图像,所有这些图像都具有相同数量的像素。 最粗糙的图像传达了大的空间上下文但缺乏细节,而嵌套图像传达了精细的细节,但仅适用于小区域。 如果以这种方式将视觉输入结构化为多个图像,让外围位置覆盖更大的区域是有意义的,但本文将忽略该问题,因为它使一切变得更加复杂。
即使不同级别的粒度保持不变,自下而上的神经网络也可以查看附近位置的embedding向量。 这是一个不太纯的 GLOM 版本,它允许位置之间的交互比平均化更复杂。 纯粹自下而上的路径类似于卷积神经网络,但对下一层的预测是由多层神经网络做出的,该神经网络实现了比矩阵乘法和标量非线性复杂得多的函数。允许自底向上网络查看其他位置的缺点是,在part级别具有相同表征的两个位置可能具有不同的空间上下文。 然后我们将失去纯 GLOM 版本的一个非常好的属性:在part级别具有相同表示的位置在对象级别做出完全相同的自下而上的预测。
通过查看其他位置,自下而上的网络可以在预测下一个级别的分布之前减少不确定性,这似乎是一件好事。 但是,当注意力加权平滑将来自一个位置的不确定的自下而上预测与来自附近位置的不确定的自下而上预测相结合时,在进行预测后应该有可能获得类似的不确定性降低。 当然,这假设自下而上的网络可以表示其预测中的不确定性,并且不同位置的不确定性可以通过注意力加权平滑正确组合。 这个问题在第 9 节中得到解决。
位置 x 处 L 级嵌入更新的贡献者之一是上一时间步长附近位置 L 级embedding的注意力加权平均值。 GLOM 假设了最简单的注意力加权形式,其中位置 x 赋予位置 y 的嵌入的权重 w x y w_{xy} wxy 由下式给出
w x y = e β L x . L y ∑ z e β L x . L z w_{xy} = \frac{e^\beta L_x.L_y}{\sum_z e^\beta L_x.L_z} wxy=∑zeβLx.LzeβLx.Ly
其中:是两个嵌入向量的标量积,z 索引位置 x 在 L 级关注的所有位置,而 β \beta β 是一个“逆温度”参数,它决定了注意力的锐度。 β \beta β 可能会随着 GLOM 对图像的稳定解释而增加。 注意力在 GLOM 中的工作方式已经在名为“ACNe”的系统中成功使用 [Sun et al., 2020a]。
使用马尔可夫随机场进行图像分割的开创性工作 [Geman,1984] 使用像素 x 和像素 y 之间的边界来防止 x 关注 y。 边界不仅仅是 x 和 y 之间的大强度差异,因为它的存在取决于其他位置的强度。 类似地,早期学习图像空间相干特性的工作使用边界的存在来选择使用哪个专家插值器 [Becker and Hinton, 1993]。 就像海滨一样,边界也有自己丰富的生命,需要做更多的工作才能将它们整合到 GLOM 中,尤其是它的注意力机制中。
在大多数神经网络中,视觉输入到达底层。 在 GLOM 中,原始视觉输入的一个补丁可以通过矢量化图像补丁中的强度来定义一个位置的底层embedding,但首先应用一个可以看到更大图片区域的卷积神经网络可能更明智。 然后,这个卷积网络的输出将是每个位置主要的、最低级别的embedding。
卷积网络是解决以下推理问题的开环方式:该位置的最低级别embedding将能够使用所有位置共享的学习神经场重建像素强度。 一旦初始化了最低级别的embedding,就可以通过神经场反向传播重建误差 [Williams et al., 1995] 在闭环中对其进行重新调整。
无需将直接视觉输入连接到主要embedding层。 在较低分辨率图像上运行的较粗尺度卷积网络可以提供有关更高级别embedding的有用提示。 例如,一个苍白的垂直椭圆和一个稍多于一半的较暗的水平带表明一种人脸 [Viola ,Jones,2004],因此在粗像素上操作的卷积网络可以提供有用的信息来直接初始化更高级别的embedding[18]。
考虑一个物体,它的各个部分要么完全是淡绿色,要么完全是紫红色。一部分的颜色很简单,但是整个对象是什么颜色? GLOM 的动机之一是认为整个对象具有一种复合颜色,可以称为“淡绿色或淡紫色”,并且在对象级别,属于该对象的每个位置都具有完全相同的复合颜色。该物体全身呈淡绿色和紫红色。在决定关注对象级别的哪些其他位置时,将优先考虑具有相似复合颜色的位置。
类似的想法适用于纹理。各个纹理元素有自己的形状、姿势和空间关系,但是具有纹理表面的对象在对象级别的任何地方都具有完全相同的纹理。 GLOM 将这个想法扩展到形状。一个对象可能具有彼此非常不同的部分,但在对象级别,它在它占据的所有位置都具有完全相同的复合形状。
EM 胶囊模型 [Hinton et al., 2018] 试图通过寻找整体姿势的相似向量投票簇来激活代表整体(例如面部)的胶囊。 这些向量投票来自已经识别的部分(例如鼻子或嘴巴),尽管这些投票的权重可以通过迭代路由过程进行修改,但向量投票本身保持固定。 如果其中一个部件的姿态不确定,这将是一个很大的问题。 例如,代表眼睛的圆圈没有特定的方向,它在人脸中的位置取决于它是左眼还是右眼。 然而,它确实提供了一些关于人脸比例的信息,并在与两眼之间的未知线正交的方向上对人脸的位置进行了单峰预测。
在 GLOM 中,L-1 层位置的embedding向量不会为 L-1 层的embedding投出不可变的向量投票。相反,它为该嵌入提供了自下而上的向量贡献,并与来自 L-1 层的向量贡献相结合。 L+1 级和来自其他位置的 L 级embedding的注意力加权贡献,以确定更新的 L 级embedding向量。 自下而上的贡献可能开始变得非常模糊,并且随着自上而下和横向上下文信息逐渐调整位置的 L-1 级嵌入,它会随着时间步长变得更加清晰。 一个层次上相似embedding向量的孤岛可以看作是集群,但这些集群在不可变数据中是没有发现的。 它们是由支持相似性孤岛的层内过程与来自相邻层的位置embedding的动态变化建议之间的相互作用形成的。
乍一看,将对象级embedding向量的副本提供给属于对象的每个位置似乎非常低效。 源于具有内存的编程计算机的令人信服的直觉表明,为对象分配一个数据结构的单个副本会好得多。 这些直觉可能会误导没有 内存的神经网络,即使内存可用,也有两个很好的理由可以在岛上复制embedding向量。
每一层的岛屿(译者:island,这玩意概念多次出现,如何理解?)生长过程最终可能会形成几个接近相同向量的岛屿,但对这些岛屿的搜索需要能够考虑将不同的位置聚集成岛屿,并且还需要允许在一个岛屿内的位置之间进行协商关于在每个级别上解决什么相同的向量。这些协商是非常重要的,因为每个位置还试图满足来自其上层和下层的embedding向量的层间约束,并且这些embedding也在每个时间步被细化。在搜索过程中,每个位置在每个级别都有自己版本的embedding向量是非常有帮助的。聚类中的不确定性可以通过使某个位置的embedding向量成为它可能决定加入的不同聚类的向量的混合来表示。这种混合可以随着时间的推移而细化,而且它存在于高维连续空间中的事实应该使优化更容易。
直观地说,两个相当不同的embedding向量的混合与任何一个向量都不相似。 这在低维向量空间中是正确的,但在处理高维空间时,从低维空间得出的直觉是不可信的。 与随机向量相比,两个高维向量的平均值更接近这些向量中的每一个。 这可以通过考虑向量的分量与其平均值分量与其他一些随机向量的分量之间的相关性来理解。 如果向量是高维的,这种相关性将非常显着[译者:仍然存疑]。
近身份岛(译者: islands of near identity,不知道怎么翻译)的另一个优点是它允许一个级别内的远程交互是稀疏的。 如果在更高级别有更多稀疏性,则交互范围可以更长,而不会增加计算量。 对于属于较远岛屿的位置,该岛屿的所有对象级信息都包含在其每个位置中,因此只需要对这些位置中的一个位置进行采样,该远处岛屿就可以与其他较近的岛屿竞争一个 位置的注意。 当然,这意味着远岛对注意力 softmax 的贡献比近岛少,但是注意力 softmax 中使用的指数意味着来自高度相关的远岛的一个 logit 可以胜过来自更近但不太相关的多个 logit 岛。
选择允许哪些其他位置竞争位置 x 的注意力的一种简单方法是从以 x 为中心的高斯样本中进行采样,无需替换。 更高级别的嵌入可以从更大的高斯样本中采样相同数量的其他位置。 采样只能进行一次,因此它是网络架构的一部分。 或者,通过在每个时间步独立采样可以大大减少采样中的缺陷。
让我们假设 GLOM 被训练在其输出端重建输入图像的未损坏版本,输入图像中一些区域已被移除。该目标应确保在前向传递期间保留有关输入的信息,并且如果区域足够大,还应确保识别熟悉的对象将有助于填补缺失的区域。我们需要添加一个正则化器,经验表明,一个简单地鼓励附近位置embedding之间相似性的正则化器可能会导致表征的崩溃:所有embedding向量可能变得非常小,因此它们都非常相似,然后重建将使用非常大的权重来处理非常小的标量。为了防止崩溃,对比学习 [Becker and Hinton, 1992, Paccanaro and Hinton, 2001, van den Oord et al., 2018] 使用反例并尝试与应该接受的表征更接近,同时保持与不接受的表征之间的分离.
对比学习已非常成功地应用于学习图像农作物的表示 [Chen et al., 2020a, Bachman et al., 2019, He et al., 2020, Chen et al., 2020b, Tejankar et al., 2020] 它学习使同一图像的两种不同作物的表示一致,而来自不同图像的两种农作物的表示不一致。但是,如果我们的目标是识别物体,这不是明智之举。如果农作物1 包含对象 A 和 B,而来自同一图像的农作物 2 包含对象 B 和 C,则要求两种农作物的表示在对象级别相同是没有意义的。然而,它在场景级别确实有意义。对于包含一个突出对象的场景,可能可以使用旨在识别场景的表征来识别对象,但是一旦我们区分了不同级别的embedding,就很明显使用对比损失函数会更好地鼓励仅当它们属于 L 层的同一实体时,L 层的两个位置的非常相似的表示。如果它们属于L 层不同的实体,则它们的 L 层embedding应该显著不同。
显而易见的解决方案是通过鼓励每个人预测共识意见来规范自下而上和自上而下的神经网络。 这是来自自上而下和自下而上网络的预测的加权几何平均值,即嵌入的先前状态的前一时间步附近位置处的嵌入的注意力加权平均值。 训练层间预测以与共识一致,显然会使前馈推理过程中发现的孤岛更加连贯。 一个重要的问题是,如果不伴随着训练层间预测对于使用不相关空间上下文的共识意见的反例不同的层间预测,这种类型的训练是否一定会导致崩溃。 使用层或批量标准化应该减少崩溃的趋势,但更重要的考虑因素可能是目标的可实现性。
当对比学习中的正例用于尝试为同一图像的不同块提取非常相似的表示时,目标通常无法实现,并且大的残差总是试图使表示崩溃。 然而,如果一个位置的embedding可以自由选择它应该类似于其他位置的哪些embedding,那么通过学习形成相同向量的岛屿并几乎完全关注同一岛屿中的其他位置,几乎可以完美地实现目标 . 这应该会大大降低崩溃的趋势,并且当与深度去噪自编码器目标函数和其他最近的技巧相结合时 [Grill et al., 2020, Chen and He, 2020] 它可能会消除对反例的需要。
当神经网络用于表示形状时,如果它们相对于其内在坐标系而不是相对于基于相机或世界的框架来表示形状的细节,它们通常会更好地工作 [Taylor et al., 2007, Deng et 等,2020]。 使用神经场生成图像的工作表明,有比使用两个标量表示 x 和 y 坐标更好的方法来表示位置 [Sitzmann et al., 2020, Mildenhall et al., 2020]。 在具有各种频率的水平和垂直正弦和余弦波的位置处的 delta 函数的乘积效果很好。 在变换器中使用类似的表示来表示单词片段在句子中的位置。
位置的高度冗余表示的成功表明,坐标变换的非平移自由度也可能存在高度冗余的表示,这在神经网络中比计算机图形学中常用的矩阵或四元数要好得多[22]。让我们假设我们希望part的姿势(即视网膜和part的固有参考系之间的坐标变换)由一个向量表示,该向量是表示该part的embedding向量的一个子部分。一个多层神经网络,其权重捕捉部分和整体之间的视点不变坐标变换,然后可以对part的姿态向量进行操作,以预测整体的姿态向量。如果我们简单地将姿势的 4x4 矩阵表示展平为向量,则很容易手工设计一个多层神经网络,该网络将这个向量作为输入,并产生一个对应于矩阵展平结果的向量作为输出——矩阵乘法,前提是我们知道要乘以哪个矩阵,这取决于part的id。这种对part的id的依赖是在早期的胶囊模型中为每种类型的part分配一个单独的胶囊的原因。不幸的是,展平的 4x4 矩阵的向量空间并不容易表示姿势的某些方面的不确定性和其他方面的确定性。这可能需要更高维的姿势表示。手工设计这种表示可能不如使用随机梯度下降的端到端学习。尽管如此,第 9 节讨论了在神经网络中表示不确定性的一种方法,只是为了证明这不是一个主要问题。
在通用胶囊中,part的id由活动向量表征,而不是通过选择激活哪个胶囊来表征,因此实现适当的部分-整体坐标变换的神经网络需要在part的id向量上调节其权重23. 因此,一个位置的整个part级向量需要作为输入提供给计算部分-整体坐标变换的自下而上的神经网络。这使得计算更加复杂,但它极大地简化了架构的设计。这意味着我们不需要在某一层指定embedding向量的一部分来表示姿势,其余部分来表示该层实体的其他方面。我们需要做的就是确保从下面(或上面)的embedding预测一个级别的embedding的神经网络具有足够的表达能力,将坐标变换应用于表示姿势的嵌入向量的那些分量,并使得此坐标变换取决于表示零件身份的向量的那些分量。由于这个神经网络将通过随机梯度下降来学习,我们甚至不需要将表示姿势的embedding向量的组件与表示该级别实体其他属性的组件分开:可以调整各个组件姿势、id、变形、纹理等的组合。
将身份和姿势的表示纠缠在一起似乎是个坏主意,但是从对角线的自下而上的预测如何表达整体是倾斜的正方形或直立的菱形的观点?为了使用基函数的活动来表达这种分布,我们需要将基函数调整为单位和姿势的组合。使用小矩阵或四元数来表示姿势可以很容易地使用线性运算对视点变化的影响进行建模。乍一看,放弃这些明确的姿势表示似乎可能会损害胶囊跨视点泛化的能力。如果每个胶囊只处理一种类型的物体,这将是正确的,但是通用胶囊将从许多不同的角度看到许多不同类型的物体,并且任何新类型的物体都可以通过熟悉类型的加权平均值很好地近似已经学会了对视点的影响进行建模。此外,该平均值的权重对于所有视点都是相同的。因此,如果一个新物体只从一个角度看,一个通用胶囊很可能能够从完全不同的角度识别它。
关于泛化的相同论点可以应用于 CNN,但有一个微妙的区别:GLOM 被迫正确建模部分和整体之间的坐标变换,以便能够通过整体水平上的简单平均操作方法来利用一个部分和另一个部分之间的空间关系。 正是这些部分-整体空间关系的视点不变性使得可以推广到全新的视点。
很容易想象嵌入向量的各个分量对应于有意义的变量,例如对象相对于相机或对象类别的姿势的六个自由度。 这将使表示更容易理解,但有一个很好的理由使物理上有意义的变量和神经活动之间的关系变得不那么直接:要正确组合多个信息源,必须将每个源的不确定性考虑在内。
假设我们希望以这样一种方式表示 M 维实体,即不同的信息源可以在 M 维空间上贡献概率分布,而不仅仅是点估计。我们可以使用一组 N 》 M 个神经元,每个神经元都在 M 维空间中调整为高斯分布 [Williams and Agakov, 2002]。如果我们取对数,则神经元对应于对数概率中的抛物线凸起。这个凸起在某些方向上可能非常宽,而在其他方向上可能非常窄。它甚至可能是在某些方向上无限宽的水平山脊。我们将神经元的活动视为其抛物线凸起的垂直缩放,并简单地将所有缩放的凸起相加得到一个抛物线凸起,该抛物线凸起表示由 N 个神经元群体表示的非标准化高斯分布的对数。
现在可以贡献概率分布,这些分布将通过简单地对 N 个神经元的活动进行加法贡献而相乘。如果我们想让 N 相对较小,那么可以表示的概率分布就会受到限制,但是,给定 N 个神经元的预算,学习应该能够很好地利用它们来逼近符合以下条件的预测分布数据。例如,如果一个部分可以预测一个整体的水平位置,而无需使该预测取决于整体的姿势或id的其他方面,那么将少数 N 个神经元调整到表示整体在底层 M 维空间中的水平位置的维度上的间隔良好的值。然后,通过对这少数神经元做出适当的贡献,该部分可以沿着这个水平维度贡献一个高斯分布。贡献的相对大小决定了高斯分布的均值,它们的整体尺度决定了高斯分布的方差的倒数。
神经元在可能实体的潜在 M 维空间中具有高斯调谐的假设只是一种简化,以表明神经网络在表示高斯概率分布和适当组合它们方面没有问题。一种更灵活的调整神经元的方法是混合使用高斯分布和均匀分布 [Hinton, 2002]。此分布的对数是一个局部凸起,称为 unibump。当我们距离均匀分布完全支配高斯分布的均值足够远时,unibump 的边会展开并最终变为水平。与具有远离最大值的二次方大梯度的抛物线凸起不同,unibump 在远离最大值的地方具有零梯度,因此它对远离其均值的非归一化分布的形状没有贡献。这允许 unibumps 表示多模态概率分布。一组附近的 unibump 的总和可以代表一种模式,而另一组彼此靠近但远离第一组的 unibump 的总和可以代表另一种模式。使用对应于 unibumps 垂直缩放的神经活动,可以分别控制每个模式的位置和锐度。 假设单个神经元被调整为高斯和均匀分布的混合只是一种简化地证明神经网络可以表示多模态分布。神经元实际学习用于表征潜在空间中的多模态对数概率分布的基函数不需要在该空间中是局部的。
表征不确定性的需求阻止了最简单的表示,其中单个神经元中的活动表示 M 维实体的一个维度,但它仍然允许神经元在 M 维空间中具有调整曲线。试图理解表征的人是否有可能联合推断潜在空间和该空间中神经元的调谐曲线,这是一个非常有趣的开放性问题。但是即使很难弄清楚单个神经元在做什么,找到几乎相同向量的孤岛仍然应该是微不足道的,所以应该很容易看到 GLOM 如何解析图像或类似的模型如何应用于语言解析一个句子。在考虑如何表示part的姿势或身份的不确定性时,意识到每个位置都假设它在层次结构的每个级别上最多只被一个part占用是非常重要的。这意味着embedding向量中的所有神经活动都指向同一部分:不存在绑定问题,因为绑定是通过位置完成的。因此,一个位置可以使用两个不同的神经元,它们在底层 M 维空间中的调谐曲线有很多重叠,而不会引起任何混淆。如果我们不首先将神经元的不同子集分配到不同的位置,那么表示不确定性所需的 M 维底层空间中的宽调谐曲线将导致不同对象属性之间的混淆。这就是为什么粗编码(使用单个广泛调谐的神经元群体同时对多个不同实体进行建模)[Hinton, 1981a] 不能有效地对不确定性进行建模的原因。
每个级别的embedding使用来自相邻级别以及同一级别其他位置的前一时间步长的信息进行更新。这些来源远非独立的,特别是当图像是静态的,因此视觉输入在多个时间步长是相同的。较高级别的嵌入显然取决于较早的较低级别的嵌入。此外,对注意力加权局部平均值有贡献的同级嵌入将受到注意力加权平均值试图更新的嵌入的早期状态的影响。为了避免变得过于自信,最好将不同的信息源视为从视觉输入计算嵌入向量的替代路径。这证明对各个来源预测的分布[25] 取加权几何平均值是合理的,而不是这些分布的简单乘积,如果它们是独立的,则是合适的。为了解释没有时间上下文的静态图像,用于此加权几何平均值的权重需要在新注视后发生的迭代期间改变。最初,自下而上的来源应该是最可靠的,但后来,自上而下和横向的来源将得到改善。深度信念网络的实验 [Hinton, 2006] 表明相对于自下而上逐渐增加自上而下的权重会导致后期更合理的重建,这对 GLOM 被训练为端到端深度去噪自编码器将是很重要的。
本节将 GLOM 与影响其设计的一些神经网络模型进行比较。
与胶囊模型[26]相比,GLOM 的主要优势在于它避免了将神经元预先分配给每个级别的一组离散可能part的需要。part的id成为特征活动连续空间中的向量。这允许在类似part(如手臂和腿)之间共享更多的知识,并且在属于特定类型对象的part的数量和类型方面具有更大的灵活性。 GLOM 的第二个优点是它不需要动态路由。不是将信息从part胶囊路由到包含有关整体相关类型知识的特定胶囊,而是part占据的每个位置构建其自己的整体向量表示。一个位置的part只属于一个整体的约束是该位置的替代整体是同一组神经元上的替代活动向量这一事实的必然结果。使用活动向量的混合仍然可以捕获关于几个整体中哪一个是一个part的正确父代的不确定性。GLOM 的第三个优点是形成岛的集群形成程序比胶囊模型中使用的集群程序要好得多。为了使像 EM 这样的方法在集群数量未知时很好地工作,引入拆分和合并操作是有帮助的 [Ueda et al., 2000] 但这些操作在岛屿形成期间自动发生。通过从每个位置一个岛开始,然后通过使embedding向量一致来减少明显不同的岛的数量来解决分层贝叶斯关于在embedding级别找到正确数量的集群的问题。这种减少发生在连续空间中,不需要离散的集群数量变化。
与大多数胶囊模型相比,GLOM 的主要缺点是,关于特定类型对象形状的知识并未局限于一小组神经元(可能在相当大的区域中复制)。相反,必须在每个位置复制自下而上和自上而下的神经网络(每对相邻级别可能不同)。对于计算机实现跨位置的复制是一个很大的优势,因为它允许每次从内存中检索权重时多次使用它,但对于生物神经网络,突触似乎非常浪费。与基因类比的要点是生物学可以承受浪费,因此这种缺点可能并不像看起来那么严重。然而,GLOM 的生物学版本存在一个更严重的问题:无处不在的通用胶囊需要在每个不同的位置分别学习相同的知识,这在统计上非常低效。幸运的是,第 12 节展示了位置如何在不共享任何权重的情况下共享自下而上和自上而下模型所学到的知识。
通过将神经元分配到位置而不是对象或part的类型,GLOM 消除了胶囊模型的一个主要弱点,但它保留了这些模型的大部分优点:
• 正确处理视点的影响:自下而上和自上而下的神经网络的权重捕获部分和整体之间视点不变的空间关系,神经活动捕获有关对象或part姿态的视点等变信息。
• 符合过滤:对象通过使用其part的高维预测之间的一致性来识别。 在 GLOM 中,使用一致性的想法更进一步,因为它也用于将对象和部分表示为身份岛。
• 没有神经元的动态分配:可以表示部分-整体层次结构,而无需将神经元动态分配给解析树中的节点。
可以通过将图 1 中的垂直时间片视为图 4 中的层来重新排列图 1 中所示的 GLOM 架构。 GLOM 的这种重新排列等效于标准版本的转换器 [Vaswani et al., 2017] 但具有以下变化:
• 每层的权重都相同,因为 GLOM 是一个循环网络,我们已将时间片转换为层。
• 通过在级别上使用embedding向量作为query、key和value,极大地简化了注意力机制。通常由注意力实现的不同位置之间的复杂交互因此被简化为简单的、注意力加权的平滑操作。
• 用于在大多数transformer中提供更多表达能力的多个头被重新用于实现部分-整体层次结构的多个级别,并且一个位置的头之间的交互是高度结构化的,因此一个级别只与相邻的水平。
• 自下而上和自上而下的神经网络计算相邻层级之间的相互作用,在部件和整体位置的分布式表示之间执行坐标变换,这些坐标变换取决于部分和整体的类型的分布式表示。
消除query,key,value,embedding本身之间的区别的理由如下:考虑尝试通过transformer中的潜在鼻子来证实潜在的嘴巴。嘴巴需要问“有没有人与我有正确的空间关系,可以成为鼻子”。如果是这样,请告诉我更像嘴巴。这似乎需要嘴巴发出一个鼻子查询(包括相对于嘴巴的适当姿势)来匹配鼻子的关key。然后鼻子需要发回一个类似嘴巴的value(包括相对于鼻子的适当姿势)。但是嘴巴也可以被眼睛证实,所以它需要发出一个不同的查询来匹配眼睛的key。这可以通过为嘴巴寻找鼻子和嘴巴寻找眼睛使用单独的头部来处理(如在分类语法中),但这似乎很笨拙。一个更优雅的解决方案(继承自胶囊模型)是使用霍夫变换(Hough transform)的一种形式。潜在的嘴预测它可能属于的面部的向量。潜在的鼻子和眼睛也是如此。您现在需要的只是在人脸层面对预测达成一致,因此 query=key=value=embedding。然后人脸层面可以为其部分提供自上而下的支持,而不是来自一个part发送到另一个part的值向量的支持使用坐标变换特定的两个部分的身份。
图 4:这是一种不同的可视化图 1 中所示架构的方式,这使得该架构与transformer的关系更加明显。 图 1 中代表时间的水平维度变成了该图中代表层的垂直维度。 在每个位置,每个层现在都有部分-整体层次结构中所有级别的嵌入。 这对应于在图 1 中的单个时间片内垂直压缩级别的描述。通过此架构的单个前向传递是解释静态图像所需的全部内容。 所有特定级别的自下而上和自上而下的神经网络都在此处显示为单个神经网络。 下图 5 显示了这种查看 GLOM 架构的替代方式的自下而上和自上而下的神经网络。
图 5:单个位置(即单列的一部分)的两个相邻 GLOM 层的图片。 在前向传递期间,L 层的embedding向量通过多层自下而上的神经网络从前一层的 L-1 层embedding向量接收输入。 它还通过多层自上而下的神经网络从前一层embedding的 L+1 层接收输入。 上一层对 L+1 层的依赖在前向传递期间实现了自上而下的效果。 层 t + 1 中的 L 层embedding还取决于层 t 中的 L 层嵌入以及层 t 中其他附近位置的 L 层embedding的注意力加权总和。这些级别内的交互并未显示。
Capsules 最初是由 CNN 的三个感知缺陷产生的:
第一个缺陷只是显而易见的。这取决于对 CNN 如何表示part位置的常见误解。网格点处的通道活动向量可以具有比网格点之间的步幅更准确的part位置的速率编码表示。因此,当通过池化在下一级别增加步幅时,并不意味着零件的位置编码不太准确。更大的步幅不会产生更具平移不变性的表示。网格点用于分配神经硬件而不是表示位置。它们的间距受到以下事实的限制:网格点处的神经硬件假定它永远不会表示超过一个它所表示的任何内容,而不是受到需要表示的位置的准确性的限制。尝试处理第二个感知缺陷导致一些有趣的模型。变分自动编码器 [Hinton et al., 2011] 通过坚持重建图像应该是原始图像的变换版本并将此变换指定为与任何矩阵相乘的矩阵,迫使编码器在每个胶囊中提取姿势的显式表示元素由编码器提取。类似地,当强制使用矩阵来表示部分与整体的关系时,EM 胶囊模型可以更好地外推到新的视点。
不幸的是,感知必须处理计算机图形学中不存在的不确定性,它需要能够在其姿势预测中表示相关的不确定性,以便可以正确组合多个信息源。这排除了姿势的简单矩阵表示。一旦我们接受实体可能姿势的分布将由分配给对数概率空间中的基函数的尺度表示,CNN 很有可能实际上学会了做这样的事情。这可能允许他们近似霍夫变换,尽管这在不采用活动向量的标量乘积的情况下很难做到。第三个缺陷可以通过转向使用活动向量的标量乘积来调节注意力的类似转换器的架构来纠正。如果您喜欢 CNN,可以将 GLOM 视为一种特殊类型的 CNN,它在以下方面与标准 CNN 不同:
• 它仅使用 1x1 卷积(前端除外)。
• 位置之间的交互是通过无参数平均实现的,该平均实现了一个重合过滤器,允许它使用霍夫变换来激活单元,而不仅仅是使用匹配的过滤器。
• 不是使用单个前馈通过表示级别,而是迭代以允许由神经场实现的自上而下的影响。
• 它包括对比自监督学习,并作为识别的一部分而不是作为单独的任务执行分层分割。没有更多的盒子。
Good Old-Fashioned AI (GOFAI) 中的一个重要思想是属性继承。没有必要明确表示大象为幼崽哺乳,因为大象是一种哺乳动物,除非另有说明,大象从其更一般的类型继承了此属性。在神经网络中实现属性继承的一个简单方法是让不同的实体对应同一组神经元上不同的活动向量。 想象一下,表示一个概念的向量的分量是从非常一般到非常具体的排序。哺乳动物对于更一般的成分都有相似的值,而在不太一般的成分上则不同。印度和非洲大象仅在相当特定的组成部分上有所不同。当神经网络学会使概念的向量对其他向量产生因果影响时,所有哺乳动物都应该相同但对所有脊椎动物不相同的效果自然会通过对所有动物都活跃的神经元的输出权重来实现哺乳动物,但不适用于所有脊椎动物。这种实现属性继承的方式使得添加异常变得容易。鸟类共有的向量分量将学习捕获鸟类飞行知识的权重,而区分企鹅与其他鸟类的更具体的分量将学习更强的权重,从而推翻一般情况 [Hinton, 1981b]。
这种实现属性继承的方式具有额外的优势,即类型不需要形成树。狗从犬科动物(如狼)继承了许多特性,但它们也从宠物(如猫)继承了许多特性。不能保证从这些更一般的、部分重叠的类继承的属性是一致的,但是,与逻辑不同,神经网络在处理相互矛盾的证据时没有困难。乍一看,使用向量表征不同part的想法在继承(ISA)层次结构中捕获不同级别的概念与使用不同part来捕获部分-整体层次结构中的不同级别的想法相冲突。这似乎有问题,因为钩状喙是鸟类的一部分,但它也定义了一种鸟类。这两种想法可以通过首先将一个位置的embedding向量划分为代表部分-整体层次结构中不同级别的部分,然后将每个部分划分为代表类型层次结构中不同级别的子部分来调和。
对于每个位置,前一时间步长 L-1 和 L+1 层的embedding向量为代表 L 层当前embedding向量的神经元提供输入。 这就像条件马尔可夫随机场中的条件输入:它影响岛形成过程的当前迭代步骤,该过程试图使 L 级位置的embedding与 L 级其他位置的embedding一致。值自旋进入一种状态,在这种状态下,附近的自旋趋于一致,以便最小化有利于相邻自旋之间一致的能量函数。这里提出的模型类似于 2-D Ising 模型(译者:伊辛模型,最初作为一种描述晶体的磁性变化的物理模型,现在已经应用到应用于股票市场、种族隔离、政治选择、神经网络系统建模等不同的问题,参考文章:https://zhuanlan.zhihu.com/p/26008470),因为它使用图像位置的 2-D 网格,但它以以下方式概括了模型:
主成分分析等方法通过限制表示中可用维度的数量来消除数据中的冗余。 相比之下,具有大量隐藏单元的受限玻尔兹曼机通过使隐藏单元的几乎所有可能的指数级二元配置都具有如此高的能量以致于它们实际上是不可用的,从而挤出冗余。 这是消除冗余的一种更灵活的方法[Shi and Zhu, 2007]。 它可以对具有不同内在维度的多个胖流形进行建模,甚至在一个胖流形内,它也可以对流形不同部分的有效维度的变化进行建模。 岛形成目标属于第二类方法。 在每个级别,如果数据需要,它允许大量的小岛,但如果可能,则努力使用少量的大岛。
本文侧重于使用 GLOM 架构来处理单一固定的静态图像,但该架构的动机是需要处理视频,并且从视频中学习通常比从静态图像中学习容易得多 [Sabour et al., 2021 ],所以我将简要讨论最简单的时间扩展,即对单一固定的时变图像。
为避免混淆,区分三种不同类型的时间可能会有所帮助:
• 事件时间:这是事件发生的实际时间。
• 表示时间:这是事件的特定表示在神经网络中发生的实际时间。如果自下而上的神经网络使用预测模型,事件的表示可以与事件本身同步,或者它们甚至可以在事件之前,这将使接球变得容易得多。
• 参考时间:这是内部表示所指的实际时间。例如,在使用内存时,构造表征的引用时间通常早于表征时间。如果记忆不真实,参考时间也可能与事件时间相差很大。
对于代表静态图像的一系列帧,可以使用多个时间步长在每个级别的一组适当的岛屿上进行设置。但是在动态图像中,也必须使用完全相同的时间步长来处理每一层位置的占用者可能随时间变化的事实。使用相同向量的岛来表示对象的一个优点是运动在与对象大小相比较小的连续帧之间仅需要对对象级别的一小部分位置子集进行较大更改。保留在对象内的所有位置只需要轻微改变以表示对象相对于相机的姿势的轻微变化。可以使用注视点的范围来允许所有级别的嵌入在跟踪动态图像变化的缓慢变化的协议岛上定居。最低级别的嵌入可能会发生相当快的变化,但它们应该会从更高级别的更稳定的嵌入中获得良好的自上而下的预测。一旦嵌入形成了合理的孤岛,那么使用相同的时间步长来改进每一帧的解释并保持嵌入锁定到动态图像上就没有问题了。如果变化很快,则有没有时间迭代地确定一组好的嵌入向量来解释特定的帧。这意味着如果图像快速变化,GLOM 架构将无法正确解释复杂的形状。尝试将一个形状不规则的土豆扔到空中,使其以每秒一或两个循环的速度旋转。即使你顺利追踪马铃薯,你也看不到它是什么形状。
尽管 GLOM 是受生物学启发的,但它有几个特征似乎把它当作生物学模型非常地不可信。 此处提出其中三点:
• 不同列中自下而上或自上而下模型之间的权重共享。
• 需要在不中断视频管道的情况下处理反例对以进行对比学习。
• 使用反向传播来学习自顶向下和自底向上模型的隐藏层。
DNA 在每个细胞中的复制都没有问题:这正是 DNA 所擅长的。但是生物学家经常反对使用权重共享的模型,声称没有明显的方法来复制权重 [Lillicrap et al., 2020]。然而,GLOM 提出了一种通过使用上下文监督来解决这个问题的相当简单的方法。在真实的大脑中,我们想要的是一种在某个位置训练自下而上和自上而下的网络的有效方法,以便它们计算与其他位置的相对应网络相同的函数。只要相应的网络在功能上相同,就不需要权重相同。我们可以使用知识蒸馏来实现这一点 [Bucilua et al., 2006, Hinton et al., 2014]。对于每个级别,每个位置的两个学生是自下而上和自上而下的神经网络。老师是共识意见,它是两个学生的意见、embedding的先前状态和其他位置的注意力加权embedding的加权几何平均值[29]。
将学生的预测回归到共识,允许通过注意力加权平均将其他位置的神经网络中的知识转移给学生。它不像与其他神经网络共享权重那样有效,但效果很好 [Hinton et al., 2014] 从长远来看,如果数据分布是平移不变的,所有网络都会收敛到非常相似的函数.然而,从长远来看,我们都死了[30]。因此,当局部模型完全不同时,考虑在收敛之前很久会发生什么是很有趣的。假设形成鼻子的所有位置在part级别具有相同的embedding向量。如果他们都有完全相同的自下而上模型,他们都会在对象级别对人脸做出完全相同的预测。但是如果不同位置的自下而上模型有些不同,我们会在物体层面得到很强的集成效果:同一物体在不同位置的所有同时自下而上预测的平均值会比个体的预测好得多。
通过蒸馏而不是通过复制权重在位置之间共享知识的优势之一是不同位置的自下而上模型的输入不需要具有相同的结构。这使得视网膜的感受野在远离中央凹的地方逐渐变大变得容易,这很难在卷积网络中使用权重共享来处理。许多其他方面,例如远离中央凹的色差增加也很容易处理。位于不同位置的两个相应网络应该学习计算光学阵列的相同函数,即使该阵列在呈现给两个网络之前通过成像过程进行了不同的预处理。共同蒸馏还意味着自上而下的模型不需要接收它们的位置作为输入,因为它对于任何给定的模型总是相同的。
最后,使用蒸馏在特定位置的神经网络之间共享知识,解决了视觉系统中突触数量(约 1 0 13 10^{13} 1013)与我们在前十年确定的数量(约 1 0 9 10^9 109)之间存在差异的难题。担心过度拟合的保守统计学家更希望这些数字是相反的 [31]。如果我们在不同位置使用 1 0 4 10^4 104 列,那么在一个位置的自下而上和自上而下模型之间只有大约 1 0 9 10^9 109 个突触。相反,用于学习在 1 0 4 10^4 104 个位置的集合中共享的知识的训练样本的数量约为 1 0 13 10^{13} 1013个,尽管其中许多样本高度相关。
训练样本多于参数的神经网络不像当前使用的一些高度过度参数化的网络那么神奇,但是当呈现位于训练分布之外的数据时,它们可能会以更可预测的方式进行泛化,因为它们计算的函数已经高度受数据约束。
如果需要反例,GLOM 作为生物模型可能显得不那么可信,因为查找和处理不应该相似的图像对增加了复杂性。然而,在 1983 年和 2020 年与 Terry Sejnowski 的对话中出现了一种有趣的可能性。当使用对比学习来获得相邻视频帧相似的表示时,最有效的反例是同一视频中附近但不直接相邻。我们可以避免影响 GLOM 的实时性能,方法是在晚上将其离线以进行防止表示崩溃的负学习。如果最高级别的embedding能够在最高级别生成序列,则可以使用自上而下的网络在每列的每个级别生成embedding序列。这个过程不需要列之间的任何关注,因为它不需要执行感知推理,所以它可能能够以比正常速度快得多的速度生成似是而非的序列。然后我们简单地使用与清醒时相同长度的实时窗口对自下而上的模型进行负学习。
有证据表明高速、自上而下的序列生成发生在睡眠的纺锤体阶段 [Lee and Wilson, 2002, N´adasdy et al., 1999]。混淆并不是什么新鲜事 [Crick and Mitchison, 1983]。 Hinton 和 Sejnowski [Hinton 和 Sejnowski,1986] 甚至建议睡眠可用于跟踪玻尔兹曼机器学习负阶段中归一化项的导数。但是这种思想的轮回与玻尔兹曼机相比有两大优势。首先,对比无监督学习的规模比玻尔兹曼机器学习好得多,其次,它对正负阶段之间的时间分离的容忍度要高得多。
对 MNIST 数字使用对比学习的初步实验表明,如果大量正更新后跟随大量负更新,学习仍然有效。在仅正学习期间,表征崩溃相当缓慢,并且表示可以缩小一个显着的因素,而不会对性能产生太大影响。因此,也许一些应该很好地分开的embedding对在白天靠得太近,然后在晚上又被推开。这将解释为什么几天完全睡眠剥夺会导致如此严重的精神错乱32。 MNIST 的实验还表明,经过大量的正学习后,性能下降,但通过少量负学习迅速恢复。为了避免非常长时间的负学习,建议从负学习开始睡眠阶段将表征分开,然后使用从顶层或者从靠近感官输入的循环网络生成的输入序列与正阶段交替。这与 Crick-Mitchison 的理论相冲突,即 REM 睡眠是为了忘却学习,但如果情景记忆检索依赖于顶层,它仍然与我们无法记住几乎所有梦境相容,而顶层根本不在 REM 睡眠期间学习,因为这些情节根本没有发生。
训练 GLOM 的直接方法是要求它填充图像的缺失区域,并使用时间反向传播在整个时间稳定过程中反向传播重建的误差。 然后可以将每个级别的对比表示学习视为额外的正则化器。 不幸的是,很难看出大脑如何通过多个时间步骤进行反向传播。 然而,如果每个级别的共识意见都可以为预测该级别嵌入向量的自下而上和自上而下的模型提供足够的教学信号,那么在大脑中实现就变得更加可行。
如果我们可以确保表征随着时间的推移而改进,那么神经活动的时间导数就可以代表误差导数,并且局部学习过程将是尖峰时间依赖(STDP)的可塑性,其中突触强度的增加量与突触前活动和突触后活动增加率的乘积成正比。 假设尖峰是由潜在速率变量引起的,我们可以通过对突触后尖峰序列应用导数过滤器来获得该潜在速率变量变化率的噪声但无偏估计,这正是 STDP 所做的。
最近的一篇综述论文 [Lillicrap et al., 2020] 详细讨论了如何将时间导数用作误差导数,以便在前馈网络中近似反向传播[35]。 该综述论文假设了一个单独的阶段,在该阶段中,允许活动扰动形式的衍生物从较高层级流回较低层级。 对于视频管道,此过程似乎不合理。 相比之下,GLOM 的稳定过程将学习所需的导数传播为所有级别活动的时间导数,并且此传播所需的时间步长可以与视频帧所使用的时间步长完全相同。
对于动态图像,表示不断变得更好似乎是自相矛盾的,但这并不比冲浪者不断下坡而从未改变其海拔高度更自相矛盾。 冲浪者下坡的表面不是同一个表面。 同样,表征不断改进的现实时间片也不是同一时间片。大脑在现实中冲浪。
不幸的是,这并没有解释如何获得学习自底向上和自顶向下神经网络的隐藏层所需的导数。也没有解释每个级别的误差信号的导数如何通过自底向上反向传播或自上而下的网络对相邻级别的导数做出适当的贡献。 这些棘手的问题将在另一篇正在准备的论文中得到解决。
这篇论文最初是作为一个实现的设计文档,但很快就被证明设计决策的需要所劫持。我使用想象中的 GLOM 架构作为传达一组关于如何组织神经网络视觉系统的相互关联的想法的工具。缺乏有效的实施方案使得更容易专注于清晰地表达想法,避免了将想法的质量与实施的质量混淆的问题,但它也造成了严重的可信度问题。科学和哲学的区别在于,实验可以证明极端可信的想法是错误的,极端不可信的想法,比如通过端到端梯度下降学习整个复杂系统,是正确的。我目前正在合作一个项目,以测试 GLOM 架构将形状识别推广到新高度的能力,我希望其他团队也能测试这里提出的想法。这篇论文已经讲得够久了,所以我将在结束时做一些简短的哲学评论。
解析树中的节点由相似向量岛表示的想法统一了两种截然不同的理解感知方法。 第一种方法是古典格式塔心理学,它试图通过诉诸领域来模拟感知,并且痴迷于整体不同于部分之和的想法[36]。 在 GLOM 中,感知实际上是一个字段(field),表示整体的共享embedding向量与表示部分的共享embedding向量非常不同。 第二种方法是经典的人工智能,它通过结构描述(译者:可以理解为手工的特征工程设计吧)来模拟感知。 GLOM 确实有结构描述,解析树中的每个节点都有自己的“地址”,但地址存在于可能embedding的连续空间中,而不是硬件地址的离散空间中。
一些深度学习的批评者认为,神经网络无法处理组合层次结构,需要有一个“神经符号”接口,允许神经网络前端和后端将更高级的推理交给更符号化的系统[37]。 我相信我们的主要推理模式是使用类比,这些类比是通过学习的高维向量之间的相似性而成为可能的,而神经符号接口的一个很好的类比是一家汽车制造商,他花了五十年的时间来阐述电动机的缺陷,但最终愿意用它们将汽油注入发动机。
BERT [Devlin et al., 2018] 的惊人成功,结合早期的工作表明,如果任务需要,神经网络可以输出解析树 [Vinyals et al., 2014],并且清楚地表明神经网络可以解析句子。 通过构建 BERT 中多头之间的交互,使它们对应于表示级别,并通过添加一个对比学习的正则化器来鼓励每个级别的多个单词片段的局部一致,可能表明 GLOMBERT 实际上能解析句子。
许多人帮助我达成了本文中描述的一系列想法。Terry Sejnowski、Ilya Sutskever、Andrea Tagliasacchi、Jay McClelland、Chris Williams、Rich Zemel、Sue Becker、Ruslan Salakhutdinov、Nitish Srivastava、Tijmen Tieleman、Taco Cohen、 Vincent Sitzmann、Adam Kosoriek、Sara Sabour、Simon Kornblith、Ting Chen、Boyang Deng 和 Lala Li 特别有帮助。 帮助我改进想法表达的人包括 David Fleet、David Ha、Michael Isard、Keith Oatley、Simon Kornblith、Lawrence Saul、Tim Shallice、Jon Shlens、Andrea Tagliasacchi、Ashish Vaswani 和其他几个人。 我要特别感谢 Jeff Dean 和 David Fleet 在 Google 创造了使这项研究成为可能的环境。 可能有许多高度相关的论文我应该阅读但没有阅读,我期待着了解它们。
论文的参考文献请看论文原文的references部分。
【1】How to represent part-whole hierarchies in a neural network. Hinton, 2021-02.