一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

改进的尖峰神经网络的制作方法

2021-10-24 06:43:00 来源:中国专利 TAG:神经网络 申请 尖峰 改进 引用

改进的尖峰神经网络
1.本技术为国际申请号为pct/us2019/059032,国际申请日为2019年10月31日,发明名称为“改进的尖峰神经网络”的pct申请于2020年3月30日进入中国国家阶段后申请号为201980004791.6的中国国家阶段专利申请的分案申请。
2.相关申请的交叉引用
3.本技术要求于2018年11月1日递交的题为“改进的尖峰神经网络”的第62/754,348号美国临时申请的权益,其出于所有目的通过引用整体结合于此。
技术领域
4.本方法总体上涉及神经电路工程,并且更具体地,涉及用于片上低功率高密度自主学习人工神经网络的系统和方法。


背景技术:

5.长期以来,人工神经网络的目标是复制生物神经网络(大脑)的功能,但取得的成功有限。用于人工神经网络设计的“蛮力”硬件方法既繁琐又不充分,并且远远无法实现复制人脑功能的期望目标。因此,需要一种能够实现自主的、可重构的尖峰神经网络,该网络可扩展到非常大的网络,但仍可装配在芯片上,同时可快速地从各种可能的输入数据和/或传感器源进行推理。


技术实现要素:

6.本文提供了用于改进的尖峰神经网络(snn)的系统、设备、制造产品、方法和/或计算机程序产品实施例、和/或其组合和子组合,其被配置为学习并执行从输入流中对特征的无监督提取。一些实施例包括神经形态集成电路,该神经形态集成电路包括尖峰转换器、可重构的神经元结构、存储器和处理器。尖峰转换器被配置为从输入数据生成尖峰。可重构的神经元结构包括神经处理器,该神经处理器包括多个尖峰神经元电路。尖峰神经元电路被配置为基于从尖峰转换器接收的尖峰和神经网络配置执行任务。存储器包括神经网络配置,该神经网络配置包括电位阵列和多个突触。神经网络配置还定义了多个尖峰神经元电路和多个突触之间的连接。处理器被配置为基于配置文件修改神经网络配置。
7.本文中还描述了用于学习和执行从输入流中对特征的无监督提取的实施例。一些实施例用于在尖峰神经元电路处接收与突触集相对应的尖峰位集。尖峰神经元电路对尖峰位集中的尖峰位和突触集中的突触的突触权重应用逻辑与(and)函数。基于该逻辑and函数的该应用,尖峰神经元电路使膜电位值增量。然后,神经处理器确定与尖峰神经元电路相关联的膜电位值已达到学习阈值。之后,基于对尖峰神经元电路的膜电位值已达到学习阈值的该确定,神经处理器执行尖峰时间依赖可塑性(stdp)学习功能。
8.提供本发明内容仅出于说明一些示例实施例的目的,以提供对本文所述主题的理解。因此,上述特征仅是示例,并且不应被解释为使本公开中的主题的范围或精神缩小。根据以下详细描述、附图和权利要求,本公开的其他特征、方面和优点将变得显而易见。
附图说明
9.附图被并入本文并且形成说明书的一部分。
10.图1是根据一些实施例的神经模型的框图。
11.图2a是根据一些实施例的神经形态集成电路的框图。
12.图2b是根据一些实施例的在图2a中的神经形态集成电路的框图。
13.图3是根据一些实施例的用于下一层的输入尖峰缓冲、分组和输出尖峰缓冲的流程图。
14.图4是根据一些实施例的被配置为尖峰卷积神经处理器的神经处理器的框图。
15.图5是根据一些实施例的被配置为尖峰完全连接神经处理器的神经处理器的框图。
16.图6a是根据一些实施例的将尖峰分组成尖峰分组的示例。
17.图6b是根据一些实施例的在图6a中的尖峰分组的示例表示。
18.图7是根据一些实施例的选择使膜电位计数器哪些位增量或减量的方法的示例。
19.图8示出了根据一些实施例的stdp学习方法的权重交换步骤。
20.图9示出了根据一些实施例的在尖峰卷积神经处理器中使用的卷积方法。
21.图10示出了根据一些实施例的在深度为1的8
×
8像素矩阵中的卷积的符号表示。
22.图11示出了根据一些实施例的卷积的符号表示,该卷积涉及2个尖峰通道、两个3
×
3逆向卷积内核以及作为结果的膜电位值。
23.图12示出了根据一些实施例的在图11的通道1和通道2上的神经元中生成的作为结果的尖峰。
24.图13示出了根据一些实施例的尖峰神经网络卷积运算。
25.图14示出了根据一些实施例的将八个定向滤波器神经元卷积应用于输入图像的结果。
26.图15示出了根据一些实施例的基于dvs尖峰的卷积和基于帧的卷积之间的相似性。
27.图16示出了根据一些实施例的yaml配置文件的示例。
28.图17示出了根据一些实施例的配置寄存器,该配置寄存器包括扫描链,该扫描链定义了每个尖峰神经元电路和每一层尖峰神经元电路的配置和连通性。
29.在附图中,相似的附图标记通常指示相同或相似的元件。额外地,通常,附图标记的最左边的数字标识出了该附图标记首次出现于其中的附图。
具体实施例
30.本文提供了用于改进的尖峰神经网络(snn)的系统、设备、装置、方法和/或计算机程序产品实施例,和/或其组合和子组合,其被配置为学习和执行从输入流中对特征的无监督提取。本文的实施例包括提供改进的snn的独立神经形态集成电路。神经形态集成电路具有几个优点。首先,神经形态集成电路尺寸紧凑。例如,神经形态集成电路在硅芯片上集成了处理器复合体、一个或多个传感器接口、一个或多个数据接口、尖峰转换器和存储器。这使得可在硬件实现中有效利用硅区域。其次,使用用户定义的配置文件可以将神经形态集成电路重新编程用于许多不同的任务。例如,使用用户定义的配置文件可以对神经形态集
成电路中的多个层与神经处理器之间的连接进行重新编程。第三,神经形态集成电路提供低延迟输出。第四,神经形态集成电路消耗少量的功率。例如,当执行相同的任务时,神经形态集成电路比同等的人工神经网络(ann)消耗的功率少两个数量级。而且,神经形态集成电路可提供接近或等于现有技术的精度。最后,神经形态集成电路提供了改进的学习方法,该方法既具有内置的动态平衡能力,又具有突触权重向进入数据模式的快速收敛。
31.ann通常由以在设计时被确定的架构为特征的人工神经元组成。神经元可松散地模拟生物脑中的神经元。神经元可以是硬件电路,也可通过编程定义。ann的功能可由层中神经元之间的连接、神经元层之间的连接、突触权重以及对输入数据进行预处理以适应预定义的输入范围来定义。
32.在ann中,可使用乘积累加(mac)运算来执行推理。在mac运算中,可以使进入数据值乘以存储在存储器中的多个突触权重。例如,ann可对每个图像执行多次mac运算(例如,1.56亿次mac运算)以对图像中的对象进行分类。然后,可通过在网络中的每个神经元中相加来对这些乘法的结果进行积分。在执行mac运算之后,可对神经元的积分值应用非线性函数,得到输出值。输出值可以是浮点值。
33.可使用多层来创建ann以执行特定任务。可在ann的每一层中并行使用许多神经元。还可在推理层之间执行池化运算。
34.深度ann可以指具有许多层的ann的软件或硬件实现。深度ann可以非常成功地进行图像分类。例如,深度ann在imagenet中图像的图像分类方面已经非常成功。imagenet是大量带有手动标签的图像的集合。
35.深度ann是基于这样的可信度建立的,即,生物神经元通过激发速率(例如,由神经元接收和产生电脉冲的速率)进行数据通信。深度ann中的神经元可以以浮点数或多位整数进行通信。
36.卷积神经网络(cnn)是深度ann中的一类,其中使用许多被标记的示例来训练神经元,以提取数据集中出现的特征。例如,数据集可以是图像。cnn可以对图像进行卷积运算。卷积运算可以作用在图像的一小部分上,并将指示图像中特征出现的值传达给cnn中的下一层。该特征可以包含在小的矩形区域中。这个小矩形可以通过编程方式绕较大的输入图像移动。当图像中的特征与存储在神经元突触权重中的特征信息匹配时,值会被发送到cnn中的下一层。在cnn中,突触权重在响应于图像的不同位置处的相似特征的神经元之间共享。cnn中的神经元可充当被定义的特征的过滤器。可通过一种称为反向传播的数学优化技术来完成对cnn的训练。
37.尽管cnn在对特征进行检测和对图像进行分类方面已经取得了成功,但cnn经常遭受一些技术问题的困扰,包括计算量大、灾难性的健忘和对对抗性样本的错误分类。cnn也遭受高延迟的困扰。尽管在cnn中可以使用多核处理器和大规模并行处理来抵消由高计算需求引起的延迟问题,但这往往会导致cnn的功率需求很高。例如,用于对imagenet中的图像进行分类的cnn可使用多达2000瓦的功率。这是因为cnn可能必须采用在高速外围组件互连(pcie)附加板上实现的高性能中央处理器(cpu)和一个或多个图形处理单元(gpu)。
38.snn可解决与cnn相关联的一些技术问题。snn是基于生物医学研究中的这一命题,即,生物神经元以由感知器官发出并且处于神经层之间的脉冲的时序进行数据通信。脉冲是能量的短暂突发,称为尖峰。snn是ann中的一类,其中,使用尖峰表达神经元之间的信息。
尖峰可以基于它们的时间和空间分布来表达信息。当输入端的一系列事件被识别为先前学习过的序列时,snn中的尖峰神经元可以仅进行尖峰脉冲并消耗电能。这类似于在生物大脑中所出现的处理。在snn中模拟大脑功能并获得诸如对图像中对象的分类或对数据流中特定特征的识别等结果的这一技术可称为神经形态计算。
39.由于snn中的神经元不会持续处理以执行ann的mac需求,因此,snn比其他类型的ann少消耗几个数量级的功率。相反地,仅当尖峰出现时,神经元才消耗功率。在snn中,每当接收到输入尖峰时,可通过将可变的非零突触权重值添加给神经元的模拟膜电位值来模拟神经功能。然后可将模拟的膜电位值与一个或多个阈值进行比较。当神经元的膜电位值达到或超过阈值时,可能会生成尖峰。snn不会表现出灾难性的健忘性,并且在snn被训练之后,其可以继续学习。而且,没有证据表明snn遭受由于对抗性样本而导致的分类不正确问题的困扰。
40.但是,常规的snn可能会遭受一些技术问题的困扰。首先,常规的snn无法在卷积和完全连接的操作之间进行切换。例如,常规的snn可能在设计时被配置为使用完全连接的前馈体系结构来学习特征并对数据进行分类。本文的实施例(例如,神经形态集成电路)通过将cnn和snn的特征组合到尖峰卷积神经网络(scnn)中来解决这一技术问题,该尖峰卷积神经网络可以被配置为在卷积运算或完全连接的神经网络功能之间进行切换。scnn还可以减少每个神经元的突触权重的数量。这还可以允许scnn比常规snn更深(例如,具有更多的层),每个神经元的突触权重更少。本文的实施例通过对在输入空间的特定位置处充当过滤器的每个神经元使用赢家通吃(wta)方法来进一步改善卷积运算。这可以改进网络的选择性和不变性。换言之,这可以改进推理操作的准确性。
41.第二,常规的snn是不可重构的。本文的实施例通过允许基于用户定义的配置对神经元和snn的突触之间的连接进行重新编程来解决这一技术问题。例如,可以使用用户定义的配置文件对层与神经处理器之间的连接进行重新编程。
42.第三,常规的snn不提供snn不同层之间的缓冲。但是缓冲可以允许将输出尖峰传递到下一层的时间延迟。本文的实施例通过在scnn的层之间添加输入尖峰缓冲器和输出尖峰缓冲器来解决这一技术问题。
43.第四,常规的snn不支持突触权重共享。本文的实施例通过在执行卷积时允许scnn的内核共享突触权重来解决这一技术问题。这样可减少scnn的内存需求。
44.第五,传统的snn通常使用1位突触权重。但是,使用1位突触权重无法提供抑制连接的方式。本文的实施例通过使用三元突触权重来解决这一技术问题。例如,本文的实施例可使用二位突触权重。这些三元突触权重可具有正值、零值或负值。负权重的使用可以提供抑制连接的方式,从而可以改进选择性。换言之,这可以改进推理操作的准确性。
45.第六,常规的snn不执行池化。这导致常规snn的内存需求增加。本文的实施例通过对先前的层输出执行池化来解决这一技术问题。例如,本文的实施例可以对由前一层输出的电位阵列执行池化。这种池化运算在保留最重要信息的同时降低了电位阵列的维数。
46.第七,常规的snn通常将尖峰存储在位阵列中。本文的实施例提供了表示和处理尖峰的改进方式。例如,本文的实施例可以使用连接列表而非位阵列。这一连接列表经过优化,使得每个输入层神经元都具有必须更新的偏移索引集合。这使得本文的实施例仅需考虑单个连接列表即可更新当前层中连接的神经元的所有膜电位值。
47.第八,常规的snn经常一个接一个地处理尖峰。相反地,本文的实施例可处理尖峰分组。一旦尖峰被处理,这可以导致电位阵列被更新。这可以允许更大的硬件并行化。
48.最后,常规的snn无法提供从外部来源导入学习(例如,突触权重)的方式。例如,snn不提供使用反向传播导入离线执行的学习的方式。本文的实施例通过允许用户将离线执行的学习导入到神经形态集成电路中来解决这一技术问题。
49.在一些实施例中,scnn可以包括一个或多个神经处理器。每个神经处理器可以通过可重新编程的结构互连。每个神经处理器是可重构的。每个神经元处理器可以配置为在完全连接的层中执行卷积或分类。
50.每个神经处理器可以包括多个神经元和多个突触。神经元可以被简化为集成和激发(integrate and fire)(i&f)神经元。神经元和突触可以通过可重新编程的结构互连。神经处理器的每个神经元可以用硬件或软件来实现。以硬件实现的神经元可称为神经元电路。
51.在一些实施例中,每个神经元可使用增量或减量函数来设置神经元的膜电位值。这比使用常规i&f神经元的加法函数更有效。
52.在一些实施例中,scnn可以使用不同的学习函数。例如,scnn可以使用stdp学习函数。在其他一些实施例中,scnn可以使用突触权重交换来实现stdp学习函数的改进版本。这种改进的stdp学习函数可以提供内置的动态平衡(例如,稳定的学习权重)和提高的效率。
53.在一些实施例中,到scnn的输入来自音频流。模数(a/d)转换器可以将音频流转换为数字数据。a/d转换器可以以脉冲编码调制(pcm)数据的形式输出数字数据。数据到尖峰转换器可以将数字数据转换为代表音频流频谱的一系列在空间和时间上分布的尖峰。
54.在一些实施例中,到scnn的输入来自视频流。a/d转换器可以将视频流转换为数字数据。例如,a/d转换器可以将视频流转换成像素信息,其中每个像素的强度被表示为数字值。数码相机可以提供这样的像素信息。例如,数码相机可以以三个8位值的形式提供红色、绿色和蓝色像素的像素信息。像素信息可以被捕获并存储在存储器中。数据到尖峰转换器可以借助于模拟人类视觉神经束的动作的感觉神经元将像素信息转换为在空间和时间上分布的尖峰。
55.在一些实施例中,到scnn的输入来自二进制值形式的数据。数据到尖峰转换器可以借助于通过高斯接收场将二进制值形式的数据转换为尖峰。如本领域普通技术人员将会理解的,数据到尖峰转换可以通过其他方式将二进制值形式的数据转换成尖峰。
56.在一些实施例中,数字视觉传感器(例如,由inivation ag或其他制造商供应的动态视觉传感器(dvs))连接到scnn的尖峰输入接口。数字视觉传感器可以以尖峰的形式传输像素事件信息。数字视觉传感器可以对地址事件表示(aer)总线上的尖峰进行编码。当像素强度增大或减小时,像素事件就会发生。
57.在一些实施例中,scnn的输入格式为在空间和时间上分布的尖峰。尖峰可定义为电能的短暂突发。
58.在一些实施例中,scnn可由一层或多层尖峰神经元组成。尖峰神经元可以模拟神经元的功能。尖峰神经元可以通过模拟突触功能的电路相互连接。
59.尖峰神经元可以以硬件或软件来实现。硬件实现的尖峰神经元可称为尖峰神经元电路。然而,如本领域普通技术人员将会理解的,在本文的任意实施例中,可使用软件实现
的尖峰神经元来代替尖峰神经元电路。
60.在一些实施例中,可以从存储的配置来配置scnn。可以使用yaml非标记语言(yaml)文件来修改所存储的配置。yaml文件可以定义神经结构中的组件的功能,以形成针对特定任务的scnn。例如,yaml文件可以将scnn配置为对加拿大高级研究所10(cifar

10)数据集(通常用于训练机器学习和计算机视觉算法的图像集合)中的图像进行分类。
61.在一些实施例中,scnn中的每个层可以被定义、连接和配置为具有最大池化和共享突触权重的卷积层,或为具有单个突触的完全连接的层。
62.在一些实施例中,通过提取某些特征并将这些特征作为元数据传递给scnn中的下一层,卷积层可以与一个或多个最大池化层结合使用,用于输入信号的降维。由每个神经元传递的元数据可以采用神经元膜电位值或尖峰的形式。尖峰可以指示已达到阈值。尖峰可以触发学习事件或输出尖峰。神经元膜电位值是神经元的电位值。可以独立于阈值读取神经元膜电位值。
63.在一些实施例中,scnn中的卷积网络层可以包括多个尖峰神经元电路。每个尖峰神经元电路可以包括积分器和与该层中的其他神经元共享的多个突触。每个尖峰神经元电路可以被配置为特征检测器。卷积层后面可以紧跟着池化层。如本领域普通技术人员将会理解的,池化层可以是最大池化层、平均池化层或另一类型的池化层。最大池化层可以接收尖峰神经元电路(例如,特征检测器)的输出。最大池化层只能将具有最高电位值的神经元输出(例如,神经元膜电位值或尖峰)传递到下一层。平均池化可以通过将输入划分为矩形池化区域并计算每个区域的平均值来执行下采样。
64.在一些实施例中,scnn中的完全连接的层可以用于分类、自主特征学习和特征提取。完全连接的层可以包括多个尖峰神经元电路。每个尖峰神经元电路可以包括积分器和多个突触。多个突触可以不与完全连接的层中的其他神经元电路共享。
65.在一些实施例中,scnn中的学习可以通过称为尖峰时间依赖可塑性(stdp)的方法来进行。在stdp学习中,在输出尖峰之前的输入尖峰表明该输入尖峰导致该输出尖峰。在stdp中,这可以导致突触权重增强。
66.在一些实施例中,使用突触权重交换来改进stdp学习方法。可以在突触之间交换突触权重值,以加强导致输出尖峰事件的突触输入,并削弱不导致其的突触。这会引起尖峰神经元电路对特定的输入功能越来越有选择性。
67.在一些实施例中,使用第三位的突触权重进一步改进stdp学习方法。第三位的突触权重可以具有正值、零值或负值。存储正权重的突触可以称为兴奋性突触。存储负权重的突触可以称为抑制性突触。存储零权重的突触可能不会导致选择过程。
68.在一些实施例中,尖峰输入缓冲器存在于神经网络的每一层的输入处。尖峰输入缓冲器可以接收并存储尖峰信息。尖峰信息可以作为数字位被传输到尖峰输入缓冲器。可以使用“1”表示尖峰的存在。可以使用“0”表示尖峰的缺失。
69.在一些实施例中,分组器可以将尖峰输入缓冲器中的尖峰分类为一个或多个尖峰分组。尖峰分组可以存储在分组寄存器中。
70.在一些实施例中,可以将第一逻辑and函数应用于存储在分组寄存器中的位模式和存储在突触中的正权重位。第一逻辑and函数的输出处的逻辑“1”使尖峰神经元电路的膜电位计数器增量。可以将第二and函数应用于存储在输入尖峰缓冲器中的位模式和突触中
的逆向负权重位。第二逻辑and函数的输出处的逻辑“1”使尖峰神经元电路的膜电位计数器减量。
71.在一些实施例中,scnn中的层是共享参数的神经元的集合。该层可以从先前的层接收尖峰信息,并将尖峰信息传播到后续的层。
72.在一些实施例中,scnn可以支持前馈和反馈架构。这可以是一种连接拓扑,其中每个层都从本地总线结构接收输入,并将输出传递到同一本地总线。
73.在一些实施例中,每个层可以接收和传输包含标头和事件地址的地址事件表示(aer)样式的数据结构。这一信息可以被接收到尖峰输入缓冲器中。aer事件包含三个分量:x、y、f,其中,f是特征(例如,通道),而x、y是发生尖峰的尖峰神经元电路的坐标。可以处理输入尖峰缓冲器以创建由层来处理的尖峰分组。层可以将尖峰输出到输出尖峰缓冲器,以到下一层用于处理。
74.在一些实施例中,所有并非输入层类型的层类型都可以具有电位阵列。电位阵列可以存储每个尖峰神经元电路的膜电位值。
75.在一些实施例中,每一层可以包括两个数据结构,这两个数据结构描述了该层中的尖峰神经元电路到神经元的输入之间的连通性。第一数据结构可被称为连接列表阵列。连接列表阵列中的条目可以对应于特定输入所连接到的尖峰神经元电路的列表。连接列表阵列可以包含从源到目标的连通性信息。
76.第二数据结构可被称为权重向量阵列。权重向量阵列中的每个条目对应于特定尖峰神经元电路所连接到的输入的向量。权重向量阵列可以包含目的地到源的信息。
77.在一些实施例中,完全连接的层类型中的每个尖峰神经元电路在电位阵列中具有单个条目。相反,在一些实施例中,卷积层的尖峰神经元电路可以共享单个突触权重集,该单个突触权重集被应用于跨每个输入通道的x

