掌桥专利:专业的专利平台
掌桥专利
首页

可重构和时间编码卷积尖峰神经网络中基于事件的特征分类

文献发布时间:2023-06-19 09:44:49


可重构和时间编码卷积尖峰神经网络中基于事件的特征分类

技术领域

本文的实施例涉及分类和对象识别,并且尤其涉及通过使用深度尖峰(spiking)神经网络内的时间神经编码的分类方法。

背景技术

常规的深度卷积神经网络包括多层神经元,该多层神经元包括计算函数,其中输入值和输出值是浮点数。卷积神经网络的最主要用途是数字图像中的对象分类。神经网络第一层的输入值是需要分类的信号样本。典型的信号是感觉信号,例如视觉信号、音频信号等。视觉信号的样本包括表示图像中颜色强度的像素值,而音频信号的样本包括频率分量值作为输入值。深度卷积神经网络具有三层或更多层神经元。每一层都从其上一层接收输入。每个输入值乘以代表连接权重的值,该连接权重通常是32位整数或浮点数。神经网络中的每个神经元可以有许多输入,并且这些相乘的结果相加以创建一个总和值。诸如整流线性函数(ReLU)之类的非线性函数被应用于总和值以生成输出值。卷积是一种函数,可在计算上应用于浮点数据,以从上一层的定义区中提取特征。通常将池化(pooling)层插入卷积层之间以减小数据大小。池化层对来自上一层的已定义的数据块进行操作,并执行最大池化、平均池化或均值池化以减少维数。

深度卷积神经网络在使用图像数据集的对象分类任务中已经非常成功。典型的深层卷积神经网络可能需要执行超过30亿次乘累加功能,以对图像中的单个对象进行分类。通用计算机中使用的处理节点通常不够快,无法在合理的时间范围内执行分类所需的数十亿次操作。专用乘累加设备、图形处理单元(GPU)、向量处理器、模拟乘法器和数字信号处理器的阵列已用于提高吞吐量并降低深度卷积神经网络的延迟。所有这些设备的共同点是其并行运行计算核并快速连续处理数据序列,因此能够在短时间内处理大型数据集。但是,强大的计算能力会带来高功耗。典型的图形处理单元可能消耗多达200瓦至300瓦。已经尝试创建以相同原理工作并且消耗较少功率的设备,但是由于设备的处理核数量有限,所以不能以相同的速度处理图像数据。需要一种可以高速且低功耗地对图像中的对象进行分类的设备。

尖峰神经网络的优势在于,仅当神经电路切换时,即在产生尖峰时,神经电路才会消耗功率。在稀疏网络中,尖峰的数量被设计为最小。这种电路的功耗非常低,通常比用于执行类似神经网络功能的图形处理单元的功耗低数千倍。然而,到目前为止,时间尖峰神经网络还不能满足图像分类的准确性要求。尖峰神经网络包括阈值单元网络,以及与权重相连的尖峰输入,这些与权重相连的尖峰输入被相加求和以创建与一个或多个阈值进行比较的值。不使用乘法功能。先前在分类任务中使用尖峰神经网络的尝试没有成功,原因是错误的假设以及随后常规卷积神经网络和体系结构中效率低的尖峰速率近似。在尖峰速率编码方法中,在常规卷积神经网络中的神经元之间传输的值相反地近似为尖峰系列,其中尖峰的数量表示为浮点或整数值,这意味着可能无法预期准确性增益或稀疏性收益。这样的速率编码系统也比时间编码系统慢得多,因为需要花费时间在速率编码系统中处理足够的尖峰以传输数字。本发明避免了这些错误,并且在复杂的数据集和基于帧的图像上返回了优异的结果。

发明内容

实施例包括一种系统,该系统包括:尖峰转换器,被配置为从数字输入数据生成尖峰;以及入站过滤器,被配置为从生成的尖峰中选择相关尖峰。实施例还包括存储器,该存储器被配置为以反向格式存储内核,并且还被配置为存储按通道索引的权重。实施例还包括分组收集模块,该分组收集模块被配置为收集相关尖峰直到在存储器中的分组中已经收集了预定数量的相关尖峰为止,并且通过分组中的通道和空间坐标来组织所收集的相关尖峰。最后,实施例包括卷积神经处理器,该卷积神经处理器被配置为在存储器中执行逐行步幅,其中,卷积神经处理器使用存储器内的暂存器。

实施例还包括一种方法,该方法包括:接收数字输入数据,并且由尖峰转换器从数字输入数据生成尖峰。实施例还包括:通过入站过滤器从所生成的尖峰中选择相关尖峰,以及将内核以反向格式存储在存储器中,其中,所述存储还包括存储按通道索引的权重。实施例还包括:收集相关尖峰直到在存储器中的分组中已经收集了预定数量的相关尖峰为止;以及通过分组中的通道和空间坐标来组织所收集的相关尖峰。最终,实施例还包括利用卷积神经处理器和暂存器,在存储器中使用逐行步幅以硬件执行卷积。

下面参考附图详细描述进一步的特征和优点以及各种实施例的结构和操作。需要注意的是,本文描述的具体实施例并非旨在进行限制。在此提出的实施例仅出于说明性目的。基于本文所包含的教导,其他实施例对相关领域的技术人员将是显而易见的。

附图说明

结合在本文中并构成说明书一部分的附图示出了本发明,并且与说明书一起进一步用于解释本发明的原理并使相关领域的技术人员能够实现和使用本发明。

图1示出了在常规的卷积神经网络中如何执行3通道(红色、绿色和蓝色)卷积的示图。

图2示出了用于单个5x5x1过滤器的1通道卷积的示例。

图3示出了速率编码和基于事件的等级编码之间的差异。

图4示出了全连接卷积层中的学习过程。

图5示出了卷积神经处理器和全连接神经处理器的三种不同的用户可配置模式。

图6是常规神经元状态存储方法的高级描述,该方法可以与本方法的某些实施例的创新性神经元状态存储方法形成对比。

图7示出了每个CNP处理事件的示例性方法。

图8显示了常规卷积算法和新的基于事件的卷积算法之间的比较。

图9示出了根据基于事件的卷积来处理分组中的尖峰的主要步骤。

