基于脉冲神经网络的应用于语音关键字识别的低功耗系统

专利2023-03-28  8



1.本发明属于人工智能算法硬件加速领域,尤其涉及一种基于脉冲神经网络的应用于语音 关键字识别的低功耗系统。


背景技术:

2.人类脑科学的不断发展催生出了被誉为第三代神经网络的脉冲神经网络,脉冲神经网络 模拟生物神经元的运行机制,基于脉冲序列作为信息载体传递信息,凭借其天生的稀疏特 性,能够获得比人工神经网络更高的能效比。
3.在传统的机器视觉、语音识别等领域,脉冲神经网络已经展现出了充足的发展潜力,在 一些特定领域甚至实现了比人工神经网络更优的性能,同时具有更低的功耗和延时,引起 了研究人员们的研究热情。
4.脉冲神经网络天生的数据稀疏性带来了低功耗优势,然而如何合理地利用脉冲神经网络 的数据稀疏特性,进一步降低硬件实现的功耗,提高能效比,成为了设计人员的一个难题。 并且,脉冲神经网络的时间编码特性带了更强的时空信息处理能力的同时,也带来了一定 的时间延时。具体来说,脉冲序列编码的信息不仅需要像传统神经网络一样在空间上传播, 还需要在时间维度上传播,即需要多个时间步长,这给脉冲神经网络的吞吐率和能效比带 来了一定的损失。
5.本课题组之前提出了一种解决方案,设计了有效状态过滤机制过滤有效状态,跳过无效 计算,然而此种方案的串行有效状态检测在解决上述问题时也带来了检测延时。与此同时, 将卷积和池化进行分离,首先进行卷积操作,然后再将卷积结果写入存储中,完成卷积后 再接着进行池化,此种方案带来了不必要的访存功耗和访存延时。


技术实现要素:

6.本发明的目的在于克服以上现有技术之不足,提供一种可以支持语音关键词识别任务, 并且资源利用率高、功耗低、延时小的基于脉冲神经网络的低功耗系统,适用于嵌入式和 物联网领域内的语音识别交互、关键词唤醒等应用。
7.本发明具体由以下技术方案实现:
8.一种基于脉冲神经网络的应用于语音关键字识别的低功耗系统,包含外部存储、上位 机和加速器,其中,加速器包括:
9.控制器,通过总线读入上位机指令并进行译码,然后发送到加速器的各个单元,执行 相应指令;
10.片上存储模块,用于存储包括脉冲神经元发放状态、神经元膜电压和突触权重在内的 脉冲神经计算数据,
11.调度器,接收指令并基于接收到的指令从片上存储模块调取脉冲神经计算数据,送入 计算阵列;
12.计算阵列;基于接收到的脉冲神经计算数据进行计算,直到产生最终结果。
13.根据本技术的一个方面,所述控制器包括神经元状态机和译码单元,所述译码单元用 于解码接收到的上位机发送的指令,所述状态机根据加速器各个模块传递的信号对状态进 行更新,同时完成数据调度。
14.根据本技术的一个方面,所述片上存储模块包括三个相互独立部分存储单元,分别用 于存放脉冲神经元发放状态、神经元膜电压以及突触权重,所述片上存储模块由两个以上 的计算单元共享。
15.根据本技术的一个方面,脉冲神经元状态存储采用二维坐标结构(状态值v,距离d), 状态值v表示有效脉冲神经元状态的值1,距离d代表该神经元状态距离该行上一个有效 脉冲神经元状态的距离即地址偏移量,无效状态将不被存储。
16.根据本技术的一个方面,脉冲神经元发放状态state的地址通过累加行地址与地址偏移 量得到,公式如下:
[0017][0018]
根据本技术的一个方面,所述计算阵列包括八路并行的脉冲神经元计算单元,可并行进 行八路卷积计算、全连接以及最大池化,大幅减少计算延时。
[0019]
根据本技术的一个方面,卷积过程中的脉冲神经元状态结果不写回存储,将通过fifo 进行缓存,fifo缓存一行后与下一行结果进行最大池化,池化结果再写入存储中。
[0020]
根据本技术的一个方面,所述的脉冲计算单元可执行四种指令操作:
[0021]
第一指令:脉冲神经元计算单元将输入的有效权重与膜电压进行累加,更新膜电压;
[0022]
第二指令:脉冲神经元计算单元检测脉冲神经元是否发射脉冲,若膜电压高于阈值对 应神经元切换至发射状态,否则保持集聚状态;对脉冲神经元状态执行最大池化操作;
[0023]
第三指令:脉冲神经元计算单元检测脉冲神经元是否发射脉冲,并将其作为脉冲神经 元状态输出,不进行最大池化;
[0024]
第四指令:脉冲神经元计算单元将神经元膜电压重置至0。
[0025]
根据本技术的一个方面,所述脉冲神经网络中卷积层、最大池化层、全连接层分别具 有不同的数据流为;
[0026]
1)、控制器根据卷积网络层配置将参与卷积运算的神经元状态从存储中取出,并送入 调度器中;
[0027]
2)、调度器计算出有效状态在存储中的实际地址;
[0028]
3)、控制器根据有效状态的地址取出有效状态的突触权重和膜电位,送入脉冲计算单 元中进行计算,脉冲计算单元依次执行第一指令、第二指令和第四指令;
[0029]
4)、更新后的膜电压写回到存储模块中,脉冲状态则写入fifo中,一行数据缓存完 毕后开始进行两两比较,完成最大池化,写回存储模块中;
[0030]
5)、当前卷积、最大池化计算完成后,控制器状态机跳转至下一状态;
[0031]
在全连接层,计算单元工作在全连接层的数据流与卷积类似,不同的是神经元状态state 的寻址过程会受到fifo数据位宽的限制,调度器的计算需要分批进行;
[0032]
同时,全连接层运算全部结束后需要对全局神经元状态和膜电位进行置零,以便
下一次 计算;除此之外,全连接层无需进行最大池化,因此执行第三指令。
[0033]
根据本技术的一个方面,脉冲神经元计算单元的架构包括:
[0034]
膜电压累加单元,包括信号连接的选择器、累加器和膜电压寄存器,工作时,更新初始 值信号,将信号置1,选择器选择神经元膜电压加载到膜电压寄存器中,由于神经元的泄露 特性,膜电压会持续衰减,衰减系数设为0.5,在硬件实现中可通过右移1比特实现;
[0035]
衰减后的膜电压与有效权重相加得到膜电压中间值,接着更新初始值信号置0,选择器 选择该膜电压中间值进入膜电压寄存器,在一次计算中,膜电压与多个有效权重进行累加, 在此期间更新初始值信号保持为0,膜电压与有效权重不断累加,直到完成所有计算,膜电 压寄存器输出最终膜电压中间值,用于后续计算;
[0036]
脉冲发放单元,包括信号连接的比较器、与门、判断模块和减法单元;
[0037]
累加完成后得到的膜电压中间值送入比较器中与膜电压阈值比较大小,如果膜电压中间 值大于膜电压阈值,比较器输出高电平,否则输出低电平,同时也作为脉冲神经元发放状 态信号送到池化单元,重置信号与比较器输出输入到与门中,当重置信号为低时,表示神 经元需要复位,状态信号以及膜电压均置零,当重置信号与比较器输出同时为高时,说明 脉冲神经元发放了脉冲且计算单元处于正常工作状态,状态信号输出为1,否则为0;判断 模块判断与门输出是否为0,与门输出为0则直接将当前膜电压输出,否则则说明神经元发 放了脉冲需要进行减法复位,当前膜电压将通过减法单元减去膜电压阈值,得到最终膜电 压,写回存储中;
[0038]
池化单元,包括信号连接的寄存器、先入先出单元、两个或门和选择器;
[0039]
脉冲发放单元输出的脉冲发放状态信号经寄存器依次存入先入先出单元中,待单数行状 态信号都存入先入先出单元后,紧邻的偶数行状态信号不再存入先入先出单元中,而是与 先入先出单元中的状态信号两两经过或门进行或操作;
[0040]
由于状态信号为“0”、“1”信号,因此最大池化只需通过或操作完成;或门输出最大 池化中间结果后输入到下一个或门中,选择器此时选择“0”信号输入到或门中,得到中间 结果;第一个或门会继续给出两两最大池化结果送入到第二个或门,此时选择器选择先前 的最大池化中间结果送入到第二个或门中,两个最大池化中间结果进行最大池化,得到2
ꢀ×
2最大池化的最终池化结果。
[0041]
本发明的有益效果:
[0042]
第一,采用二维坐标结构存储有效脉冲发放状态,基于脉冲神经网络的稀疏性,可以 避免大量无效计算,降低功耗,减少延时。二维坐标结构编码有效脉冲发放状态避免了传 统串行检测有效脉冲发放状态带来的延时和计算暂停,提高了硬件利用率并降低了延时。
[0043]
神经网络包含大量的卷积计算,造成了极大的计算延时。对于脉冲神经网络而言,其 输入为一连串由“0”、“1”组成的序列,因此,脉冲神经网络的卷积计算只需将序列“1
”ꢀ
对应的权重进行累加即可完成卷积运算。实验表明,脉冲神经网络的平均脉冲发放率仅为 8%,即脉冲神经网络的脉冲序列中包含大量的“0”,大量的无效计算消耗了计算资源,增 大了推理延迟。通过二维坐标结构,只存储有效状态,可以跳过无效计算。
[0044]
第二,卷积后的脉冲神经元状态经池化后再写回存储,有效降低了存储访问次数,存 储功耗也得以降低。
[0045]
传统的神经网络在卷积层需要将脉冲神经元发放状态写回存储,在池化层又需要将脉 冲神经元发放状态从存储中取出进行池化,频繁的存储器读取带来了较大的功耗,因此将 卷积结果通过fifo缓存进行池化后再写入存储,可以降低存储器访问次数,降低功耗。
[0046]
卷积直通池化,并行执行的方案,避免了传统设计中将中间卷积结果写回存储的环节, 卷积结果存入fifo后与下行结果直接两两池化,有效降低了存储访问次数,存储功耗也得 以降低。
[0047]
第三,采用了高度并行的计算架构,计算阵列内八路计算单元并行计算,能够有效降 低数据处理延迟,提高识别速度。
[0048]
相比于传统的神经网络只利用了信息的空间特性而忽略了信息的时间特性,脉冲神经 网络能够充分利用信息的时空特性,理论上具备更强的信息处理能力。然而这也给脉冲神 经网络带来了更高的延时。本发明采用了高度并行的计算架构,八路并行完成卷积、池化 和全连接操作,有效降低了计算延时,弥补了脉冲神经网络需要多个时间步长完成一次信 息处理的不足。
[0049]
第四,设计了一种高效的脉冲神经网络加速器架构,该架构可充分利用脉冲神经网络 的稀疏特性和时空特性,具有面积小、功耗低的优点。计算阵列内八路计算单元并行计算, 弥补了脉冲神经网络多步长的缺陷,能够有效降低数据处理延迟,提高识别速度。
[0050]
综上所述,本发明能够在保证语音关键词识别准确率的前提下,有效地提高语音关键 词识别的响应速度,同时降低硬件功耗,具有面积小、功耗低的优点,有着良好的实际应 用价值。
附图说明
[0051]
图1为本发明脉冲神经网络加速器的硬件架构示意图。
[0052]
图2为本发明脉冲神经元计算单元硬件架构示意图。
[0053]
图3为图2中a区域的放大图。
[0054]
图4为图2中b区域的放大图。
[0055]
图5为图2中c区域的放大图。
具体实施方式
[0056]
下面结合附图对本发明方案进行详细说明。为了更加详细地描述本发明的技术原理和 技术细节,下面介绍本发明的硬件架构。
[0057]
本实施例的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,包括外部存储、 上位机和脉冲神经网络硬件加速器,其中脉冲神经网络硬件加速器包括控制器、存储模块、 调度器以及计算阵列;控制器通过总线读入上位机指令并进行译码,然后控制加速器执行 相应指令,加速器依据指令并通过调度器从片上存储中取出对应的膜电压、突触权重等数 据,送入计算阵列中进行计算,直到产生最终结果。
[0058]
其中,控制器依据上位机发送的指令对加速器进行调度,其分为译码单元和状态机两部 分。译码单元解码上位机发送的指令,控制加速器完成对应的任务。状态机根据子模块传 递的信号对加速器的状态进行更新,同时完成各类数据调度。存储模块包括三个独
立部分, 分别存放脉冲神经元的状态、脉冲神经元的膜电压以及突触权重,存储模块由多个计算单 元共享;脉冲神经元状态存储采用了二维坐标结构(value,distance),value即有效脉冲神 经元状态的值1,distance代表该神经元状态距离该行上一个脉冲神经元状态的距离即地址 偏移量,无效状态将不被存储;
[0059]
脉冲神经元脉冲发放状态state的地址可通过累加行地址与地址偏移量得到,公式如下:
[0060][0061]
计算阵列由八路并行的脉冲计算计算单元构成,可并行进行八路卷积计算、全连接以及 最大池化,可大幅减少计算延时;
[0062]
的基于脉冲神经网络的应用于语音关键字识别的低功耗系统的进一步设计在于,卷积过 程中的脉冲发放状态结果不写回存储,将通过fifo进行缓存,fifo缓存一行卷积结果与 下一行结果进行最大池化,池化结果再写入存储中;
[0063]
脉冲计算单元可执行四种指令操作:
[0064]
第一指令(spike_compute):脉冲神经元计算单元将输入的有效权重与膜电压进 行累加,更新膜电压;
[0065]
第二指令(check_for_fire_with_maxpool):脉冲神经元计算单元检测脉冲 神经元是否发射脉冲,若膜电压高于阈值对应神经元切换至发射状态,否则保持集聚状态; 对脉冲神经元状态执行最大池化操作;
[0066]
第三指令(check_for_fire_without_maxpool):脉冲神经元计算单元检测 脉冲神经元是否发射脉冲,并将其作为脉冲神经元状态输出,不进行最大池化;
[0067]
第四指令(reset_neuron_state):脉冲神经元计算单元将神经元膜电压重置至 0;
[0068]
卷积层、最大池化层、全连接层分别具有不同的工作状态及对应数据流;卷积层、最大 池化层:(1)控制器根据卷积网络层配置将参与卷积运算的神经元状态从存储中取出,并 送入调度器中;(2)调度器计算出有效状态在存储中的实际地址;(3)控制器根据有效 状态的地址取出有效状态的突触权重和膜电位,送入脉冲计算单元中进行计算,脉冲计算 单元依次执行spike_compute、check_for fire_with_maxpool、 reset_neuron_state指令;(4)更新后的膜电压写回到存储模块中,脉冲状态则写 入fifo中,一行数据缓存完毕后开始进行两两比较,完成最大池化,写回存储模块中(5) 当前卷积、最大池化计算完成后,控制器状态机跳转至下一状态。
[0069]
全连接层:计算单元工作在全连接层的数据流与卷积类似,不同的是神经元状态state 的寻址过程会受到fifo数据位宽的限制,脉冲调度器的计算需要分批进行;同时,全连接 层运算全部结束后需要对全局神经元状态和膜电位进行置零,以便下一次计算;除此之外, 全连接层无需进行最大池化,因此执行check_for_fire_without_maxpool指令。
[0070]
实施例一
[0071]
如图1所示,本实施例的基于脉冲神经网络的语音关键词识别系统,主要由上位机、 外部存储external memory和脉冲神经网络加速器构成。脉冲神经网络整体架构由片上存储 memory、八路并行的脉冲计算阵列snpu cluster、控制器control组成。
[0072]
控制器根据上位机发送的指令对加速器进行调度,主要分为译码模块decoder和状态 机status两部分。译码模块对接收到的上位机发送的指令进行解码,进而生成各种控制脉 冲神经网络加速器各个模块运转的控制信号;状态机依据上位机的指令以及与脉冲计算阵 列中的计算单元、片上存储单元进行交互,控制加速核的运转,同时完成数据调度,保证 加速核各模块有条不紊的进行。
[0073]
在本实施例中,片上存储模块分为三个各自独立的部分,分别用于存储脉冲神经元的 脉冲发放状态(neuron state)、神经元膜电压(vmem)以及突触权重(synapse weights)。 计算模块由八路并行计算阵列以及调度器组成,计算阵列负责完成卷积、池化等计算,调 度器负责调度脉冲计算单元的输入。
[0074]
加速器的片上存储分为三个相互独立的部分,分别用于存储脉冲神经元脉冲发放状态 (state),神经元膜电压(vmem)和突触权重(weights)。
[0075]
在计算过程中,脉冲神经网络加速器需要产生正确的地址值以便从片上存储中取出相 应的数据参与计算。卷积和池化运算都需涉及地址的跳变,最为关键的便是获得有效状态 的索引,以便根据其获得相对应的神经元的膜电压、权重等参数送入计算阵列中进行计算, 同时避免无效计算。
[0076]
现举例说明,假设脉冲状态序列为0100_1000_0010_0000,从左往右,第一个有效状态 距行首的偏移为1,因此该有效状态可编码为(1,1),下一个有效状态距离上一个有效状 态为3,因此可编码为(1,3),以此类推,第三个有效状态可编码为(1,6)。因此有效状 态的实际地址可通过行地址加上累计偏移量得到,通过这种地址偏移累加可以用较小的位 宽表示更大的地址空间,节约存储资源。
[0077]
脉冲神经元计算单元的架构如图2所示,计算单元可根据指令的不同完成对应的卷积、 池化和全连接操作,其中全连接与卷积只在寻址方式上有所区别,计算模式基本一致,因 此在映射到计算单元时两者一致。
[0078]
基于脉冲计算单元,可进行简单的指令集设计,具体为:第一指令spike_compute, 用于更新神经元膜电压;第二指令check_for_fire_with_maxpool、用于比较阈值 电压,检查神经元是否发射脉冲,并进行最大池化;第三指令,check_for_fire _without_maxpool,用于比较阈值电压,检查神经元是否发射脉冲;第四指令 reset_neuron_state,用于重置神经元膜电压。脉冲计算单元根据接收到的指令进行 对应的操作。脉冲计算单元的输入包括:权重(weight)、神经元当前膜电压(vmem), 输出包括更新后的神经元膜电位(vmem’)及更新神经元状态(state’)。控制器控制输出 信号写回存储模块。
[0079]
如图3所示,第一指令spike_cmopute:计算单元接收到该指令时,计算单元将输 入的有效状态对应的有效突触权重进行累加,然后更新膜电压。lif神经元模型具有leaky 特性,即膜电压会随着时间不断衰减,在本设计中,leaky设为0.5,在电路中可通过右移 实现,便于硬件实现。膜电压每个时间步长内的膜电压增量为当前时刻所有的有效突触权 重之和,即∑
1n
w。假设在时间步长t时刻,神经元膜电压为vmem(t+1),某神经元的前向 有效的突触权重为n,则神经元的膜电位为vmem(t+1)=(vmem(t)>>1)+∑
1n
w。由于脉冲神经 元的动态特性,t时刻内脉冲神经元的有效权重数n值也将是动态变化的,因此还需要参数 acc_length指明实际参与操作的数据长度。
[0080]
如图4所示,第二指令check_for_fire_with_maxpool:计算单元收到 check_for_
fire指令时,计算单元检测神经元膜电压中间变量vmem_tmp,判断当前神 经元是否发射脉冲。如图4中