y坐标。突触权重可以以目的地到源的格式存储在权重向量阵列中。
78.在具有计算推导出的神经元函数(例如,深度学习神经网络(dnn))的ann中,训练和推理可以是在不同环境或机器中进行的两种独立操作。在训练阶段,dnn借助于反向传播来计算神经网络中的突触权重值,从而从大量的训练数据集中进行学习。相反,在dnn的推理阶段期间可能不会进行学习。
79.在一些实施例中,scnn在训练和推理操作之间没有明确划分。推理操作可以通过事件传播进行操作。事件传播可以指由scnn层对输入的处理,以更新电位阵列并生成激发该层的尖峰的输出尖峰缓冲器。层中的尖峰神经元电路可以首先执行事件传播步骤(例如,推理),然后执行学习步骤。在一些实施例中,当scnn的层中学习被禁用时,该层可以仅执行事件传播步骤,该步骤实际上是推理阶段。
80.在一些涉及卷积的实施例中,尖峰神经元电路可以共享突触权重。这些神经元电路可以被称为过滤器。这是因为这些尖峰神经元电路可以从输入流中过滤出特定特征。
81.图1是根据一些实施例的神经网络模型的框图。在图1中,尖峰可以通过本地总线101进行通信。例如,本地总线101可以是片上网络(noc)总线。尖峰可以以网络分组的形式进行通信。网络分组可以包含一个或多个尖峰以及指示源地址和目的地地址的代码。
82.在图1中,尖峰解码器102可以解码网络分组中的尖峰。尖峰解码器电路102可以基于网络分组中的源地址将尖峰发送到特定的尖峰神经元电路。例如,尖峰解码器电路102可
以将尖峰存储在对应的尖峰神经元电路的尖峰输入缓冲器103中。尖峰解码器电路102还可以在对应的神经元电路的尖峰输入缓冲器103中存储地址,其中,位将在该地址处结束。
83.尖峰输入缓冲器103可以存储一个或多个尖峰。“1”位可以表示存在尖峰,而零位则可以表示不存在尖峰。尖峰输入缓冲器103还可以包含地址,其中,位将在该地址处结束。
84.在图1中,分组器114可以将尖峰输入缓冲器103中的尖峰分类为一个或多个尖峰分组。尖峰分组可以被存储在分组寄存器104中。例如,在尖峰神经元电路具有1024个突触的情况下,分组寄存器104的长度可以是1024位。分组器114可以将尖峰输入缓冲器103中的位分类到沿1024位分组寄存器104的正确位置处。在图6中进一步描述该分类过程。
85.在图1中,突触权重值可以被存储在突触权重存储器105中。在一些实施例中,可以使用静态随机存取存储器(sram)来实现突触权重存储器105。如本领域普通技术人员将会理解的,可以使用各种其他存储技术来实现突触权重存储器105。
86.突触权重量存储器105中的突触权重值可以是正的或负的。在一些实施例中,突触权重存储器105中的突触权重值可以被传送到权重寄存器106中用于进行处理。可以在逻辑and电路107中将权重寄存器106中的正突触权重值与分组寄存器104中的相应位进行and运算。对于and函数的每个正结果,逻辑and电路107的作为结果的输出可以使计数器109增量。计数器109可以表示神经元的膜电位值。
87.可以在逻辑and电路108中将权重寄存器106中的负突触权重值与分组寄存器104中的对应位进行and运算。逻辑and电路108的作为结果的输出可以使计数器109减量。该过程可以继续进行,直到处理完分组寄存器104中的所有位为止。
88.在处理完分组寄存器104中的所有位之后,计数器109可以包含一个值,该值表示分组寄存器104中的位的数量,该数量对应于权重寄存器106中的正和负突触权重值。可以使用阈值比较器110将计数器109中的值与至少一个阈值进行比较。
89.在一些实施例中,阈值比较器110可以将计数器109中的值与两个阈值进行比较。例如,阈值比较器电路110可以将计数器109中的值与学习阈值寄存器111中的值和尖峰阈值寄存器112中的值进行比较。
90.在一些实施例中,学习阈值寄存器111中的值可以被初始设置为低值以允许神经元学习。在学习过程期间,可以使用权重交换器113将突触权重分配给进入的尖峰。在图8和图9中示出了该过程。在一些实施例中,随着神经元学习,计数器109中的值增加,并且学习阈值寄存器111中的值也增加。这个过程可以继续持续,直到神经元对特定的学习模式产生强烈反应为止。
91.图2a是根据一些实施例的神经形态集成电路200的框图。神经形态集成电路200可以包括神经元结构201、转换复合体202、传感器接口203、处理器复合体204、一个或多个数据接口205、一个或多个存储器接口206、可以提供高速芯片到芯片接口的多芯片扩展接口207、电源管理单元213和一个或多个直接存储器访问(dma)引擎214。
92.在一些实施例中,神经元结构201可以包括多个可重构的神经处理器208。神经处理器208可以包括多个神经元。例如,神经处理器208可以包括多个尖峰神经元电路和多个突触。如上所述,可以使用输入尖峰缓冲器103、分组器114、分组寄存器104、逻辑and电路107、逻辑and电路108、计数器109、阈值比较器110、学习阈值111、尖峰阈值112来实现尖峰神经元电路。可以使用权重寄存器106、突触权重存储器105和权重交换器113来实现多个突
触。每个神经处理器208可以包括多个可重新编程的尖峰神经元电路,该多个可重新编程的尖峰神经元电路可以连接到神经结构201的任意部分。
93.在一些实施例中,转换复合体202可以包括像素到尖峰转换器209、音频到尖峰转换器210、动态视觉传感器(dvs)到尖峰转换器211以及数据到尖峰转换器212中的一个或多个。像素到尖峰转换器209可以将图像转换成尖峰事件。
94.在一些实施例中,传感器接口203可以包括用于像素数据、音频数据、模拟数据和数字数据的一个或多个接口。传感器接口203还可以包括用于dvs像素数据的aer接口。
95.在一些实施例中,处理器复合体204可以包括至少一个可编程处理器核、存储器以及输入输出外围设备。处理器复合体204可以与神经形态集成电路200在同一芯片上实现。
96.在一些实施例中,数据接口205可以包括用于输入和输出外围设备的一个或多个接口。一个或多个接口可以使用高速外围组件互连(pcie)总线标准、通用串行总线(usb)总线标准、以太网总线标准、控制器局域网(can)总线标准以及通用异步接收器和发送器(uart)用于传输和接收串行数据。
97.在一些实施例中,存储器接口206可以包括用于动态随机存取存储器(ram)扩展的一个或多个接口。一个或多个接口可以使用双倍数据速率同步动态随机存取存储器(ddr sdram)标准。例如,一个或多个接口可以使用ddr3或ddr4标准。
98.在一些实施例中,多芯片扩展接口207可以携带尖峰信息以使神经结构201能够扩展到多个芯片。多芯片扩展接口207可以使用aer来携带尖峰信息。aer是用于通过系统总线传输尖峰事件的标准。尖峰发生时刻产生突增尖峰的特定神经元的地址被传输。
99.在一些实施例中,神经形态集成电路200可以将尖峰信息作为输入并产生aer尖峰事件作为输出。除了从scnn的最后一层输出尖峰外,aer尖峰事件还可以传输每个尖峰神经元电路的膜电位值。
100.在一些实施例中,神经结构201可以以前馈方式处理尖峰。可以使用aer格式化数据在层之间发送尖峰。每一层可以具有输入尖峰缓冲器(例如,输入尖峰缓冲器103),其将存储在输入尖峰缓冲器中的尖峰转换为尖峰分组的集合。在每一层将其输出尖峰发送到下一层之前,每一层都可以完全地处理在输入尖峰缓冲器中的所有尖峰。
101.图2b是根据一些实施例的在图2a中的神经形态集成电路200的另一框图。图2b示出了使用本地总线220(例如,noc总线)的神经形态集成电路200的组件的互连。在图2b中,神经形态集成电路200可以包括如图2a中所示的神经元结构201、处理器复合体204、一个或多个数据接口205、像素到尖峰转换器209、音频到尖峰转换器210以及dma引擎214。神经形态集成电路200还可以包括突触权重存储器222、存储器224、串行只读存储器(rom)226、配置寄存器228、pcie接口模块230、pcie总线232、uart接口234、can接口236、usb接口238和以太网接口240。
102.在一些实施例中,突触权重存储器222可以等同于图1中的突触权重存储器105。突触权重存储器222可以连接到神经元结构201。突触权重存储器222可以存储所有突触的权重和所有尖峰神经元电路的膜电位值。可以从可以连接到pcie总线232的pcie接口模块230通过一个或多个dma引擎214从外部访问突触权重存储器222。
103.在一些实施例中,配置寄存器228可以连接到神经元结构201。在神经元结构201的初始化期间,通过将值写入配置寄存器228和突触权重存储器222,处理器复合体204可以读
取串行rom 226,并且通过将值写入配置寄存器228和突触权重存储器222来为外部定义的功能配置神经元结构201。
104.在一些实施例中,处理器复合体204通过pcie接口230可在外部使用。程序可存储在存储器224中。该程序可以确定uart接口234、can接口236、usb接口238和以太网接口240的功能。这些接口中的一个或多个可以传递待由神经元结构201、处理器复合体204或这两者处理的数据。
105.音频到尖峰转换器210可以将尖峰直接传递到本地总线220上,以由神经元结构201处理。像素到尖峰转换器209可以连接到外部图像传感器,并将像素信息转换为尖峰分组,这些尖峰分组分布在本地总线220上以用于由神经元结构201处理。经处理的尖峰可以被分组(例如,被插入到网络分组中)并被放置在本地总线220上。
106.图3是根据一些实施例的用于下一层的输入尖峰缓冲、分组和输出尖峰缓冲的流程图。图3包括输入尖峰缓冲器301、一个或多个尖峰分组302、神经元结构303和输出尖峰缓冲器304。在图3中,输入尖峰缓冲器301中的尖峰可以被分类为一个或多个尖峰分组302,用于神经元结构303中的特定神经元(例如,尖峰神经元电路)。在神经元结构303中处理之后,任何作为结果的尖峰都可以被存储在输出尖峰缓冲器304中,其被发送到下一层。输出尖峰缓冲器304中作为结果的尖峰可以被分组,用于由后续层来进行处理。
107.在一些实施例中,神经元结构303中的一层可以处理全部的输入尖峰缓冲器301。该层可以顺序地处理每个尖峰分组302。作为结果的输出尖峰可以被放置在输出尖峰缓冲器304中。直到所有尖峰分组302都已经被处理之后,输出尖峰缓冲器304才可以被发送到下一层用于进行处理。在一些实施例中,神经元结构303的所有层都可以遵循该工作流程。
108.在一些实施例中,神经元结构303可以一次处理许多尖峰。在一些实施例中,可以将不同的尖峰缓冲器类型用于神经元结构303中的层。尖峰输入缓冲器的类型可以取决于输入数据的性质。尖峰缓冲器类型之间的差异可以在于:尖峰缓冲器类型如何从输入尖峰缓冲器301生成尖峰分组。
109.在一些实施例中,分组缓冲器类型可以用于处理连续或进行中的数据类型(例如,由dvs摄像机生成的尖峰流)。用户可以配置神经元结构303的不同层以使用该缓冲器类型。分组缓冲器类型可以一次处理一个或非常大的突发中的许多尖峰。分组缓冲器可以按接收尖峰的顺序来存储尖峰,直到尖峰的数目达到由配置文件(例如,yaml文件)中指定的参数所定义的大小(例如,数据包大小)为止。一旦分组缓冲器达到该大小,尖峰分组就可以被传递到神经结构303用于进行处理。然后,该分组缓冲器可以被清空。之后,该分组缓冲器可以继续存储尖峰。
110.在一些实施例中,刷新缓冲器类型可以用于处理定义了大小(例如,传统的视频图像帧或被定义的值的集合)的形式的数据。例如,视频帧可具有定义的大小,比如640
×
480像素。但是,在这种情况下,一次发送的许多尖峰信号可能会被立即发送出去,作为单个分组用于进行处理。尖峰分组的长度可以不同。
111.在一些实施例中,每个层类型都可以实现这一功能,即,通过首先从尖峰输入缓冲器生成分组来处理全部的尖峰输入缓冲器(例如,尖峰输入缓冲器301)。在全部的尖峰输入缓冲器都被分组之后,这一功能可以处理所有的尖峰分组。然后,该功能可以删除经处理的尖峰分组,并将输出尖峰从尖峰分组推送到输出尖峰缓冲器(例如,输出尖峰缓冲器304)。
然后,这一功能可以获取下一个尖峰分组以进行处理。缓冲器类型之间的差异可以在于:缓冲器类型如何从输入尖峰缓冲器生成尖峰分组。
112.图4是根据一些实施例的被配置为尖峰卷积神经处理器的神经处理器400的框图。神经处理器400可以包括本地总线401(例如,noc总线)上的网络、尖峰解码器402、突触权重存储器403、神经元位置生成器、池化电路404、神经元结构405、电位更新和检查电路406以及尖峰生成器407。神经元结构405可以等同于图2中的神经元结构201。突触权重存储器403可以存储用于神经元的突触权重值和膜电位值(例如,电位阵列)。如本领域普通技术人员将会理解的,池化电路404可以执行最大池化操作、平均池化操作或其他类型的池化操作。一对多尖峰生成器电路407可以生成尖峰分组,这些尖峰分组可以跨本地总线401被一对多传输。
113.图5是根据一些实施例的被配置为尖峰完全连接的神经处理器的神经处理器500的框图。神经处理器500包括本地总线501(例如,noc总线)、尖峰解码器502、突触权重存储器503、神经元位置生成器、分组形成器504、神经元结构505、电位更新和检查电路506以及电位和尖峰输出电路507。神经元结构505可以等同于图2中的神经元结构201。突触权重存储器503可以存储用于神经元的突触权重值和膜电位值(例如,电位阵列)。在图5中,使用尖峰解码器502可以将尖峰接收到尖峰输入缓冲器中并作为尖峰分组被分布。
114.在一些实施例中,突触权重可以是第三位的权重。这些第三位的突触权重可以是2位宽。这些2位宽的突触权重可以包括正值和负值。这与常规的snn不同。2位宽的突触权重中的正值可以使神经元的膜电位值增加。2位宽的突触权重中的负值可以使神经元的膜电位值降低。
115.在一些实施例中,可以根据尖峰分组中的尖峰的突触目的地编号来对其进行分布。在一些实施例中,在处理期间,将第三位的突触权重与尖峰分组中所表示的尖峰进行逻辑and运算。可以使用正尖峰位来表示尖峰分组中的尖峰。可以使用零来表示尖峰分组中不存在尖峰。突触权重可以是负的或正的。负的突触权重可以使神经元的计数器109(例如,膜电位寄存器)减量。正的突触权重可以使神经元的计数器109(例如,膜电位寄存器)增量。
116.在一些实施例中,可以通过当达到神经元的学习阈值(例如,学习阈值寄存器111中的值)时对输入进行检查来实现学习过程。可以将神经元的学习阈值初始设置为非常低的值。学习阈值可以随着神经元进行学习以及更多的突触权重发生匹配而增大。在一些实施例中,学习过程可能涉及交换未使用的突触权重(例如,在未出现过尖峰的位置处的正的突触权重)和未使用的尖峰(例如,尖峰分组中在相对于具有值为零的突触权重的位置处的尖峰)。未使用的突触权重可以被交换到包含未使用的尖峰的位置。
117.在一些实施例中,如果神经元膜电位值(例如,由计数器109表示)超过尖峰阈值(例如,尖峰阈值寄存器112中的值),则产生尖峰。尖峰被放置在本地总线上。
118.图6a是根据一些实施例的将尖峰分组成尖峰分组的示例。在图6a中,尖峰输入缓冲器601(例如,等同于尖峰输入缓冲器103)从本地总线接收已经由尖峰解码电路处理的尖峰。分组器602可以根据尖峰的突触索引编号将尖峰输入缓冲器601中的尖峰分类为尖峰分组603。例如,在图6a中,接收到的尖峰序列是1、6、23、1、19、18。如本领域普通技术人员将会理解的,尖峰序列可以比图6a中所示的少量尖峰大得多。例如,尖峰序列可以包括分布到多个突触的数以千计的尖峰。
119.图6b是根据一些实施例的在图6a中的尖峰分组603的示例表示。在图6b中,尖峰分组603包含来自尖峰输入缓冲器601的经分类的尖峰。在尖峰分组603中,位置1、6、18、19和23被突出显示,指示这些位置包含逻辑“1”值。尖峰分组603内的其余位置包含零(例如,指示不存在尖峰)。
120.在一些实施例中,可以按照与突触权重位于存储器(例如,突触权重存储器105)中相同的顺序来组织尖峰。这可以允许在突触权重值和进入的尖峰分组中的尖峰之间执行and操作,以确定是使膜电位计数器(例如,计数器109)增量或减量。当突触权重值为零的位置处发生尖峰时,对于该位的位置,计数器不会发生改变。
121.图7是根据一些实施例的选择是否使膜电位值(例如,计数器109)增量或减量的方法的示例。在图7中,在尖峰分组701与权重寄存器702(例如,权重寄存器702等同于权重寄存器106)之间执行逻辑and运算。在图7中,尖峰分组701的尖峰位1、6、18、19和23被突出显示,指示它们包含逻辑“1”值(例如,指示存在尖峰)。尖峰分组701内的其余位置包含零(例如,指示不存在尖峰)。
122.权重寄存器702可以包含指示正值或负值的逻辑位。在图7中,位1、4、5、14和22包含正值,而位18包含负值。正值可以表示兴奋作用,而负值可以表示抑制作用。权重寄存器702中的位可以被标记exc用于兴奋性权重,并且可以被标记inh用于抑制性权重。在权重寄存器702中的位与尖峰分组701中的位之间执行逻辑and。因此,在位置1处发生的尖峰使神经元的膜电位值(例如,计数器109)增量。相反,在位置18处发生的尖峰使神经元的膜电位值(例如,计数器109)减量。
123.图7是根据一些实施例的尖峰时间依赖可塑性(stdp)学习方法的示例。在stdp学习中,导致输出事件/尖峰的尖峰可以使其代表性突触权重增强,而不导致输出事件/尖峰的尖峰可以使其突触权重减弱。
124.在一些实施例中,修改了stdp学习方法,使得未使用的突触权重被交换到包含未使用的尖峰的位置处。例如,值为零且已接收到尖峰的突触权重被与逻辑“1”且未接收到任何尖峰的突触权重交换。
125.在一些实施例中,当对尖峰分组中的位为“1”且突触权重为零的尖峰执行逻辑and运算时,结果为零。这可以被称为“未使用的尖峰”。当对尖峰分组中的为“0”且突触权重为“1”的尖峰位执行逻辑and运算时,结果为零。这可以被称为“未使用的突触权重”。学习电路(例如,权重交换器113)可以在发生未使用的尖峰的地方交换随机选择的未使用的突触权重。
126.在图7中,尖峰分组701中的位置1包含被使用的尖峰。突触权重702中的位置1包含被使用的权重。这可以导致神经元的膜电位值(例如,计数器109)增量。
127.突触权重702的位置4和5包含未使用的突触权重。这些突触权重是用于交换的候选。尖峰分组701的位置6包含未使用的尖峰。换言之,尖峰分组701的位置6包含1,但是,突触权重702的位置6包含零。未使用的突触权重可以被交换到该位置。突触权重702的位置14包含未使用的突触权重。尖峰分组701的位置18包含被使用的尖峰,并且突触权重702的位置18包含被使用的突触权重(在这种情况下是抑制性的)。这可以导致神经元的膜电位值(例如,计数器109)减量。尖峰分组701的位置19包含未使用的尖峰。突触权重702的位置22包含未使用的突触权重。尖峰分组701的位置23包含未使用的尖峰。
128.这种stdp学习方法的灵感来自发生在生物大脑中的学习。在一些实施例中,stdp学习方法的经修改的形式用于执行学习。这种经修改的方法类似于生物神经元通过其进行学习的机制。
129.在一些实施例中,当尖峰神经元电路的输入将其膜电位值(例如,计数器109)驱动至阈值时,该尖峰神经元电路发出尖峰。这可能意味着,当神经元被驱动到阈值并生成尖峰时,来自其最近激活的输入的连接会被增强,而它的许多其他连接则被减弱。这可以导致神经元学习对其反复看到的输入模式作出响应,从而自主地对表征输入数据集的特征进行学习。
130.在一些实施例中,取决于这一stdp方法的其他特性,例如由学习阈值的变化引起的神经元之间的自然竞争,层内的神经元群体会学习输入特征空间的广泛覆盖。因此,神经元群体对给定输入的响应会携带有关所存在的特征的信息。
131.在大脑中,感知处理通常呈等级体系的,发生在一系列层上。早期的层提取有关简单特征的信息,而较高的层则学习对那些特征的组合作出响应,从而使它们的响应对更复杂的形状或对象更具选择性,并且使它们由于对空间位置或方向的响应更常规,即它们对于空间位置或方向是不变的。
132.在一些实施例中,经修改的stdp学习方法是完全不受监督的。这与神经网络中使用的常规的多种监督训练方法不同。这意味着本文的实施例可以呈现为未标记的数据集,并且无需任何其他信息就可以学习对数据中存在的不同特征作出响应。学习可以是持续的过程。
133.在一些实施例中,当将新类别添加到已经训练的数据集中时,不需要重新训练整个神经网络(例如,神经元结构201)。这可以消除灾难性的健忘的技术问题。通过允许继续学习,可以将新类添加到网络已识别的特征中。
134.无监督学习可以提取特征。但是,在没有标记数据的情况下,无监督学习不能直接“标记”其输出。在分类任务中,神经网络(例如,神经元结构201)可以对特征集进行学习,该特征集区分存在于刺激数据集中的类。然后,可以由用户自行决定采用将表示特征的响应链接到输入标签的方法。
135.图8示出了根据一些实施例的stdp学习方法的权重交换步骤。图8显示了经修改的stdp学习过程中的下一步的示例,其中,“未使用的突触权重”被交换为“未使用的输入”,从而增强了神经元将来对相同或相似的输入尖峰模式的响应。
136.在图8中,尖峰分组801的尖峰位1、6、18、19和23被突出显示,指示这些尖峰位包含逻辑“1”值(例如,指示存在尖峰)。尖峰分组801内的其余位置包含零(例如,指示不存在尖峰)。突触权重802的位1、4、5、14和22包含“ 1”值,而位18包含“-1”值。未使用的尖峰801的位19表示尖峰分组801中的未使用的尖峰。未使用的突触权重802的位5和14表示突触权重802中的未使用的突触权重。在图8中,新的突触权重805表示交换未使用的突触权重(例如,在未出现过尖峰的位置处的正突触权重)和未使用的尖峰(例如,尖峰分组中在相对于具有值为零的突触权重的位置处的尖峰)的结果。例如,新的突触权重805的位14包含突触权重802的位18的值,反之亦然。
137.图9示出了根据一些实施例的在被配置为尖峰完全连接的神经处理器的神经处理器中的卷积。例如,图9示出了经修改的stdp方法,其通过在卷积层中进行权重交换来学习,
该卷积层用于被配置为尖峰完全连接的神经处理器的神经处理器中。
138.卷积可以是一种具有目的为从数据(例如,图像)中提取特征的数学运算。无论是图像数据还是另一种数据类型的两个数据集之间卷积的结果是第三个数据集。
139.在一些实施例中,卷积可以作用于尖峰和电位值。每个神经处理器(例如,神经处理器208)可以识别具有最高电位值的神经元,并将该神经元广播到同一层中的其他神经处理器。在一些实施例中,如果神经元的电位值高于学习阈值(例如,学习阈值寄存器111中的值),则对输出到该神经元的神经元所有内核的突触权重进行更新。可以从上一层重新传输相同的事件分组。神经处理器可以只影响神经元接收场内的尖峰。例如,在图9中,类似于902的正方形内的区域。神经处理器208识别出接收场中未使用的尖峰(显示为u)以及内核(例如,内核901和903)中未使用的权重(显示为u)。
140.在一些实施例中,经修改的stdp学习方法可以根据规则来确定跨未使用的和优选的突触权重之间的所有内核的被交换位的总数。例如,规则可以是被交换位的数量=最小值(min)(交换数量、未使用的尖峰数量、未使用的权重数量),其中交换数量可以是配置字段。在此示例中,min(5,3,4)=3。然后,经修改的stdp学习方法可以跨所有内核随机地交换“被交换位的数量”的位。在图9中,交换了三个位。之后,经修改的stdp学习方法可以相应地更新同一层的所有其他神经处理器的过滤器的突触权重。
141.神经网络可以具有训练阶段。训练阶段可以使用已知的样本。神经网络还可以具有推理阶段,在此阶段期间,可以识别以前未使用过的样本。在训练阶段期间,根据输出神经元对其最有反应的刺激类别来标记输出神经元。在推理阶段期间,根据神经元对其最有反应的特征来标记输入。在存在仅标记了一小部分的实质数据集的情况下,本文实施例的无监督学习方法可以是有用的。在这种情况下,可以在整个数据集上训练本文的实施例,之后,执行监督阶段以使用较小的标记数据集来标记网络输出。
142.在一些实施例中,可以使用经监督的学习算法。本文中的实施例的推理组件可以与学习算法完全分离,保留其快速、有效计算的优点。已经设计了本文的实施例,使得可以容易地上传使用用户选择的算法离线学习的突触权重。网络设计可以被限制为二进制或三元突触权重和激活级别。在这些约束条件下,越来越多的第三方技术注定要用于监督学习。
143.尽管无监督学习可以很好地完成这些任务,但在某些时期在监督的帮助下,存在一些情况,其中,经监督的学习方法会有优势。但是,同样地,无监督学习具有执行对于经监督的学习方法所不可能完成的任务的能力,例如,在没有标记结果可用于监督的数据中寻找未知和意外的模式。这些方法很容易遗漏。
144.图10示出了根据一些实施例的在深度为1的8
×
8像素矩阵中的卷积的符号表示。在图10中,应用了示例的5
×
5卷积过滤器1002。在图10中,允许过滤器1002“伸出”原始输入。在图10中,这可通过用零填充原始输入1001来完成。
145.支持四种卷积类型:有效、相同、完全和填充。图10示出了所产生的卷积。“完全”卷积(例如,完全卷积1003)可以以填充为4最大地增加输出卷积的大小。“相同”卷积(例如,相同的卷积1004)可以使用填充为2来生成输出卷积的大小,该大小与原始输入维数(例如,8
×8×
1)相同。“有效”卷积(例如,有效卷积1005)可以使用0填充,并导致小于原始输入维数的输出卷积的大小。
146.在一些实施例中,可以允许scnn使用完全卷积、相同卷积或有效卷积。还可以允许
scnn使用称为“填充”的自定义卷积类型。程序员可以通过指定在原始输入1001的每一边周围的填充来指示填充卷积类型。
147.在一些实施例中,可以由等式2至4定义不同类型的卷积。等式2至4可以根据原始输入大小和过滤器大小来定义卷积输入的大小。在等式2至4中,i
w
可以表示原始输入的宽度,c
w
可以表示卷积输入的宽度(例如,电位阵列),而k
w
可以表示过滤器的宽度。
148.有效类型:c
w
=i
w