图10示出了用于三元过滤器或二元过滤器配置的过滤器SRAM布局示例。

图11示出了反向内核。

图12示出了正在执行最大池化操作的步骤。

图13描述了使用过滤器和神经元项的基于事件的卷积。

图14示出了示例性K-WTA硬件实施的上下文。

图15示出了可以在大小上变化的组的大小。

图16示出了如何以“最佳报价”形式选择胜者。

图17示出了在“第一好报价”模式下的K-WTA的示例。

图18示出了该方案的实施例如何适合于SNN。

图19示出了生成输入到WTA块的过滤器结果的实施例的框图。

当结合附图时,根据下面阐述的详细描述,本发明的特征和优点将变得更加明显,在附图中,相同的附图标记始终标识相应的元件。在附图中,相似的附图标记通常表示相同、功能相似和/或结构相似的元件。在附图中首次出现的元件的附图由相应附图标记中最左边的数字指示。

具体实施方式

在本说明书中,将其中在每个事件的基础上增加或减少神经元电位的存储位置表示为电位。每个神经元都有20位带符号的电位。在神经元被完全处理后,神经元输出神经元激活。该激活是从1-4位起的,并且是无符号的。这些激活是传递到下一层的事件,该事件存储在不同的CNP上。神经元电位可以解释为未处理的神经元状态,而激活可视为已处理的神经元状态。

激活:激活是已处理的神经元状态。神经元处理事件分组(packet)中的多个事件。在所有事件被处理完后,这些事件经由转换从电位(未处理的神经元状态)转换为激活,该转换定义20位带符号电位如何转换为1-4位激活。这种转换称为激活功能。

DVS摄像机:DVS代表动态视觉传感器。DVS摄像机生成事件,如本方法的实施例那样,基于事件的处理器可以直接处理这些事件。大多数摄像机产生基于帧的图像。DVS摄像机的主要优点是低延迟和极低功耗操作的电位。

CNP:卷积神经处理器。每个NP是体现本方法的芯片中的处理核。每个NP可以是CNP或FNP,具体取决于用户配置,但不能同时是两者。CNP执行基于事件的卷积或可分离的卷积操作。

FNP:全连接神经处理器。这些处理核通过全连接的拓扑而连接到输入。

输入事件缓冲器/输入事件缓冲存储器:输入事件缓冲存储器保留传入事件,直到传入事件准备好被当前层处理为止。输入事件缓冲存储器可以用作单个缓冲器或双乒乓缓冲器。

反向内核格式:反向内核格式是存储单个过滤器内核的格式。内核是原始过滤器内核旋转180°。反向内核格式使CNP硬件可以快速计算事件-权重乘积应传递到的电位地址。

最大池化:最大池化是N个输入并产生具有最大输入值的单个输出的操作。空间池化通常仅在卷积的空间分量上进行。当提到最大池化时,其专门指的是2×2最大池化实施。2×2最大池化实施具有2×2=4个输入值和单个输出值。最大池化通常用于减少网络输入的维数,因此减少了参数数量和所需的计算量。

NP:神经处理器。可以将神经处理器配置为FNP或CNP。体现本方法的芯片具有多个NP(当前为80个)。

乒乓缓冲器:乒乓缓冲器是被分成两个独立缓冲器的缓冲器。第一个缓冲器(捕获缓冲器)捕获输入异步到达时的输入,而第二个缓冲器(处理缓冲器)包括NP当前正在处理的输入。乒乓缓冲器用于保留输入事件,因为乒乓缓冲器允许CNP在事件传入时异步收集事件。在处理缓冲器中处理了所有当前事件并且捕获缓冲器在分组中包括所有事件之后,捕获缓冲器会将所有事件传输到处理缓冲器以进行处理。

电位:电位是未处理的神经状态。在NP中,电位存储为20位带符号整数。在处理完所有事件后,神经元会使用激活功能将电位转换为事件。电位可能没有超过阈值而成为激活事件。在这种情况下,不会发送任何事件。

已处理的神经元状态:激活或神经激活的别称。

暂存器:CNP存储器的8个神经处理引擎中的每一个必须在事件被处理时存储神经元电位的一部分。暂存器存储器足够大,可以按每个神经处理引擎存储512个20位神经元电位。每个神经处理引擎都有其自己的暂存器。

未处理的神经元状态:电位或神经元电位的别称。

本说明书公开了包含本发明特征的一个或多个实施例。公开的实施例仅例示了本发明。本发明的范围不限于所公开的实施例。

所描述的实施例以及说明书中对“一个实施例”、“实施例”、“示例实施例”等的引用指示所描述的实施例可以包括特别的特征、结构或特性,但是每个实施例可能不一定包括特定的特征、结构或特性。而且,这样的短语不一定指相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,应理解的是,无论是否明确描述,结合其他实施例来实现这种特征、结构或特性是在本领域技术人员的知识范围内。

本发明的实施例可以以硬件、固件、软件或其任何组合来实施。本发明的实施例还可以被实现为存储在机器可读介质上的指令,该指令可以被一个或多个处理器读取和执行。机器可读介质可以包括任何机制,其用于以机器(例如,计算设备)可读的形式存储或传输信息。例如,机器可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光学存储介质;闪存设备;电、光、声或其他形式的传播信号(例如,载波、红外信号、数字信号等)等。此外,固件、软件、例行程序、指令可以在本文中描述为执行某些动作。但是,应该意识到,这样的描述仅仅是为了方便,并且这样的动作实际上是由执行固件、软件、例行程序、指令等的计算设备、处理器、控制器或其他设备引起的。

然而,在更详细地描述这样的实施例之前,指导性地提出可以在其中实施本发明的实施例的示例环境。