所示,膜电压中间值vmem_tmp与预设参数电压阈值vth 比较大小,若vmem_tmp<vth,则神经元不发射脉冲,state_tmp=0;否则神经元发射脉冲, state_tmp=1。
[0081]
如图5所示,更新后的单数行脉冲神经元状态将写入到fifo中,进行最大池化。由于 脉冲神经元状态为“0”、“1”序列,因此最大池化只需通过或门实现。奇数行脉冲神经 元状态缓存完毕后,与下一行的偶数行脉冲神经元状态进行或操作,完成最大池化。
[0082]
第三指令check_for_fire_without_maxpool,
[0083]
与第二指令check_for_fire_with_maxpool指令类似,但不进行最大池化,更 新后的脉冲神经元状态直接作为最后输出,此时选择信号pool为0。
[0084]
第四指令reset_neuron_state:计算单元收到第四指令 reset_neuron_state时,需要对神经元膜电压进行重置。有两种情况,膜电位需要重 置,一是语音信号处理完毕,需要将膜电位全部置零写回存储中以备下一次运算;二是神 经元发射脉冲后膜电压vmem需减去阈值vth。
[0085]
如图4,当vreset为1时,神经元进行置零复位;当vreset为0且state_tmp为1时, 执行减法复位;其他情况则不执行复位操作。
[0086]
卷积层、最大池化层、全连接层分别具有不同的工作状态及对应数据流。
[0087]
卷积层、最大池化层:
[0088]
(1)控制器根据卷积网络层配置将参与卷积运算的神经元状态从存储中取出,并送入 调度器中。
[0089]
(2)调度器计算出有效状态在存储中的实际地址。
[0090]
(3)控制器根据有效状态的地址取出有效状态的突触权重和膜电位,送入脉冲计算单 元中进行计算,脉冲计算单元依次执行第一指令(spike_compute)、第二指令 (check_for fire_with_maxpool)、第四指令(reset_neuron_state指令)。
[0091]
(4)更新后的膜电压写回到存储模块中,脉冲状态则写入fifo中,一行数据缓存完 毕后开始进行两两比较,完成最大池化,写回存储模块中。
[0092]
(5)当前卷积、最大池化计算完成后,控制器状态机跳转至下一状态。
[0093]
全连接层:计算单元工作在全连接层的数据流与卷积类似,不同的是神经元状态state 的寻址过程会受到fifo数据位宽的限制,脉冲调度器的计算需要分批进行;同时,全连接 层运算全部结束后需要对全局神经元状态和膜电位进行置零,以便下一次计算;除此之外, 全连接层无需进行最大池化,因此执行第三指令(check_for_ fire_without_maxpool)指令。
[0094]
如图3至图5所示,脉冲神经元计算单元的架构包括:
[0095]
膜电压累加单元,包括信号连接的选择器、累加器和膜电压寄存器,工作时,更新初始 值信号,将信号置1,选择器选择神经元膜电压加载到膜电压寄存器中,由于神经元的泄露 特性,膜电压会持续衰减,衰减系数设为0.5,在硬件实现中可通过右移1比特实现;
[0096]
衰减后的膜电压与有效权重相加得到膜电压中间值,接着更新初始值信号置0,选择器 选择该膜电压中间值进入膜电压寄存器,在一次计算中,膜电压与多个有效权重进行累加, 在此期间更新初始值信号保持为0,膜电压与有效权重不断累加,直到完成所有计算,膜电 压寄存器输出最终膜电压中间值,用于后续计算;
[0097]
脉冲发放单元,包括信号连接的比较器、与门、判断模块和减法单元;
[0098]
累加完成后得到的膜电压中间值送入比较器中与膜电压阈值比较大小,如果膜电压中间 值大于膜电压阈值,比较器输出高电平,否则输出低电平,同时也作为脉冲神经元发放状 态送到池化单元;
[0099]
如比较器输出高电平,说明脉冲神经元发放了脉冲,膜电压需要进行减法复位,当前膜 电压减去膜电压阈值得到最终膜电压,写回存储中,如果比较器输出低电平,则不需进行 减法复位,直接将当前膜电压输出;脉冲发放单元支持置零复位,复位信号拉高,膜电压 重置为0;
[0100]
池化单元,包括信号连接的寄存器、先入先出单元、两个或门和选择器;
[0101]
脉冲发放单元输出的脉冲发放状态信号经寄存器依次存入先入先出单元中,待单数行状 态信号都存入先入先出单元后,紧邻的偶数行状态信号不再存入先入先出单元中,而是与 先入先出单元中的状态信号两两经过或门进行或操作;
[0102]
由于状态信号为“0”、“1”信号,因此最大池化只需通过或操作完成;或门输出最大 池化中间结果后输入到下一个或门中,选择器此时选择“0”信号输入到或门中,得到中间 结果;第一个或门会继续给出两两最大池化结果送入到第二个或门,此时选择器选择先前 的最大池化中间结果送入到第二个或门中,两个最大池化中间结果进行最大池化,得到2
ꢀ×
2最大池化的最终池化结果。
[0103]
本发明采用了两层卷积、两层最大池化、两层全连接层的脉冲神经网络结构,网络参 数如表1。数据集采用谷歌开源音频数据集(gscd,google speech command dataset),在 4class的条件下达到了94.0%的分类准确率。
[0104]
表1
[0105]
网络层数窗口大小输出尺寸0输入层 134
×
121卷积层9
×
5128
×
12
×
162最大池化层2
×
264
×6×
163卷积层4
×
432
×3×
164最大池化层4
×
38
×1×
165全连接层 646全连接层 4
[0106]
总之,现有技术针对脉冲神经网络的稀疏性,减少无效计算,降低功耗并推理延时时, 采用的主要发放是检测脉冲神经元状态中的无效状态,然后跳过相关计算。然而此方案由 于脉冲神经元状态在存储中常为顺序存储,因此在进行脉冲神经元有效状态过滤时常常只 能串行进行,影响硬件设计的并行性。
[0107]
相比而言,本设计的二维存储结构,减少了有效状态过滤延时。本设计的二维存储结 构的编解码实现非常简单,实现面积小,同时,合理设计二维存储结构,只存储有效状态, 也能够减少存储资源的需求。
[0108]
在硬件的并行设计上,目前常见技术方案将卷积与池化分离,先进行卷积操作,然后再 将卷积结果写入存储中,完成卷积后再接着进行池化,这么做虽然硬件结构较为简单,但 带来了不必要的访存功耗和访存延时。本方案将奇数行脉冲神经元状态通过fifo缓
存,然 后依次与下一行的脉冲神经元状态进行两两比较,并行完成卷积和池化操作,可以降低访 存功耗和访存延时。
[0109]
以上所述,仅是本发明的较佳实施例,并非是对本发明作其它形式的限制,任何熟悉 本专业的技术人员可能利用上述揭示的技术内容加以变更或改型为等同变化的等效实施例。 但是凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单 修改、等同变化与改型,仍属于本发明技术方案的保护范围。

