An Introduction to Hyperdimensional Computing for Robotics

机器人学的超维度计算导论

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

摘要

超维计算结合了非常高维的向量空间(例如10,000维)和一组精心设计的运算符,以执行具有大数值向量的符号计算。目标是利用它们的表示能力和对噪声的鲁棒性,来处理广泛的计算任务。尽管文献中有令人惊讶和印象深刻的结果,但到目前为止,它在机器人学领域的实际应用非常有限。在这项工作中,我们旨在提供一个易于理解的介绍,介绍底层的数学概念,并描述现有的计算实现形式,即向量符号架构(VSAs)。这伴随着对文献中VSAs现有应用的引用。为了将这些理论与实际应用联系起来,我们描述并实验性地展示了VSAs在三个不同的机器人任务中的应用:视角不变的物体识别、地点识别和学习简单的反应行为。文章最后讨论了当前的局限性和未解决的问题。

关键词:超维计算 · 向量符号架构 · 机器人学

1 引言

人类通常在很小的时候就能直观地理解二维和三维欧几里得空间。更高维度的空间具有一些反直觉的特性,这使得许多算法从低维到高维的泛化变得无用——这种现象被称为维度的诅咒。然而,有一类方法旨在利用这些特性。这些方法在具有数千维度的向量空间中工作,被称为超维计算或向量符号架构(VSAs)(以前它们也被称为高维计算或超向量计算)。它们建立在一组精心设计的运算符之上,以执行具有大数值向量的符号计算。

另一类更知名的算法(内部)使用高维表示进行工作,即(深度)人工神经网络(ANN)。它们最近的成功包括机器人子问题,例如,用于稳健的感知。然而,在许多机器人任务中,深度学习方法面临(至少)三个挑战[35]:(1)训练数据有限,(2)通常,我们希望整合先验知识(模型以及算法),以及(3)我们希望能够评估泛化能力(例如,从一种环境到另一种环境,或从模拟到现实世界)。后者对于自动驾驶汽车尤为重要。使用VSAs的一个结果是动机,将高维表示的多功能性、表示能力和对噪声的鲁棒性(例如,由ANN学习)与样本高效、可编程和更好解释的符号处理结合起来。

尽管在标准CPU上处理具有数千维度的向量目前并不是非常时间高效,但通常,VSA操作可以高度并行化。此外,VSAs支持分布式表示,这些表示对噪声异常鲁棒[2],这是机器人学中普遍存在的问题[36]。从长远来看,这种鲁棒性还可以允许使用非常节能的随机设备,这些设备容易出错,但可以延长移动机器人的电池寿命[31]。

本文的目标是提供一个易于理解的介绍,涵盖从第2节中的高维空间的数学属性,到第3节中的VSAs的实现和计算原理,以及第4节中的现有应用的简短概述,到第5节中的三个(新颖的)演示,展示超维计算如何解决机器人问题。

这些演示旨在作为展示,以激发机器人学领域未来应用的灵感。第6节讨论了当前限制和未解决问题形式的剩余障碍。

2高维空间的性质:诅咒与祝福

2.1高维空间具有巨大的容量

最明显的属性是高容量。例如,当我们增加二进制向量的维度数时,存储的可能模式数量呈指数级增长。对于n个维度,容量是。对于实数值向量空间和具有有限精度的实际实现(即计算机中的有限长度表示),容量也随着维度数呈指数增长。有趣的是,即使是在稀疏的二进制向量空间中,可能存储的模式数量也增长得非常快。图1展示了这种行为。对于n个维度和密度d(向量中1的比例),容量是。即使只有5%的非零条目,一个1000维的向量可以存储的模式数量也超过了宇宙中假定的原子数量(大约是)。

打开网易新闻 查看精彩图片

2.2 最近邻变得不稳定或无意义

打开网易新闻 查看精彩图片

贝耶等人[4]展示了最近邻问题的一个直接后果(给定一个n维度量空间中的数据点集,任务是找到与某个查询点最接近的数据点)。他们定义了一个查询如果查询点到大多数数据点的距离小于(1 + ε)倍查询到最近邻的距离,则该查询是不稳定的。在广泛的实际相关条件下,对于任何固定的ε > 0和增加的维度数,一个查询是不稳定的概率趋于1。换句话说,最近邻的距离接近于最远数据点的距离。