深度神经网络(DNN)被定义为人工神经网络,在其输入和输出层之间具有多个隐藏层,每个层都包含感知器。卷积神经网络(CNN)是一类执行卷积并且主要用于视觉处理的DNN。CNN在神经元之间共享突触权重。共享权重值的感知器中的神经元称为过滤器(也称为内核)。常规CNN中的每一层都是一个感知器。在本实施例中,基于事件的卷积在尖峰神经网络(SNN)中是使用基于事件的等级编码(rank coding)而不是感知器实施的,这在速度上具有优势并且大大降低了功耗。等级编码与尖峰事件的速率编码的不同之处在于,值按传输的尖峰的顺序进行编码。在速率编码中,传输的尖峰的重复率表示实数。CNN处理彩色图像,这些图像定义为:图像宽度(imageWidth)×图像高度(imageHeight)×通道数(channelNumber)。彩色图像通常具有3个通道(红色、绿色和蓝色)。CNN通常具有许多层,因此卷积层的输出就是下一个卷积层的输入。在讨论在本发明中实施的基于事件的卷积方法之前,提供了关于在基于感知器的CNN中如何进行卷积的描述,并且显示了在本发明中的CNN中的卷积结果和基于事件的卷积返回相同的结果。

图1显示了卷积方法100。示出了多个过滤器中的两个5×5过滤器120、130。过滤器#1(120)和#2(130)具有3个颜色通道内核170a、170b、170c,分别来自相应输入通道140、150、160的各个颜色,即红、绿、蓝。过滤器的宽度和高度小于图像,其中3×3、5×5和7×7是最常见的尺寸。过滤器阵列在图像区上移动。卷积的结果求和为单个值,以存储神经电位的阵列形式。虚线轮廓显示了过滤器#1卷积在输入上发生的位置。过滤器#1(120)的3×3电位阵列中较小的虚线框显示了这些输入求和的位置。

本发明的一个独特特征是在输入或权重或者输入和权重都被表示为三元(ternary)或1位值的情况下没有乘法。将这些值求和并与可变阈值进行比较,如果达到或超过阈值,则会导致出现尖峰事件。尖峰事件通过内部总线传输到网络的下一层。与现有技术相比,没有乘法导致明显的速度优势。

图2示出了在本发明的实施例中使用等级编码实施的三种卷积方法。在有效卷积中,由于过滤器区域围绕图像的中心移动,因此生成的图像区域将小于原始图像区域,从而不考虑边缘。在全卷积中,图像区域填充有零,从而允许包括边缘的整个图像区域被包括在卷积中。在相同卷积中,包括了边缘,但是卷积的区域与原始图像区域相同。

图3示出了计算机系统中的神经网络尖峰速率编码、时间尖峰等级编码、常规感知器神经元乘累加运算(MAC)和字符的常规二进制编码之间的差异。在本发明中,尖峰等级编码用于执行卷积神经网络的功能。

在顶部面板310中显示了速率编码。在多个积分周期中,在标记为t1的一个完整积分周期中显示了由多个突触中的两个输入突触320、330接收到的尖峰。在该积分周期期间,第一个突触接收到25个尖峰,而第二个突触接收到27个尖峰。所有突触的总和为52,这是神经元的模拟膜电位。随后,将诸如Tanh(n)或线性整流器(ReLU)函数的非线性函数应用于模拟输出值。生成的输出值作为一系列尖峰传输到下一个神经层中的一个或多个突触。积分时间很长,以允许出现足够的尖峰来接收值。在左下面板330中,示出了等级编码。在标记为t0到t5的六个积分周期,显示了多个突触中的四个突触接收到的尖峰。积分时间短,每个积分周期内的重复尖峰被忽略。第一个积分周期的积分值为3,随后四个积分周期的积分值为4。最后一个积分周期的积分值为2。这些值是神经元的模拟膜电位。如果模拟膜电位达到或超过阈值,则会将尖峰传输到下一个神经层中的一个或多个突触。在右中面板350中,显示了常规感知器中的多个神经元中的神经元的一部分的积分方法。标记为W11至W95的权重值的集合与输入值I0至I9相乘。将得到的值累计以形成神经元模拟膜电位。随后,将例如Tanh(n)或线性整流器(ReLU)函数的非线性函数应用于模拟输出值。得到的输出值将作为整数或浮点值传输到下一个神经层中的一个或多个突触。在右下面板370中,示出了常规的二进制编码方法以供参考。二进制编码方案在常规计算机系统中广泛用于编码字符和数字。布尔代数用于通过二进制编码的数字和字符进行计算。

图4示出了在本发明的实施例中使用的学习方法。显示了两个片上存储块及其内容。(1)将五个分别具有值5、1、0、3和4的神经元的模拟膜电位阵列从存储器中的数据结构加载到工作存储器中。这些值是从由神经元在突触处接收到的尖峰中得出的,这些尖峰包含非零的权重值。(2)选择电位高于学习阈值的神经元。在图示中为5。(3)事件分组从低到高依次排序。(4)该神经元的事件分组连同相关的权重向量被加载到存储器中。(5)在权重向量与事件分组值不相符的任何阵列中创建未使用的权重条目,在输入事件具有关联的零权重值的任何第二阵列中创建未使用的输入条目。(6)对未使用的输入阵列和未使用的权重阵列都进行重新排列,以在学习规则中创建随机性。(7)选择未使用的输入和未使用的权重中的第一位置。(8)之后,选择未使用的权重和未使用的输入阵列中的下一个条目,然后重复此过程,直到所有条目都被迭代为止。(9)将连接列表阵列加载到工作存储器中,以及(10-11)对连接列表阵列进行迭代,以去除具有最大电位的神经元ID。(12)未使用的尖峰是具有关联的权重值0的尖峰。(13)在将神经元ID添加到连接列表之后,将未使用的尖峰位置与未使用的权重值交换(14-15)。权重向量以排序格式存储(16)。

图5示出了神经处理器(NP)的组织。每个神经处理器包括多个神经元和第二多个突触。(A)四个神经处理器组成一个组,由三个卷积神经处理器(CNP1-CNP3)和一个全连接神经处理器(FNP1)组成,全连接神经处理器(FNP1)可以在初始化期间配置为第四个CNP(CNP4),或(B)配置为具有有限连接性(类型2)的全连接神经处理器。使用片外DRAM可以提高类型2的FNP连接性。在另一种配置(C)(类型3)中,FNP将使用同一组内CNP的所有资源。在这种情况下,FNP将不需要使用任何对独立应用程序都有利的外部存储器。多个组通过芯片上的公共网络(称为(D)中所示的网格)进行通信。输入事件放置在双缓冲器(乒乓缓冲器)中,其中一个缓冲器被处理而另一缓冲器被填冲。每个NP具有8个并行引擎,可以并行更新多个神经元和多个突触。突触权重存储在片上的权重SRAM中。8个并行引擎中的每一个还与公共网状总线通信。当神经元生成尖峰或将电位传输到下一个NP时,神经元的地址将被放置在总线上的分组中。在接收NP处,将分组接收到输入事件缓冲器SRAM中,该缓冲器也称为乒乓缓冲器,供该NP处理。图像中的t+n(其中n是值)表示事件的时序;t+30表示在时间t+30周期处在缓冲器中接收到信息,其中在时间t将值存储在缓冲器中。