(k
w

1)
ꢀꢀꢀ
(2)
149.相同类型:c
w
=i
w
ꢀꢀꢀꢀ
(3)
150.完全类型:c
w
=i
w
(k
w

1)
ꢀꢀꢀ
(4)
151.图11示出了根据一些实施例的卷积的符号表示,该卷积涉及2个尖峰通道、两个3
×
3的逆向卷积内核以及作为结果的膜电位值。图11示出了尖峰1101和1102的两个通道。图11还示出了两个3
×
3的逆向卷积内核1103和1104,以及作为结果的神经元膜电位值1105。这里示出了本实施例的两个通道示例,其修改之处在于使用尖峰神经元电路而非编程的处理器来执行这些操作。首先,被配置为scnn处理器的神经处理器中的所有电位被清空为零。当尖峰分组进入时,对尖峰分组的处理导致受影响的神经元电路的膜电位值发生变化。
152.图12示出了根据一些实施例的在图11的通道1101和1102上的尖峰神经元电路中生成的作为结果的尖峰。通道1101示出了在矩阵中被激发为“1”的尖峰神经元电路。通道1101中的所有其他位置都填充了零。可以使用用于通道1101和1102的图11中所示的两个逆向内核1103和1104对尖峰图进行卷积,导致图11中所示的神经元膜电位值1105。
153.图13示出了根据一些实施例的尖峰神经网络卷积运算。图13示出了具有由两个过滤器(例如,过滤器1304和1305)处理的三个通道(例如,通道1301、1302和1303)的输入(例如,图像)。过滤器1304和1305中的空白条目可以对应于零值。
154.在图13中,过滤器1304的维数为5
×5×
3(例如,过滤器宽度
×
过滤器高度
×
通道数量)。过滤器1304以输入图像的坐标(2、2)为中心。输入图像的左上角具有坐标(0,0)。过滤器的宽度和高度可以小于输入图像。如本领域普通技术人员将会理解的,过滤器通常具有3
×
3、5
×
5或7
×
7的配置。
155.在一些实施例中,过滤器可以具有与输入的特定通道相对应的不同的权重集。每个权重集可以被称为过滤器的内核。在图13中,过滤器1304具有三个内核(例如,内核1306、1307和1308)。每个过滤器中的内核的数量可以匹配于输入中的通道的数量。每个输入事件可以具有(x,y)坐标和通道坐标。
156.在一些实施例中,卷积运算的结果被求和成电位阵列中的单个条目。在图13中,虚线框示出了在输入上方发生过滤器1304卷积的位置。过滤器1304的电位阵列1309中的较小虚线框显示了这些输入被求和的位置。
157.在图13中,可以将由过滤器1304执行的卷积运算描述为3d点积。虚线框示出了过滤器1304与输入对准的位置。3d点积跨x,y和通道求和,并将该标量和放入第三矩阵中,该第三矩阵被称为电位阵列(或激活图)。在图13中,电位阵列1309表示用于过滤器1304的电位阵列。如本领域技术人员会理解的,电位阵列的每个元素可以被视为神经元(例如,尖峰神经元电路)的膜电位值。
158.在图13中,电位阵列1309和1310表示与过滤器1304和1305相对应的电位阵列。虚线框示出了当前卷积的结果。电位阵列的维数可以定义神经元(例如,尖峰神经元电路)的
总数。在图13中,过滤器1304和1305每个都模拟九个神经元。每个过滤器1304和1305可以以三个输入通道内的不同x