技术特征:
1.一种基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:包含外部存储、上位机和加速器,其中,加速器包括:控制器,通过总线读入上位机指令并进行译码,然后发送到加速器的各个单元,执行相应指令;片上存储模块,用于存储包括脉冲神经元发放状态、神经元膜电压和突触权重在内的脉冲神经计算数据,调度器,接收指令并基于接收到的指令从片上存储模块调取脉冲神经计算数据,送入计算阵列;计算阵列;基于接收到的脉冲神经计算数据进行计算,直到产生最终结果。2.根据权利要求书1所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:所述控制器包括神经元状态机和译码单元,所述译码单元用于解码接收到的上位机发送的指令,所述状态机根据加速器各个模块传递的信号对状态进行更新,同时完成数据调度。3.根据权利要求书1所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:所述片上存储模块包括三个相互独立部分存储单元,分别用于存放脉冲神经元发放状态、神经元膜电压以及突触权重,所述片上存储模块由两个以上的计算单元共享。4.根据权利要求书3所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:脉冲神经元状态存储采用二维坐标结构(状态值v,距离d),状态值v表示有效脉冲神经元状态的值1,距离d代表该神经元状态距离该行上一个有效脉冲神经元状态的距离即地址偏移量,无效状态将不被存储。5.根据权利要求书4所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:脉冲神经元发放状态state的地址通过累加行地址与地址偏移量得到,公式如下:6.根据权利要求书1所述的基于脉冲神经网络的应用于语音关键字识别系统,其特征在于:所述计算阵列包括八路并行的脉冲神经元计算单元,可并行进行八路卷积计算、全连接以及最大池化,大幅减少计算延时。7.根据权利要求书3所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:卷积过程中的脉冲神经元状态结果不写回存储,将通过fifo进行缓存,fifo缓存一行后与下一行结果进行最大池化,池化结果再写入存储中。8.根据权利要求书6所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:所述的脉冲计算单元可执行四种指令操作:第一指令:脉冲神经元计算单元将输入的有效权重与膜电压进行累加,更新膜电压;第二指令:脉冲神经元计算单元检测脉冲神经元是否发射脉冲,若膜电压高于阈值对应神经元切换至发射状态,否则保持集聚状态;对脉冲神经元状态执行最大池化操作;
第三指令:脉冲神经元计算单元检测脉冲神经元是否发射脉冲,并将其作为脉冲神经元状态输出,不进行最大池化;第四指令:脉冲神经元计算单元将神经元膜电压重置至0。9.根据权利要求书8所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于:所述脉冲神经网络中卷积层、最大池化层、全连接层分别具有不同的数据流为;1)、控制器根据卷积网络层配置将参与卷积运算的神经元状态从存储中取出,并送入调度器中;2)、调度器计算出有效状态在存储中的实际地址;3)、控制器根据有效状态的地址取出有效状态的突触权重和膜电位,送入脉冲计算单元中进行计算,脉冲计算单元依次执行第一指令、第二指令和第四指令;4)、更新后的膜电压写回到存储模块中,脉冲状态则写入fifo中,一行数据缓存完毕后开始进行两两比较,完成最大池化,写回存储模块中;5)、当前卷积、最大池化计算完成后,控制器状态机跳转至下一状态;在全连接层,计算单元工作在全连接层的数据流与卷积类似,不同的是神经元状态state的寻址过程会受到fifo数据位宽的限制,调度器的计算需要分批进行;同时,全连接层运算全部结束后需要对全局神经元状态和膜电位进行置零,以便下一次计算;除此之外,全连接层无需进行最大池化,因此执行第三指令。10.根据权利要求6、7或8所述的基于脉冲神经网络的应用于语音关键字识别的低功耗系统,其特征在于,脉冲神经元计算单元的架构包括:膜电压累加单元,包括信号连接的选择器、累加器和膜电压寄存器,工作时,更新初始值信号,将信号置1,选择器选择神经元膜电压加载到膜电压寄存器中,由于神经元的泄露特性,膜电压会持续衰减,衰减系数设为0.5,在硬件实现中可通过右移1比特实现;衰减后的膜电压与有效权重相加得到膜电压中间值,接着更新初始值信号置0,选择器选择该膜电压中间值进入膜电压寄存器,在一次计算中,膜电压与多个有效权重进行累加,在此期间更新初始值信号保持为0,膜电压与有效权重不断累加,直到完成所有计算,膜电压寄存器输出最终膜电压中间值,用于后续计算;脉冲发放单元,包括信号连接的比较器、与门、判断模块和减法单元;累加完成后得到的膜电压中间值送入比较器中与膜电压阈值比较大小,如果膜电压中间值大于膜电压阈值,比较器输出高电平,否则输出低电平,同时也作为脉冲神经元发放状态信号送到池化单元,重置信号与比较器输出输入到与门中,当重置信号为低时,表示神经元需要复位,状态信号以及膜电压均置零,当重置信号与比较器输出同时为高时,说明脉冲神经元发放了脉冲且计算单元处于正常工作状态,状态信号输出为1,否则为0;判断模块判断与门输出是否为0,与门输出为0则直接将当前膜电压输出,否则则说明神经元发放了脉冲需要进行减法复位,当前膜电压将通过减法单元减去膜电压阈值,得到最终膜电压,写回存储中;池化单元,包括信号连接的寄存器、先入先出单元、两个或门和选择器;脉冲发放单元输出的脉冲发放状态信号经寄存器依次存入先入先出单元中,待单数行状态信号都存入先入先出单元后,紧邻的偶数行状态信号不再存入先入先出单元中,而是
与先入先出单元中的状态信号两两经过或门进行或操作;由于状态信号为“0”、“1”信号,因此最大池化只需通过或操作完成;或门输出最大池化中间结果后输入到下一个或门中,选择器此时选择“0”信号输入到或门中,得到中间结果;第一个或门会继续给出两两最大池化结果送入到第二个或门,此时选择器选择先前的最大池化中间结果送入到第二个或门中,两个最大池化中间结果进行最大池化,得到2
×
2最大池化的最终池化结果。