如本领域中已知的,深度神经网络(DNN)已成为诸如图像分类、面部识别等任务的流行选择。但是,典型的实施方式导致需要对冯·诺依曼架构进行大量计算,这需要消耗大量能量并需要大面积。因此,人们已经看到了从常规的数字硬件转向实施神经算法的努力,包括各种类型的专用硬件。但是,专用硬件面临的主要挑战是对可伸缩性、效率和功耗的需求。

在响应于这些挑战而推导创新架构时,发明人确定了至少三个贡献:(a)基于事件的操作,(b)硬件的设计,其控制推送多少信息,从而控制过程的精度和功耗,以及(c)实际过程的设计以及神经网络中权重和激活的精度/位数,以便使用较少的存储空间。

位数的选择是神经网络体系结构中各层设计中的重要考虑因素之一。神经网络中常用的默认位数为32位,乘数为32位乘32位。可以使用较少的位,从而导致需要较小的功耗和芯片面积,但会降低精度。因此,1位×1位乘数将代表位选择的最低限制。初步实验显示,使用三元权重可以达到92%的精度。发明人的实验还显示,相对于精度的低减少(与常规的32位×32位方法相比),4×4位乘法器提供了最佳点,而没有显著增加1位×1位解决方案所需功耗和芯片面积要求。最佳点选择可以使所使用的总体参数数量减少到1/3至1/4倍。在各个实施例中,在不同的层上使用的位数可以不同,即,在这些实施例中,可以逐层选择要使用的位数(1×1、2×2、4×4等)。

为了在尖峰神经网络的纯硬件实施中取得进步,发明人试图减少操作次数。在各种实施例中,该方法是基于事件的,并且尖峰被编码,而不是每个卷积步幅被编码。尖峰仅在存在激活时发生,并且由于仅在尖峰发生时才处理事件(而不是在每次卷积步幅发生时),因此事件少得多。由于事件较少,因此操作较少。在本公开典型的实施例中,通过采用创新的方法,可以将操作计数减少到1/3或1/4倍。

在进一步的创新进步中,发明人试图使用需要较少参数(例如权重)的特定卷积类型。由于这些参数需要存储才能执行必要的神经计算,因此可以减少对物理存储器条目的需求。尽管更多地涉及这种可分离卷积中涉及的计算,但是其他计算是可管理的,并导致参数和相关物理存储器条目的数量大大减少。物理存储器条目数量的这种减少使得更大得多的神经计算能力可以适合特定芯片的给定RAM区。

常规的神经网络实施通常需要大量的存储器(例如,SRAM)以保存每个神经元处的电位值。在典型的神经网络中,由于神经元数量众多,因此大部分可用存储器(例如SRAM)用于保存与神经元相关的电位。因此,在SNN神经网络的硬件实施中可用的神经元总数最终受到可用存储器(例如SRAM)的限制。为了在尖峰神经网络的仅硬件实施中取得进步,发明人试图通过保存激活级别而不是电位来不同地使用存储器。激活水平的大小通常需要12至20位来捕获其值,而尖峰可仅以1位、2位或4位被捕获。这样导致位需求减少到1/6倍,大大提高了有效的存储能力。

神经网络的常规实施通过遵循其结构,一次一层地执行网络中的计算。这种方法会生成大量中间数据,随着计算的进行,这些中间数据会稳定地输出到存储器中。一层完成后,中间数据将被发送回相同的计算硬件,然后重复该过程,直到所有层中的计算结束为止。随着神经网络大小的增加,必须在计算硬件和存储器之间传输的中间数据量也随之增加。在另外的进步中,发明人已经采用了在多层上计算的融合。发明人已经对计算进行了重新构建,以使得可以一起计算多个层,而不是在进行下一层处理之前将每个层处理完成,从而避免了在存储器中存储或获取中间数据的需要。简而言之,融合需要两层或更多层的操作,并将这些操作融合为一个操作。

现在转向对改进的定量评估,提供了对定量改进的三个领域进行描述:(1)卷积神经处理器(CNP)内“神经元电位”表示的存储效率;(2)基于事件的卷积算法方法;即事件的过滤,过滤器的排序以及对神经元电位的递增或递减的单独应用;和(3)一种新的无监督学习算法,用于神经网络中的卷积运算。

在描述神经元如何存储在CNP上的细节之前,先描述各种术语以及CNP处理事件的方法。在每个事件的基础上增加或减少存储有神经元电位值的存储位置简称为电位。举例来说,每个神经元可具有20位带符号的电位。神经元在完全处理后,输出神经元激活。同样,举例来说,该激活可以是从1位至4位起的,并且是无符号的。这些激活是被传递到神经网络中下一层的事件,该事件存储在不同的CNP上。可以将神经元电位解释为未处理的神经元状态,而可以将激活视为已处理的神经元状态。如果到特定CNN层的输入的尺寸为M×N×C,其中M为输入高度,N为输入宽度,C为输入的输入通道数,且过滤器的尺寸为H×W×C,(H和W是过滤器的高度和宽度),并且该层中有F个过滤器,则由此得到的电位总数(以及激活数)为M×N×F。发明人的一项重要创新是,少量的20位带符号电位临时存储在该层所在的CNP中,而所有激活都存储在各CNP中,这些激活将作为事件传递到目标层。因为仅存储了20位电位的一小部分,所以神经元状态可以非常高的密度存储。