y位置为中心。图13中的卷积的这一示例示出了用于输入图像中的元素以及过滤器1304和1305中的权重的二进制值。然而,如本领域普通技术人员将会理解的,输入图像中的元素以及过滤器1304和1305中的权重可以包括正和负浮点值。
159.在一些实施例中,可以使用等式1来执行离散卷积。在等式1中,f可以表示输入,并且g可以表示过滤器(例如,过滤器1304)。如本领域普通技术人员将会理解的,等式1类似于针对每个值计算以不同的图像位置为中心的点积。但是,如本领域普通技术人员将会理解的,在将过滤器“滑过”每个点积的输入之前,可能需要先“翻转”过滤器。因为卷积是有用的数学属性,因此,卷积运算可能需要在过滤器中翻转索引。
[0160][0161]
在一些实施例中,卷积层的步幅可以被定义为在随后的点积运算之间使过滤器(例如,1304)发生多少移位。在一些实施例中,卷积步幅可以被硬编码为1。
[0162]
在图13中,在卷积运算期间,根本不允许过滤器1304和1305“伸出”原始输入图像。这种类型的卷积可以被称为“有效”卷积。这种类型的卷积可以导致小于原始输入的电位阵列(例如,电位阵列1309和1310)。
[0163]
图14示出了根据一些实施例的将八个定向滤波器神经元卷积应用于输入图像的结果。在图14中,具有单个通道的包含猫的输入图像1401被转换为尖峰图,该尖峰图具有与原始图像相同的宽度和高度维数,具有通道1402、1403、1404、1405、1406、1407、1408和1409。
[0164]
图15示出了根据一些实施例的基于dvs尖峰的卷积和基于帧的卷积之间的相似性。帧可以指由标准摄像机传输的帧。事件(或尖峰)由基于尖峰或事件的摄像机传输。基于事件的卷积可以在每个事件(或尖峰)处执行卷积运算,并将结果放置在输出膜电位阵列中。基于帧的卷积1502示出了基于经典帧的卷积,其中对整个图像执行了卷积。显示了卷积的参数和结果。基于事件的卷积1504显示了基于事件的卷积运算,其中在时间0纳秒(ns)处处理在(3,3)处的事件(或尖峰),然后在时间10ns处处理在(2,3)处的事件,之后在20ns处处理在(3,3)处的另一个事件,最后,在30ns处处理在(3,2)处的事件。在内核上方显示了处理完每个事件后的作为结果的阵列。最终结果是相同的。
[0165]
图16示出了根据一些实施例的yaml配置文件1600的示例。yaml文件可以是python编程语言的功能。在一些实施例中,yaml配置文件1600可以被用于对神经形态集成电路进行编程并且对其进行初始化以处理定义的应用中的事件(或尖峰)。事件由尖峰的出现来指示,并且可以指示图像中的颜色变换、所测量的模拟值的增大或减小、对比度的变化,分组中特定数据的出现或其他实际情况现象。
[0166]
在一些实施例中,神经形态集成电路或其软件仿真由yaml配置文件1600来配置,以处理具有八个不同神经层的scnn中的cifar10数据集。第一层(层1602)被配置为具有32
×
32位组织的输入层,以匹配于数据集的分辨率。该层可以将像素信息转换为尖峰,并且被连接到层1604。
[0167]
层1604被配置为具有第三突触权重的卷积层。层1604被定义为“卷积第三”层类
型。权重可以被从存在于特定目录中的名为“scnn_conv2_wts.dat”的文件预加载到层1604中。层1604被定义为使用“刷新缓冲器(flushingbuffer)”。“刷新缓冲器”可以被定义为在yaml配置文件1600中的其他位置处。层1604的尖峰数据包大小被定义为131,072尖峰。这可以等同于深度为8的32
×
32像素的全部帧。层1604被定义为具有到下一层(例如,层1606)的128个输出。层1604被定义为具有3
×
3像素的卷积大小,跨2
×
2场池化。
[0168]
可以对scnn中的每个卷积层进行类似配置。最后一层可以是“完全连接三元”类型,其指示该层是具有第三位的突触权重的完全连接层。这最后一层可以具有十个输出。这可以等同于cifar10数据集中所包含的十个分类。最后一层可以具有1024的分组大小。这可以等同于在先前的卷积层中返回的特征的数量。
[0169]
在一些实施例中,可在神经形态集成电路的初始化期间处理yaml配置文件1600。构造器任务可以从yaml配置文件1600中所指定的参数生成参数对象。构造器任务可以为yaml配置文件1600中的每个参数对象分配单独的层。可以用每个层的特定参数来创建每个层。数据结构可以被用于顺序地迭代通过所有层。可以为scnn中的每一层创建并初始化缓冲类型对象。除输入层外,每一层都可以通过被组织为扫描链的寄存器来初始化并连接到先前的层,输入层可以被连接到输入信号并输出到下一层。在层初始化期间,对连接列表、权重向量阵列和电位阵列进行初始化。连接列表可以包含有关连接了哪些神经元电路的信息。scnn中的每个神经元电路可以具有定义数量的突触,其中包含突触权重值。每个神经元的膜电位值可以被定义为所有突触权重向量的总和,所有突触权重向量连接到该神经元电路并由尖峰数据包中的尖峰值指定。
[0170]
图17示出了根据一些实施例的配置寄存器,该配置寄存器包括扫描链,该扫描链定义了每个神经元电路和神经元电路的每一层的配置和连通性。图17示出了根据一些实施例的配置寄存器,该配置寄存器包括扫描链,该扫描链定义了每个神经元电路和神经元电路的每一层的配置和连通性。可以以顺序方式将配置数据发送到神经处理器以构建处理序列。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