基于在高维空间中最近邻查询对比的结果,Aggarwal等人[1]研究了度量选择的影响。例如,常用的欧几里得L2范数并不适用于高维空间,更好的选择是较小的Lp范数(对于一些应用,这包括了p<1的分形范数)。对于实数向量,角度距离和对于二进制向量,汉明距离是合适的选择。

2.3随机向量很可能几乎是正交的

通过从底层空间独立且均匀地采样每个维度来创建随机向量。两个这样的随机向量之间的角度分布与我们的直觉相悖。在n维实数空间中,对于任何给定向量,有n-1个完全正交的向量。然而,对于任何固定的ε > 0,与给定随机向量的角距离≤π/2 + ε的几乎正交的向量数量呈指数级增长。一个重要的后果是,两个随机选择的向量非常可能是几乎正交的。

尽管我们不能直接在高维空间中直观地展示这种效应,但从二维到三维空间的转变已经可以让我们对发生的事情有所了解。图2显示了二维和三维空间中单位球面上相似和几乎正交向量的集合。可以很容易地看出,在更高维的空间中,球面上的一个随机点更有可能位于几乎正交向量的红色区域,而不是相似向量的黄色区域,而且这种效应从二维到三维有所增加。

打开网易新闻 查看精彩图片

图3基于n-球面和n-帽的表面积方程,展示了更高维空间的分析结果。

第一个图表显示了对于角距离ε=0.1的相似和几乎正交范围的表面积。尽管表面积的值在局部最大值(也是全局最大值)之后也有所减小,但它的减小速度远慢于相似区域的面积值。这在图3中的第二个图表中得到了展示,该图表显示了几乎正交和相似表面积的比率。在这个对数图表中的线性形状揭示了这个比率的指数增长。右边的两个图表显示了随机抽取相似或几乎正交向量的概率。对于高维数(例如>700),两个随机向量几乎正交(ε=0.1)的概率接近1。

打开网易新闻 查看精彩图片

2.4 噪声对随机向量的最近邻查询影响很小

为什么随机向量几乎正交很重要?如果随机向量指向几乎正交的方向,这在尝试从噪声测量中识别它们时创造了显著的鲁棒性。让我们用一个例子来证明这一点:假设有一个包含一百万随机特征向量的数据库(再次强调,每个维度都是从均匀分布中独立采样的)。还有一个查询向量,它是数据库中某个向量的噪声测量(每个维度都有加性噪声∼N(0, σ),因此它们也可以离开它们原始的范围[0, 1])。使用角度距离,得到错误查询答案的概率是多少(即数据库中的一个错误向量比正确的向量更接近噪声查询)?图4显示了随着维度数增加和噪声量增加的结果。即使在标准差为0.5的噪声下,即初始值范围的一半(这在图4的右半部分有说明),使用大约170个维度就几乎可以将错误匹配的概率降至几乎为零。

打开网易新闻 查看精彩图片

向每个维度添加噪声等同于向整个数据向量添加噪声向量。这产生了一个有趣的应用:如果这个添加的向量再次是一个已知的数据向量会怎样?这就是所谓的两个向量的捆绑,将在第3节中讨论,我们将使用符号+来指代这个操作符。由于两个向量在识别对方时都对称地充当噪声,一个包含两个数据向量和的查询预计会返回这两个向量作为最近的邻居。图5显示了使用上述一百万数据向量的数据库进行此实验的结果,以及合并向量数量k的不同数值。我们评估返回完美查询答案的能力(即确切的k个真实向量是k个最近邻居)。作为阅读这些图表的例子:左图中的紫色曲线显示,在600维向量空间中,我们可以安全地添加五个向量,结果几乎肯定比我们示例数据库中的其他任何一个向量更类似于这五个向量。

这是实现捆绑的最直接方法,我们可以很容易地提高性能。例如,为了在求和过程中允许增加和减少值,我们可以从[-1, 1]而不是以前的[0, 1]中采样每个维度。图5的右半部分显示了结果。在这种配置中,300个维度足以识别五个向量的和,而600维的和可以处理十个向量的和。大概还有许多其他方法可以在这个简单的例子中提高性能。