图6是传统神经元状态存储方法的高级描述,其可以与本方法的某些实施例的创新性神经元状态存储方法形成对比。广义上讲,未处理神经元状态的全部不是在处理单个输入时一次存储,而是一次存储其一小子集。然后,将存储的未处理神经元状态的子集用新的未处理神经元状态覆盖,直到完成与输入数据关联的所有计算为止。通过采用这种方法,利用图6B中的本方法来存储未处理神经元状态的存储器的数量小于图6A中的传统方法中使用的存储器的数量。可以使用本方法的硬件实施来处理相同数量的未处理神经元状态。

现在更详细地描述神经元状态存储器管理方法,三个主要操作要完全处理,这些操作必须针对事件的分组或集合来执行。前两个操作针对每个事件发生。第三个操作针对每个神经元发生。在处理之前,事件由神经元进行排序。对于每个事件,如果权重值或激活都大于三元,则必须首先将事件值乘以权重值(步骤1)(使用1位或三元位时,不需要乘法运算),并且得到的乘积然后必须被添加到与正计算的神经元相对应的电位上(步骤2)。第三,每个电位值都被赋予一个独特的函数,该函数将20位带符号的电位转换为1位至4位无符号的激活(在三元激活的情况下为有符号的激活)。接下来是对每个步骤何时何地存储神经元状态的描述。

图7A是每个CNP处理事件的示例性方法。在特定示例中,每个CNP具有并行运行的8个神经处理引擎。这些神经处理引擎中的存储器用于存储电位并被重复使用。在每个CNP的8个神经处理引擎上执行步骤1至3。总事件的一小子集在8个神经处理引擎上同时进行处理。在此期间,8个神经处理引擎中的每一个都有足够的存储器来存储512个20位带符号的电位。该存储器称为神经处理引擎暂存器。那么,所有8个神经处理引擎上的组合暂存器(图2中表示有效卷积的矩形)为512*20*8=81,920位。这意味着每个神经处理引擎一次处理512个神经元。在处理了512个神经元之后,神经处理引擎将1至4位激活事件放置在网格上,以传递给CNP,该CNP正在运行这些事件所连接的层。1至4位激活事件被路由到目标CNP,并存储在此CNP输入事件缓冲存储器中(图2中表示全卷积的矩形)。输入事件缓冲存储器的大小为344,064位。因此,用于存储所有神经元状态的每个CNP的存储器总量为81,920位+344,064位=425,984位。如本领域普通技术人员将理解的,以上数字是示例性的,而不是本发明实施例的限制值。

图7也是CNP如何处理事件(在乒乓缓冲器模式下)的示例。乒乓缓冲器的面向外部的缓冲器(输入事件RAM中的顶部框)在传入事件(参见710a)从网格中传入时将其放置在其对应的位置。最终接收到“分组结束信号”(参见710a最右侧),导致事件(参见720a)从面向外部的缓冲器移动到面向内部的缓冲器(输入事件RAM的底部框)。这些事件由8个NP引擎处理。一旦计算出输出事件(参见730a),就将其放置在网格上以路由到下一个NP,因此无需存储20位电位。时间单位是任意的,仅用于表示事物发生的顺序。

有用的品质因数(figure of merit),即每单位存储器可表示的神经元总数,可用于捕获本方法的各种实施例的进步的定量利益。如果神经元的未处理状态(电位)和已处理状态(激活)都在事件处理计算过程中的某个时间点上存储在存储器(例如片上存储器)中,则定义为表示该神经元。存储器,指的是仅涉及专用于保持神经元状态的存储器,而不是整个片上存储器。

在计算品质因数的各种方案时,应考虑两个因素,作为品质因数计算的一部分。首先,在这些示例性计算中,激活事件的大小范围为1位至4位。其次,CNP可以配置为使用单缓冲器输入事件缓冲器或双缓冲器(也称为乒乓)输入事件缓冲器。单缓冲器可以处理双缓冲器可处理的事件数量的两倍,但代价是增加了延迟。考虑到这两个因素,可以制定高端神经元密度方案和低端神经元密度方案。

在高端神经元密度方案中,激活事件仅为1位,并且正在使用单缓冲器输入事件缓冲器。这意味着整个输入事件缓冲存储器可以专用于存储1位激活事件,这意味着可以表示344,064个神经元。但是,在计算使用的总存储器时,需要包括暂存器的成本。那么,在高端神经元密度方案中,神经元与存储器的比率为:

表示的神经元/单位存储器=(344,064个神经元)/(425,984位)=(344,064个神经元)/(425,984位)=0.81神经元/位

在低端神经元密度方案中,激活事件是4位,并且正在使用双缓冲器输入事件缓冲器。双缓冲器意味着与单缓冲器情况一样,只有输入事件缓冲器存储器的一半可用。用4位激活代替1位激活也意味着每个激活都需要4位存储,而不是1位,这将可以存储的激活总数减少到1/4倍。每个单位存储器可以表示的神经元总数减少到1/8倍:

表示的神经元/单位存储器=(344,064个神经元)/(8*425,984位)=(43,008个神经元)/(425,984位)=0.10神经元/位

这两种方案的值的范围是0.81神经元/位至0.10神经元/位。如果人们能够使用较小的暂存器和/或小于20位的电位以及1位的激活,那么大概可以达到更高的密度。如果不使用压缩来存储激活,则实施例的实际神经元密度限制似乎接近1神经元/位。在这种情况下,将一次计算一个神经元的电位,并将单个寄存器作为暂存器。如果利用某种类型的压缩,则理论极限可能会大于1。但是,对激活进行编码或解码的计算成本可能会超过收益。

在各种实施例中,可以通过各种类型的存储器来实现存储器,存储器包括易失性SRAM以及非易失性存储器技术。

下一个品质因数,捕获了CNP中基于事件的卷积的进展。CNP被设计为以有效的方式处理事件并递增(或递减)每个神经处理引擎的暂存器中的相应电位。为了确保神经处理引擎可以快速且并行地处理事件,许多优化措施已集成到本方法的各种实施例中。

