CN113196233A - 用模拟神经元的单个物理层实现多层神经网络 - Google Patents
用模拟神经元的单个物理层实现多层神经网络 Download PDFInfo
- Publication number
- CN113196233A CN113196233A CN201980084186.4A CN201980084186A CN113196233A CN 113196233 A CN113196233 A CN 113196233A CN 201980084186 A CN201980084186 A CN 201980084186A CN 113196233 A CN113196233 A CN 113196233A
- Authority
- CN
- China
- Prior art keywords
- neuron
- simulated
- layer
- physically
- inputs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 210000002569 neuron Anatomy 0.000 title claims abstract description 381
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 84
- 239000010410 layer Substances 0.000 claims abstract description 176
- 239000013598 vector Substances 0.000 claims abstract description 52
- 239000002356 single layer Substances 0.000 claims abstract description 48
- 238000000034 method Methods 0.000 claims abstract description 45
- 230000008569 process Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 19
- 238000004088 simulation Methods 0.000 claims description 20
- 238000012886 linear function Methods 0.000 claims description 9
- 238000004891 communication Methods 0.000 description 18
- 238000004364 calculation method Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 13
- 238000012549 training Methods 0.000 description 9
- 210000002364 input neuron Anatomy 0.000 description 8
- 238000010801 machine learning Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 5
- 239000000872 buffer Substances 0.000 description 4
- 230000003993 interaction Effects 0.000 description 3
- 210000004205 output neuron Anatomy 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000003990 capacitor Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 235000019219 chocolate Nutrition 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Feedback Control In General (AREA)
Abstract
本发明描述了一种包括多层模拟神经网络和***控制器的***。多层模拟神经网络具有单层物理模拟神经元,其可重复使用以实现多层模拟神经网络。每个物理模拟神经元被配置为接收神经元输入并处理该神经元输入以生成神经元输出,该神经元输出作为输入被馈送到单层的所有物理模拟神经元,并且每个物理模拟神经元包括相应的权重存储器。***控制器可操作用于:针对每个物理模拟神经元获得相应的神经元权重向量集,其中每个神经元权重向量对应于多层模拟神经网络的多个层中的相应层;针对每个物理模拟神经元,在物理模拟神经元的相应权重存储器中存储相应的神经元权重集;接收多层模拟神经网络的网络输入;以及通过重复使用单层物理模拟神经元来通过多个层处理网络输入以生成网络输出,其中对于多个层的每一层,每个物理模拟神经元使用对应于当前层的相应神经元权重向量集中的神经元权重向量来处理物理模拟神经元的神经元输入。
Description
神经网络是机器学习模型,其采用一层或多层非线性单元来针对接收的输入预测输出。一些神经网络包括输入层、输出层和一个或多个位于其间的隐藏层。每层包括一个或多个神经元。特定层的每个神经元连接到前一层的所有神经元和后一层的所有神经元。每一层的输出被用作网络中下一层,即下一隐藏层或输出层的输入。网络的每一层根据相应权重集的当前值从接收的输入生成输出。
本说明书描述了使用单层物理模拟神经元实现多层模拟神经网络的技术。
通常,本说明书中描述的主题的一个创新方面可以体现在包括多层模拟神经网络和***控制器的***中。多层模拟神经网络具有单层物理模拟神经元,其可重复使用以实现多层模拟神经网络的多个层。每个物理模拟神经元被配置为接收神经元输入并处理该神经元输入以生成神经元输出,该神经元输出作为输入被馈送到单层的所有物理模拟神经元,并且每个物理模拟神经元包括相应的权重存储器。单层的每个物理模拟神经元中的权重存储器存储在随机存取存储器(RAM)中。
***控制器针对每个物理模拟神经元获得相应的神经元权重向量集,每个神经元权重向量对应于多层模拟神经网络的多个层中的相应层。神经元权重向量包括多个神经元权重。每个神经元权重都有一个整数值。***控制器针对每个物理模拟神经元在物理模拟神经元的相应的权重存储器中存储相应的神经元权重集;接收多层模拟神经网络的网络输入;并且通过重复使用单层物理模拟神经元来通过多个层处理网络输入以生成网络输出。对于多层中的每一层,每个物理模拟神经元使用对应于当前层的相应神经元权重向量集中的神经元权重向量来处理物理模拟神经元的神经元输入。
为了通过重复使用单层物理模拟神经元来通过多个层处理网络输入以生成网络输出,***控制器执行多个计算周期,每个计算周期对应于多个层的相应层。对于每个计算周期,***控制器使单层的每个物理模拟神经元的神经元控制器同步地(i)将对应于当前层的神经元权重向量加载到模拟计算单元,以及(ii)将当前层的物理模拟神经元的神经元输入加载到模拟计算单元。***控制器然后使每个物理模拟神经元的模拟计算单元使用物理模拟神经元的加载的神经元权重向量和加载的神经元输入来计算神经元输出;并且使得每个物理模拟神经元的神经元控制器将物理模拟神经元的计算的神经元输出作为输入提供给单层的所有物理模拟神经元用于下一个计算周期。
在计算相应的神经元输出之前,每个物理模拟神经元的模拟计算单元使用数模转换器(DAC)将加载的神经元输入从数字格式转换为模拟格式,并且使用转换后的模拟格式的神经元输入进行计算。为了计算相应的神经元输出,每个物理模拟神经元的模拟计算单元对物理模拟神经元的加载的神经元权重向量和转换的模拟神经元输入(以模拟格式)应用非线性函数。一旦获得每个神经元的相应的神经元输出,模拟计算单元就向单层的所有物理模拟神经元提供相应的神经元输出用于下一个计算周期。在对应于多个层的最后一层的最后一个计算周期中,每个物理模拟神经元的模拟计算单元使用模数转换器(ADC)将神经元输出从模拟格式转换为数字格式。
本说明书中描述的主题的一个或多个实施例的细节在附图和以下描述中阐述。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。
图1示出了包括由单层物理模拟神经元实现的多层模拟神经元网络的示例芯片的架构。
图2示出了示例性的物理模拟神经元的架构。
图3示出了由模拟神经元的模拟计算单元执行的输出缓冲机制。
图4是通过使用由单层物理模拟神经元实现的多层模拟神经网络在给定网络输入的情况下生成网络输出的示例性过程的流程图。
在不同附图中,相同的附图标记和名称表示相同的元件。
神经网络被广泛用于执行机器学习任务,例如模式识别或分类任务。神经网络通常包括输入层、输出层以及在它们之间的一个或多个隐藏层。每层包括一个或多个神经元。特定层的每个神经元连接到前一层的所有神经元和后一层的所有神经元。每个连接都有相应的权重。每一层的输出被用作神经网络中下一层,即下一隐藏层或输出层的输入。神经网络的每一层根据该层的相应权重集的当前值从接收的输入生成输出。
一旦输入数据被提供给神经网络的输入层,数据就沿着加权连接通过整个神经网络传播。即,神经网络通过每个层来处理输入数据,并获得输出层的输出作为神经网络的最终输出。最终输出包括由输出层的神经元生成的输出,其中每个神经元的输出可以表示输入数据可以被分配到一起的其中一个分类集(或类别)。具有带有最高值的输出的神经元可以发信号通知结果(例如,分类结果、回归结果等),该结果由神经网络针对给定的输入数据取得。
为了使神经网络学会执行机器学***。
传统上,神经网络的大多数实现是软件实现,其中神经网络及其相应的神经元在物理上不存在。相反,这些神经网络是由数字处理器执行的计算机程序,并且因此可以被称为数字神经网络。数字神经网络是在基于软件的环境中实现的,因此它们需要通用处理器(如CPU或GPU)来训练和执行神经网络模型。这种通用处理器在许多应用中,例如嵌入式***或传感器是不可用的。此外,因为由数字神经网络执行的计算是数字计算,所以数字神经网络消耗大量计算资源,并且对于需要实时或接近实时响应的高性能任务(例如,机器人手操纵任务或自动驾驶汽车导航任务)来说可能较慢。
为了克服数字神经网络的缺点,本说明书描述了用于实现模拟神经网络的技术,该模拟神经网络是用物理上存在的模拟组件构建的。通过模拟神经网络传播数据所需的计算至少部分地作为模拟计算来执行,而不需要数字处理器。因此,与传统的数字神经网络相比,所描述的模拟神经网络具有以下技术优势:
-高度并行,因为所有神经元可以同时运行
-快速执行,因为计算是简单的模拟运行
-低功耗,因为数据处理效率高
-适用于嵌入式***和传感器,因为不需要CPU或GPU
此外,这里描述的技术允许通过重复使用单层物理模拟神经元来实现多层模拟神经网络。如下所述,创建具有单层物理模拟神经元但可以作为多层神经网络工作的模拟神经网络的能力提供了更大的灵活性和可扩展性(与用于实现模拟神经网络的现有方法相比)。
·灵活性
当使用神经网络解决问题时,可能不清楚哪种神经网络架构最适合给定的问题。神经网络体系架构通常是根据类似问题的经验和自动试错法确定的。对于不同的问题,隐藏层的数量和每个隐藏层的神经元数量通常是不同的。现有方法构建具有固定数量物理层的模拟神经网络来解决一个或多个问题,从而在随后需要时阻止对模拟神经网络体系架构的改变。这使得模拟神经网络在许多情况下不太有用或不可用。例如,当一个问题需要更少的层时,模拟神经网络变得太大,并且计算效率低。作为另一个例子,当一个问题需要更多的层时,模拟神经网络由于缺乏层而不能获得良好的结果。相比之下,本说明书中描述的技术重复使用单层物理模拟神经元来创建多层模拟神经网络。因此,模拟神经网络中的层数可以容易地针对特定任务进行定制/调整,从而与具有固定物理层数量的模拟神经网络相比,导致更高的性能和更高的计算效率。
此外,虽然单层物理模拟神经元具有恒定数量的物理模拟神经元(例如,k个神经元),但多层模拟神经网络的独特架构允许:
-任意数量的输入神经元,最多k个(输入和输出神经元可以重叠),
-任意数量的输出神经元,最多k个(输入和输出神经元可以重叠),
-每层中任意数量的隐藏神经元,最多k个(如果一层需要的神经元少于n个,则可以将相应的权重设置为零),以及
-任意数量的层,最多为可用于存储每层权重的内存量。
·可扩展性
由于神经元之间的大量连接,建立物理模拟神经网络可能具有挑战性。m个和n个神经元的两层需要m乘n个加权连接。因此,使用具有几十层或几百层的模拟神经网络解决问题将需要几千个具有权重的物理连接。大量所需的物理连接限制了模拟神经网络的物理实现,因为这将导致非常大的芯片。
通过重复使用单层物理模拟神经元来实现多层模拟神经网络,这里描述的技术允许多层模拟神经网络被放大到十层、数百层或数千层,而不增加包含模拟神经网络的芯片的尺寸。这种可扩展性反过来将允许制造紧凑但具有高性能(例如,高精度和快速处理时间)的传感器或嵌入式设备。
根据任务的不同,本说明书中描述的多层模拟神经网络可以被配置为接收任何类型的数字数据输入,并基于输入生成任何类型的分数、分类或回归输出。例如,如果多层模拟神经网络的输入是从图像中提取的图像或特征,则多层模拟神经网络针对给定图像生成的输出可以是对象类别集中的每一个的分数,每个分数表示图像包含属于该类别的对象的图像的估计可能性。
此外,本文描述的多层模拟神经网络可用于执行其他任务,例如估计空气中的气体浓度、基于测量的光谱估计巧克力的脂肪含量、基于声音测量来检测环境(例如,飞机或火车运行/所在的环境)。
图1示出了包括由单层物理模拟神经元实现的多层模拟神经元网络的示例芯片100的架构。
芯片100包括多层模拟神经网络110(为简单起见,以下称为网络110)、通信接口102和***控制器104。
网络110具有单层116物理模拟神经元{X1,X2,…,Xn}。单层116物理模拟神经元可重复使用以实现网络110的多层。通常,每个物理模拟神经元被配置为接收神经元输入并处理该神经元输入以生成神经元输出。然后,神经元输出作为输入被馈送到单层的所有物理模拟神经元。每个物理模拟神经元包括相应的用于存储权重的权重存储器,在给定神经元输入的情况下神经元使用权重来计算神经元输出。例如,模拟神经元X1具有权重存储器114。
单层116中的一个或多个模拟神经元可以充当被配置为接收网络输入108(外部输入)的输入神经元。当物理模拟神经元的单层116被用作网络110的第一层时,至少一个神经元充当输入神经元,但是最多所有的神经元可以充当输入神经元。对于不作为模拟神经元工作的模拟神经元,这些模拟神经元的输入被设置为零。对于第一层之后的层,所有可能作为输入神经元工作的神经元的输入被设置为零。
通信接口102将多层模拟神经网络110连接到计算机(或任何计算设备)。通信接口102通过***控制器104控制网络110的运行(例如,应该计算多少层)。通信接口102例如可以是I2C总线。通信接口102从计算机接收网络输入108,并通过***控制器104向网络110提供网络输入108。一旦网络110处理网络输入108以生成网络输出106,通信接口102通过***控制器104检索网络110的网络输出106。通信接口102然后向计算机提供网络输出106。
通信接口102从计算机接收权重数据118,并将权重数据118传输到***控制器104。对于神经元的物理层116的每个神经元,权重数据118包括相应的权重向量集,每个神经元权重向量对应于网络110的多个层中的相应层。权重数据118可以通过在数字处理器上训练数字神经网络来获得,该数字神经网络是网络110的模拟版本。在网络110集成在传感器芯片中的一些实施方式中,通信接口102可以是传感器芯片的内部接口。
***控制器104是被配置为通过接口102从计算机接收命令的数字电路。***控制器104被配置为跟踪和改变网络110的状态,例如,从对应于网络110的一层的状态改变到对应于网络110的下一层的另一状态。当改变网络110的状态(也被称为计算周期)时,***控制器104使得生成数字信号来控制单层116的物理模拟神经元。
更具体地,***控制器104被配置为从接口102接收权重数据118。***控制器104将权重数据118中的每个神经元权重向量集加载到适当的模拟神经元。每个模拟神经元在其权重存储器中存储其相应的神经元权重向量集。神经元权重向量集中的每个神经元权重向量对应于网络110的多个层的相应层。也就是说,如果网络110具有p个层,则每个模拟神经元具有相应的一组p个神经元权重向量,每个向量被模拟神经元用于计算相应层的神经元输出。
通过允许物理层116的每个神经元为网络110的不同层存储不同的神经元权重向量,这里描述的技术允许使用单个物理层116在网络110中实现多个层。根据由***控制器104控制的当前计算层,每个神经元可以从其相应的权重存储器中检索为当前层分配的权重向量,以便针对当前层的给定的神经元输入计算神经元输出。
为了针对给定的神经元输入计算神经元输出,神经元执行以下函数的计算:
其中输出是神经元产生的输出。f是非线性函数。例如,f可以是线性函数,例如f(x)=x,但是该线性函数的结果被限制为最大值+1,最小值-1。这意味着,当f(x)的值大于或等于1时,f(x)的值被设置为+1。当f(x)的值小于-1时,f(x)的值设置为-1。因此,f是非线性函数。n是神经元的总数。例如,n可以是介于2与1000之间的整数。wki是神经元Xi与神经元Xk之间的权重。Inputi是来自神经元Xi的输入值。
如图1所示,每个神经元的神经元输出是包括神经元本身在内的所有其他神经元的输入中的一个。此外,每个神经元具有附加输入,其可以由***控制器104直接设置。该附加输入用于向神经元提供外部输入(例如,网络输入108)。
每个神经元的权重存储在权重存储器中,权重存储器是神经元的一部分。下面参考图2更详细地描述物理模拟神经元的架构。
为了执行具有多层的全神经网络运行,***控制器104执行多个计算周期,每个计算周期对应于网络110的多层的相应层。即,如果网络110具有p个层,则***控制器104执行p个计算周期。
在每个计算周期,由神经元X1,…,Xn生成的每个神经元输出被作为输入馈送到单层116的所有模拟神经元,用于下一个计算周期。在执行完最后一个计算周期(对应于网络110的输出层)后,***控制器104将获得的神经元输出(被统称为网络输出106)传输到通信接口102。通信接口102然后向计算机提供网络输出106。
下面参考图2更详细地描述每个计算周期的执行。
图2示出了物理模拟神经元200的架构。如上所述,图1中的单层物理模拟神经元116包括k个物理模拟神经元,每个神经元具有与物理模拟神经元200相同的结构。
物理模拟神经元200包括神经元控制器202、权重存储器204和模拟计算单元206。神经元控制器202是诸如计算机程序的数字组件。权重存储器204也是数字组件。
神经元控制器202连接到图1的***控制器104。神经元控制器202是被配置为从***控制器104接收数字信号的数字电路。基于来自***控制器104的指示网络110的当前状态(或计算周期)的数字信号,神经元控制器202生成信号来控制模拟计算单元206。要注意的是,一个神经元的模拟输出和模拟输入之间以及所有其他神经元之间的连接是模拟链接,并且不干扰神经元控制器202或***控制器104。模拟计算单元206是模拟电路,其实现将输入与权重相乘并对神经元的所有输入的乘积(权重*输入)求和的机制。此外,它还实现了缓冲区来存储模拟输出,并使其可用作下一层计算的输入。
***控制器104执行计算周期,并且因此知道正在计算的当前层。在每个计算周期的开始,***控制器104向单层116的每个神经元的神经元控制器发送识别当前层的数据。基于识别当前层的数据,每个神经元的神经元控制器(例如,神经元控制器202)然后从同一神经元的权重存储器中读取适当的神经元权重向量。适当的神经元权重向量存储在权重存储器中的地址x处,其中x的计算如下:
x=start_address_of_weights+current_layer*size_of_one_weight_set,(Eq.2)
其中,start_address_of_weights是权重存储器中存储第一权重集的基址,可能是0,current_layer是当前执行的层的数字(第一层从0开始),其中
size_of_one_weight_set=number_of_weights_per_neuron*size_of_weight(例如4比特)。
一旦确定了神经元200的适当的神经元权重向量,神经元控制器202就向神经元200提供神经元权重向量。如果当前层是第一层,并且如果当前神经元200是输入神经元,则神经元控制器202还向神经元200提供外部输入(例如,网络输入108)。
在针对神经元输入计算相应的神经元输出之前,模拟计算单元206使用数模转换器(DAC)208将神经元输入从数字格式转换为模拟格式,并使用转换后的模拟格式的神经元输入进行计算。
为了计算相应的神经元输出,模拟计算单元206将非线性函数(例如,等式1中的输出函数)应用于神经元权重向量和转换的模拟神经元输入。
神经元控制器202控制等式1中的输出函数的计算。输出函数中的乘法运算是通过一系列电容充电或放电来实现的。输入值决定了起始电荷。对于每个输入分量Inputi,神经元控制器202读取神经元权重向量中的相应权重,并与权重值一样频繁地为模拟计算单元206计时。例如,在权重为3的情况下,神经元控制器202对模拟计算单元206计时,使得它用初始电荷对电容器充电3次。以这种方式,初始电荷(表示输入值Inputi)乘以3。在权重为0的情况下,则电容器不充电,这意味着初始电荷乘以0。在负权重值的情况下,模拟计算单元执行放电运行而不是充电运行。
在一些实施方式中,所有权重被存储为4比特值。一比特是符号位,其他三比特表示权重值。因此,可能的权重集是{-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7}。可能权重的数量是模拟神经网络110的精度和每个神经元中权重存储器的大小之间的折衷。
一旦获得神经元输出,模拟计算单元206将神经元输出提供给单层116的所有物理模拟神经元,用于下一个计算周期。在对应于网络110的多层的最后一层的最后一个计算周期,模拟计算单元206使用模数转换器(ADC)210将神经元输出从模拟格式转换成数字格式,并将数字神经元输出发送到神经元控制器202。单层116中的其他神经元执行与模拟神经元200类似的运行,以导出它们相应的数字神经元输出用于最后的计算周期。这些数字神经元输出被发送到***控制器104。***控制器104然后将这些数字神经元输出作为网络输出106传输到通信接口102。通信接口102然后向计算机提供网络输出106。
图3示出了由每个模拟神经元的模拟计算单元执行的输出缓冲机制,以允许每个模拟神经元在执行下一次计算时缓冲神经元输出。为此,针对每个神经元放置两次积分器和电荷泵。当第一积分器作为输出缓冲器时,第二积分器计算下一个神经元输出。然后第二个积分器切换到输出缓冲器,第一个积分器计算下一个神经元输出。
如图3所示,使用了两个计算阶段(阶段1和阶段2)和4个开关S1、S2、S3和S4。对于4个开关,只有两种状态:
状态1:S1关,S2开,S3开,S4关
状态2:S1开、S2关、S3关、S4开
对于层的每次执行,状态都会改变。例如,层1在状态1下完成,层2在状态2下完成,层3在状态1下完成,依此类推。
在计算状态1中,由计算阶段2提供前一层的输入,并且在计算阶段1中执行新的计算。
在计算状态2中,由计算阶段1提供前一层的输入,并且在计算阶段2中执行新的计算。
上述输出缓冲机制保证了总有一个状态保持并提供前一层的神经元输出,而另一个状态计算当前层的神经元输出。该输出缓冲机制对于实现本说明书中描述的多层模拟神经网络的***(例如,图1的芯片100)的速度和能量效率来说很重要。如果没有这种输出缓冲机制,输出数据将需要转换回数字,并发送回每层的神经元控制器。这将降低运行速度并消耗大量能量。
图4是通过使用由单层物理模拟神经元实现的多层模拟神经网络针对给定的网络输入生成网络输出的示例性过程400的流程图。为了方便起见,过程400将被描述为由芯片的组件执行。例如,根据本说明书适当编程的***控制器,例如图1的***控制器104可以执行过程400。
***控制器针对每个物理模拟神经元获得相应的神经元权重向量集,每个神经元权重向量对应于多层模拟神经网络的多层中的相应层(步骤402)。
***控制器针对每个物理模拟神经元在物理模拟神经元的相应权重存储器中存储相应的神经元权重集(步骤404)。
***控制器接收多层模拟神经网络的网络输入(步骤406)。
***控制器通过重复使用单层物理模拟神经元来通过多个层处理网络输入,以生成网络输出(步骤408)。对于多层中的每一层,每个物理模拟神经元使用对应于当前层的相应神经元权重向量集中的神经元权重向量来处理物理模拟神经元的神经元输入。
具体地,为了通过多个层处理网络输入以生成网络输出,***执行多个计算周期,每个计算周期对应于多个层的相应层。
对于每个计算周期,***向每个物理模拟神经元的神经元控制器发送识别当前层的数据。
然后,***使单层的每个物理模拟神经元的神经元控制器同步地(i)将对应于当前层的神经元权重向量加载到模拟计算单元,以及(ii)将当前层的物理模拟神经元的神经元输入加载到模拟计算单元。
模拟计算单元使用数模转换器(DAC)将加载的神经元输入从数字格式转换为模拟格式。
模拟计算单元然后使用神经元权重向量和转换后的模拟神经元输入来计算神经元输出,例如,通过对神经元权重向量和转换后的模拟神经元输入应用非线性函数。模拟计算单元然后将物理模拟神经元的计算的神经元输出作为输入提供给单层的所有物理模拟神经元用于下一个计算周期。
在对应于网络多层的最后一层(即输出层)的最后一个计算周期,模拟计算单元使用模数转换器(ADC)将神经元输出从模拟格式转换成数字格式,并将数字神经元输出发送到神经元控制器。
一旦执行了所有的计算周期,从输出层的神经元获得的数字神经元输出被传输到***控制器,作为多层模拟神经网络的最终网络输出。
本说明书结合***和计算机程序组件使用术语“配置的”或“可操作的”。对于由一台或多台计算机组成的***来说,被配置为执行特定的操作或动作意味着该***已经在其上安装了软件、固件、硬件或它们的组合,这些在操作中导致该***执行这些操作或动作。对于被配置为执行特定操作或动作的一个或多个计算机程序来说,意味着该一个或多个程序包括指令,当该指令被数据处理设备执行时,使得该设备执行这些操作或动作。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形体现的计算机软件或固件中、在包括本说明书中公开的结构及其结构等同物的计算机硬件中、或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即编码在有形的非暂时性存储介质上的计算机程序指令的一个或多个模块,用于由数据处理设备执行或控制数据处理设备的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储设备,或者它们中的一个或多个的组合。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息,用于传输到合适的接收器设备,以由数据处理设备执行。
术语“数据处理设备”指的是数据处理硬件,并且包括用于处理数据的所有种类的设备、装置和机器,包括例如可编程处理器、计算机或多个处理器或计算机。该装置还可以是或进一步包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理***、操作***或它们中的一个或多个的组合的代码。
计算机程序,也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或代码,可以用任何形式的编程语言编写,包括编译或解释语言,或者声明性或过程性语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或其他适合在计算环境中使用的单元。程序可以,但不是必须,对应于文件***中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如存储在标记语言文档中的一个或多个脚本,存储在专用于所讨论的程序的单个文件中,或者存储在多个协同文件中,例如存储一个或多个模块、子程序或代码部分的文件中。计算机程序可以被部署为在一台计算机上或位于一个站点或分布在多个站点并通过数据通信网络互连的多台计算机上执行。
在本说明书中,术语“数据库”被广泛用于指代任何数据集:数据不需要以任何特定的方式被结构化,或者根本不需要被结构化,并且它可以被存储在一个或多个位置的存储设备上。因此,例如,索引数据库可以包括多个数据集,每个数据集可以被不同地组织和访问。
类似地,在本说明书中,术语“引擎”被广泛用于指代基于软件的***、子***或被编程为执行一个或多个特定功能的过程。通常,引擎将被实现为安装在一个或多个位置的一台或多台计算机上的一个或多个软件模块或组件。在某些情况下,一台或多台计算机将专用于特定的引擎;在其他情况下,可以在同一台或多台计算机上安装并运行多个引擎。
本说明书中描述的过程和逻辑流程可以由一个或多个可编程计算机执行,该可编程计算机执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,FPGA或ASIC,)或者由专用逻辑电路和一个或多个编程计算机的组合来执行。
适于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或者任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行指令的中央处理单元和一个或多个用于存储指令和数据的存储设备。中央处理单元和存储器可以由专用逻辑电路来补充或并入专用逻辑电路。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从其接收数据或向其传送数据,或两者兼有。然而,计算机不需要这样的设备。此外,计算机可以嵌入另一个设备,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位***(GPS)接收器或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几个例子。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;和CDROM和DVD-ROM。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器),以及键盘和定点设备,例如鼠标或轨迹球,用户可以通过该定点设备向计算机提供输入。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户设备上的网络浏览器。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)发送文本消息或其他形式的消息,并从用户接收响应消息来与用户进行交互。
用于实现机器学习模型的数据处理设备还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产的公共和计算密集型部分,即推理、工作负荷。
机器学习模型可以使用机器学习框架来实现和部署,例如,TensorFlowframework、MicrosoftCognitiveToolkitframework、ApacheSingaframework或ApacheMXNetframework。
本说明书中描述的主题的实施例可以在计算***中实现,该计算***包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面、网络浏览器或应用的客户端计算机,通过该客户端计算机,用户可以与本说明书中描述的主题的实现进行交互,或者一个或多个这样的后端、中间件或前端组件的任意组合。***的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的例子包括局域网(LAN)和广域网(WAN),例如因特网。
计算***可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户机和服务器的关系是通过运行在各自计算机上的计算机程序产生的,并且彼此之间具有客户端-服务器关系。在一些实施例中,服务器将数据(例如,HTML页面)传输到用户设备,例如,为了向充当客户端的与该设备交互的用户显示数据和从该用户接收用户输入。在用户设备处生成的数据,例如用户交互的结果,可以在服务器处从设备接收。
虽然本说明书包含许多具体的实施细节,但是这些不应被解释为对任何发明的范围或对所要求保护的范围的限制,而是对特定发明的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独实现或者在任何合适的子组合中实现。此外,尽管特征可以在上文中被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是在一些情况下,来自所要求保护的组合的一个或多个特征可以从该组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作并且在权利要求中引用了操作,但是这不应该被理解为要求以所示的特定顺序或顺序执行这些操作,或者要求执行所有示出的操作,以获得期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种***模块和组件的分离不应该被理解为在所有实施例中都需要这种分离,并且应该理解,所描述的程序组件和***通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。例如,权利要求中列举的动作可以以不同的顺序执行,并且仍然获得期望的结果。作为一个例子,附图中描述的过程不一定需要所示的特定顺序或顺序来实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。
Claims (15)
1.一种***,包括:
具有单层物理模拟神经元的多层模拟神经网络,所述多层模拟神经网络可重复使用以实现多层模拟神经网络的多个层,其中每个物理模拟神经元被配置为接收神经元输入并处理神经元输入以生成神经元输出,所述神经元输出作为输入被馈送到所述单层的所有物理模拟神经元,并且其中每个物理模拟神经元包括相应的权重存储器;
***控制器,可操作用于:
针对每个物理模拟神经元,获得相应的神经元权重向量集,每个神经元权重向量对应于多层模拟神经网络的多个层中的相应层;
针对每个物理模拟神经元,在所述物理模拟神经元的相应权重存储器中存储相应的神经元权重集;
接收多层模拟神经网络的网络输入;和
通过重复使用单层物理模拟神经元来通过多个层处理网络输入以生成网络输出,
其中对于所述多个层中的每一层,每个物理模拟神经元使用对应于当前层的相应神经元权重向量集中的神经元权重向量来处理所述物理模拟神经元的神经元输入。
2.根据权利要求1所述的***,其中每个物理模拟神经元还包括神经元控制器和模拟计算单元,并且
其中所述***控制器能够操作来通过所述多个层处理网络输入,以通过以下方式通过重复使用单层物理模拟神经元来生成网络输出:
执行多个计算周期,每个计算周期对应于多个层中的相应层,其中对于每个计算周期,所述***控制器能够操作用于:
使所述单层的每个物理模拟神经元的神经元控制器同步地(i)将对应于当前层的神经元权重向量加载到所述模拟计算单元,以及(ii)将当前层的物理模拟神经元的神经元输入加载到所述模拟计算单元;
使每个物理模拟神经元的模拟计算单元使用所述物理模拟神经元的加载的神经元权重向量和加载的神经元输入来计算神经元输出;和
使每个物理模拟神经元的神经元控制器将物理模拟神经元的计算的神经元输出作为输入提供给所述单层的所有物理模拟神经元,用于下一个计算周期。
3.根据权利要求2所述的***,其中对于每个计算周期,所述***控制器能够操作来将识别当前层的数据发送到每个物理模拟神经元的神经元控制器。
4.根据权利要求2或3所述的***,其中对于每个计算周期,所述***控制器能够操作以使所述神经元控制器使用数模转换器(DAC)将加载的神经元输入从数字格式转换为模拟格式。
5.根据权利要求2、3或4所述的***,其中对于每个计算周期,所述***控制器能够操作以通过以下方式使每个物理模拟神经元的模拟计算单元使用所述物理模拟神经元的加载的神经元权重向量和加载的神经元输入来计算神经元输出:
使每个物理模拟神经元的模拟计算单元对加载的神经元权重向量和转换的模拟神经元输入应用非线性函数,以计算所述神经元输出。
6.根据权利要求5所述的***,其中对于对应于多个层的最后一层的最后一个计算周期,所述***控制器能够操作来使每个物理模拟神经元的神经元控制器使用模数转换器(ADC)将计算的神经元输出从模拟格式转换成数字格式。
7.根据权利要求1至6中任一项所述的***,其中所述单层的每个物理模拟神经元中的权重存储器存储在随机存取存储器中(RAM)。
8.根据权利要求1至7中任一项所述的***,其中所述神经元权重向量包括多个神经元权重,每个神经元权重具有整数值。
9.一种通过使用单层物理模拟神经元实现多层模拟神经网络的方法,其中每个物理模拟神经元被配置为接收神经元输入并处理神经元输入以生成神经元输出,所述神经元输出作为输入被馈送到所述单层的所有物理模拟神经元,并且其中每个物理模拟神经元包括相应的权重存储器,其中所述方法包括:
针对每个物理模拟神经元,获得相应的神经元权重向量集,每个神经元权重向量对应于多层模拟神经网络的多个层中的相应层;
针对每个物理模拟神经元,在所述物理模拟神经元的相应权重存储器中存储相应的神经元权重集;
接收多层模拟神经网络的网络输入;和
通过重复使用单层物理模拟神经元来通过多个层处理网络输入以生成网络输出,
其中对于所述多个层中的每一层,每个物理模拟神经元使用对应于当前层的相应神经元权重向量集中的神经元权重向量来处理所述物理模拟神经元的神经元输入。
10.根据权利要求9所述的方法,其中每个物理模拟神经元还包括神经元控制器和模拟计算单元,并且
其中通过重复使用单层物理模拟神经元来通过多个层处理网络输入以生成网络输出包括:
执行多个计算循环,每个计算循环对应于多个层中的相应层,其中对于每个计算循环,所述方法包括:
使所述单层的每个物理模拟神经元的神经元控制器同步地(i)将对应于当前层的神经元权重向量加载到所述模拟计算单元,以及(ii)将当前层的物理模拟神经元的神经元输入加载到所述模拟计算单元;
使每个物理模拟神经元的模拟计算单元使用所述物理模拟神经元的加载的神经元权重向量和加载的神经元输入来计算神经元输出;和
使每个物理模拟神经元的神经元控制器将物理模拟神经元的计算的神经元输出作为输入提供给所述单层的所有物理模拟神经元,用于下一个计算周期。
11.根据权利要求10所述的方法,其中对于每个计算周期,所述方法包括:将识别当前层的数据发送到每个物理模拟神经元的神经元控制器。
12.根据权利要求10或11所述的方法,其中对于每个计算周期,所述方法包括:使所述神经元控制器使用数模转换器(DAC)将加载的神经元输入从数字格式转换为模拟格式。
13.根据权利要求10、11或12所述的方法,其中对于每个计算周期,使每个物理模拟神经元的模拟计算单元使用所述物理模拟神经元的加载的神经元权重向量和加载的神经元输入来计算神经元输出包括:
使每个物理模拟神经元的模拟计算单元对加载的神经元权重向量和转换的模拟神经元输入应用非线性函数,以计算所述神经元输出。
14.根据权利要求13所述的***,其中对于对应于所述多个层的最后一层的最后一个计算周期,所述方法包括:
使每个物理模拟神经元的神经元控制器使用模数转换器(ADC)将计算的神经元输出从模拟格式转换成数字格式。
15.根据权利要求9至14中任一项所述的方法,其中,对于每个物理模拟神经元,在所述物理模拟神经元的相应权重存储器中存储相应的神经元权重集包括:
针对每个物理模拟神经元,在所述物理模拟神经元的随机存取存储器(RAM)中存储相应的神经元权重集。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862782204P | 2018-12-19 | 2018-12-19 | |
US62/782,204 | 2018-12-19 | ||
US201962834719P | 2019-04-16 | 2019-04-16 | |
US62/834,719 | 2019-04-16 | ||
PCT/EP2019/084480 WO2020126692A1 (en) | 2018-12-19 | 2019-12-10 | Implementing a multi-layer neural network using a single physical layer of analog neurons |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113196233A true CN113196233A (zh) | 2021-07-30 |
Family
ID=68887036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980084186.4A Pending CN113196233A (zh) | 2018-12-19 | 2019-12-10 | 用模拟神经元的单个物理层实现多层神经网络 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220058472A1 (zh) |
CN (1) | CN113196233A (zh) |
DE (1) | DE112019006317T5 (zh) |
WO (1) | WO2020126692A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023208178A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京灵汐科技有限公司 | 信息处理方法及处理单元、芯片、设备、介质、产品 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112784967B (zh) * | 2021-01-29 | 2023-07-25 | 北京百度网讯科技有限公司 | 信息处理方法、装置以及电子设备 |
CN114780039A (zh) * | 2022-04-29 | 2022-07-22 | 北京灵汐科技有限公司 | 存储方法、计算方法、存储装置、众核***、介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201610A (zh) * | 2010-10-29 | 2013-07-10 | 国际商业机器公司 | 带有使用模拟学习的突触权重的神经形态-突触器脉冲神经网络 |
CN107369108A (zh) * | 2016-05-11 | 2017-11-21 | 耐能有限公司 | 多层人造神经网络及其控制方法 |
CN107454965A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 神经网络处理器中的批处理 |
US20180039883A1 (en) * | 2016-08-02 | 2018-02-08 | International Business Machines Corporation | Neural network based acoustic models for speech recognition by grouping context-dependent targets |
CN107679622A (zh) * | 2017-09-06 | 2018-02-09 | 清华大学 | 一种面向神经网络算法的模拟感知计算架构 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU633812B2 (en) * | 1988-08-31 | 1993-02-11 | Fujitsu Limited | Neurocomputer |
-
2019
- 2019-12-10 WO PCT/EP2019/084480 patent/WO2020126692A1/en active Application Filing
- 2019-12-10 DE DE112019006317.0T patent/DE112019006317T5/de active Pending
- 2019-12-10 CN CN201980084186.4A patent/CN113196233A/zh active Pending
- 2019-12-10 US US17/415,349 patent/US20220058472A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201610A (zh) * | 2010-10-29 | 2013-07-10 | 国际商业机器公司 | 带有使用模拟学习的突触权重的神经形态-突触器脉冲神经网络 |
CN107454965A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 神经网络处理器中的批处理 |
CN107369108A (zh) * | 2016-05-11 | 2017-11-21 | 耐能有限公司 | 多层人造神经网络及其控制方法 |
US20180039883A1 (en) * | 2016-08-02 | 2018-02-08 | International Business Machines Corporation | Neural network based acoustic models for speech recognition by grouping context-dependent targets |
CN107679622A (zh) * | 2017-09-06 | 2018-02-09 | 清华大学 | 一种面向神经网络算法的模拟感知计算架构 |
Non-Patent Citations (1)
Title |
---|
付琦: "一种基于遗传算法的神经网络结构优化方法", 《制造业自动化》, no. 14, 31 July 2015 (2015-07-31), pages 71 - 74 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023208178A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京灵汐科技有限公司 | 信息处理方法及处理单元、芯片、设备、介质、产品 |
Also Published As
Publication number | Publication date |
---|---|
DE112019006317T5 (de) | 2021-10-14 |
WO2020126692A1 (en) | 2020-06-25 |
US20220058472A1 (en) | 2022-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11049016B2 (en) | Neural network processor | |
US12014272B2 (en) | Vector computation unit in a neural network processor | |
US20220355472A1 (en) | Neural networks for selecting actions to be performed by a robotic agent | |
JP7266693B2 (ja) | トレーニング済み長短期記憶ニューラルネットワークの量子化 | |
EP3535704B1 (en) | Mixture of experts neural networks | |
EP4312157A2 (en) | Progressive neurale netzwerke | |
US10733501B2 (en) | Environment prediction using reinforcement learning | |
EP3360087B1 (en) | Training neural networks using normalized target outputs | |
CN110651280A (zh) | 投影神经网络 | |
CN113196233A (zh) | 用模拟神经元的单个物理层实现多层神经网络 | |
US20220309331A1 (en) | Error compensation in analog neural networks | |
US11755879B2 (en) | Low-pass recurrent neural network systems with memory | |
US11164066B1 (en) | Generating parameter values for recurrent neural networks | |
US20220138531A1 (en) | Generating output sequences from input sequences using neural networks | |
US10635972B1 (en) | Recurrent neural networks with rectified linear units | |
EP3446257B1 (en) | Interaction networks | |
CN111587441A (zh) | 使用以比特值为条件的回归神经网络生成输出示例 | |
TW202414277A (zh) | 用於執行類神經網路計算之電路、方法及非暫時性機器可讀儲存裝置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |