A neural algorithm for a fundamental computing problem
作者1:达斯古普塔(印度),加州大学圣地亚哥分校,计算机科学与工程学院教授,拉霍亚大学。研究的是多维数据的统计分析,代表作《算法概论》,1993年哈佛大学学士学位,2000年UCB计算机科学博士学位,然后美国电话电报公司实验室技术人员的高级成员,他的工作重点是数据挖掘的算法,并应用于语音识别和分析业务数据。2002年加入UCSD,
作者2:萨尔克生物研究所,分子神经生物学实验室,拉霍亚
作者3:萨尔克生物研究所,综合生物实验室,拉霍亚
摘要
相似性搜索,即识别数据库中相似的图像或者web上相似的文章,是许多大型信息检索系统面临的一个基本计算问题。我们发现果蝇嗅觉回路用传统计算机科学算法(局部敏感哈希)的一种新颖的变体解决了这个问题。果蝇的嗅觉回路为相似的输入刺激(气味)分配了相似的神经元活动模式,这样我们从一种气味学习到的行为就可以应用到以后遇到的相似气味。然而,果蝇算法使用了三种不同于传统方法的新计算成分。当我们在几个基准数据集上进行评估时,与传统算法比较相比较,这个新的成分可以被转化用来提高相似性搜索的性能。总之,这一观点有助于阐明支持重要感觉功能(嗅觉)的逻辑,它为解决基本的计算问题提供了一种概念上的新算法。
许多神经回路的一个基本任务就是给输入刺激分配神经活动模式,这样可以唯一的识别不同的输入。在这里,我们研究了果蝇嗅觉系统用来处理气味的回路,并揭示了解决基本机器学习问题的新计算方法:近似相似性(或最近邻)搜索。
果蝇嗅觉回路赋予每一种气味一个标签,对应于一组神经元,当这种气味出现时被激活。这个标签对于学习不同气味的行为反应至关重要。例如,一种激励(糖水)或者惩罚(电机)跟一种气味相联系,这个气味就会变得具有吸引力(果蝇会接近这种气味)或者排斥性(果蝇会避开这个气味)。被分配到气味的标签被认为是稀疏的——只有一小部分的神经元接收到气味信息以响应每一种气味(5,6),并且没有重叠——两种随机选择的气味的标签如果有重叠,重叠很少的活跃神经元,因此不同的气味可以很容易区分(3)。
气味的标签是用一个三步程序来计算的(图1A)。第一步是涉及到一个前馈连接:从果蝇鼻子中气味受体神经元(ORNs)到被称为肾小球的投射神经元(PNs)。有50种不同的气味受体神经元,每种都对不同的气味有不同的敏感性和选择性。因此,每一种输入气味都在50维空间中有一个位置,这个空间是由50个气味受体神经元激活率决定的。对于每一种气味,它的气味受体神经元激活率分布在50种气味受体神经元类型中,呈指数型分布,其平均值取决于气味的浓度。对于投射神经元(PNs),这种浓度依赖特性被移除了(8 12),也就是说,在50种投射神经元类型中的激活率分布呈指数型,所有的气味和所有的气味浓度(3)都接近相同的平均值。因此,回路的第一步本质上是使用所谓的“除法归一化”(13)的方法,将平均值居中,这是在许多计算流水线中的一个标准预处理问题。这一步很重要,所以果蝇不会把气味的强度和类型混合在一起。
第二步,主要的算法洞察力开始了,涉及到一个40倍的神经元数量的扩展:50个PNs投影到2000个凯尼恩细胞(KCs),通过一个稀疏的二进制随机连接矩阵连接起来。每一个凯尼恩细胞都接收并总结大约6个随机选择的PNs(14)的激活率。第三步是使用一个叫做APL的单一抑制神经元的强烈抑制反馈的“赢”的回路。结果是,所有的凯尼恩细胞中被激活最高的5%都被沉默了(3,5,6,15)。剩余5%的激活率与分配给输入气味的标签相对应。
我们的贡献
从计算机科学的角度来看,我们把果蝇的回路看作是一个哈希函数,它的输入是一种气味,它的输出是一个对应标签(称为哈希)。虽然标签应该区分气味,但果蝇的优势是将非常相似的气味与类似的标签联系起来(图1B,乙醇,甲醇,二甲基硫醚),这样我们曾经从某一种气味中学习到的条件反射,可以应用到以后遇到的相似的气味上,或者是学习到的气味的噪音版本。这使我们推测,果蝇的电路产生的标签是局部敏感的;即两种气味越相似,它们分配的标签就越相似。有趣的是,局部敏感哈希(LSH(16 19))是解决计算机科学中众多相似搜索问题的基础。然而,果蝇的算法在三种方法(稍后讨论)中与传统的LSH(局部敏感哈希)算法不同:它使用稀疏的、二进制的随机投影来扩展输入的维度,然后用赢家-吃的方法来对标签进行闪烁。
图1:果蝇嗅觉回路和局部敏感哈希之间的映射。
A):果蝇嗅觉回路原理图。第一步,果蝇鼻子里的50个气味受体神经元把轴突送到肾小球里的50个投射神经元上;这样投影以后,每一种气味被表示为激活率的指数分布,所有气味和所有气味浓度有相同的均值。第二步,投射神经元进行了维度扩展,即通过连接一个稀疏的、二值的、随机投影矩阵投影到了2000个凯尼恩细胞上;第三步,KCs从前对侧(APL)神经元中获得反馈抑制,这只剩下前5%的KCs会保持对气味的激活刺激,这5%对应于气味的标签(哈希)。
B):气味反应说明。类似的气味(如甲醇和乙醇)的标签比不同的气味更相似。较暗的阴影表示较高的活性。
C):传统LSH和果蝇算法之间的区别。在这个例子中,LSH和苍蝇的计算复杂度是一样的。输入维d=5,LSH计算m=3个随机投影,每一个都需要10次操作(5次乘+5次加)。果蝇计算m=15个随机的投影,每一个都需要2个加法运算。因此,两者都需要30个总操作。
在这里,我们研究这个连接,做出以下的贡献:
1、 我们将从果蝇回路中获得的见解,开发出一种新的LSH算法,以有效地寻找高维度点的近似近邻(图1)。
2、 我们通过分析证明,果蝇回路构造的标签可以保持输入的邻域结构(L2范数下定义)。然而,果蝇的方法比通常在文献中常用的方法计算效率更高。
3、 我们根据实验证明,在三个基准测试中,果蝇s算法与传统LSH算法相比,提高了寻找最近邻的性能或计算效率。 (图2和图3)。
最后,我们描述果蝇的核心程序如何构建气味标签也可以阐明几个脊椎动物神经回路的逻辑(表1)。
图2:不同随机投影类型和标签选择方法的实验比较。在所有的图中,x轴是哈希的长度,而y轴是中间平均精度(越高越好)。A):稀疏的二元随机投影提供了几乎相同的性能,就像稠密的高斯随机投影一样,但是前者节约了大量的计算。B):扩展的维度(来自k到20k)加上“赢者通吃”的稀疏化,进一步提高了性能,相比没有扩展的来说。所有三个基准数据集的结果是一致的。误差条表示标准偏差超过50次试验。
图3:果蝇算法和局部敏感哈希算法的总体比较。在所有的图中,x轴是哈希的长度,而y轴是中间平均精度(越高越好)。10d的扩展用于果蝇。在所有这三个数据集中,果蝇算法方法优于LSH,最显著的是短代码。误差条表示标准偏差超过50次试验。
表1:大脑中局部敏感哈希的普遍性。
最近邻搜索、局部敏感哈希和果蝇嗅觉回路之间的关系。
想象一下,你被提供了一张大象的图片,并试图从网上的数十亿张图片中找到100张图片,这些图片看起来和你的大象形象非常相似。这被称为最近邻搜索问题,它在信息检索、数据压缩和机器学习(17)中具有重要的意义。每幅图像通常被表示为R-d空间一个点上的d维特征向量(回想一下,果蝇处理的每种气味都位于50维空间的一个点上)。使用距离度量来计算两个图像之间的相似性(特征向量),目标是有效地找到任何查询图像的最近邻。如果Web只包含很少的图像,那么使用蛮力线性搜索就可以很容易地找到准确的最近邻。如果Web包含许多图像,但是每个图像都由一个低维度的向量表示(例如,10或20个特征),那么空间分区方法,例如kd-树(20),也就足够了。然而,对于具有高维度数据的大型数据库,这两种方法都不具有规模(19)。
幸运的是,在许多应用程序中,只要能够很快找到它们,就可以返回接近于查询的最近邻的近似集。这激发了一种方法,通过一种称为局部敏感哈希(LSH(17))的概率技术来寻找近似的最近邻。对于果蝇来说,气味的标签(或哈希)对应于该气味的凯尼恩细胞激活率向量。局部敏感特性表明,两种相似(如甲醇和乙醇)的气味将由两个自身相似的标记来表示(图1B)。同样地,对于图像搜索,大象图像的标记将更类似于另一个大象图像的标记,而不是摩天大楼图像的标记。形式上:
定义1:
不像传统的(非LSH)哈希函数,输入点是随机分布的,并且在范围上均匀分布,LSH函数h提供了一个从d维空间到m维空间(后者对应于标记)的点的距离保护。因此,在输入空间中距离较近的点被分配相同或相似的标记的概率要比相隔很远的点的概率高。
为了设计一个LSH函数,一个常用的技巧是计算输入数据的随机投影(16 19)-将输入特征向量乘以一个随机矩阵。The Johnson-Lindenstrauss lemma(引理内容:揭示了从高维空间到低维欧几里得空间的点与点之间的低失真嵌入,并具有保存结构相对完整的特性。)和它的许多变体,为我们使用各种各样随机投影将数据从d维嵌入到m维时,多大程度地保存了局域的相对结构提供了强大的理论边界支持。
引人注目的是,果蝇还通过随机投影(步骤2,50 PNs 2000 KCs)为气味分配标签,这为这部分回路的功能提供了一个关键的线索。然而,果蝇s算法与传统的LSH算法有三个不同之处。首先,果蝇使用的是稀疏的、二进制的随机投影,而LSH函数通常使用密集的、i-d高斯随机投影,而这些预测要计算的成本要高得多。第二,果蝇在投射后扩展了输入的维度,而LSH收缩了维度。第三,果蝇用一种用“赢”的机制来稀疏化高维度的表示,而LSH保留了稠密的表示。
推导出果蝇嗅觉回路的距离保护特性
ORNs:气味受体神经元,感觉气味;
PNs:投射神经元
APL:前双侧神经元,通过释放抑制性神经递质,抑制嗅觉学习。
我们可以把从投影神经元(PNs)到凯尼恩细胞(KCs)的映射看成一个二部分构成的连接矩阵,左边的d=50个PNs,右边的m=2000 KCs。左边的节点取值为x 1,x d,而右边的是y 1,y m。每个值y j等于一小部分x的和;我们用一个无定向的边来表示这个关系,把每一个x i和y j联系起来。这个二部图可以用m x d邻接矩阵M来概括。凯尼恩细胞(KCs,大脑中的一种神经细胞)
在APL神经元的反馈抑制之后,只有k个最高激活性能的凯尼恩细胞保留了它们的值;其余的都归零。这个“赢者通吃”的机制产生了一个稀疏的向量z(称之为标签)。(“赢者通吃”:神经网络计算模型中用到的一种机制,同一层神经元之间相互竞争来激活网络;在经典形式中,只有最高激活的神经元保持活跃,而其他所有神经元都关闭。)
M的一个简单模型是一个稀疏的、二进制的随机矩阵:每一个条目M ij都是独立地以概率p设置的。例如,选择p=6/d,就意味着每一行M大约有6个1(所有其他条目都是0),这与实验结果(14)相匹配。
在补充材料中,我们证明了果蝇回路的前两个步骤产生的标签可以在预期中保持输入气味的二范数距离:
引理1:如果两个输入分别被投影到,我们有:
第三步(“赢者-吃”)是一种简单的方法,在保留最大和最具有判别性的系数(327)的同时,对表示进行稀疏分解。
在补充中,我们也证明当m足够大时(即随机投影的数量是O(d)),方差k紧紧地围绕着它的期望值,这样有很高的概率。
总之,这些结果证明了果蝇的回路代表了一个新的LSH(局部敏感哈希)家族。
对3个基准数据集进行经验评估。
为了对果蝇s算法和传统的LSH(16 19)进行公平的比较,我们将这两种算法的计算复杂度改为一样的(图1C)。也就是说,对于每一个输入,这两种方法是固定的使用相同数量的数学运算来生成长度k的哈希(即一个带有k个非零值的向量)。详情请参阅材料和方法。
我们比较了这两种算法在三个基准数据集上寻找最近邻的算法:筛选(28)(d=128)、手套(29)(d=300)和MNIST(30)(d=784)。SIFT和MNIST都包含用于图像相似搜索的图像的矢量表示,而GLOVE则包含用于语义相似搜索的词的向量表示。我们收集了每个数据集的一个子集,每个数据集都有10,000个输入,其中每个输入都表示为R d空间中的中的一个特性向量。为了测试性能,我们从10000中选择了1000个随机的查询输入,并将真实的和预期的最近邻进行了比较。也就是说,对于每个查询,我们在输入空间中找到了最接近的2%(200)的最近邻,这取决于特征向量之间的欧氏距离。然后我们在哈希空间中找到了最接近的2%的最近邻(即:h),基于欧氏距离标记(哈希)的距离确定。我们对哈希(k)的长度进行改变,并利用中间平均精度(31,32)计算出了排序表上真值和预测值最近邻之间的重叠。我们在50次试验中平均了中间平均精度,在每一次试验中随机投影矩阵和查询输入都改变了。
下面,我们分离了果蝇算法和LSH之间的三个不同之处,以测试它们对近邻检索性能的个体效应。
稀疏的二进制和稠密高斯随机投影对比(图2A)。
首先,我们简单地将LSH修改为使用稀疏的二进制,而不是稠密的高斯投影。不使用果蝇算法的其他方面。我们发现,这两个随机投影类型在所有三个数据集和所有哈希长度(图2A)中产生了几乎相同的检索性能。这些结果支持我们的理论计算,即果蝇的随机投射确实是对局部敏感的。此外,稀疏的二元随机投影在计算上节省了20倍于稠密的高斯随机投影(SI Text)的计算量。
我们还改变了每个凯尼恩细胞样本的输入指数(PNs)的数量,从1%到10%(如果蝇所做的,从50个中有6个),到50%。我们在采样10%时发现了最稳定的性能,在50%的性能上没有提高(图S1)。
在扩展之后(图2B),winner-take-all(WTA)和随机标签选择进行对比。
其次,我们实现了完整的果蝇的算法,并比较了不同的方法选择的凯尼恩细胞构成的标签。在这里,我们为果蝇使用了20k的随机投影,将两个算法(SI Text)所使用的数学运算的数量等同起来。我们使用WTA找到了更好的性能,WTA选择了前k个激活性能比较好的凯尼恩细胞作为标记,而另一种选择了k个随机的凯尼恩细胞(图2)。例如,在使用hash长度k=4的SIFT数据集上,随机选择产生了17.7%的平均精度,而使用WTA(32.4%)的平均值是大约两倍。因此,选择激活性能靠前的神经元最好地保持了输入之间的相对距离;增加的维度也使得隔离不同的输入变得更加容易。对于随机标签选择,我们选择了k个随机(但所有输入都是固定的)KCs为标签;因此,它的性能与仅仅只是做k个随机投影是完全相同的,就像在LSH中一样。
果蝇和LSH(局部敏感哈希)的整体比较(图3)。
第三,为了更接近于果蝇回路,我们实现了完整的果蝇算法,但是从20k到10d肯杨细胞的维度的进一步扩展。总的来说,与LSH在所有三个数据集(图3)相比,我们发现了显著的增长。在非常短的代码中,获得的收益最高,我们看到平均平均精度提高了将近3倍(例如,对于MNIST来说,k=4,LSH是16.0%,而果蝇则是44.8%)。
我们还使用了果蝇算法来实现二进制局部敏感哈希(33,34),LSH函数h:R d Z m。换句话说,我们使用的是他们的指数,而不是使用k肯杨细胞作为标记的值。果蝇的方法在一种常见的方法上得到了改进,这种方法将每个凯尼恩细胞的值分别为0或1,分别基于它的值是0还是大于0(图S3)。这表明果蝇的成分可能在其他的LSH家族中也很有用。
最后,果蝇的算法也是可扩展的。我们的设计的生物的数据集为d=50时,我们的数据集维度多达d=784(MNIST)。我们还在GIST数据集上测试了果蝇的算法(28),d=960,并在性能上发现了类似的趋势(图S2)。
探讨
总的来说,我们发现了一种新的大脑算法,它支持一种重要的感官功能(嗅觉);我们从理论上推导出了它的保藏特性;我们从经验上评估了它在几个基准数据集上寻找邻近的邻居的性能。我们的工作提供了在大脑中相似匹配策略(35)和在大型信息检索系统中进行最近邻搜索的算法之间的新的协同作用。我们的工作也可以在重复检测、聚类和高效的深度学习(36)中应用。
有许多局部敏感哈希的扩展,包括使用多个哈希表(19)来提高精度(过去我们两个算法仅仅使用一个哈希表),使用多探测器这样类似的标签可以组合在一起到相同的容器(因为标签是稀疏的,可能对于果蝇来说更容易实现),以及各种量化技巧离散化哈希(39)。还有一些方法可以加速随机投影乘法,对于LSH,使用快速的约翰逊-lindenstrauss变换(40,41),对于果蝇,使用快速稀疏矩阵乘法。我们的目标是比较两个概念上不同的方法来解决最近邻的搜索问题;在实际应用中,所有这些扩展都需要移植到果蝇s算法中。
果蝇算法,我们专注于数据独立的哈希;即,哈希函数不能从先前的数据中学习,也不能在推到标签时以任何方式使用以前的数据。最近,提出了许多依靠数据的LSH族类,包括PCA哈希(42)、传统谱哈希(43)、语义哈希(44)、深度哈希(32)和其他。一些果蝇的食组成要素在以前被零零散散地使用,例如,MinHash(47)和winner-all哈希(48)都使用了wta相似的组件,尽管它们都不建议扩展维度;类似地,在许多LSH家族中,随机投影也被使用,但据我们所知,没有一个是使用稀疏的、二进制的投影。因此,这些计算成分的结合似乎是新奇的,而且我们认为进化论已经发现了它们应用于果蝇嗅觉。
最后,虽然果蝇嗅觉系统已经广泛映射实验,有证据表明,用于果蝇回路图形的三个印记也出现在其他大脑区域和其他物种(表1)。因此,局部敏感哈希可能是一个在大脑中使用的一般计算原则。