图8显示了传统卷积算法和新的基于事件的卷积算法之间的比较。在图8A中,必须计算所有条目,即使其值为零。卷积过滤器(参见820)在输入上“滑动”。请注意,在传统的卷积算法中,一次计算给定电位条目的所有贡献。图8B显示了基于事件的卷积方法。基于帧的图像必须首先转换为基于事件的图像。这可以通过预处理或使用新的基于事件的卷积算法通过芯片上的专用尖峰编码区来完成。该算法可以直接处理来自DVS摄像机的基于事件的图像。预处理输入中的灰色条目(参见860)是必须处理的事件。请注意,基于事件的卷积必须执行的计算数量与事件数量(灰色方块)成正比。术语事件稀疏度是事件与像素的比率,即事件稀疏度。请注意,并非同时计算了对给定神经元电位的所有贡献。两个事件可能会影响同一神经元,因此,在基于事件的卷积计算可以称为完成之前,必须处理所有事件。

在图8中,假设输入是基于帧的图像。灰色的输入正方形(参见810、860)表示必须计算的条目。仅显示单个输入通道的计算。A部分显示传统卷积必须通过在输入图像上滑动权重内核(参见830)来计算输入中的每个条目。浅色正方形(参见850、890)表示电位阵列中的条目,深色条目(参见850、890)对应于当前正在计算的条目。B部分显示了基于事件的卷积。首先,请注意,必须通过预处理将基于帧的图像转换为基于事件的图像。过滤器必须旋转180°。这允许硬件将权重和输入的乘积传递到当前的电位位置。在此图片中,基于事件的卷积只需要图中所显示的4个计算。

接下来,将描述执行基于事件的卷积的过程,然后描述关键的创新。注意,在本说明书中,术语“事件”和“尖峰”被同义地使用。同样,请记住,事件由四个信息组成:事件的x位置、事件的y位置、事件的通道、以及事件的1位至4位值。事件被组织为称为分组的事件组。

示例性卷积神经处理器(处理的基本单元)的结构的概述包括以下块:(1)入站(inbound)过滤器块,(2)分组收集块,(3)过滤器存储器和内核,以及(4)卷积运算。在这些块之前,存在尖峰转换器,获取原始格式的输入数据,并将其转换为可由后续块处理的尖峰。

第一个块,即入站过滤器块,其目的是为每个神经元选择关注的尖峰。每个神经元都具有其关注的输入的特定部分,因此,仅当尖峰位于其关注区内时,神经元才激活。在彩色图像中,用于每个神经元的过滤器的实施例可以具有三个RGB通道。

分组收集块随时间累积输入的尖峰,直到存在足够的尖峰以形成要处理的分组为止。分组是固定预定大小的事件(尖峰)的集合。分组收集模块包括存储器,存储器可以是SRAM或其他存储器的形式,在分组形成时在存储器中存储分组。分组是预定义的、固定大小的事件的集合。在存储器内,事件(尖峰)按通道(例如,在彩色图像数据的情况下为RGB)组织,并按二维坐标排序。换句话说,可以基于C、I、J索引访问事件(尖峰),其中C表示通道,而I、J表示图像数据的二维空间坐标的索引。

下一个块具有过滤器存储器和内核,其中过滤器存储器存储用于卷积运算的权重(参数)。

下一块执行卷积运算,包括求和,以提供最终结果。在一个实施例中,卷积使用有效的硬件实施,从而导致存储器需求的减少以及神经网络内的层上所需的神经元数量的减少。这种减少导致扇入和过滤器数量形成网络的总体局限性。

通过来自输入分组的数据的提供顺序使得有效的硬件实施成为可能。此顺序使每个计算可以专注于逐行计算。因此,这种有效排序的净效果是:在完成一行之后,操作中的下一个步幅是向下一行。因此,可以将行重新用于下一个输入行尖峰。净效果是:在计算中不再需要最上面的行,因此仅需要少量的存储器用于存储电位。总而言之,该排序意味着只需一个缓冲器的存储,而不必存储整个电位集,这大大减少了每个卷积神经处理器的存储器需求。然后将一次计算的结果转发到下一个卷积神经处理器。

更多细节在图9示出中,图9显示了执行基于事件的卷积的主要步骤。在步骤1中,入站(IB)网格传递来自其他核心的事件。如果在步骤2中未在当前CNP上找到x、y位置,则将事件过滤掉。如果事件x、y位置确实属于CNP,则在必要时将其x和y坐标转换为本地CNP坐标。在步骤3中,收集所有事件,直到接收到分组结束(EOP)信号为止。在接收到EOP信号时,交换输入事件缓冲器(如果是乒乓缓冲器)。请注意,池化操作(行池化)的第二部分也在此步骤上执行。在发送事件之前进行列池化。仅当最大池化操作与特定层的输出关联时,才进行行池化和列池化。因此,某些层执行池化操作,而另一些层则不执行池化操作。

在步骤4中,读取事件的通道并将其用作偏移地址以索引到过滤器SRAM(其中存储权重)中。接下来,从过滤器SRAM存储器复制与事件通道对应的所有过滤器内核。可以这样做是因为过滤器在过滤器SRAM中的排列方式。在图10中显示。

图10是用于三元过滤器或二元过滤器配置的过滤器SRAM布局示例。对于三元过滤器和二元过滤器,正值和负值都分为不同的过滤器。多位过滤器值(未显示)也是如此。需要注意的重要一点是,包含神经网络权重的过滤器是按通道排列在过滤器SRAM存储器中的。这种配置允许硬件仅基于输入通道来快速索引(查找)正确的过滤器内核。由于过滤器内核在存储器中连续排列,因此可以将其有效地复制到神经处理引擎以进行卷积计算。

因为过滤器可以分布在多个CNP上,所以计算开始和结束过滤器索引。每个神经处理引擎一次处理一个过滤器。因此,CNP中的前8个过滤器将由8个神经处理引擎处理。现在,这8个神经处理引擎具有适当的过滤器内核地址,并且可以在步骤5中执行以下操作:

1)每个神经处理器初始化(清零)暂存器中的电位。暂存器布置为8行、64列,可临时存储512个20位电位。暂存器中的电位按行主要顺序排列,因此列条目在存储器中是连续的。

2)从输入事件缓冲器按x、ch、y顺序读取输入事件。这允许神经处理引擎一次处理所有与单个电位有关的事件。

3)神经处理器开始处理事件。每个引擎:

a.获取第一个事件的通道并加载与以下内容对应的1x1、3x3、5x5或7x7内核:

i.当前神经处理引擎正在处理的过滤器

ii.来自事件的通道。