打开网易新闻 查看精彩图片

下一节将介绍一种更系统的方法来解决超维计算问题,这将基于高维空间的属性。虽然本节的例子建立在随机向量上,第5节将展示当面对机器人传感器数据时这些方法的性能。

3 如何进行超维计算:向量符号架构(VSA)

前一节第2节列出了高维向量空间的属性,并展示了如何通过它们的和来表示一组向量的捆绑。形式上,结果向量代表捆绑向量的无序集合。为了具有更广泛的价值,我们需要能够表示更复杂和组合性结构,如有序列表、层次结构或对象-部分关系。存储结构化数据的一个关键元素是为数据的不同部分分配不同的角色[15]。以个人记录为例:{名字=Alice, 出生年份=1980, 高分=1000}。仅仅存储值{Alice, 1980, 1000}是不够的,因为例如,这个无序集合无法区分Alice的出生年份和她的高分。我们需要关于角色(或变量)“出生年份”及其填充物(或值)“1980”之间的绑定信息。

已经有多种方法使用超维计算来实现这一点,例如Plate [28]、Kanerva [15]、Gayler [8]等人的方法。2003年,Gayler为这些方法创造了术语“向量符号架构(VSA)”[9]。简而言之,VSA结合了一个向量空间和一组精心选择(设计)的具有特定属性的操作符。上述每个VSA都使用不同的向量空间。操作符集合必须包括两个操作符捆绑+和绑定⊗,对于某些应用,需要一个排列(或保护)操作符。每个操作符的输出又是来自同一空间的向量。捆绑共享了加法的一些属性,绑定共享了数字乘法的一些属性。

在我们继续正式要求之前,让我们举一个整体目标的例子。给定字符串“Alice”和两个数字“1980”和“1000”的向量表示AliceV, 1980V和1000V;它们可以使用合适的编码器获得,或者只是我们稍后解码的随机向量。我们还有代表相应角色的随机向量nameV, year_of_birthV和high_scoreV。使用超维计算,我们希望能够创建一个包含整个记录的单个向量H,使用上述操作符:

打开网易新闻 查看精彩图片

这个例子将在以下小节中解释。查询记录是超维计算的一个简单例子。在我们继续进行第4节和第5节中更复杂的演示之前,我们将更详细地描述操作符,并解释如何利用高维空间的属性来查询记录示例。然而,目前还没有关于VSA操作符所需属性、操作符的确切集合或向量空间的确切定义。以下是来自文献的属性摘要,即表1中的VSAs。

打开网易新闻 查看精彩图片

3.1 绑定 ⊗

绑定操作符 ⊗: × → 将两个输入向量结合起来,形成一个与输入向量不相似的单个输出向量,但允许在给定输出向量和另一个输入向量的情况下(大致)恢复任何一个输入向量。例如,我们可以通过 N = AliceV ⊗ nameV 将填充物AliceV绑定到角色nameV上,并且在给定N和角色向量nameV的情况下,稍后恢复填充物AliceV。为了恢复这个向量,我们需要从一个向量中解绑另一个向量。对于向量也是(大致)自逆的VSA,解绑和绑定是相同的操作(例如[8, 15])。自逆意味着:

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

这个例子还要求绑定操作符是结合性的。此外,为了允许改变向量的顺序,绑定通常也是交换性的。表1列出了几种可用的绑定实现。第2节说明了相似和不相似向量的分布是高维向量空间的一个重要属性。因此,VSA操作对这些相似性的影响也很重要。例如,绑定应该是保持相似性的:对于所有A, B, X ∈ ,有dist(A, B) = dist(A ⊗ X, B ⊗ X),当两个向量都绑定到同一个第三个向量时,它们之间的距离保持不变。此外,正如本节第一句话已经说过的,结果向量必须与两个输入向量不相似。这对于与下一节中解释的捆绑操作符结合很重要。

“3.2 捆绑 +