技术总结
本发明的基于脉冲神经网络的应用于语音关键字识别的低功耗系统包括:外部存储、上位机和脉冲神经网络硬件加速器,其中脉冲神经网络硬件加速器包括存储模块、控制器、调度器以及计算阵列;本发明提出了一种二维坐标存储结构存储脉冲神经元状态,一方面可以跳过神经元的无效状态,避免无效计算,基于脉冲神经网络的稀疏性,可以大幅降低计算量,另一方面可以降低检测有效状态的延时,有效提高资源利用率;提出了卷积直通池化,并行执行的方案,避免了传统设计中将中间卷积结果写回存储的环节,卷积结果存入FIFO后与下行结果直接两两池化,有效降低了存储访问次数,存储功耗也得以降低。设计了8路并行的计算架构,可以有效减少计算延时,补偿脉冲神经网络多步长的缺陷;经验证,本发明的语音关键词识别系统能够在保证较高准确率的前提下,同时具有功耗低、面积小的特点,适用于嵌入式、物联网等诸多应用领域,能够高效完成语音关键词识别任务。够高效完成语音关键词识别任务。够高效完成语音关键词识别任务。


技术研发人员:李丽 周攀 傅玉祥 王心沅 孙从怡 孙浩瀚 韩嘉宁 李伟 何书专
受保护的技术使用者:南京大学
技术研发日:2022.09.20
技术公布日:2022/12/6
转载请注明原文地址: https://bbs.8miu.com/read-313278.html

最新回复(0)