b.然后找到内核的非零行。

c.加载单个非零内核行

d.使用反向内核格式计算每行的电位和输出事件SRAM地址(参见图6)。

e.将所有内核行元素乘以事件值(1位至4位值)

f.使用来自d部分的地址,通过乘积递增相应的电位。

g.在为当前过滤器处理所有事件后,将电位转换为输出激活(事件)

h.如果输出激活不为零,使用“真”或1条目更新状态触发阵列。该阵列是已触发且必须将其激活值发送到下一层的神经元的列表。

图11示出了反向内核。神经处理引擎将反向的内核元素位置与事件的本地x、y坐标一起使用,以找到必须更新的电位的地址。过滤器内核必须以反向内核格式存储,以使神经处理内核快速计算电位的地址。

步骤6包括检查状态触发阵列以查看神经元是否已经触发,并计算神经元的x、y、ch。如果在此层中启用了池化,则此时实现池化的逐列分量。在此重要的是要注意,从计算的角度来看,分两步实施最大池化操作(请参阅术语表)是有效的。图12显示了正在执行最大池化操作的步骤。步骤7将CNP本地的激活事件x、y、ch坐标转换为全局网络坐标,并找到要将该事件传递到的所有NP。最后,在步骤8,事件通过路由网格发送到相关的NP。

图12是正在执行的2x2最大池化操作的示例。在步骤3中,对1x2激活阵列执行行池化以产生单个1x1激活,该激活在步骤4中用于计算卷积。步骤5生成一个新的2x2激活阵列。步骤6执行列池化以将2x2激活阵列减少为1x2激活阵列。

基于事件的卷积实施的关键创新是:

分两部分执行2x2最大池化操作;其中,在基于事件的卷积算法的步骤3中进行行池化,在步骤6中进行列池化。

在步骤3上执行行池化是有效的,因为无论何时计算行的两个元素(激活)都将其发送。如果输入事件缓冲器中已经存在一个元素,则第二个元素仅需要将自身与当前元素进行比较,以查看第二个元素是否大于当前元素。如果是,那么第二个元素仅用其自己的值覆盖当前元素。这允许硬件以异步方式执行行池化。

在步骤6上执行列池化,使CNP只在网状网络上发送4种可能元素中的一半。这减少了网状网络上的事件流量。

包含神经网络权重的过滤器按通道排列在过滤器SRAM存储器中。这种配置允许硬件仅基于输入通道来快速索引(查找)正确的内核。内核过滤器按通道的连续排序还使内核过滤器可以有效地从过滤器SRAM复制到执行卷积运算的8个神经处理器引擎。

在步骤5中,当在每个神经处理器引擎中计算卷积时,过滤器内核以反向内核格式存储,因此可以快速计算受影响神经元(即神经元的电位)的坐标。

接下来的描述讨论了用于设计CNP中基于事件的卷积的一些可能的品质因数(或可能的计算方式)。品质因数的初始思想基于尺寸为M×N×C的输入图像的大小、图像上的事件总数以及在图像上可执行卷积运算的速度之间的关系,其中M是图像的高度、N是图像的宽度、C是图像的通道数量(对于彩色图像通常为3)。讨论从以下基本思想开始:对于具有每个像素很少事件(又称为高事件稀疏度)的大(M、N和C)图像,基于事件的卷积实施将比任何传统卷积运算方法更快地计算卷积。

然而,这种方法存在一些挑战。首先,因为实施是如此具体,所以某人可能会使用可以类似执行的不同的基于事件的卷积实施。仅当专利的范围不足以包括所有基于事件的卷积实施(其产生给定的品质因数)时,这才是问题。其次,大多数摄像机技术和图像处理方法都是基于帧的(而不是基于事件的),因此本身就没有事件稀疏性。在品质因数讨论中还必须做出其他假设,以包括基于帧的图像。第三,对于当前在计算中引起关注的问题,图像大小和事件稀疏性之间的关系使得传统的卷积方法比基于事件的方法更快(但效率较低,功率较高)。这是因为可以使用GPU和其他专用硬件设备并行化传统卷积运算。

建立以效率或功耗为中心的品质因数似乎更合适。为此,首先将突触操作(SO)定义为一整数对于表示神经元电位的另一个整数值的增加或减少。功率计算(未显示)表明硬件花费5pJ/SO(微微焦耳/突触操作)。这是效率的度量,与网络结构或输入数据无关,但特定于CNP设计。硬件效率越高,此数字越小。对于不同的卷积内核大小,此数字略有不同,但是选择接近最坏的情况。因此,品质因数用于以5pJ/SO的效率执行基于事件的卷积的系统。可以将这个品质因数与先前的品质因数配对,因为他们都是用于基于事件的卷积。

所提出的新颖的无监督学习规则由对常规学习规则的简单但重要的修改的集合组成。简而言之,新颖的无监督学习规则是将常规学习规则应用于卷积连接拓扑结构,以代替全连接层拓扑结构,为此,对常规学习规则进行了额外的修改,以确保也不会经常学习相同的模式。首先描述原始的常规算法,然后描述更改,这些更改允许将常规学习规则应用于卷积连接拓扑。

常规的无监督学习规则发现数据中的重复模式。其抑制噪声,通常只需要将模式重复2-5次。常规规则可以执行降维,这是因为神经元学会了仅对单个模式变得敏感,因此仅发送一些事件来指示是否已检测到特定模式。常规学习规则检测模式,因为常规学习规则只能检测分组内的模式,该分组是时间上彼此接近的事件的集合。常规学习规则假定二元突触(权重)可以为0或1,并且二元或三元激活的值可以为0、1,而在三元情况下为-1。该描述将考虑二元权重/二元激活的情况。

从本质上讲,常规学习规则由M类输入组成,这M类输入排列在长度为N的事件的分组中。N必须小于M。下一个将P个神经元连接到所有M个输入,但要注意每个神经元可能只有值为1的W个连接(权重),值为0的M-W个连接。为形成分组,可以将N个唯一事件放置在长度为M的位阵列中,并如表1所显示,条目“1”表示事件存在,而条目“0”表示事件不存在。

表1具有M=14和N=4的单个事件分组