捆绑操作 +: × → 的目标是将两个输入向量组合,使得输出向量与两个输入都相似。这也被称为向量的叠加。通常,捆绑运算符是某种逐元素的向量元素相加(参见表1)。例如,Gayler 的 Multiply–Add–Permute VSA [8] 在与图5实验相同的向量空间 [−1, 1]ⁿ 上使用逐元素相加操作(和的结果限制在向量空间元素的范围 [−1, 1] 之间)。在这些实验中,我们已经展示了向量的逐元素相加与每个向量相似;这是随机向量几乎正交性的直接结果。

根据 Kanerva [17] 的说法,捆绑和结合操作应该“形成代数域或近似为代数域”。特别地,捆绑应该是结合律和交换律的,并且结合应该对捆绑进行分配。让我们通过仔细观察 Alice 记录的例子来说明这一点。为简洁起见,我们用 X、Y、Z 表示角色向量“名字”、“出生年份”和“最高分”,用 A、B、C 表示它们对应的值“Alice”、“1980”和“1000”的向量表示。记录向量由 H = (X ⊗ A)+(Y ⊗ B)+(Z ⊗ Z) 组成。那么,当通过与其向量 X 进行结合来查询名字时会发生什么?”

打开网易新闻 查看精彩图片

“噪声项包括 (X ⊗ Y ⊗ B) 和 (X ⊗ Z ⊗ C)。它们都与它们的各个元素不相似(这是结合运算的一个性质)。因此,唯一与 X ⊗ H 相似的已知向量是 A。这再一次利用了高维向量几乎确定与随机向量不相似(即几乎正交)的性质。第 2.4 节中的数据库实验已经展示了如何恢复无噪声的向量 A:在给定一个包含所有基本向量的数据库时,返回最接近 A + 噪声的邻居,极有可能返回 A(为了不返回一个与噪声相似的向量,我们需要结合运算与其输入不相似的性质)。在向量符号架构(VSA)中,这种数据库通常被称为清理或项记忆 [16]。它可以像查找表一样简单,或者例如是一个吸引子网络 [17]。第 5.2 节将评估这种清理记忆与真实世界数据结合的特性。

捆绑和结合运算之间可能存在性能的权衡。例如,在 Gayler 的 VSA 中,捆绑运算符在 = [−1, 1]ⁿ 的情况下工作得很好;然而,结合运算的自反性仅在特殊情况下 = {−1, 1}ⁿ 精确成立。清理记忆也可以用于在非精确反转的情况下恢复精确的值。”

“3.3 置换(或保护)˘

Gayler [8] 讨论了使用一个额外运算符来保护向量的好处。想象一个包含两个绑定的角色-填充对的情况:A ⊗ X 和 B ⊗ Y。当将这两个对绑定为 (A ⊗ X) ⊗ (B ⊗ Y) 时,必须防止角色和填充项的混淆:由于结合运算具有结合律和交换律,这等价于 (A ⊗ Y) ⊗ (B ⊗ X)。置换运算符 保护一个项不受结合律和分配律的影响。在上述示例中,这是 (A ⊗ X) ⊗ (B ⊗ Y)。它通常通过向量维度的置换来实现。其输出与输入不同,通过应用逆置换,它也是可逆的。详情请参阅 [8]。

4 来自文献的应用

VSAs 已被应用于多种问题,如文本分类 [20]、故障检测 [19]、类比映射 [30] 和强化学习 [18]。Kanerva [17] 讨论了 VSAs 的一般计算能力,并得出结论,可能会创造一个“高维计算-Lisp”。虽然这一点仍然悬而未决,但在该方向上的工作包括有限状态自动机的合成 [27] 和高维堆栈机 [38]。Danihelka 等人 [5](Deepmind)使用 VSA 来模拟长短期记忆。在医学领域,Widdows 和 Cohen [37] 使用基于预示的语义索引,利用 VSA 来表示传统的主语-谓语-宾语关系(例如“阿司匹林治疗头痛”),以对疾病、症状和治疗的关系进行快速近似推理。自然语言处理被认为是一个具有挑战性的任务。Jackendoff [13] 将这一声明具体化为一个旨在以人类水平处理语言的系统必须解决的四个理论挑战。根据 Gayler [9],VSAs 能够解决这些挑战。高维计算也被用来编码 n 元语法统计,以识别文本的语言 [14]。有证据表明,分布式高维表示在大脑中广泛用于表示信息 [2]。这在类脑认知系统(如 Spaun [6])中广泛应用,并且在层次时间记忆(HTM)[12] 中也是如此,HTM 是人类大脑新皮层工作原理的计算模型。后者也被应用于移动机器人位置识别 [24]。”

