消除数据副本的方法、神经网络处理器及电子产品
技术领域
本发明涉及一种消除数据副本的方法、神经网络处理器及电子产品,具体涉及一种通过别名(Alias)的机制来消除权重数据副本、提升存储空间利用效率的方法、神经网络处理器及电子产品。
背景技术
在脉冲神经网络(Spiking Neural Network,SNN)结构中,经常会出现某两个神经元簇(population,或神经元)权重数据完全相同的情况。神经元是模拟生物神经元的电路,神经元簇是模拟生物神经元的电路的集合。而对于以超低功耗为鲜明特征的脉冲神经网络处理器(也称拟神态处理器、类脑芯片)而言,这需要考虑设计更大的存储空间,进一步意味着该芯片功耗的提升。
参考图1,其显示的是A、B两个神经元簇连接(或投射)至神经元簇C的权重示意图。神经元簇A与神经元簇C之间的连接权重为W1 AC,而神经元簇B与神经元簇C之间的连接权重为W2 BC(上标1、2代表着数据存储于不同的存储空间)。在典型的拟神态(Neuromorphic)系统中,通过初始化两组代表相应的神经元连接的权重数据即可实现该网络。
参考图2,其显示的是现有技术中A、B两个神经元簇等权重连接至神经元簇C的示意图。在某些脉冲神经网络结构中,神经元簇A和B连接至神经元簇C,但是神经元簇A、C之间的连接权重W1 AC与神经元簇B、C之间的连接权重W2 BC数值上相等(即本发明所称的“等权重”),这样做的目的之一是通过减少不同权重的数量来降低训练过程的复杂度。虽然存储的数值相等,但是存储该连接权重W1 AC的存储空间不同于W2 BC,并可以被标记为W1 BC(W1 AC的另一种记法,下标均为BC意思指数值相等)。因此目前现有技术存在存储空间的浪费,还有优化空间。
参考图3,其显示的是标准处理器平台(CPU、GPU等非脉冲的冯诺伊曼架构处理器)下实现等权重连接示意图。为实现图2中的网络结构,在标准处理器平台下通过将神经元簇A、B的输出相加,然后利用单个连接权重WBC即可实现加权连接。
参考图4,其显示的是现有技术中常见的残差连接结构图。残差连接意味着某个模块的输入和输出相加,并作为最终的输出,这在构造脉冲神经网络中十分常见。神经元簇A、B之间的连接权重为WAB,神经元簇B、C之间的连接权重为WBC。神经元簇B的输入与输出相加,这意味着神经元簇A也通过权重矩阵WBC与神经元簇C连接。由此,神经元簇A-C连接与神经元簇B-C连接之间有着在数值上相同的权重数据WBC,这会出现图2所述的存储空间的浪费。
参考图5,其展示的是现有技术中神经元簇通过LUT(Look Up Table,查找表)建立连接的结构示意图。第一神经元集合501包括若干神经元,其中的神经元可以被划分为多个簇,举例而言,神经元簇A、B、C。这种划分可以是物理上的,也可以是逻辑上虚拟的。对于两个神经元簇之间某两个神经元之间的连接,通过第六LUT 503建立源神经元到目标神经元之间的映射关系,然后基于该映射关系读取该两个神经元连接对应的权重数据。对于如图1所示情形,这一方案已经足够理想。但是对于图2、4所示的情况,本领域通常做法是不得不复制一份数据相同的权重数据而存储于另一存储空间中。这里存在潜在的存储空间浪费问题。
参考图6,其展示的是现有技术中临近神经元本地存储权重值方案示意图,这是图5的替代方案。在这种技术方案中,所有的权重数据均临近神经元(或神经元簇)存储,比如现有技术1:WO2016/174113A1。图6中的位于第二神经元集合601中的神经元簇A、B、C的权重数据均存储在该神经元簇的本地。通过这种方式,所有连接(converge,或投射)至某个神经元的连接权重数据均临近该神经元。注意,此处的术语“临近”是相较于传统集中存储的一种相对概念,类似于分布式存储概念。神经元簇A、B、C中的某个源神经元发送脉冲或脉冲序列后,在第七LUT 603中找到该源神经元的目标神经元,并访问该目标神经元临近权重存储空间中对应该源神经元的权重值,基于该权重值将该源神经元的输出脉冲序列投射至目标神经元。
从上述介绍中可以看出,对于脉冲神经网络架构中出现权重数值相同而需要不同存储空间的情况,尤其是这种网络结构大量存在的情况下,如何优化存储空间,提升存储空间利用率,降低设计芯片存储单元数量需求进而降低芯片功耗,是一个亟待解决的技术问题。
更进一步地,发明人发现:对于传统的人工神经网络中,虽然其神经元模型、信息处理方式与脉冲神经网络不同,但是由于人工神经网络权重等参数规模越来越大,比如十亿、百亿乃至千亿规模,因此如何简化权重存储空间压力,提升模型效率,也是一个亟待解决的问题。
发明内容
为了优化脉冲神经网络处理器的芯片存储空间利用效率,减小芯片存储空间需求,降低芯片功耗,本发明是通过如下技术方案来实现的:
一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇以及第三神经元簇,且所述第一神经元簇和所述第二神经元簇以及所述第三神经元簇均包括一个或多个神经元,该神经网络处理器还包括第一查找表和第二查找表;所述第一查找表被配置为:当所述第一神经元簇中的神经元被激活而输出时,将所述第一神经元簇中被激活的神经元的地址映射成所述第二神经元簇中对应神经元的地址;所述第二查找表被配置为:依据第一查找表输出的神经元地址获得所述第一查找表输出的神经元地址所指向的神经元投射至所述第三神经元簇中的目标神经元的权重数据;依据所获得的权重数据加权,将所述第一神经元簇中被激活的神经元的输出投射至所述第三神经元簇中的目标神经元。
所述的神经元是模拟生物神经元的电路,神经元簇是模拟生物神经元的电路的集合。
在某类实施例中,所述第二查找表还被配置为:依据第一查找表输出的神经元地址获得投射至第三神经元簇中的目标神经元地址。
在某类实施例中,所述神经网络处理器是脉冲神经网络处理器,所述的神经元被激活而输出是指神经元发放脉冲。
在某类实施例中,所述第一查找表还被配置为:当所述第二神经元簇中的神经元被激活而输出时,将所述第二神经元簇中被激活的神经元的地址映射成第二神经元簇中相同神经元的地址。
在某类实施例中,所述第一神经元簇的输出还投射至所述第二神经元簇;或所述第一神经元簇的输出不投射至所述第二神经元簇。
在某类实施例中,所述第一神经元簇和第二神经元簇包括的神经元数量相等,且所述第一神经元簇投射至第三神经元簇的权重矩阵与所述第二神经元簇投射至第三神经元簇的权重矩阵数值上相等。
在某类实施例中,所述第二查找表只记录第二神经元簇投射至第三神经元簇中的目标神经元的地址及投射至所述目标神经元的权重数据。
一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇以及第三神经元簇,且所述第一神经元簇和所述第二神经元簇以及所述第三神经元簇均包括一个或多个神经元,权重数据物理上分布存储于所述神经网络处理器中多个权重数据存储装置;该神经网络处理器还包括第三查找表和第四查找表;所述第三查找表被配置为:当所述第一神经元簇中神经元被激活而输出时,将所述第一神经元簇中被激活的神经元的地址映射成第二神经元簇中对应神经元的地址;所述第四查找表被配置为:依据第三查找表输出的神经元地址获得投射至所述第三神经元簇中的目标神经元地址;至少依据所获得的目标神经元地址,获得该第三神经元簇中的目标神经元的权重数据存储装置及其中存储的投射至目标神经元的权重数据;依据所获得的权重数据加权,将所述第一神经元簇中被激活的神经元的输出投射至所述第三神经元簇中的目标神经元。
在某类实施例中,所述第三查找表还被配置为:当所述第二神经元簇中神经元被激活而输出时,将所述第二神经元簇中被激活的神经元地址映射成第二神经元簇中相同神经元的地址。
在某类实施例中,所述第一神经元簇的输出还投射至所述第二神经元簇;或所述第一神经元簇的输出不投射至所述第二神经元簇。
在某类实施例中,所述第一神经元簇和第二神经元簇包括的神经元数量相等,且所述第一神经元簇投射至第三神经元簇的权重矩阵与所述第二神经元簇投射至第三神经元簇的权重矩阵数值上相等。
在某类实施例中,所述神经网络处理器是脉冲神经网络处理器,所述的神经元被激活而输出是指神经元发放脉冲。
一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇,且所述第一神经元簇和所述第二神经元簇均包括一个或多个神经元,该神经网络处理器还包括:第一别名地址存储装置,所述第一神经元簇与第一别名地址存储装置相关联;当所述第一神经元簇中的神经元被激活而输出时,查找该神经元在第一别名地址存储装置中对应的别名地址,所述别名地址是所述第二神经元簇中神经元的地址;向所述第二神经元簇中的所述神经元注册所述第一神经元簇中的被激活的神经元的输出;当所述第二神经元簇中的所述神经元被激活而输出时,至少输出已注册的所述第一神经元簇中的被激活的神经元的输出。
在某类实施例中,该神经网络处理器还包括第三神经元簇,且所述第三神经元簇包括一个或多个神经元;
所述第二神经元簇中的所述神经元被激活而输出,具体为:
所述第二神经元簇中的所述神经元向所述第三神经元簇中的神经元投射输出。
在某类实施例中,所述至少输出已注册的所述第一神经元簇中的被激活的神经元的输出,具体为:
输出已注册的所述第一神经元簇中的被激活的神经元的输出;并且,
输出基于所述第二神经元簇中的所述神经元的输入而激发的输出。
在某类实施例中,所述第一别名地址存储装置中存储的别名地址数量与该第一神经元簇中神经元数量相等或是其大于或等于2的正整数倍。
在某类实施例中,所述第一神经元簇的输出投射至所述第二神经元簇;所述第二神经元簇的输出投射至所述第三神经元簇。
在某类实施例中,所述第一神经元簇的输出不投射至所述第二神经元簇。
在某类实施例中,当所述第一别名地址存储装置中存储的别名地址数量是该第一神经元簇中神经元数大于或等于2的正整数倍时:
当所述第一神经元簇中的神经元被激活而输出时,查找该神经元在第一别名地址存储装置中对应的所有的别名地址,并向所有的别名地址所指向的神经元注册所述第一神经元簇中的被激活的神经元的输出,并当别名地址所指向的神经元被激活而输出时,至少输出已注册的所述第一神经元簇中的被激活的神经元的输出。
在某类实施例中,所述第二神经元簇与第二别名地址存储装置相关联,该第二别名地址存储装置存储有神经元的地址,且该神经元的地址所指向的神经元需要被注册以所述第二神经元簇中的被激活的神经元的输出。
在某类实施例中,所述第二别名地址存储装置存储的是第三神经元簇中神经元的地址。
在某类实施例中,所述第一神经元簇和所述第二神经元簇,均只包括一个神经元。
在某类实施例中,对于任意标号为i的第i个神经元,与其别名神经元的标号j,满足:j>i,其中i和j均为正整数,所述的标号依据的是神经元的投射顺序;所述神经网络处理器是脉冲神经网络处理器,所述的神经元被激活而输出是指神经元发放脉冲。
一种神经网络处理器,该神经网络处理器至少包括第一神经元和第二神经元以及第三神经元,该神经网络处理器还包括:第一别名地址存储装置,所述第一神经元与所述第一别名地址存储装置相关联;当所述第一神经元被激活而输出时,查找所述第一神经元在所述第一别名地址存储装置中对应的别名地址,所述别名地址是所述第二神经元的地址;向所述第二神经元注册所述第一神经元被激活的输出;当所述第二神经元向所述第三神经元投射输出时,至少输出已注册的所述第一神经元被激活的输出。
在某类实施例中,所述第一神经元还向第二神经元投射输出;或所述第一神经元不向第二神经元投射输出。
一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇以及第三神经元簇,且所述第一神经元簇和所述第二神经元簇以及所述第三神经元簇均包括一个或多个神经元,所述第一神经元簇的别名是第二神经元簇;所述第一神经元簇的输出投射至所述第二神经元簇;所述第二神经元簇的输出投射至所述第三神经元簇。
在某类实施例中,所述第二神经元簇的别名是所述第三神经元簇;所述第三神经元簇的输出投射至第四神经元簇。
一种电子产品,其包括第一接口模块和第二接口模块和处理模块,以及响应模块,该电子产品还包括如前任意一项所述的神经网络处理器;该神经网络处理器通过所述第一接口模块与所述处理模块相耦接,所述处理模块通过所述第二接口模块与所述响应模块相耦接;所述的神经网络处理器对输入的环境信号进行识别,并将识别结果通过所述第一接口模块传输至所述处理模块,所述处理模块根据所述识别结果生成控制指令,并通过所述第二接口模块传输所述控制指令至所述响应模块。
一种消除数据副本的方法,应用于神经网络处理器中,该神经网络处理器至少包括第一神经元和第二神经元以及第三神经元,该神经网络处理器还包括:第一别名地址存储装置,所述第一神经元与所述第一别名地址存储装置相关联;当所述第一神经元被激活而输出时,查找所述第一神经元在所述第一别名地址存储装置中对应的别名地址,所述别名地址是所述第二神经元的地址;向所述第二神经元注册所述第一神经元被激活的输出;当所述第二神经元向所述第三神经元投射输出时,至少输出已注册的所述第一神经元被激活的输出。
以上披露的技术方案、技术特征、技术手段,与后续的
具体实施方式
部分中所描述的技术方案、技术特征、技术手段之间可能不完全相同、一致,或是其细化。但是该部分披露的这些新的技术方案同样属于本发明文件所公开的众多技术方案的一部分,该部分披露的这些新的技术特征、技术手段与后续具体实施方式部分公开的技术特征、技术手段是以相互合理组合的方式,披露更多的技术方案,是具体实施方式部分的有益补充。与此相同,说明书附图中的部分细节内容可能在说明书中未被明确描述,但是如果本领域技术人员基于本发明其它相关文字或附图的描述、本领域的普通技术知识、其它现有技术(如会议、期刊论文等),可以推知其技术含义,那么该部分未明确被文字记载的技术方案、技术特征、技术手段,同样属于本发明所披露的技术内容,且如上描述的一样可以被用于组合,以获得相应的新的技术方案。本发明任意位置所披露的所有技术特征所组合出的技术方案,用于支撑对技术方案的概括、专利文件的修改、技术方案的披露。
附图说明
图1是A、B两个神经元簇连接至神经元簇C的权重示意图;
图2是现有技术中A、B两个神经元簇等权重连接至神经元簇C的示意图;
图3是标准处理器平台下实现等权重连接示意图;
图4是现有技术中常见的残差连接结构图;
图5是现有技术中神经元簇通过LUT建立连接的结构示意图;
图6是现有技术中临近神经元本地存储权重值方案示意图;
图7是本发明通过引入额外LUT来消除权重存储冗余的第一类实施例;
图8是若干神经元簇的组织结构示意图;
图9是第一LUT的映射关系示意图;
图10是第二LUT的结构示意图;
图11是现有技术中LUT结构示意图;
图12是本发明通过引入额外LUT来消除权重存储冗余的第二类实施例;
图13是本发明基于别名(Alias)机制的第三类实施例;
图14是通过别名机制转换残差连接网络结构的示意图;
图15是通过别名机制转换深度多层残差网络的示意图;
图16是某个神经元簇作为另一个神经元簇的别名的示意图;
图17某个神经元集合中神经元的信息投射示意图;
图18是神经元与其别名神经元的标号规则;
图19是一种能够实现根据源地址确定目标地址的方案。
具体实施方式
如无特别说明,本发明所述的神经元,在芯片层面是指模拟生物神经元工作原理的硬件,如电路;在算法层面,是指软件模拟的生物神经元模型。本发明中所称的脉冲,指的是拟神态领域的spike,也称尖峰。在神经元簇中的神经元数目多于一个的情况下,本发明所述的连接权重均为权重矩阵。单神经元的情况下,可以视单数值权重为权重矩阵的特殊情况。后文结合芯片的硬件结构,描述该脉冲神经网络处理器的运作方法。由于不能穷举各种实施例,其数量、规格方面的描述仅仅是举例,本领域技术人员可以很容易想到实际应用时的适配和修改。本发明所有的LUT本质是一种数据映射模块,即给定输入可直接获得相应输出,任何一种能实现这种映射功能的软、硬件方式,都属于本发明所述的LUT。本发明中任意位置所述的“神经元的地址所指向的神经元”均是指地址是所述神经元的地址的神经元。本文所述的神经元是模拟生物神经元的电路,神经元簇是模拟生物神经元的电路的集合。
本发明任意位置所称的神经网络处理器(Neural network Processing Unit,NPU,也称神经网络加速器),至少包括脉冲神经网络处理器、人工神经网络处理器。二者的区别主要体现为:前者信息的传递依赖脉冲或脉冲序列(在数字芯片中,该脉冲序列可以通过一个整数表示,比如5bit整数),而后者通常通过浮点数值(为了降低计算代价,有时也会选择整数);前者的神经元具有记忆功能,而后者的神经元通常不具有记忆功能。本发明以脉冲神经网络处理器为例,通过软件和硬件相结合的方式披露消除权重数据副本的方法和硬件系统。由于方案并不改变神经元模型本身且方案并不依赖脉冲神经元模型本身,且神经元的输入输出具有相似性,因此基于该披露的技术内容,本领域技术人员能够合理得到或概括更为上位的神经网络处理器(含人工神经网络处理器)的处理方式。神经元激活输出,在人工神经网络中意为根据激活函数获得输出(通常为浮点数或整数);在SNN中,意为发放脉冲或脉冲序列,数字电路实现时可以是输出一个(比如5bit的)整数。
图7是本发明通过引入额外LUT来消除权重存储冗余的第一类实施例。与图5所示的现有技术相比,在该类实施例中引入了一个新的LUT 702来降低存储空间的使用需求。
第三神经元集合701包括若干个神经元(人工神经网络神经元或脉冲神经元),比如1000个或32万个或100万个,对于视觉信号偏向于使用较多的神经元,而对于处理声音等低维度信号可以选择较少数量的神经元。该些神经元可以被物理地或逻辑地划分为多个神经元簇(也称神经元层),如图所示,举例显示了3个神经元簇A、B、C,该些神经元簇的数量可以更少或更多,该些神经元簇可以也被称为第一神经元簇(神经元簇A)、第二神经元簇(神经元簇B)、第三神经元簇(神经元簇C),以及后文描述的第四神经元簇(神经元簇D)。该些所述的神经元簇是包括一个或多个(≥2)神经元的集合。本发明的所有实施例(不限于第一类实施例),虽然会称之为神经元簇,但是其包含了该神经元簇仅仅只有一个神经元时的特例,如神经元簇A、B、C均仅仅只有一个神经元。
作为示例,在图8中展示了神经元簇A、B、C分别所包括的神经元A1~A5、B1-B5、C1~C3,其中神经元簇A、B具有相同数量的神经元,神经元簇A和神经元簇B均投射至神经元簇C,由此它们与神经元簇C的连接权重可以是相同的、有共享潜能的。
以图2或图4所构造的场景为例,神经元簇A至C的连接(本发明中也称投射)与神经元簇B至C的连接拥有相同的权重数值。回到图7中,当神经元簇A中的某个源神经元(一般指脉冲发放端)发放(fire)脉冲(一般是多个脉冲,也称其为脉冲序列),通过第一LUT 702,将神经元簇A中的该神经元映射成神经元簇B中的对应的神经元。
参考图9,其展示的是某种实施例下第一LUT 702的映射关系示意图。在神经元簇A中,A1被映射至B1,A2被映射至B2……,A5被映射至B5;B1被映射至B1,B2被映射至B2……,B5被映射至B5。通过这种映射设置后,神经元簇A中的任何神经元均被映射成了神经元簇B中的某个对应的神经元,而神经元簇B中的神经元被映射至自身,这样神经元簇A就可以借以神经元簇B的名义去连接至神经元簇C中的神经元。因此在神经元簇A中的神经元发放脉冲时,经过第一LUT 702的映射,完全以神经元簇B中对应的神经元的权重数据来与神经元簇C中的神经元建立突触连接;而神经元簇B中的神经元由于映射至自身,因此其与神经元簇C的连接仍能保持原先的功能。
因此对于第二LUT 703,其仅仅需要构造神经元簇B与神经元簇C之间的连接权重数据,结合第一LUT 702的映射,使得神经元簇A和B中的神经元均可以根据第二LUT 703而获得投射至神经元簇C中的神经元及相匹配的连接权重。
在图10中,其展示了第二LUT 703的结构示意图。该图给出了神经元簇B中的所有神经元与神经元簇C中所有神经元建立的全部连接权重。若神经元簇B中有M(≥1)个神经元,而神经元簇C中有N(≥1)个神经元,那么该LUT中将有M×N个条目(entry)来记录权重数据。
换言之,本发明披露了:一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇以及第三神经元簇,且所述第一神经元簇和所述第二神经元簇以及所述第三神经元簇均包括一个或多个神经元,该神经网络处理器还包括第一查找表和第二查找表;所述第一查找表被配置为:当所述第一神经元簇中的神经元被激活而输出时,将所述第一神经元簇中被激活的神经元的地址映射成所述第二神经元簇中对应神经元的地址;所述第二查找表被配置为:依据第一查找表输出的神经元地址获得所述第一查找表输出的神经元地址所指向的神经元投射至所述第三神经元簇中的目标神经元的权重数据;依据所获得的权重数据加权,将所述第一神经元簇中被激活的神经元的输出投射至所述第三神经元簇中的目标神经元。
本发明中,类似“神经元地址所指向的神经元”的表述,指的是地址是该神经元地址的神经元。
作为对比,图11给出了图5所示的现有技术中第六LUT 503的结构示意图。与图10不同的是,其不仅包括了神经元簇B连接至神经元簇C中所有连接权重数据,还包括神经元簇A连接至神经元簇C中所有连接权重数据,其中二者的权重数据在数值上是相等的,显然这里存储的完全相同的权重数据浪费了存储空间。
图10和图11中虽然示例地指出了某个条目对应的是某两个神经元之间的连接(左栏),但是这并不意味着该些条目一定要存储源神经元地址与目标神经元地址的映射关系,即某条目必然同时记录源神经元地址(或标记)和目标神经元地址(或标记),比如可以通过数理逻辑建立这种映射关系。在后文关于图19的描述中,会给出一个条目不需要同时记录源神经元地址(或标记)和目标神经元地址(或标记)的方案。
图12展示的是本发明通过引入额外的第三LUT 122来消除权重存储冗余的第二类实施例。第四神经元集合121包括若干个神经元(人工神经网络神经元或脉冲神经元),该些神经元可以被物理地或逻辑地划分为多个神经元簇,如图所示,举例显示了3个神经元簇A、B、C,该些神经元簇的数量可以更少或更多,每个所述神经元簇包括一个或多个(≥2)神经元。
该类实施例是针对图6中所示现有技术的一种改进。与图6类似,投射(或连接)至目标神经元或目标神经元簇A、B、C的权重数据均临近该目标神经元或目标神经元簇而存储。换言之,权重数据物理上分布存储于所述神经网络处理器中多个权重数据存储装置。
仍然以图2或图4所构造的场景为例,神经元簇A至C的连接与神经元簇B至C的连接拥有相同的权重数值。
在第三LUT 122中,其建立了神经元簇A中神经元到神经元簇B中神经元之间的映射关系,还建立了神经元簇B中神经元到神经元簇B中神经元之间的映射关系。与图9中映射关系类似,神经元簇A中的任何神经元均被映射成了神经元簇B中的某个对应的神经元,而神经元簇B中的神经元被映射至自身。这样神经元簇A就可以借以神经元簇B的名义去第四LUT 123中寻找位于神经元簇C中的目标神经元,并基于存储在该目标神经元临近的相应的权重数据连接至该目标神经元。
换言之,本发明公开了:一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇以及第三神经元簇,且所述第一神经元簇和所述第二神经元簇以及所述第三神经元簇均包括一个或多个神经元,权重数据物理上分布存储于所述神经网络处理器中多个权重数据存储装置;该神经网络处理器还包括第三查找表和第四查找表;所述第三查找表被配置为:当所述第一神经元簇中神经元被激活而输出时,将所述第一神经元簇中被激活的神经元的地址映射成第二神经元簇中对应神经元的地址;所述第四查找表被配置为:依据第三查找表输出的神经元地址获得投射至所述第三神经元簇中的目标神经元地址;至少依据所获得的目标神经元地址,获得该第三神经元簇中的目标神经元的权重数据存储装置及其中存储的投射至目标神经元的权重数据;依据所获得的权重数据加权,将所述第一神经元簇中被激活的神经元的输出投射至所述第三神经元簇中的目标神经元。
图13展示的是本发明基于别名(Alias)机制的第三类实施例。第五神经元集合131包括若干个神经元(人工神经网络神经元或脉冲神经元),该些神经元可以被物理地或逻辑地划分为多个神经元簇A、B、C。在该实施例中不需要引入新的LUT,而是为神经元簇A或/和B或/和C引入别名技术。比如,神经元簇A的别名地址存储装置11(第一别名地址存储装置)、神经元簇B的别名地址存储装置12(第二别名地址存储装置)、神经元簇C的别名地址存储装置13(第三别名地址存储装置)。
所谓的别名机制是指:对于某个神经元(簇)其还(被)关联一个别名地址存储装置,该别名地址存储装置中存储有若干地址。若该神经元(簇)要激活输出(对于SNN处理器而言是发放脉冲),则还应向其对应的别名地址存储器中存储的别名地址对应的神经元(簇)注册(或通知)该神经元(簇)的激活的输出,当该别名地址对应的神经元(簇)需要激活输出时,会把已注册过的输出作为该别名地址对应的神经元(簇)最终输出的一部分。如同第一神经元簇借助其别名第二神经元簇发放了脉冲(或激活而输出)。
所谓的注册,作为举例,在数字SNN处理器中可以通过累加脉冲数的方式实现。比如,每个神经元均有对应的脉冲数存储RAM,向其注册激活输出,作为举例,向该对应的RAM加上所述的激活输出即可。当然也可以有其它实现方式,本发明不对此限定。
优选地,所述第一别名地址存储装置中存储的别名地址数量与该第一神经元簇中神经元数量相等或是其大于或等于2的正整数倍。如神经元簇A的规模为5,那么该神经元簇A的别名地址存储装置11存储的地址数量也为5。
依然以图2或图4所构造的场景为例,神经元簇A至C的连接与神经元簇B至C的连接拥有相同的权重数值。那么,神经元簇A的别名地址存储装置11中存储的将是神经元簇B中每一个神经元地址,且数量也是5。
此外,对于第五LUT 133,如同第二LUT 703一样,其同样存储了目标神经元的地址(简称目标地址)和对应该目标神经元地址的权重数据。换言之,不论是基于神经元簇A中的神经元地址还是神经元簇A的别名地址存储装置11中存储的神经元簇B中对应的神经元地址,基于这些发放脉冲的神经元(即源神经元)的地址,即可获得对应的目标神经元地址和对应的权重数据。
由于这里仅仅是以图2或图4所示的基本结构做出的介绍,而实际的脉冲神经网络的整体结构可能会非常复杂,比如某个神经元簇可能会有多组别名,且每组别名的规模与该神经元簇的规模相等。因而在有多组别名的情况下,该神经元簇的别名地址存储装置存储的地址数量将会是该神经元簇中神经元数量的整数(等于所述组数)倍。换言之,虽然本发明一直在以图2或图4中的场景为例,但这并不排除以此为基础构建出更为复杂的网络,本发明不限于某种具体的网络结构模型。
换言之,本发明披露了:一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇,且所述第一神经元簇和所述第二神经元簇均包括一个或多个神经元,该神经网络处理器还包括:第一别名地址存储装置,所述第一神经元簇与第一别名地址存储装置相关联;当所述第一神经元簇中的神经元被激活而输出时,查找该神经元在第一别名地址存储装置中对应的别名地址,所述别名地址是所述第二神经元簇中神经元的地址;向所述第二神经元簇中的所述神经元注册所述第一神经元簇中的被激活的神经元的输出;当所述第二神经元簇中的所述神经元被激活而输出时,至少输出已注册的所述第一神经元簇中的被激活的神经元的输出。
图14展示的是通过别名机制转换残差连接网络结构的示意图。该图中左侧是前述的残差链接网络结构,右侧是别名转换后的网络结构示意图。其中,神经元簇A的输出经过权重矩阵WAB加权,神经元簇A的输出投射至神经元簇B,神经元簇B的输出经过权重矩阵WBC加权,神经元簇B的输出投射至神经元簇C。此外,神经元簇A的输出也投射至神经元簇C,且神经元簇A与神经元簇B在投射至神经元簇C时,拥有相同的连接权重WBC。在该图右侧,是左侧残差结构在应用别名机制后的网络结构示意图。即神经元簇A被关联第一别名地址存储装置,该第一别名地址存储装置中存储有若干地址(或标记),其中的若干地址(或标记)是神经元簇B中神经元的地址(或标记)(别名神经元簇B,记为AliasB)。神经元簇A中的神经元(们)发放脉冲后,寻找该神经元(们)在别名地址存储装置中存储的在神经元簇B中对应的神经元(们)的地址(或标记),并向该地址(们)对应的神经元(们)注册(或通知,比如将待注册的脉冲为数值5)神经元簇A中的所述神经元(们)发放的脉冲;当神经元簇B中对应的神经元(们)发放脉冲时,就会至少发放已注册(或通知)过的所述的神经元簇A中的所述神经元(们)发放的脉冲(比如发放前述5个脉冲)。此外神经元簇B中对应的神经元(们)自身也可能因为其自身输入的脉冲序列而激发输出(或发放)若干脉冲,比如脉冲数值为2,那么其实际发放的脉冲数,在某种实施例可以为7(=2+5)个。当然也可以是基于自身激发而输出的脉冲和已注册的脉冲来决定具体的脉冲数,比如是前述举例的二者之和、二者之和的某种上下轻微浮动(比如6)、二者之和的一半且向下取整(比如3=[7/2]),等等,本发明对此不作限定。对于人工神经网络处理器而言,举例而言,可以是简单地将激活输出的浮点数或整数累加。
通过这种方案,如同神经元簇A借助其别名神经元簇B发放了脉冲。这种方案并不会引起网络架构的大幅调整,带来不必要的网络复杂性。由此,通过这种别名机制,即可十分简便地消除了权重数据副本,提升了存储空间利用效率,降低芯片存储空间需求和芯片功耗。如同前述的一样,这里的神经元簇A、B、C中均可以仅仅只有一个神经元。
换言之,本发明披露了:一种神经网络处理器,该神经网络处理器至少包括第一神经元簇和第二神经元簇以及第三神经元簇,且所述第一神经元簇和所述第二神经元簇以及所述第三神经元簇均包括一个或多个神经元,所述第一神经元簇的别名是第二神经元簇;所述第一神经元簇的输出投射至所述第二神经元簇;所述第二神经元簇的输出投射至所述第三神经元簇。
图15是通过别名机制转换深度多层残差网络的示意图。如前所述,网络的结构可能比较复杂,该图所示的是深度多层残差网络的部分或全部。与图14不同的是,该网络的结构在原网络残差连接网络结构基础上多了一个神经元簇D(第四神经元簇),其依然包括仅仅只有一个神经元的特殊情形。神经元簇C的输入和输出一并作为神经元簇D的输入,即构成了第二个残差连接结构。神经元簇B与神经元簇D之间的连接,与神经元簇C与神经元簇D之间的连接,在数值上均有共同的权重数据WCD,具体结构可以参考该图左侧。神经元簇A与神经元簇B、C、D均有连接。
而为了进一步通过别名机制来实现第二个网络残差连接,对于神经元簇B,其被关联第二别名地址存储装置。该第二别名地址存储装置中存储的是神经元簇C中的神经元地址(别名神经元簇C,记为AliasC)。该第二别名地址存储装置的运作机制与第一别名地址存储装置运作机制相似,此处不再赘述。由此,通过别名机制,实现了更为复杂的网络结构。
此外,对于图14、图15,虽然只描述了神经元簇A、B各自被关联一个别名神经元簇(神经元簇B、C),但是对于更为复杂的网络结构下,该些神经元簇还可以被关联多个(≥2)别名神经元簇。比如,除了别名神经元簇B外,神经元簇A还可以被关联别名神经元簇D。
同样是实施该深度多层残差网络,与图7、12所示的具有双LUT结构的第一或第二类实施例相比,对于神经元簇A而言,该第三类实施例中仅仅只需要记录一组地址(神经元簇B),而第一和第二类实施例中需要记录三组地址:神经元簇A至B、神经元簇A至C、神经元簇A至 D。由于可以通过更少的存储空间或部件需求来实现该网络,因此该第三类实施例效果更优。
换言之,本发明还披露了:所述第二神经元簇的别名是所述第三神经元簇;所述第三神经元簇的输出投射至第四神经元簇。
对于其它以此为基础结构所构建的更为复杂的网络结构模型,由于不能一一穷举,但是本领域基于前述的技术教导,清楚如何运用别名机制来消除权重数据副本,此处不再一一举例并详细描述。本发明不以具体的网络结构为限。
图16是某个神经元簇作为另一个神经元簇的别名的示意图。该神经元簇A被关联别名神经元簇B,其均有n(正整数)个神经元(人工神经网络神经元或脉冲神经元),举例地,神经元簇A中的神经元A2被关联至神经元簇B中神经元B3的地址,那么神经元A2发放的脉冲会被注册(或通知)到神经元B3中。待神经元B3发放脉冲时,其会发放(或输出)已注册(或通知)的脉冲。
图17某个神经元集合中神经元的信息投射示意图。该图以前述神经元簇中仅仅包括一个神经元这种特例为例,图中所示的一个圆圈代表一个神经元(人工神经网络神经元或脉冲神经元),并且其中的四个分别被标记为a,b,c,d。神经元a的输出投射至b,神经元b的输出投射至神经元c且权重为Wbc,根据网络架构的需要,神经元a的输出也需要投射至神经元c,且与神经元b的输出投射至神经元c的权重相同,即Wac=Wbc。通过前述的别名机制,为了消除神经元a的输出投射至神经元c时权重数据所占用的存储空间,神经元a的输出并不再直接投射至神经元c,而是在神经元a输出脉冲(或脉冲序列)时,将输出的脉冲(或脉冲序列)注册到(或通知)其别名神经元b中。在神经元b输出脉冲时,除了其自身被激发而发放的脉冲(或脉冲序列)外,还输出被注册过的脉冲(或脉冲序列)。神经元b,c,d之间的运作逻辑与神经元a,b,c之间的运作逻辑类似,此处不再赘述。因此,随着网络结构复杂度的提升,通过别名机制所能节省下来的存储空间将越多。
换言之,其公开了:一种神经网络处理器,该神经网络处理器至少包括第一神经元和第二神经元以及第三神经元,该神经网络处理器还包括:第一别名地址存储装置,所述第一神经元与所述第一别名地址存储装置相关联;当所述第一神经元被激活而输出时,查找所述第一神经元在所述第一别名地址存储装置中对应的别名地址,所述别名地址是所述第二神经元的地址;向所述第二神经元注册所述第一神经元被激活的输出;当所述第二神经元向所述第三神经元投射输出时,至少输出已注册的所述第一神经元被激活的输出。
以及:一种消除数据副本的方法,应用于神经网络处理器中,该神经网络处理器至少包括第一神经元和第二神经元以及第三神经元,该神经网络处理器还包括:第一别名地址存储装置,所述第一神经元与所述第一别名地址存储装置相关联;当所述第一神经元被激活而输出时,查找所述第一神经元在所述第一别名地址存储装置中对应的别名地址,所述别名地址是所述第二神经元的地址;向所述第二神经元注册所述第一神经元被激活的输出;当所述第二神经元向所述第三神经元投射输出时,至少输出已注册的所述第一神经元被激活的输出。
此外,为了消除别名机制可能带来的无限循环,一个额外的限制手段是:对于任意标号为i的第i个神经元,与其别名神经元的标号j,满足:j>i,其中i和j均为正整数,所述的标号依据的是神经元的投射顺序。即,允许通过别名建立连接的神经元是一个偏对角三角矩阵(off-diagonal triangular matrix),可以参考图18,其展示的是神经元与其别名神经元的标号规则,即一个神经元的别名神经元的标号,应当比该神经元标号要大。
图19介绍的是一种能够实现根据源地址确定目标地址的方案。举例地,某神经元集合中一共有1000个神经元,且各自的标号分别为1至1000。在第一存储空间RAM-1中,存储有每个神经元的对应的扇出(fan-out,也称目标)地址数目,如1个、3个、7个……,一共包括1000个条目。在第二存储空间RAM-2中则存储有对应的具体扇出(或目标)神经元地址,具体地,若神经元平均扇出地址数目是32,那么该第二存储空间中则包括32,000个条目,且每个条目均包括一个扇出地址。如第一扇出地址标号为15,第二扇出地址标号则为8,第三扇出地址标号为2,等等。在获得源神经元地址后,根据第一存储空间RAM-1中存储的对应的扇出地址数目,从第二存储空间RAM-2中对应的起始地址位置开始读取对应扇出地址数目的目标神经元地址或/和权重数据。这种方案属于不通过明确记载源地址与目标地址之间的映射关系,而是通过数理逻辑来得到源地址对应的目标地址或/和权重数据的方案。本发明对于如何建立源神经元地址(简称源地址)和目标神经元地址(简称目标地址)及权重数据之间的映射关系的方式不做特别限定。
上述的技术方案对于数字同步电路设计十分高效,因为在一个时间步计算中,仅仅只需要触发别名查找一次即可完成复杂的网络架构运算。
此外,本发明还公开了:一种电子产品,该电子产品包括如上任一项所述的神经网络处理器。该神经网络处理器可以处理各种环境信号(视觉、声觉等信号),检测环境信号中的各种事件,比如心电图信号、某几个特定关键词、某特定手势等,并基于检测到的事件,通知下一级系统作出响应。
具体地,该神经网络处理器通过接口模块(比如用于通信的有线接口电路、蓝牙、ZigBee、UWB等无线传输模块)与电子产品的处理模块(比如MCU)相耦接。该神经网络处理器通过对环境信号的识别,将结果通过接口模块传输至电子产品的处理模块,该处理模块基于该神经网络处理器反馈的结果,通过另一接口模块,去控制响应模块。响应模块可以是各种各样的已知的响应方式,举例而言,可以是显示屏上输出信息、报警、语音信号输出、机械设备的运动(如智能窗帘场景)、电气设备的电压、电流等物理量的控制、切换(如智能灯具)等。
尽管已经参考本发明的具体特征和实施例描述了本发明,但是在不脱离本发明的情况下可以对其进行各种修改和组合。因此,说明书和附图应简单地视为由所附权利要求限定的本发明的一些实施例的说明,并且预期涵盖落入本发明范围内的任何和所有修改、变化、组合或等同物。因此,尽管已经详细描述了本发明及其优点,但是在不脱离由所附权利要求限定的本发明的情况下,可以进行各种改变、替换和变更。此外,本申请的范围不旨在限于说明书中描述的过程、机器、制造、物质组成、装置、方法和步骤的特定实施例。
本领域普通技术人员从本发明的公开内容将容易理解,可以根据本发明应用执行与本文描述的相应实施例实质上相同功能或达到实质上相同的结果的当前存在或稍后开发的过程、机器、制造、物质组成、装置、方法或步骤。因此,所附权利要求目的在于在其范围内包括这样的过程、机器、制造、物质组成、装置、方法或步骤。
为了实现更好的技术效果或出于某些应用的需求,本领域技术人员可能在本发明的基础之上,对技术方案作出进一步的改进。然而,即便该部分改进/设计具有创造性或/和进步性,只要利用了本发明权利要求所覆盖的技术特征,依据“全面覆盖原则”,该技术方案同样应落入本发明的保护范围之内。
所附的权利要求中所提及的若干技术特征可能存在替代的技术特征,或者对某些技术流程的顺序、物质组织顺序可以重组。本领域普通技术人员知晓本发明后,容易想到该些替换手段,或者改变技术流程的顺序、物质组织顺序,然后采用了基本相同的手段,解决基本相同的技术问题,达到了基本相同的技术效果,因此即便权利要求中明确限定了上述手段或/和顺序,然而该些修饰、改变、替换,均应依据“等同原则”而落入权利要求的保护范围。
对于权利要求中有明确的数值限定的,通常情况下,本领域技术人员能够理解,该数值附近的其它合理数值同样能够应用于某具体的实施方式中。这些未脱离本发明构思的通过细节规避的设计方案,同样落入该权利要求的保护范围。
结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明所要求保护的范围。
此外,本文示例的执行指令的任何模块、组件或设备可以包括或以其它方式访问用于存储信息的非暂时性计算机/处理器可读存储介质或介质,诸如,计算机/处理器可读指令、数据结构、程序模块和/或其它数据。任何这种非暂时性计算机/处理器存储介质可以是设备的一部分或者可访问或可连接到设备。本文描述的任何应用或模块可以使用计算机/处理器可读/可执行指令来实现,该指令可以由这种非暂时性计算机/处理器可读存储介质存储或以其它方式保持。
说明书附图标号或标记含义解释
A 神经元簇A(也称第一神经元簇)
B 神经元簇B(也称第二神经元簇)
C 神经元簇C(也称第三神经元簇)
D 神经元簇D(也称第四神经元簇)
W1 AC 存储于第一位置的神经元簇A与神经元簇C之间的连接权重数据
W1 BC 存储于第一位置的神经元簇B与神经元簇C之间的连接权重数据
W2 BC 存储于第二位置的神经元簇B与神经元簇C之间的连接权重数据
WAB 神经元簇A与神经元簇B之间的连接权重数据
WBC 神经元簇B与神经元簇C之间的连接权重数据
WCD 神经元簇C与神经元簇D之间的连接权重数据
LUT 查找表
501 第一神经元集合
503 第六LUT(第六查找表)
601 第二神经元集合
603 第七LUT(第七查找表)
701 第三神经元集合
702 第一LUT(第一查找表)
703 第二LUT(第二查找表)
A1~A5 属于神经元簇A的且标号为A1至A5的5个神经元
B1~B5 属于神经元簇B的且标号为B1至B5的5个神经元
C1~C3 属于神经元簇C的且标号为C1至C3的3个神经元
121 第四神经元集合
122 第三LUT(第三查找表)
123 第四LUT(第四查找表)
131 第五神经元集合
133 第五LUT(第五查找表)
11 第一别名地址存储装置
12 第二别名地址存储装置
13 第三别名地址存储装置
a 神经元a
b 神经元b
c 神经元c
d 神经元d
n 一个正整数
RAM-1 第一存储空间
RAM-2 第二存储空间
A0~An 标号为A0~An的神经元
B0~Bn 标号为B0~Bn的神经元