Neto J R D O , Cajueiro J P C , Ranhel J . Neural encoding and spike generation for Spiking Neural Networks implemented in FPGA[C]// International Conference on Electronics. IEEE, 2015.
摘要:在这篇文章中提出了一个新的产生脉冲序列的数字系统。在实时下,该系统可针对于SNN,将数字值转换成人工神经脉冲。该数字系统可以实现三种基本的功能:生成脉冲,转换数字值到脉冲序列,以及使用三种在神经科学文献中主要提出的编码方法来编码脉冲序列。三种方法分别是:频率编码、时间编码以及总体编码。因此该数字系统是物理世界、计算机系统、或者数字数据与脉冲神经网络之间的交互接口,并且是可以实时处理的。提出的系统模型在Cyclone IV FPGA上进行开发,且占用资源少于300逻辑块。
1.绪论
脉冲神经网络是在人工智能领域下的一种人工神经网络,与过去的几代人人工神经网络相反,SNNs考虑到信息的时间,这样更加贴近于人工的神经元。生物神经元产生编码信息到网络的动作电位。动作电位,也被称作脉冲,是平均持续时间为1ms的电脉冲。由于它的的操作特性,人工的SNNs需要进行适当操作的脉冲序列。因此,在SNNs处理之间,必须将信息转换成脉冲。
在Neural Assembly Computing的研究中已经展示了一种SNN如何创建逻辑门、内存、序列以及有限状态机的方法。最近,脉冲神经组件(SNA)如何结合模拟和数字刺激并建立幅度比较电路。因此,结合的和序列的控制电路使用(SNAs)是可能的。然而,产生脉冲,SNNs需要专用的硬件去实时的处理信息。实时的处理信息可以在神经形态芯片被实现,其中包含了模拟处理,有时可能也会与数字相结合。另一方面,实时的脉冲处理也可以被实现通过一些特别的数子系统,例如FPGA和SoCs,其可以处理大量的并行数据。所有的这些特殊的硬件可以完成实时操作,但是它们需要专门的脉冲序列来喂养。
在这种理论下,为了实时转换物理现象或者其它信息到脉冲序列给SNNs,交互接口是必须的。更多的是,除了转换脉冲,这样的接口在某些“代码”方案中限制转换后的信息也是可取的。
在神经科学文献中三种编码方法被提出:频率编码,其是基于一群神经元的某一个神经元的平均发射速率进行编码的。时间编码,其是根据参考信号计算脉冲序列,以及总体编码,其是在一个时间窗口,考虑了在一个总体中活跃的胞体个数。
在本文章中提出的系统可以实现三种独立的或者相互关联的任务,可以操作从一个到数以千计的神经元。该系统可以,独立的,产生脉冲序列在用户定义的频率下。它也可以实时转换数字的输入值为脉冲序列。除此之外,为了生成三种在神经科学中最重要的神经编码,它也可以组织发射神经元的群。
这篇文章按照以下文章组织:section II 就自然动作电位和人工动作电位以及神经科学中有关信息编码的研究进展作一简要综述。section III解释了怎样去使用这个系统以及它的主要参数。section IV 展示了功能模型参数和测试结果。section V我们讨论发现以及未来工作,section VI是我们的总结。
2.自然活跃电位和脉冲
动作电位是一种简化的方法来编码信息,是因为能量的消耗是非常小的。另一个好处是同步确定了一个低功耗对于神经系统。脉冲神经网络使用数字表单形式的神经元动作电位,也称作人工神经元脉冲。
图一展示了人工神经元的动作电位和它的在SNN中使用的人工版本。自然神经元有一个大概-65mV的静态膜电位,可以看Fig1的I部分。兴奋性脉冲从突触前连接会导致膜电位升高,这个现象称为EPSP(兴奋突触后电位)。相反,如果是抑制性脉冲会导致膜电位下降,称为IPSP(抑制突触后电位)。当EPSPs超过了定义的阈值,一系列的事件将会被触发在胞体内:嵌入细胞膜的蛋白质是扭曲的,并且会导致膜的通道被打开。然后,正向充电进入胞体,它提高了内部势能,得到一个更正的值。将提高胞体电压到+30mV,也代表着该神经元发射了脉冲。发射也出发了一个重恢复的进程:一些蛋白质通道关闭,活跃的离子逃离胞体,以至于神经元重新将它的膜电位下降到负值(fig1 - III).该复极化的过程导致膜电位跌落至-65mV,并且需要花费几个ms恢复到静息电位。这几毫秒被称为不应期,即神经元从发射脉冲后恢复到静息电位的时间。标示着持续时间和幅值大概1ms以及+30mV。因此,可以假设动作电位只含有1bit的信息:如果神经元发射(1)或者不(0)。因此,复制脉冲数字逻辑是可行的。注意,不应期可以由人工snn模拟,不需要由数字脉冲产生电路产生。
然而,如果神经元的动作电位仅仅携带1bit,神经元应该如何编码呢?神经科学仍然尝试这个问题的所有答案。人们几乎一致认为,神经元编码信息,因此它们可以在脉冲序列中表示复杂的信息。迄今为止,神经科学家可以区分三种类型的神经编码:速率编码,时间编码和群体编码。在某些情况下,相位编码也被描述,但我们认为相位编码只是时间编码的一种特殊情况。
速率编码,又称频率编码,认为神经元的放电速率携带信息,而不关心每个神经元放电的顺序。它是文献中最传统的编码形式。
时间代码考虑每个脉冲的准确时间,也就是发射速率的高频波动。时间编码包括:群体中哪个神经元首先被激发,刺激发生后第一个峰值的时间,以及神经元组的同步。
种群编码认为信息是由一组神经元在一定时间内激活的数量来表示的。人口编码是神经科学中为数不多的数学上表述良好的问题之一。
3.功能和系统设置
我们提出了产生器、变换器、脉冲序列编码器(GCEst),作为数字数据(来自物理世界,数字模拟等)和SNNs之间的交互接口。GCEst将物理的数据转换成人工神经元脉冲,使用的是上述的三个编码规则之中的一种。每一个GCEst模块可以仿真1024个并行工作的神经元,每一个都可以单独的被配置编码规则以及发射速率。对此,GCEst拥有两种配置内存:输入存储器(IM)和阈值存储器™。对于相同的神经元拥有相同的地址进行配置。
在IM中的每一个值被连接到一个计数器并且定义了每一个神经元的发射速率。计数器被实现在寄存器存储器中(CM)。IM的最后一位起到一个特别的地位。它控制所有计数器是否同时或单独重置。在这个内存位置上任何不同于零的值都会使CM中的所有位置同时复位,否则,当计数器的值与IM中保存的值相匹配时,每个计数器都将被重置。用户可以控制保存在IM和TM中的内容。
TM是神经元不发出信号的最小输入值。这些值的配置允许数字电路产生为这个系统预测的所有神经代码
A.产生速率编码脉冲
当MT的所有地址和IM的最后一位被设置成0的时候,系统产生速率编码脉冲。其他IM的地址定义了各自神经元的预期放电周期,所以发射速率,与存储在内存的值成反比。内存中如果为0便意味着神经元没有使能。对于一个非0的n,发射速率被给1,Fs是脉冲的频率(Hz)并且n是存储在IM中的数值。
在自然神经元中发现亚赫兹频率的报道是很常见的。为了防止这样的功能,该系统允许用户配置一组神经元以非常低的频率放电。当这个函数激活时,这个模块可以根据公式2发射:
请注意,这只是用户为一组神经元选择操作范围的问题,以实现低或高频率。主要射击速率范围,从2到80峰值每秒,可以在任何两种操作模式中产生。
B.使用频率编码
如前所述,IM的最后一个位置负责为所有神经元产生同步信号。在这个存储位置记录的非零值表示所有神经元计数器的重置频率。这种重设速率遵循与神经元放电速率相同的规律,公式1,在这种情况下,n是IM最后位置记录的值,Fs是“同步”频率。
C.使用群体编码
种群的构型是通过TM来确定的。这个记忆中的每个位置都表明了一个神经元为了属于一个种群而必须脉冲的最小放电速率。换句话说,对于相同的内存地址,如果1M中包含的值大于TM中的值,则神经元不发射;否则,神经元就会以设定的速度开始放电。
D.如何在神经元脉冲中转换信息
用户应该考虑对数据进行归一化处理,其范围将适用于方程1和2。我们的系统不直接编码模拟值,因此必须使用某种类型的ADC转换器-好的选择是廉价的微控制器。编码模式和用来表示某些信息的神经元数量取决于用户的设计选择,以及信息的类型。这种研究是在数据与网络结合之前进行的。在做出这样的决定之后,它们就成为处理信号的特定规则。选择编码方案的一个很好的选择是寻找仿生解。这意味着要在生物体中找到类似的系统,以及神经科学认为这些系统是如何编码信息的。将其作为项目的首选是一个好主意。
E.输入电路
输入电路(IC)是外界信号进入GCEst电路的网关。它为记忆库提供信息,并设定系统的工作模式。这些设置可以在运行时更改,从而更好地使用系统。
这里我们描述了在功能原型中实现的电路。我们实现了一个标准SPI传输作为输入。然而,该系统是模块化的,因此可以方便地修改所使用的通信标准。IC将在3字节的包中接收内存位。输入电路的原理图见图2
输入数据包如图3所示。两个最高位字节用于寻址内存位置,而最低位字节的数据存储在相应的内存地址中。16位地址位中的10个最低有效位用于每个存储器的内部地址。第11位表示哪些内存被访问。其他5位为模块地址保留。这使得管理32个GCEst模块成为可能,将它们连接到同一总线上。
在接收到完整的封装后,集成电路提供要写入存储器的数据。
F.控制块
控制块(CB)是整个系统的核心。它是一个数字电路基于时钟(时钟事件驱动),时钟的分辨率是1ms。CB是一个流水线,实现算数操作所有的存储地址,决定发射的神经元,和保存结果到第三个存储块,称为脉冲存储器(SM)。
CB块在图四中被展示。一个5状态的有限状态机,从S1到S5,控制着这个模块。S1是初始状态;机器停留在这个状态直到接收到一个主时钟事件到逻辑等级1,然后FSM改变状态到S2。比较内存值的命令出现在S2中,这个信号触发一个负责比较的辅助电路IM, TM和CM内存,并更新SM。这就是我们所说的步进比较。当模块完成这个过程时,比较器电路强制一个信号调用将COMPARISON_COMPLETE添加到逻辑级别,然后FSM变为S3状态。
在S3状态下,模块在MCLK上等待一个新事件。当这种情况发生时,FSM会变为以下状态之一:S4模块是否以同步方式运行,S5模块是否以异步方式运行。S4和S5两种状态都使一个辅助电路能够刷新CM和SM。S4和S5状态的不同之处在于,当用户设定特定的条件时,S4中所有CM的位置都将重置为零,虽然FSM处于S5状态时不会发生这种情况。在S5状态下,每个计数器的内存位置都被单独评估,并与其对应的值进行比较IM。当它们相等时,模块将SM更新为’1’(神经元被激活),否则SM被清除(设置为’0’)。
在更新所有内存块信号之后,模块生成信号MEMORY_UPDATED,并将FSM放回s1状态,只等待另一个MCLK事件重新启动进程。
总之,这个“核心”模块负责生成单个峰值,并在峰值发生时更新SM。它还负责同步事件,这些事件在用户编程模块执行时生成依赖于时间的代码。
G.输出电路:
与IC一样,这个会话展示了功能原型中实现的电路,如图5所示。然而,任何通信协议或SM访问电路的变化都可以使用,以确保可用性数据馈送SNN。
输出电路或系统输出模块负责读取SM,并将其内容发送给其他设备,这些设备使用SM数据以串行或并行方式提供给SNN。SM保存每个神经元的当前状态(有脉冲或没有脉冲),每个神经元一个比特。我们可以用128个8位字来访问这个存储器。
SPI主模块传输SM,可以配置为在计算峰值时自动传输,或等待外部信号(ENABLE_SP I_OUT)开始发送数据。在原型中,这个命令是由一个按钮分配的。
SPI主电路有一个内部状态机,它将系统时钟除以一个预先编程的常数,生成所需的波特率。它也可能编程数据作为稳定在时钟的下降边缘或上升边缘,数据是否发送与最高有效位首先,大端,或是否最后有效位首先发送,小端ian。考虑到这一点,用户可以根据谁将读取数据模块来设置电路。从SM中读取的最后8位存储在寄存器中并同时可用。
4.结果
我们提出的电路使用Verilog进行描述并且使用Quartus II 14.0综合,b并在 Altera Cyclone IV FPGA EP4CE622C8N是实现。FPGA有6272个逻辑块和276,480位RAM。该项目使用了236个逻辑块和25600位RAM,总计4%和9%的硬件成本。选择使用FPGA的内部RAM来实现存储器和计数器,保证了逻辑块的小消耗,因此可以在单个低成本FPGA中合成几个相同的模块,例如使用的Cyclone IV。
使用Arduino原型打字板向系统输入数据。由GCEst电路产生的输出数据被捕获在一个8通道低成本逻辑分析仪中,捕获数据的速率高达24mhz。我们的系统生成的输出数据使用USBee Suite软件进行分析,本节显示的信号流图就是从这里获得的。
图6显示了在速率编码模式下工作的8个神经元保持相同时间关系的峰值。通道0到3显示最高的峰值频率。记录1M位置,n(0) = 1, n(1) = 2, n(2) = 3, n(3) = 4。频道4到7显示最慢的尖峰频率。记录1M位置,n(4) = 255, n(5) = 254, n(6) = 253, n(7) = 252。结果见表一、逻辑分析仪设置为12 Msps,图6所示的数据是由1000万个样本形成的。每个信号的小数点后6位sh的FM是相同的。
5.讨论
对于表I的测量,我们发现测量值与期望值之间的偏差非常小,小于0.05%,甚至可能是由于测量电路造成的。USBee套件软件计算频率周期到周期,并没有看到相同信号的不同周期的频率之间没有变化,注意到该软件提供了小数点后6位的精度。
由于它的资源利用率小,可以在同一个FPGA内复制各种模块。如前所述,输入接口最多可以为32个GCEst模块寻址。一个模块占用4%的逻辑块,占用9%的逻辑块RAM在我们的FPGA,使它可以合成多达10GCEst模块产生多达10240个神经元。
关于神经元的并行输出,系统允许配置模拟神经轴突的单个输出。在这种情况下,限制是所选FPGA中可用的物理输出管脚的数量。有大量输出引脚的fpga,而我们所使用的fpga允许我们配置最多48个引脚作为并行的人工轴突。扩展并行输出轴突数量的另一种可能性是使用低成本的cpld。
目前与类似系统的直接比较是不可能的。在文献中,我们可以找到很少的例子spike神经网络在实时操作。这是一个相对较新的研究领域,只有少数系统在运行。另一方面,神经形态商业系统是由专利保护的,这些网络上的数据输入系统并没有被清楚地描述,例如,Brain Power项目
IBM和高通零处理器。
尽管该系统的设计目标是成为实时SNN的接口,但也可以将其用作为任何类型的SNN生成信号的专用硬件。例如,它可以将计算机数据集转换成一系列脉冲信号。该硬件具有模块化、低成本、低功耗等特点,可以作为snn控制的嵌入式系统的输入模块。我们决定不显示亚赫兹频率,因为在之前的图形中不容易看到它们。
6.总结
低于10%的FPGA资源占用被使用在这个工作中去产生1023个人工神经元去喂养实时脉冲神经网络。该系统编码使用三种主流的神经编码方式:速率编码、时间编码以及总体编码。用户可以控制实时发射速率和系统通过在特定存储位置内改变数字数字而产生的一种编码方式。虽然这些模块中的32个可以在FPGA中复制,而且32个K的神经元在低成本的FPGA中很容易实现,但该系统已经测试了1024个神经元的生成和控制峰值。
7.致谢
作者感谢UFPE研究小组BINAC的成员(http://www.binac.org, http://www.neuralassembly.org)。同时,我们感谢PROACAD对BINAC集团的部分支持,以及CNPq通过部分支持这个项目。我们感谢Altera大学项目为Quartus II授权。