5 应用于机器人任务

本节展示了三个例子,说明超维计算如何用于实际的机器人任务。我们并不声称所提出的方法比现有解决方案更好,然而,它们展示了超维计算的多功能性,其处理现实世界数据的能力,并倡导其实用价值。在我们开始应用之前,我们将描述如何弥合现实世界传感器和向量计算之间的差距。

5.1 编码现实世界数据

第2.4节使用了合成数据来演示超维计算的噪声鲁棒性及其在捆绑中的应用。这个合成数据中的随机向量通过设计实现了成对几乎正交的向量。如果我们想处理不提供数千个独立随机维度的现实世界数据怎么办?对于简单的数据结构和特别是稀疏二进制向量的情况,Purdy [29]讨论了不同的编码方式。最近,Kleyko等人[20]讨论了图像的二进制超维编码中的权衡。全面讨论现实世界传感器数据的编码方法是本论文范围之外的。然而,我们想简短描述我们在实验中对现实世界图像数据进行编码的方法。

任何高维图像特征向量都有可能被使用。基于它们最近的成功,我们决定使用深度卷积神经网络早期层的图像描述符,类似于它们用于地点识别的方式[25, 33]。为了获得图像的描述符,将其输入到一个现成的、预先训练好的CNN(我们使用AlexNet [21]),而不是使用最终输出(例如1000维的softmax类别输出),而是使用较早层的中间输出[我们使用第三个卷积层(conv3)的13×13×385=64,896维输出]。为了减少计算工作量并获得分布式表示,我们使用局部敏感哈希(LSH)方法,并将归一化的conv3描述符通过一个随机矩阵R投影到较低维度的空间。R中的每一行都是一个64,896维超平面的法线(通过从标准正态分布中采样R,然后归一化行到长度为一来获得)。由于这些归一化的conv3描述符和每一行(超平面法线)的乘积反映了向量之间角度的余弦值,它们在[−1, 1]范围内,并且可以直接在Multiply–Add–Permute架构[8]中使用(见表1)。我们使用R中的8192行。

5.2 捆绑视图用于对象识别

机器人任务 对于第一个机器人用例,我们展示了超维计算在从多个视点识别对象中的应用。这对于通过识别已知地标进行移动机器人定位、操纵对象识别以及其他机器人任务非常重要。

动机 我们使用这个任务将第2.4节中关于高维向量捆绑的合成数据结果转移到现实世界数据上。捆绑允许将多个向量合并为一个。这可以直接用于合并两个或更多已知视图。动机有三个:(1)如果我们将所有已知视图合并为一个表示,那么将查询向量与所有已知表示的比较就是单一向量比较。(2)可能在已知视图之间有更好的插值。(3)这允许直接更新对象的表示,特别是在在线滤波器样式的迭代中。

实验设置 我们使用阿姆斯特丹对象图像库(ALOI)数据集[10]实际演示这种方法,特别是收录了1000个对象从72个不同水平观察角度(5°步长)看到的72,000张图像的集合。图6显示了示例图像。

打开网易新闻 查看精彩图片

“在我们的实验中,给定一个包含 k ∈ {1 …1000} 已知图像 Iₓₖ 和 Iᵧₖ 的数据库,这些图像分别对应视角 x 和 y,以及一个查询图像 Iq,该图像的视角为 z = x + 2y(即介于两者之间的视角),以及图像索引 q。任务是将 q 关联到正确的图像索引 k。

VSA 方法:我们将图像描述符 Iₓₖ 和 Iᵧₖ 捆绑,即为每个 k 创建 Ikₓ + Ikᵧ(数据库中的每个对象将有一个向量)。

结果:在将查询图像 Iq 与数据库进行比较时,动机 (1) 通过设计实现:我们不再分别将 Iq 与 Iₓₖ 和 Iᵧₖ 比较,而是与单个捆绑向量比较,从而将所需比较的数量减少了一半。