每个神经元通过计算W(神经元的权重)与输入分组之间的共同事件数来“处理”分组。这种计算是有效的,因为其可以使用逻辑的逐位与(AND)函数完成。匹配数是神经元电位。表2以粗斜体显示了匹配项。因为神经元将电位转换为二元激活,所以每个神经元都有不同的触发阈值(T

表2显示了3个神经元的权重阵列,处理一个分组(W=3)时。匹配项以粗斜体显示。匹配数是最后一列中显示的电位值。

常规学习算法如下。在所有神经元都计算出其电位之后,每个神经元都将其电位与T

对于每个神经元,学习速率n

T

n

其中dn

在描述新颖的无监督学习规则之前,需要定义一些术语。图13描述了使用过滤器和神经元项的基于事件的卷积。过滤器是权重的3D集合(参见1320、1330),而神经元是单个过滤器对输入的特定空间位置的特定应用。单个过滤器将应用于输入的每个空间位置,并生成神经元电位条目的整个平面。在讨论新型无监督学习规则时,重要的是要理解这两个概念之间的区别。

过滤器是权重的3D集合,该集合具有空间和通道范围。每个过滤器都有不同的权重集。过滤器参见1320、1330,尺寸为3×3×3(高度=3,宽度=3,通道=3)。神经元可以定义为应用于输入的特定x、y位置的过滤器,如下半部分所示。单个神经元在浅色显示的电位阵列中具有单个条目(参见1350)。当在输入的每个空间位置应用单个过滤器(居中)时,生成每个电位阵列平面。从过滤器1的权重(应用于在输入左下方显示所表示的输入位置)中,计算出电位阵列中灰色的单个神经元条目(参见1350)。虚线(参见1340)表示以事件为中心的神经元的接收场。

可以将新的无监督学习规则描述为基于常规学习规则,并具有以下主要变化:(1)常规学习规则允许在其学习阈值T

需要特别注意的是,当前的实施方式进一步在单个事件分组上将允许学习的神经元数量限制为每CNP一个神经元。经过一些实验,发现神经元仍然很快学会重复模式。当前的硬件设计使用此限制,因为学习规则的权重交换分量尽管简单,但实施起来仍然相对昂贵。但是,要明确一点,我们想同时取得这两个版本的专利。

在图13中显示了与神经元位置的接受场重叠的输入事件的子集。虚线(参见1340)内的事件是在学习规则权重交换期间将使用的事件。注意,图13中的虚线扩展到所有通道,而不仅仅是当前通道。在图13的示例中,这意味着大小为3×3×3的过滤器1具有27个权重,并且在学习规则的权重交换部分期间将使用27个相应的输入事件。现在,可以看到3×3×3的权重和输入可以展平为两个1×1×27的线性位阵列。现在可以将原始的常规学习规则权重交换算法应用于这些位阵列。

该创新是一种在基于事件的卷积神经网络架构上执行无监督学习的系统和方法。被组合为独特系统和方法的两个组件是:(1)在设备上使用无监督学习算法;(2)在同一台设备上同时使用基于事件的卷积神经网络和学习算法。

由于在神经形态工程和机器学习这两个研究团体之间进行的研究类型,因此发明人的方法是独特的。神经形态工程研究人员通常利用无监督的学习算法以及基于事件的系统。但是,他们很少利用基于事件的卷积。机器学习研究人员会定期使用有监督和无监督的学习算法以及卷积运算。但是,他们很少尝试使用基于事件的算法。本方法的独特性源于以下事实:该系统弥合了两个不同研究团体之间的鸿沟。

胜者为王(Winner Takes All,WTA)针对每个位置挑选最多一个胜出特征。在较大的特征场中,可能会丢弃过多的相关信息。如果没有WTA,某个位置的最适合特征仍然会不断增加,但也会伴随着不太适合特征的增加。那些不太适合的特征会耗费功率和处理时间。通过在策略性选择的组中应用WTA,可以消除不太适合的特征,同时保留所有最适合的特征。

SNN的功率消耗和处理速度与SNN中的尖峰的稀疏性紧密相关。本发明的目的是通过策略性地将来自输入流中每个位置的过滤器分组并在那些组上应用WTA技术来减少传播的尖峰的数量。在图14中示出了K-WTA硬件实现的上下文。如果内核是预定义的结构,则可以手动设计WTA分组,或者可以使用聚类算法来定义具有相似或不相似特征的组。组的大小可以依大小而改变(图15)。

K-WTA可以采取多种模式进行操作。图16示出了如何以“最佳报价”形式选择胜者。

对于某些功能,只需要知道组中的任何一个电位都在阈值以上即可。对于不相似的特征,情况将是这样,其中只有一个特征被期望在阈值以上。在这种情况下,仅通过处理组中的过滤器直到其中任何一个在阈值以上,就可以提高处理速度并降低功率。为了减少偏差,每次通过都会更改每组中电位的顺序。图17是“第一好报价”模式下的K-WTA的示例

对于上下文,图18显示了该方案的实施例如何适合于尖峰神经网络架构。在图19中显示了生成输入到WTA块的过滤器结果的实施例的框图。

对特定实施例的前述描述将如此充分地揭示本发明的一般性质,以至于其他人可以通过应用本领域技术范围内的知识(包括引用和通过引用并入本文的文件的内容)来容易地修改和/或适用于各种应用,例如特定实施例,而无需过度实验,而不背离本发明的一般概念。因此,基于本文提出的教导和指导,这样的改编和修改旨在位于所公开的实施例的等同形式的含义和范围内。应当理解,本文的措词或术语是出于描述而非限制的目的,使得本说明书的术语或措辞将由技术人员根据本文提出的教导和指导、结合本领域技术人员的知识来解释。

尽管上面已经描述了本发明的各种实施例,但是应该理解,其已经通过示例而非限制的方式给出。对于相关领域的技术人员将显而易见的是,可以在不脱离本发明的精神和范围的情况下在形式和细节上进行各种改变。因此,本发明不应被任何上述示例性实施例所限制,而应仅根据所附权利要求及其等同物来限定。

相关技术
  • 可重构和时间编码卷积尖峰神经网络中基于事件的特征分类
  • 连续时间尖峰神经网络基于事件的模拟
技术分类

06120112288779