图 7 的结果展示了动机 (2) 的更好插值能力:捆绑表示(红线)在新的视角下,与对象图像的余弦距离比单个图像(蓝线)更小。这也导致了更好的对象识别准确率(右侧部分)。详见脚注4。

为了评估如何逐步整合更多视角(动机 (3)),图 7 中的黄色和紫色曲线展示了从四个角度 {0, 90, 180, 270} 和八个角度 {0, 45, 90, …, 315} 捆绑多个视角的查询结果。尽管这些较大捆绑的已知视角距离值并未达到零距离,但捆绑的视角越多,余弦距离变化越小。”

打开网易新闻 查看精彩图片

5.3 序列处理用于地点识别

机器人任务 地点识别是一项类似于图像检索的任务:给定一组来自已知地点的图像,找到与机器人当前摄像头视图对应的地点。与更通用的图像检索任务不同,在地点识别中,我们可以假设机器人不会随意在地点之间跳跃,而且之前地点的序列为当前地点提供了一些信息。

动机 之前的应用程序只使用了捆绑。这个第二个例子展示了与绑定操作符 ⊗ 结合使用,以实现使用超维计算的重要概念——角色-填充对。我们还用这个例子来展示超维计算如何提供现有算法(SeqSLAM)的简单而简洁的实现。这种VSA实现也可以从超维计算的一般优势中潜在受益,如噪声容忍度和潜在的能量效率。类似于之前的物体识别示例,向量的叠加也减少了所需的比较操作数量。

模仿的方法 SeqSLAM [23]利用图像序列信息来解决在变化环境中地点识别的挑战性问题(例如,给定一个在夏天拍摄的图像数据库,目标是在冬天进行定位)。Seq-SLAM序列处理部分的输入是图8中显示的成对图像相似度矩阵S。每个条目si,j是数据库中第i个图像和机器人当前摄像头序列的第j个图像之间的相似度。SeqSLAM的输出是基于S中它们的相似度以及i和j之前和之后的图像之间的相似度,对图像i和j的相似度的新值。SeqSLAM假设每个序列内的速度是恒定的,因此它在以si,j为中心的S上的一个短线性段上累加相似度(如图8中的红线所示)。更多细节请参见[23]。

打开网易新闻 查看精彩图片

VSA方法 为了使用超维计算实现SeqSLAM的思想,我们首先使用第5.1节中的方法对每个图像进行编码为向量。然后,基本思想是用一个向量(同一维度)替换每个序列中的每个图像向量,该向量编码了该图像以及该图像之前和之后的d个图像的捆绑。

“为了保持图像的顺序,每张图像在捆绑之前都会绑定到一个静态位置向量 Pₖ。在我们的实验中,位置向量是随机向量,因此它们很可能几乎正交。每个图像的编码为:Yi = ∑ₖ=−dᵈ(Xi+k ⊗ Pₖ);对于序列的开始和结束(例如 i < d + 1),捆绑的向量较少。由于任意数量向量的捆绑具有相同的形状,这种情况得到了简洁处理。最后,为了获得位置识别结果,可以成对比较数据库和查询图像集的 Yi 编码。

为什么这种方法有效?考虑从数据库中两个连续图像的编码:(Aa ⊗ P₀) + (Aa−1 ⊗ P−1),以及两个连续查询图像的编码:(Bb ⊗ P₀) + (Bb−1 ⊗ P−1)。在比较这两个捆绑时,它们越相似,意味着它们的组成部分越相似。让我们评估一些组成部分的对比:由于 Aa 和 Bb 都绑定到相同的向量 P₀,并且运算符 ⊗ 保持相似性,因此 (Aa ⊗ P₀) 和 (Bb ⊗ P₀) 的相似性取决于 Aa 和 Bb 的相似性。同样,Aa−1 和 Bb−1 也是如此。相比之下,例如 (Aa ⊗ P₀) 和 (Bb−1 ⊗ P−1) 被认为是不相似的,因为 P₀ 和 P−1 几乎是正交的。”

“实验设置:我们使用了Nordland数据集[34],该数据集提供了四次穿越挪威的728公里火车旅程的图像,每个季节一次(见图8中的示例图像)。我们沿轨道选择了288个等距的地点,进行春季和冬季图像集之间的地点识别。评估是基于已知的地面真实地点关联,通过精准-召回曲线进行的。

结果:图9中的实验结果显示,VSA SeqSLAM实现(实线)可以利用序列信息来提高地点识别性能。其结果与原始SeqSLAM序列处理方法(虚线)的结果非常接近。

还有一个额外的理论优势:VSA方法所需的操作次数显著减少。对于数据库大小为n、查询大小为m、序列长度为ds = 2 ⋅ d + 1(过去+未来+当前)的情况,原始SeqSLAM的操作次数为m ⋅ n ⋅ ds。而对于VSA实现,其操作次数为m ⋅ ds + n ⋅ ds + m ⋅ n(前两项表示描述符的捆绑,最后一项表示最终的成对比较)。例如,对于我们的288张图像的数据库和查询大小以及d = 5,操作次数的比例超过10倍,而且如果这些值增加,这个比例会更大。不幸的是,尽管原始SeqSLAM的大部分操作处理的是标量相似度值,而VSA方法的所有操作都是高维向量操作。因此,只有在使用专门的高维向量计算硬件时,可能会实现实际的运行时改进(这也可以利用VSA的节能潜力)。

扩展:Nordland数据集非常适合SeqSLAM及其向量变体,因为每次火车旅程都是一个具有恒定速度的长序列。为了考虑序列之间速度的轻微变化,原始SeqSLAM算法评估了不同斜率的线段,并使用最佳选择。所提出的VSA实现可以通过叠加不同的图像向量和序列位置向量组合,轻松扩展到这些变化的速度。另一个有趣的方向是控制相邻序列位置向量之间的相似性,或使用其他VSA编码序列信息的方法,例如置换[16]。”

打开网易新闻 查看精彩图片

“5.4 学习和回忆反应性行为

机器人任务 该任务是从演示中学习简单的反应性行为。"简单"意味着我们可以将它们表示为一组传感器-动作(条件-结果)对。给定一次成功的导航运行演示(例如来自人类),通过传感器输入和执行器输出对,系统学习编码这种反应性行为的表示,并在环境中的新运行中重现它。

动机 本示例的目标是展示一个更复杂的基于VSA的系统。与之前的应用不同,这还涉及机器人动作选择。目标是将整个机器人程序(即一组反应性行为规则)编码为一个单一的向量。在执行(和组合)这种基于VSA的行为时,向量的优势(即表示能力和对噪声的鲁棒性)得以保留。这种方法的一个特别美妙之处在于,它可以学习行为的编码,无论传感器输入或行为多么复杂,其形式始终是相同的(即单一向量)。

实验设置 我们使用了[22]中描述的仿真任务。图9展示了所使用的简单机器人,具有差速驱动(即左侧和右侧电机)、左侧和右侧距离传感器以及中央光传感器。机器人从迷宫中的随机位置开始,任务是四处游荡,同时避免障碍物,直到找到光源。然后机器人应停留在光源下。这是一个简单的任务,可以用一组简单的规则来编码(例如见[22])。

VSA方法 算法1中的列表描述了学习过程。输入是传感器测量值和相应执行器命令的对。其思路是:(1)分别编码传感器和执行器的值,(2)将传感器值组合成条件向量,并将所有执行器编码组合成结果向量,(3)将条件与结果向量组合成规则向量,最后(4)将所有规则向量组合成一个包含整个“程序”的单一向量。算法2用于执行阶段,根据当前传感器输入寻找最佳执行器命令。”

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

“图9展示了VSA操作在训练和查询期间的使用方式。每个编码的传感器值与一个表示对应传感器的随机向量绑定(见图9中的1)。例如,左侧距离传感器有一个随机但静态的向量表示(称为sensor1),它表示“左侧距离传感器”这一角色。在训练过程中,对于每个输入对,所有传感器-值绑定被捆绑在一起(见2)。执行器侧也是如此。完整的传感器-动作规则被存储为传感器和执行器的绑定(见3)。由于这些规则被捆绑在一起以创建完整的程序(见4),条件向量需要被保护(可以理解为使用括号防止在方程中分布),以防止来自不同训练对的传感器条件混淆。为了允许后续从噪声向量中回忆,每个执行器-值对(例如,actuator1 ⊗ encode(a1))和结果捆绑必须存储在清理内存中。

在该示例中,查询期间的任务是根据当前的传感器输入和程序向量获取左侧和右侧电机命令。为了获取正确的命令,还需要编码器/解码器和清理内存(见5)。传感器信息与之前一样被组合成条件向量(见6)。将此向量与程序向量绑定可以从训练中检索到最相似的规则向量(见7)。清理内存可用于获得无噪声版本。通过将此结果与执行器角色向量绑定(例如,actuator1),可以得到相应命令的噪声版本(见8)。使用清理内存和解码器,这可以转换为电机命令,并用于控制机器人(见9)。

结果 我们实现了这个系统,并能够通过人类示范运行成功学习解决[22]中描述的仿真任务的行为。更多细节请参见[26]。这表明VSA也可以用于实现更复杂的程序,包括动作选择。可以将完整的机器人程序编码为一个单一的向量。然而,程序的复杂性受制于该向量的容量。还需要进一步研究此示例的实际潜力。”

“6 限制、讨论与开放问题

我们展示了高维计算及其以VSA(向量符号架构)形式实现的有趣特性,以及其在文献中多样的应用,并且证明了它们可以用于解决机器人问题。然而,仍存在一些局限性和潜在的缺陷需要讨论。

在我们看来,首个挑战是缺乏对VSA的明确定义。VSA是一个名称,涵盖了利用高维向量空间特性的多种方法,基于一组具有相似特性的操作符。我们在第3节尝试收集了关于不同VSA的信息,以提供一个连贯的定义。然而,操作符的特性列表中包含了诸如‘应该’或‘近似’这样的术语,却没有进一步的确认。最终目标应当是以公理和导出定理的形式,提供对这种系统能力的理论上严格的定义。”

“存在一些权衡,例如在第3节中解释的Multiply–Add–Permute架构中,绑定操作符和捆绑操作符之间的权衡,第一个在使用{0, 1}ⁿ作为向量空间时表现更好,而另一个在使用区间[0, 1]ⁿ时更优。这并不是一个不可扩展的问题,无论在理论上(例如,通过使用清理内存)还是在实践中(我们在第5节的机器人实验中也使用了这种VSA)。尽管关于VSA特性的某些理论见解已经存在(例如关于捆绑容量的研究[7]),但更好的见解对于理解这些权衡和限制将有助于实际应用。

一个特别重要且具有挑战性的任务是将现实世界数据编码为向量。我们在第2节中的示例以及第4节中的大多数应用使用的是随机向量——这些向量几乎肯定是成对近乎正交的。然而,在第5.2节和第5.3节中展示的机器人实验中,我们使用了通过CNN和LSH获得的图像编码(见第5.1节)。因此,结果向量仅跨越向量空间的一个子空间。因此,VSA机制可能仅以近似方式工作——尽管如此,它们仍然提供了合理的结果。对编码/解码属性要求的深入见解可能对实际应用产生巨大影响。

在高维计算中,大多数操作仅以近似方式有效,这需要不同的工程思维方式。在可预见的未来,像机器人这样的复杂机器很可能需要大量的工程工作——为非数学家提供更容易理解这些系统何时、为何有效的途径,可能会是一个非常有帮助的贡献。将高维计算与该领域广泛使用的概率方法联系起来也是一个非常有趣的方向。

除了对高维计算应用的理论发现的获取外,目前缺乏一个结构化的方法来实际设计使用VSA的系统。目前,几乎所有通过高维计算解决的问题都是某种孤立的应用。尽管在每种情况下都使用相同的原则,但一个结构化的方法,例如通过设计模式来解决问题,将是非常理想的。相关的还有一个非常基本的问题:系统的哪些部分必须手动设计,哪些部分可以通过学习来获得。目前,许多结果是由于精心设计而非学习。然而,高维表示可能为连接主义学习方法提供了简单的通道——这可能是(深度)人工神经网络与(向量)符号处理之间的优雅桥梁。”