首页 / 专利库 / 面料 / 整经 / 一种光学神经网络处理器及其计算方法

一种光学神经网络处理器及其计算方法

阅读:728发布:2023-03-04

专利汇可以提供一种光学神经网络处理器及其计算方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种光学神经网络处理器及其计算方法。所述处理器包括:数值映射装置、正值光学计算装置、负值光学计算装置、光电转换器、减法器、非线性激活装置。在计算时,将神经网络模型中网络层的权值和输入值映射到可由光神经元表示的整数域内,并分为正负两个光路进行网络层的计算,通过减法器将两路计算结果合并为一路。,下面是一种光学神经网络处理器及其计算方法专利的具体信息内容。

1.一种光学神经网络处理器,包括:
数值映射装置,用于实现一个数值与可由光神经元表示的整数域内的数值之间的映射;
正值光学计算装置,用于根据由光神经元表示的整数域内的输入值与权值执行神经网络模型的网络层的相应计算,以得到第一计算结果的光信号
负值光学计算装置,用于根据由光神经元表示的整数域内的输入值与权值执行神经网络模型的网络层的相应计算,以得到第二计算结果的光信号
光电转换器,用于将所述第一计算结果和所述第二计算结果的光信号转换为电信号
减法器,用于提供与所述第一计算结果的电信号和所述第二计算结果的电信号之间的电位差,以作为相应的网络层的计算结果;
非线性激活装置,用于对相应的网络层的计算结果的电信号执行非线性激活。
2.根据权利要求1所述的处理器,其中所述正值光学计算装置,包括:至少一个用于产生光信号的激光器、至少一组正输入调制器和正权值调制器和正值光线聚合器;其中,所述正输入调制器,用于接收光信号,并在与所述网络层的输入特征值对应的电信号的控制下针对所述输入特征值中的正值执行光路调制,获得承载所述输入特征值中的正值的光信号;
正权值调制器,用于接收来自所述正输入调制器的光信号,并在与所述网络层的权值对应的电信号的控制下针对所述权值中的正值执行光路调制,获得承载所述输入特征值中的正值和所述权值中的正值的乘法结果的光信号;
正值光线聚合器,用于对多个所述正权值调制器输出的光信号进行聚合,获得承载多个相应乘法结果的累加结果的光信号,以作为所述第一计算结果的光信号。
3.根据权利要求1所述的处理器,其中所述负值光学计算装置,包括:至少一个用于产生光信号的激光器、至少一组负输入调制器和负权值调制器和负值光线聚合器;其中,所述负输入调制器,用于接收光信号,并在与所述网络层的输入特征值对应的电信号的控制下针对所述输入特征值中的负值执行光路调制,获得承载所述输入特征值中的负值的光信号;
负权值调制器,用于接收来自所述负输入调制器的光信号,并在与所述网络层的权值对应的电信号的控制下针对所述权值中的负值执行光路调制,获得承载所述输入特征值中的负值和所述权值中的负值的乘法结果的光信号;
负值光线聚合器,用于对多个所述负权值调制器输出的光信号进行聚合,获得承载多个相应乘法结果的累加结果的光信号,以作为所述第一计算结果的光信号。
4.根据权利要求1~3中任意一项所述的光学神经网络处理器,其中,所述数值映射装置用于实现从一个float型或double型的数值到可由光神经元表示的无符号位的int型的数值的映射,以及从一个int型的数值到一个float型或double型的数值的映射。
5.根据权利要求1~3中任意一项所述的光学神经网络处理器,其中还包括:误差修正装置,用于根据所述正值光学计算装置和所述负值光学计算装置中的光学元件而确定的针对神经网络模型的相应网络层的计算结果的误差,对所述计算结果进行修正。
6.根据权利要求1~3中任意一项所述的光学神经网络处理器,其中,所述数值映射装置用于根据光神经元所要表示的数值的最大值Wmax,计算映射的转换倍数α=2n/Wmax,其中n为光神经元的位宽,并且将一个数值修改为其原值的α倍,并且将修改后的数值中的非整数转换为整数。
7.根据权利要求1~3中任意一项所述的光学神经网络处理器,其中,所述数值映射装置用于根据光神经元所要表示的数值的最大值Wmax和最小值Wmin,将最大值Wmax和最小值Wmin之间的范围区间划分为2n-1个子区间,每个子区间与一个可由n bit所表示的整数相对应,其中n为光神经元的位宽,并且根据一个数值所处的子区间,采用相应的整数来表示所述数值。
8.根据权利要求6或7所述的光学神经网络处理器,其中所述光神经元所要表示的数值的最大值Wmax为通过对神经网络的权值和/或输入特征向量值和/或各个网络层的运算结果进行统计获得。
9.根据权利要求7所述的光学神经网络处理器,其中所述光神经元所要表示的数值的最小值Wmin为通过对神经网络的权值和/或输入特征向量值进行统计获得。
10.一种采用权利要求1~9中任意一项光学神经网络处理器进行神经网络模型计算的方法,包括:
1)将用于神经网络模型中网络层的权值和输入值映射到可由光神经元表示的整数域内;
2)根据被映射到所述整数域内的所述权值和输入值,采用所述正值光学计算装置对其中的正值执行所述网络层的相应计算,得到第一计算结果的光信号,采用所述负值光学计算装置对其中的负值执行所述网络层的相应计算,得到第二计算结果的光信号;
3)将所述第一计算结果和所述第二计算结果的光信号转换为电信号,并计算它们之间的电位差;
4)在当前网络层需要执行非线性激活时,基于与所述电位差对应的电信号执行非线性激活,以得到所述网络层的计算结果;
在当前网络层不需要执行非线性激活时,基于所述电位差提供针对所述网络层的计算结果。
11.根据权利要求10所述的方法,其中步骤2)包括:
2-1)将被映射到所述整数域内的所述权值中的负值修改为0,其余值保持不变,并且,将被映射到所述整数域内的所述输入值中的负值修改为0,其余值保持不变,以得到针对所述正值光学计算装置的输入;
将被映射到所述整数域内的所述权值中的正值修改为0,其余值保持不变;并且,将被映射到所述整数域内的所述输入值中的正值修改为0,其余值保持不变,以得到针对所述负值光学计算装置的输入;
2-2)将相应的输入分别提供给所述正值光学计算装置和所述负值光学计算装置。
12.根据权利要求10所述的方法,其中步骤4)包括:
4-1)根据所述正值光学计算装置和所述负值光学计算装置中的光学元件,确定针对所述网络层的计算结果的误差;
4-2)基于所述误差对所述计算结果进行修正。

说明书全文

一种光学神经网络处理器及其计算方法

技术领域

[0001] 本发明涉及对神经网络计算的加速,尤其涉及基于光学原理的神经网络处理器及其计算方法。

背景技术

[0002] 自从计算机诞生以来,人类就试图利用计算的方式构建出一种新的、能以人类智能相似的方式做出反应的智能机器。经过半个多世纪的起起伏伏,人工智能成为计算机科学的一个重要分支。基于大数据深度学习算法作为人工智能领域的主流方法,越来越受到广泛的关注,在自然语言处理、无人机、信息安全等领域发挥了基础性的作用,为社会创造了巨大的经济价值。
[0003] 人工神经网络由大量的神经元组成。所述神经元是能够模仿生物神经元功能的装置结构,神经元利用输入信号输出信号来模拟生物突触的输入和输出。在神经元的各个输入突触上具有相应的权值,输入信号分别与对应突触的权值相乘、求和,所得到的结果被输入到位于神经元输出端的非线性激活函数中,经过激活函数的处理产生神经元的输出信号。在人工神经网络中,每个神经元对应于神经网络中的一个网络层,各个神经元通过层次化的连接方式来构成神经网络模型。例如,在一个神经网络模型中通常包含一个输入层、多个隐藏层和一个输出层。其中,与输入层对应的神经元在接收输入信号的刺激后执行相应的计算,在计算结果超过一定阈值时激活并将产生的信号输出到与其连接的下一个网络层以作为其输入,以此类推。信号在人工神经网络的各个网络层之间传递,以模拟在生物的神经元之间的信息传递。
[0004] 在使用人工神经网络之前,为了使其能够产生与人类似的反应,会首先采用已知样本来训练与神经元的各个输入突触所对应的权值,使得基于该权重能够基于相应的输入产生令人满意的输出。在使用时,基于训练得到的权重对输入信号进行相应的计算,得到人工智能的输出。
[0005] 现有的绝大多数神经网络器件都是基于CMOS工艺的电路,例如CPU、FPGA等。然而,随着摩尔定律的失效,上述基于电域的计算方式面临着功耗、频率、并行度等若干方面的挑战。目前有少数的研究提出可以基于光学工艺生产神经网络器件,例如在中国专利文献CN103178901A中提出基于光纤中受激拉曼散射效应的光神经元。相较于传统的电域技术,光在并行度、速度等方面有先天的优势。
[0006] 尽管已有技术提供了光神经元的物理实现方式,然而目前尚不存在能够提供一种完整的光学神经网络处理器的技术。这是由于,传统的计算技术的原理是将电域器件与布尔逻辑理论结合,以半导体设计的方式得到相应的逻辑电路,从而使得电域器件能够与计算理论相匹配。然而现有的光学器件很难与传统的基于布尔逻辑的计算理论向匹配。直接将光神经元应用到传统的处理器结构中,所获得的光学神经网络处理器的性能受限,使得采用这样的硬件进行训练和迭代时容易出现收敛速度慢或所输出的结果准确率不高的情况。因而,需要提供一种能够利用光的上述优势的神经网络装置,并提供与其结构匹配的训练方法和计算方法。

发明内容

[0007] 因此,本发明的目的在于克服上述现有技术缺陷,提供一种光学神经网络处理器,包括:
[0008] 数值映射装置,用于实现一个数值与可由光神经元表示的整数域内的数值之间的映射;
[0009] 正值光学计算装置,用于根据由光神经元表示的整数域内的输入值与权值执行神经网络模型的网络层的相应计算,以得到第一计算结果的光信号
[0010] 负值光学计算装置,用于根据由光神经元表示的整数域内的输入值与权值执行神经网络模型的网络层的相应计算,以得到第二计算结果的光信号;
[0011] 光电转换器,用于将所述第一计算结果和所述第二计算结果的光信号转换为电信号
[0012] 减法器,用于提供与所述第一计算结果的电信号和所述第二计算结果的电信号之间的电位差,以作为相应的网络层的计算结果;
[0013] 非线性激活装置,用于对相应的网络层的计算结果的电信号执行非线性激活。
[0014] 优选地,根据所述光学神经网络处理器,其中所述正值光学计算装置,包括:至少一个用于产生光信号的激光器、至少一组正输入调制器和正权值调制器和正值光线聚合器;其中,
[0015] 所述正输入调制器,用于接收光信号,并在与所述网络层的输入特征值对应的电信号的控制下针对所述输入特征值中的正值执行光路调制,获得承载所述输入特征值中的正值的光信号;
[0016] 正权值调制器,用于接收来自所述正输入调制器的光信号,并在与所述网络层的权值对应的电信号的控制下针对所述权值中的正值执行光路调制,获得承载所述输入特征值中的正值和所述权值中的正值的乘法结果的光信号;
[0017] 正值光线聚合器,用于对多个所述正权值调制器输出的光信号进行聚合,获得承载多个相应乘法结果的累加结果的光信号,以作为所述第一计算结果的光信号。
[0018] 优选地,根据所述光学神经网络处理器,其中所述负值光学计算装置,包括:至少一个用于产生光信号的激光器、至少一组负输入调制器和负权值调制器和负值光线聚合器;其中,
[0019] 所述负输入调制器,用于接收光信号,并在与所述网络层的输入特征值对应的电信号的控制下针对所述输入特征值中的负值执行光路调制,获得承载所述输入特征值中的负值的光信号;
[0020] 负权值调制器,用于接收来自所述负输入调制器的光信号,并在与所述网络层的权值对应的电信号的控制下针对所述权值中的负值执行光路调制,获得承载所述输入特征值中的负值和所述权值中的负值的乘法结果的光信号;
[0021] 负值光线聚合器,用于对多个所述负权值调制器输出的光信号进行聚合,获得承载多个相应乘法结果的累加结果的光信号,以作为所述第一计算结果的光信号。
[0022] 优选地,根据所述光学神经网络处理器,其中,所述数值映射装置用于实现从一个float型或double型的数值到可由光神经元表示的无符号位的int型的数值的映射,以及从一个int型的数值到一个float型或double型的数值的映射。
[0023] 优选地,根据所述光学神经网络处理器,其中还包括:误差修正装置,用于根据所述正值光学计算装置和所述负值光学计算装置中的光学元件而确定的针对神经网络模型的相应网络层的计算结果的误差,对所述计算结果进行修正。
[0024] 优选地,根据所述光学神经网络处理器,其中,所述数值映射装置用于根据光神经元所要表示的数值的最大值Wmax,计算映射的转换倍数α=2n/Wmax,其中n为光神经元的位宽,并且将一个数值修改为其原值的α倍,并且将修改后的数值中的非整数转换为整数。
[0025] 优选地,根据所述光学神经网络处理器,其中,所述数值映射装置用于根据光神经元所要表示的数值的最大值Wmax和最小值Wmin,将最大值Wmax和最小值Wmin之间的范围区间划分为2n-1个子区间,每个子区间与一个可由n bit所表示的整数相对应,其中n为光神经元的位宽,并且根据一个数值所处的子区间,采用相应的整数来表示所述数值。
[0026] 优选地,根据所述光学神经网络处理器,其中所述光神经元所要表示的数值的最大值Wmax为通过对神经网络的权值和/或输入特征向量值和/或各个网络层的运算结果进行统计获得。
[0027] 优选地,根据所述光学神经网络处理器,其中所述光神经元所要表示的数值的最小值Wmin为通过对神经网络的权值和/或输入特征向量值进行统计获得。
[0028] 一种采用上述任意一项光学神经网络处理器进行神经网络模型计算的方法,包括:
[0029] 1)将用于神经网络模型中网络层的权值和输入值映射到可由光神经元表示的整数域内;
[0030] 2)根据被映射到所述整数域内的所述权值和输入值,采用所述正值光学计算装置对其中的正值执行所述网络层的相应计算,得到第一计算结果的光信号,采用所述负值光学计算装置对其中的负值执行所述网络层的相应计算,得到第二计算结果的光信号;
[0031] 3)将所述第一计算结果和所述第二计算结果的光信号转换为电信号,并计算它们之间的电位差;
[0032] 4)在当前网络层需要执行非线性激活时,基于与所述电位差对应的电信号执行非线性激活,以得到所述网络层的计算结果;
[0033] 在当前网络层不需要执行非线性激活时,基于所述电位差提供针对所述网络层的计算结果。
[0034] 优选地,根据所述方法,其中步骤2)包括:
[0035] 2-1)将被映射到所述整数域内的所述权值中的负值修改为0,其余值保持不变,并且,将被映射到所述整数域内的所述输入值中的负值修改为0,其余值保持不变,以得到针对所述正值光学计算装置的输入;
[0036] 将被映射到所述整数域内的所述权值中的正值修改为0,其余值保持不变;并且,将被映射到所述整数域内的所述输入值中的正值修改为0,其余值保持不变,以得到针对所述负值光学计算装置的输入;
[0037] 2-2)将相应的输入分别提供给所述正值光学计算装置和所述负值光学计算装置。
[0038] 12.根据权利要求10所述的方法,其中步骤4)包括:
[0039] 4-1)根据所述正值光学计算装置和所述负值光学计算装置中的光学元件,确定针对所述网络层的计算结果的误差;
[0040] 4-2)基于所述误差对所述计算结果进行修正。
[0041] 与现有技术相比,本发明的实施例的优点在于:
[0042] 提供了一种光电结合的神经网络处理器结构,使得基于该处理器可以用于各种神经网络模型的训练和计算,神经网络模型的输入和权值可以是非正整数,也可以是超出可由光强度调制硬件和强度叠加硬件所能表示的任意数值。在一个实施例中,提供了采用分别对抑制和促进这两个光路进行计算的方式来抵消光神经元不能表示负数以及对负数进行计算的缺陷。并且,通过抵消光学元器件所引入的误差来加快训练和计算的收敛,从而得到较好的测试识别率。由此,克服光神经元中表示精度低、器件误差高和无法进行双极性运算的问题,并提高了神经网络识别的准确度。附图说明
[0043] 以下参照附图对本发明实施例作进一步说明,其中:
[0044] 图1示出了现有技术中通常的神经元结构和神经网络的示意图;
[0045] 图2示出了根据本发明一个实施例的光神经元的结构示意图;
[0046] 图3示出了根据本发明另一个实施例的光神经元的结构示意图;
[0047] 图4示出了根据本发明一个实施例的光学神经网络处理器的示意图;
[0048] 图5示出了根据本发明一个实施例采用图4所提供的光学神经网络处理器训练神经网络模型的方法;
[0049] 图6示出了根据本发明一个实施例对具有图3所提供的光神经元结构的如图4所提供的光学神经网络处理器进行神经网络计算的方法。

具体实施方式

[0050] 图1示出了现有技术通常的神经元结构和神经网络结构的示意图,其中,图1(a)是神经元结构,其由突触计算、累加操作以及激活等三部分组成,每个突触有一个输入值xi和一个对应权值wi(示出为i=1、2、3),这两个值是有符号数(正数或负数),每次突触计算完成一次乘法操作xi*wi,然后在神经元内部实现一个累加操作,并将累加和经过激活函数f处理后输出到下一级神经元,神经元的计算模型可以表示为输出y=f(∑xi*wi+b),其中b为偏置值。神经网络由若干层的神经元组成,参见图1(b),示出了输入层、隐层和输出层,每层包括若干神经元,层与层之间、层内部按照需要组织神经元之间的连接关系。
[0051] <实施例1>
[0052] 根据本发明的一个实施例中,提供了一种基于光技术的神经元结构(在本文中也称为光神经元),参见图2所示,该光神经元包括激光器模210,突触输入调制模块220、突触权值调制模块230、光线聚合模块240和光强度探测模块250。
[0053] 激光器模块210包括多个激光器,用于产生持续稳定的、单波长或多波长的光信号。
[0054] 突触输入调制模块220包括多个突触输入调制器,光神经元的每一个神经突触对应一个突触输入调制器,突触输入调制模块220用于将激光器产生的光信号进行调制,例如,采用强度调制产生期望的光强分布,以承载与输入神经元值相对应的光信号。
[0055] 突触权值调制模块230包括多个突触权值调制器,用于根据预定义的突触权值,将经突触输入调制模块220调制过的光信号进行再次调制,获得承载神经元输入信息和权值相乘结果的光信号。
[0056] 光线聚合模块240用于将完成突触调制的多路光信号进行聚合,获得承载乘累加结果的光信号。例如,可利用光的反射或者折射原理将突触权值调制模块调制完成的光信号进行聚合,采用光强度的叠加完成累加操作。
[0057] 光强度探测模块250用于接收光线聚合模块240的输出,执行光信号的强度检测并执行乘累加之后的激活操作。
[0058] 综上,图2实施例中的光神经元与图1(a)的神经元结构对应,其模块间的互连关系为:激光器发出的光经过突触输入调制模块和突触权值调制模块分别调制后,多个突触的光线在光线聚合模块中聚合,经过强度探测模块探测后输出至下一级神经元。激光器对应现有神经元的驱动电信号,突触输入调制模块对应每一个突触的输入xi,突触权值调制模块对应神经元的每个突触的权值wi,光线聚合模块对应于神经元的累加和操作,光强度探测模块对应于神经元的激活函数操作。
[0059] <实施例2>
[0060] 图3进一步示出了本发明一个优选实施例的光神经元结构,包括激光器模块310,突触输入调制模块320、突触权值调制模块330、光线聚合模块340和光强度探测模块350,与图2实施例不同的是,图3的实施例中,通过两路光信号实现神经元结构。
[0061] 突触输入调制模块320由两个分立的光调制器组成,分别称为正输入调制器和负输入调制器。根据本发明的另一个实施例,突触输入调制模块320是集成的光调制器。相应地,突触权值调制模块330分为正权值调制器和负权值调制器,光线聚合模块340由正值光线聚合器和负值光线聚合器组成。此外,在该实施例中,光强度探测模块350由两个光电转换器和一个模数转换器(ADC)构成。
[0062] 正输入调制器和负输入调制器均可采用市售的光调制器实现,分别用于完成输入神经元的正数和负数调制,每个光调制器连接一个电域输入控制引脚,通过改变输入电压或输入电流来控制光调制器完成调制功能。
[0063] 例如,在一个示例中,输入神经元和电压值的对应关系参见下表1所示。
[0064] 表1输入值和电压值的映射表
[0065]输入神经元 电压值
0 V0
1 V1
2 V2
… …
255 V255
[0066] 由表1可知,对于不同的输入神经元,控制光调制器的电域输入控制引脚接收对应的电压值,在该电压值的作用下,光调制器将激光器产生的光信号调制为承载输入神经元的光信号,其中,光调制器的电域输入控制引脚接收的电压值可通过外部单片机或者FPGA等控制。
[0067] 类似地,突触权值调制模块330的正权值调制器和负权值调制器也可由光调制器实现,例如型号为CATV-15-10-0-A-Q的光调制器,其工作原理与正输入调制器和负输入调制器类似,在此不再详述。
[0068] 光线聚合模块340也分成两个部分,即正值光线聚合器和负值光线聚合器,这两个部分是两个独立的器件,但是根据本发明的另一个实施例,也可以是一个器件的两个不同端口。正值光线聚合器和负值光线聚合器分别对来自于正权值调制器和负权值调制器的光信号进行聚合。光线聚合器采用基于MEMS(微机电系统)的反射镜阵列实现,根据本发明的其他实施例,也可以采用基于波长的无源阵列波导光栅(AWG)路由器实现。
[0069] 光强度探测模块350包含两个光电转换器和一个模数转换器,其中,两个光电转换器分别与正值光线路聚合器和负值光线路聚合器相连,完成光信号到电信号的转换。两个光电转换器的输出端相连与模数转换器(ADC)的输入端相连,模数转换器接收两个光电转换器的输出,以获得两个光电转换器之间的电位差,将采集的电位差转换成数字信号,并可利用半导体材料的非线性效应完成激活操作,然后输出至下一级。半导体材料的非线性效应是指,例如二阶非线性光学材料磷酸二氢、磷酸二氘钾、磷酸二氢铵、碘酸锂、铌酸锂等,在一定的相干激光照射下产生的非线性的效应。
[0070] 基于图3示意的光神经元结构,对于光神经元中的若干突触,每个突触都有一个激光器的输入,其输入的是稳定的、单波长或多波长的光信号,该光信号在分光器作用下,分成两路,分别用于对正数和负数的调制。对于正数或负数调制的两路光线分别串联了两个调制器:一个是输入调制器,其在电信号的控制下完成神经元的输入,例如输入的值为x1,在外部单片机或者FPGA系统的控制下,电信号根据预定义的对应关系(如上表1所示)改变输入调制器的输入电压或输入电流,调制器完成光路的调制;另一个调制器是权值调制器,其工作原理与输入调制器类似,用于完成突触权值的调制。
[0071] 在图3的实施例中,每个突触中分别对正值和负值进行分别调制的目的在于克服光单极性的问题(即光强度只能是正值或0,而不会是负数)。例如,输入神经元的值xi为3,则正输入调制器的调制值为3,而负输入调制器的调制值为0;如果输入神经元的值xi为-3,则正输入调制器的调制值为0,而负输入调制器的调制值为3,正负输入调制器的差值为-3。
[0072] 应理解的是,也可采用其他方式来克服光的单极性问题,例如,通过线性变换将神经元值和权值均转变为正值,再经由调制模块调制,相应地,例如光线聚合器之后,首先通过逆变换再输入到光电转换器。
[0073] 根据本发明提供的光神经元,能够构成神经网络处理系统(如图1(b)所示),光神经网络由上述的若干光神经元组成,若干的光神经元组成一个光神经元层(例如,输入层、隐层和输出层等),多个光神经元层组成光神经网络,其中每个层次中的光神经元数量和层次的个数可根据需要灵活配置,例如,配置每层中,正负输入调制器的数量、正负权值调制器的数量等、以及包含的隐层数量等。
[0074] 应理解的是,在实际的光神经网络处理系统中,还包括控制模块和存储模块等,其中控制模块用于控制神经网络处理系统中各功能单元以及各层之间数据处理过程,以协调神经网络处理过程,所述存储模块用于保存待处理的神经元信息、权值、计算结果等。
[0075] 本发明提供的光神经网络利用光器件来执行神经网络模型的各种功能,并且适用于权值可变和权值固定两种运行模式,它们之间的区别在于突触权值调制模块是否要实时的改变。
[0076] 例如,在权值可变模式中,可以使用小规模的光神经元硬件系统,采用硬件复用的方式实现较大规模的神经元计算,这需要突触权值调制模块不断的改变突触的权值,以达到硬件复用的目的。而在权值固定模式下,突触权值调制模块的权值输入是固定的,无法实现硬件共享的目的,但由于不需改变权值,运行速度将会得以提高。
[0077] <实施例3>
[0078] 在一个实施例中,对于可变权值运行模式,配置较少的神经元数量,神经网络处理系统(结合图3所示)的工作流程包括以下步骤:
[0079] 步骤S410,在系统运行之前,将神经网络的权值矩阵进行块分解,将一个大的矩阵分成若干的小块矩阵,从而适应系统中神经元的数量;
[0080] 步骤S420,对每一个突触输入值xi按照正数和负数的形式进行分解,用于分别对每个突触的正输入调制器和负输入调制器进行控制;
[0081] 步骤S430,对于每一组神经元操作,向突触权值调制模块输入权值信息,完成突触权值的调制;
[0082] 步骤S440,对于每一组神经元操作,向突触输入调制模块输入神经元信息,完成突触输入的调制;
[0083] 步骤S450,等待模数转换器输出稳定时读取输出数值,并进行缓存;
[0084] 步骤S460,跳转至步骤S430,开始下一组神经元操作。
[0085] <实施例4>
[0086] 在另一个实施例中,对于以固定权值运行模式,神经网络处理系统的工作流程包括以下步骤:
[0087] 步骤S510,在系统运行开始时,向突触权值调制模块输入权值信息,完成突触权值的调制,并将该权值固定,后续不再进行改变;
[0088] 步骤S520,系统在运行之前对每一个突触输入值xi按照正数和负数的形式进行分解,用于分别对每个突触的正输入调制器和负输入调制器进行控制;
[0089] 步骤S530,对于神经元操作,向突触输入调制模块输入神经元信息,以完成突触输入的调制;
[0090] 步骤S540,等待模数转换器输出稳定时读取输出数值,并传递到下一级;
[0091] 步骤S550,跳转至步骤S530,开始下一组突触输入调制。
[0092] 本发明的光神经网络处理系统可应用了各种电子设备,例如、移动电话、嵌入式电子设备等。
[0093] 本发明的光神经网络处理系统和包含该系统的电子设备可用于文字处理、语音识别与处理、多国语言翻译、图像识别、生物特征识到、智能控制等领域,可用作智能计算处理器、机器人、移动设备、也可用于构建大规模神经网络计算超级计算机。
[0094] 综上所述,本发明基于空间光学技术和集成光学技术,利用光的衍射、折射和反射等物理特性设计的分立光器件和集成光芯片来实现光神经元架构和光神经网络,能够实现集成度高、能耗低、处理性能和扩展性强的光神经网络。
[0095] 在前述实施例中,光神经元中的突触输入调制模块220突触权值调制模块230、突触输入调制模块320、和突触权值调制模块330来对应于传统电域处理器中的乘法单元,光线聚合模块240、340对应于传统电域处理器中的加法单元,它们的输入均为光信号。发明人发现,受到光强度调制硬件和强度叠加硬件的限制,光神经元的位宽无法达到传统电域处理器中计算单元的位宽,目前可实现的最大位宽为8bit,即各个光学元器件所表示的数值范围是0~255。这样的光神经元也难以表示诸如float、double等类型的小数。这限制了光神经网络处理器的应用范围,也使得在使用这样的光神经网络处理器进行训练和迭代时容易出现收敛速度慢或所输出的结果准确率不高的情况。
[0096] 对此,发明人提出一种包含光神经元的光学神经网络处理器结构,及其训练和计算方法。
[0097] <实施例5>
[0098] 参考图4,根据本发明的一个实施例,光学神经网络处理器包括:定点量化装置610、光神经元620、光电转换器630、非线性激活装置640、浮点反量化装置650、反向传播装置660。其中,定点量化装置610、非线性激活装置640、浮点反量化装置650、反向传播装置
660均由电域元器件实现。
[0099] 所述定点量化装置610,以当前网络层的输入值X(对于输入层而言,其输入值为输入特征值)和权值W作为其输入,用于将各个float型或do uble型的数值映射到可由光神经元所表示的n bit的无符号的整数域内。这里的无符号指的是,在表示数值时不采用单独的一个bit作为其符号位,由此增加可由n bit可表示的整数的数值范围。
[0100] 根据本发明的一个实施例,上述定点量化装置610可以采用如下方式来执行所述映射:统计所采用的神经网络模型的当前网络层的各个权值中的最大值WmaxW_max,计算映射的转换倍数α=2n/Wmaxα,其中n为光神经元的位宽;将用于神经网络的每个权值修改为其原值的α倍;将修改后的权值中的非整数转换为整数,例如采用四舍五入或其他取整的方法。例如,假设权值的最大值为30.0f(f表示float类型),n=8bit,则转换倍数α等于36,由此可以将一个等于10.0f的float型数据转换为可由光神经元表示的等于128的int型数据。对于权值为负数的情况,本实施例可以将该权值直接映射为0。上述方式是通过统计确定所需表示的数值的最大值,以确定如何将所需表示的任何一个数值映射到可由光神经元所表示的无符号的整数域内,此种方式适用于所需表示的数值中没有负数或存在少量负数的情况。
[0101] 根据本发明的另一个实施例,上述定点量化装置610还可以采用如下方式来执行所述映射:统计所采用的神经网络模型的当前网络层的各个权值中的最大值Wmax和最小值Wmin;将最大值Wmax和最小值Wmin之间的范围区间均匀地划分为2n-1个子区间,两个相邻子区间之间的间隔为 每个子区间与一个可由n bit所表示的整数相对应,其中n为光神经元的位宽;根据权值的数值所处的子区间,采用相应的整数来表示所述权值。例如,假设权值的最大值和最小值区间为[-10.0f,30.0f],n=8bit,将该区间划分为255个区间,对于一个等于10.0f的float型数据,可以将其表示为等于128的int型数据。此种方式通过确定所需表示的数值范围来提供合理的映射规则,其对所需表示的数字的正负极性没有要求。
[0102] 可以理解,上述定点量化装置610还可以采用其他的方式来执行所述映射,只要可以将任何一个需要表示的数值映射到由光神经元所表示的整数域内即可。
[0103] 上述映射过程会对float型数据的精度造成一些损失。然而,发明人发现,神经网络可以很好地应对较大的输入噪声,比如为了识别照片中的物体,网络必须忽略所有的噪声及光照变化,以及其它与之前训练样本之间的非本质差异,而只关注重要的相似之处。因此这些精度损失不足以对识别率产生影响。
[0104] 所述光神经元620,与定点量化装置610相连接,用于接收来自定点量化装置610的经过映射的输入值X和权值W以执行与神经网络中当前网络层相对应的计算。这里的光神经元620可以采用如图2或图3所示出的结构以根据X和W执行卷积操作,在使用时,将由定点量化装置610输出的经过映射的输入值X作为输入调制器220、320的突触输入,以将由激光器产生的激光调制为与输入值X相关,将由定点量化装置610输出的经过映射的权值W作为权值调制器230、330权值输入,以将与输入值X相关的光信号调制为与X·W相关的光信号;随后由光纤聚合器240、340得到对各个输入值X和权值W的乘积的累加结果以获得卷积结果。
[0105] 可以理解,本实施例中的光神经元620也可以采用其他现有的光神经元结构,例如在中国专利文献CN103178901A中所提出的基于光纤中受激拉曼散射效应的光神经元,只要将所使用的输入值和权值映射到可由光神经元表示的正整数域内并提供给该光神经元以由该光神经元执行相应的计算即可。
[0106] 根据本发明的一个实施例,在光神经元620、以及与其他网络层相关的光学计算装置的输出端还包括一个溢出判断装置(未示出),用于判断计算获得的结果是否超出了光神经元可表示的范围。通过设置该装置可以防止计算结果溢出,这种计算结果溢出情况常出现在乘法计算中,例如将两个8bit的数值相乘所得到的结果可能需要由16bit来表示,也可能出现在加法计算中,例如两个8bit的数值相加的结果需要由9bit来表示。对于此种情况,可以将相应的结果输入到定点量化装置610中以作为其统计获得的最大值Wmax,并对所涉及的各个数值重新执行映射以及网络层的计算过程。
[0107] 此外,除前文中提到的用于执行卷积运算的光神经元620以外,在本发明的光学神经网络处理器中,还可以在定点量化装置610和光电转换器630之间设置与其他类型的网络层(例如池化层、全连接层、归一化层、成本层)相关且由光学元器件实现的计算装置(图4示出),这些计算装置中可以包括:由激光器210、调制器220和调制器230构成的光学乘法器,由光线聚合器240构成的光学加法器,以及它们的组合。
[0108] 所述光电转换器630,与光神经元620的输出相连,用于完成光强度到电信号的转化。这里设置该光电转换器630的原因在于,一般情况下需要对卷积层的计算结果执行非线性激活,非线性激活的原理利用的是半导体器件的特性,因而在进行非线性激活之前还需要设置光电转换器630。
[0109] 所述非线性激活装置640,以光电转换器630输出作为其输入,用于对光神经元620的计算结果进行非线性激活。这里除卷积层以外,还有一些网络层的计算也需要执行非线性激活,例如池化层和全连接层,对于归一化层和成本层则不需要非线性激活。在执行针对神经网络模型的训练过程时,若是没有到达输出层,则还需要对下一网络层进行相应的计算。尽管图4中仅示出了一个光神经元620,然而可以理解,由于神经网络中的网络层是以前一网络层的输出作为其输入,因而在本发明的光学神经网络处理器中可以由各个网络层对相同的光神经元620以及相应的光学计算装置(未示出)的硬件进行复用。例如参考图4,对于没到达输出层的情况,将非线性激活装置640的输出值提供给光神经元620以进行下一网络层的相应计算,在到达输出层时将非线性激活装置640的输出值提供给浮点反量化装置650以用于训练过程中迭代过程的反向传播,直到满足停止迭代的条件时输出相应的权值。
[0110] 可以理解,对于已获得权值而无需执行神经网络模型的训练的应用,也可以不在神经网络处理器中设置反向传播装置660、或反向传播装置660和浮点反量化转置650。
[0111] 所述浮点反量化转置650,与非线性激活装置640的输出相连,以输出层的电信号作为其输入,用于执行与定点量化装置610的逆映射。例如,将int型数据转换为float型的数据。浮点反量化转置650被设置在反向传播装置660之前,使得反向传播装置660可以对高精度值进行计算,从而得到更准确的经过调整的权值以用于神经网络模型训练的下一次迭代。反向传播的操作是一个不断对权重添加细微修正的过程,采用高精度的浮点值来执行这种细微修正,可以减少在训练神经网络模型时为得到输出权值所必须经历的迭代次数,即加快训练过程的收敛。
[0112] 根据本发明的一个实施例,在非线性激活装置640和反向传播装置660之间还可以设置一个误差修正装置(未示出),用于对光学元器件所带来的误差进行修正。这是由于,发明人在进行测试实验时发现,在使用光学元器件进行数据传输和计算时会引入一定的误差,例如在使用透镜、光栅等空间光学器件构建光神经网络结构时,虽然神经元的数量和规模可以很大,但是这些器件容易受到温度、震动等因素的影响,数据的传输和计算会产生一定的误差,由此导致识别精度不高。使得在某些情况下无论如何训练神经网络其迭代过程都无法收敛,而导致无法获得训练结果。因此,可以根据所使用的光学元器件的针对这一点,可以在执行完与网络层对应的计算后,为其输出值增加与光神经元器件特性匹配的随机误差。这里的误差值可以由光元器件的生产商提供,根据其规模和制造工艺的不同,生产商会对所制造的光器件进行实验,由实验结果给出误差值,例如对输出值加上20%的误差。优选地,在浮点反量化转置650和反向传播装置660之间设置误差修正装置。
[0113] 所述反向传播装置660,用于基于浮点反量化装置650的输出进行计算,以提供在训练神经网络模型时下一次迭代中用于各个网络层的权值,该装置可以采用任意一种现有技术实现。
[0114] <实施例6>
[0115] 图5示出了一种针对<实施例5>所提供的光学神经网络处理器的训练方法,所述方法包括:
[0116] 步骤1.根据神经网络的训练需求设置迭代总次数N和训练所需达到的准确率阈值P,并将当前的迭代次数初始地设置为n=0。
[0117] 步骤2.通过执行定点量化操作,将本次迭代中神经网络模型的输入层的权值和输入特征向量值映射到可由光神经元表示的正整数域内。所述顶点量化操作可以参考<实施例5>中对定点量化装置610的介绍。
[0118] 步骤3.采用光学元器件对被映射到所述正整数域内的权值和被映射到所述正整数域内的输入值执行针对神经网络模型的当前网络层的相应计算,得到计算结果的光信号;并且,在当前网络层需要执行非线性激活时,将所述计算结果的光信号转换为电信号并执行非线性激活。
[0119] 以采用具有如图5所示出的光神经元的神经网络处理器为例,可以由激光器210产生光信号,将被映射到所述正整数域内的输入值的电信号提供给突触输入调制器220,以由突触输入调制器220在该电信号的控制下执行光路调制,获得承载所述输入值的光信号。承载所述输入值的光信号被输入到突触权值调制器230中,同时将被映射到所述正整数域内的权值的电信号也提供给突触权值调制器230,以由突触权值调制器230在该电信号的控制下执行光路调制,获得承载所述输入值和所述权值的乘法结果的光信号。光线聚合器240对来自各路突触权值调制器230的光信号进行聚合,获得承载多个所述乘法结果的累加和的光信号。由此,可以获得相应的卷积层的计算结果的光信号。由于卷积层还需要进行非线性激活,因而通过光强度探测器250将来自于所述光线聚合器240的输出光信号转换为电信号并执行激活操作。
[0120] 对于在计算过程中产生的计算结果需要由超过光神经元的最大位宽的位数来表示的情况,参考<实施例5>中的介绍将相应的结果输入到定点量化装置610中,以重新执行映射过程。
[0121] 考虑诸如透镜、光栅等光学元器件对计算结果的影响,可以为当前网络层的输出值增加与光神经元器件特性匹配的随机误差。也可以在依次针对各个网络层进行计算后,针对输出层的结果进行修正。
[0122] 步骤4.判断当前网络层是否为输出层,若是则继续步骤5,否则继续步骤2并执行对下一个网络层的计算。
[0123] 步骤5.对于输出层的结果执行浮点反量化操作,以将输出层的结果映射为高精度数值,例如float型或double型的数据。该浮点反量化操作在执行反向传播之前实施,以使得可以通过反向传播得到更准确的结果,从而加快训练过程中每次迭代的收敛速度。这里的浮点反量化操作可以参考<实施例5>中对浮点反量化装置650的介绍。
[0124] 为了确定本次迭代是否满足训练目标,还需要针对输出层计算与训练目标相关的值,例如在训练用于图像识别的神经网络时计算识别准确率:
[0125]
[0126] 以便判断是否达成了训练目标。
[0127] 步骤6.判断是否达到迭代总次数,若是则结束,否则继续步骤7。
[0128] 步骤7.判断本次迭代的准确率pn是否达到设定的阈值,若是则结束,否则继续步骤8。
[0129] 步骤8.对输出层的结果的电信号执行反向传播操作。这里的反向传播操作可以由CPU或GPU来完成。由于反向传播使用的是float型的数据,因而在开始下一次迭代时需要执行定点量化操作,以将其转换为可由光神经元表示的int型的数据。
[0130] 为了验证采用本发明的训练方法的效果,发明人基于传统的神经网络算法和上述方法,在模拟的光学神经网络处理器上进行了仿真对比实验,设定光神经元的位宽为8bit,设计了4层的深度神经网络结构,隐藏层每层16个神经元,使用MNIST手写数字识别数据集中的60000个训练样本进行训练,然后对10000个测试样本进行测试,实验结果如下:
[0131]  传统算法 实施例算法
测试识别率 无法收敛 92.52%
[0132] 可以看到,采用传统的神经网络训练方法、结合光学神经网络处理器,在进行识别时会存在无法收敛的情况,即无法获得计算结果。相比之下,采用本实施的方法训练得到的模型的识别准确率可以达到92.52%。
[0133] <实施例7>
[0134] 本发明还提供了一种针对光学神经网络处理器的计算方法,所述光学神经网络处理器具有图4所提供的处理器结构,且其中光神经元620的部分与图3所提供的结构相对应。在这样的处理器中,分为针对正值和针对负值的两路的光学计算结构(即激光器-正值输入调制器-正值权值调制器-正值光线聚合器,以及激光器-负值输入调制器-负值权值调制器-负值光线聚合器),通过定点量化装置610来提供上述结构中的突触输入x1、x2、x3以及权值输入w1、w2、w3,ADC的输出与光电转换器630或非线性激活装置640的输入相连。这样的处理器的计算方式与传统神经网络处理器存在差异,下面将参照本发明的一个实施例,将所述方法进行具体介绍。
[0135] 参考图6,根据本发明的一个实施例,提供了一种采用上述光学神经网络处理器进行神经网络模型对一个网络层进行计算的方法,包括:
[0136] 步骤1.将通过训练所得到的或设置的用于神经网络的各个权值映射到可由光神经元表示的整数域内。对于当前网络层的输入向量X中也包含非整数的情况,也将X映射到该整数域内,其中,对于输入层而言X为输入特征向量,对于其他网络层而言,X为前一网络层的输出。在此步骤中进行映射的方法可以参考前述实施例中所介绍的方式,区别在于本实施例仅需计算得到输入值的整数表达形式即可。
[0137] 步骤2.利用激光器产生光学信号,以提供给正输入调制器和负输入调制器320。
[0138] 步骤3.通过相应的装置部件,计算促进权值矩阵Wp和抑制权值矩阵Wr,其中,Wp为将全部权值中的负值修改为0且保持其余值不变所得到的矩阵,Wr为将全部权值中的正值修改为0且将负值修改为其绝对值所得到的矩阵。对于X中包含负值的情况,计算促进输出向量矩阵Xp和抑制权值矩阵Xr,其中Xp为将输入特征向量中的负值修改为0且保持其余值不变所得到的向量,Xr为将输入特征向量中的正值修改为0且将负值修改为其绝对值所得到的向量。
[0139] 步骤4.参考图3,将Xp作为其中正输入调制器的突触输入,正输入调制器在与Xp中数值对应的电信号的控制下执行光路调制,获得承载Xp的光信号;同时将Wp作为正权值调制器的权值输入,正权值调制器在其控制下执行光路调制,获得承载Xp·Wp的乘法结果的光信号Yp。类似地,将Xr作为负输入调制器的突触输入,将Wr作为负权值调制器的权值输入,可以获得承载承载Xr·Wr的乘法结果的光信号Yr。可以看到这两路乘法结果是彼此独立的。
[0140] 步骤5.通过电光转换器将光学信号Yp和光学信号Yr转换为电信号。
[0141] 步骤6.利用电域元件模数转换器计算电信号Y=Yp-Yr。
[0142] 对于当前网络层需要执行非线性激活时,电信号Y为用于半导体接收器执行非线性激活的输入值,以得到相应的电信号。对于当前网络层不需要非线性激活时,Y为当前网络层输出的电信号。在一些情况下,还可以对电信号Y执行与步骤1相对的逆映射过程,将其数值转换为float型的数值,以得到用于非线性激活的输入。
[0143] 参考前述实施例,这里还可以根据在当前网络层计算中所使用的光学器件,对所得到的电信号Y增加与光神经元器件特性匹配的误差。
[0144] 上述过程为针对神经网络的一个网络层的计算,在实际计算过程中可以根据神经网络的层级结构关系调整计算过程。
[0145] 应当理解,本实施例所述计算方法还可以应用到其他具有类似结构的光学神经网络处理器上,只要该处理器可以提供抑制和促进这两个光路进行计算的功能即可。并且,在一些实施例中,可以通过软件的方式实现上述方法的至少部分操作。需要说明的是,上述实施例中介绍的各个步骤和部件并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。
[0146] 最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的实施例中的某些技术手段进行修改或者组合或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
相关专利内容
标题 发布/更新时间 阅读量
一种整经机 2020-05-13 658
整经机 2020-05-12 499
整经机 2020-05-12 866
带可变位导纱器的抽样整经机 2020-05-12 272
带换纱机构的电子控制试样整经机 2020-05-12 598
整经机 2020-05-13 646
电控样品整经机 2020-05-11 597
直接卷绕式样品整经机 2020-05-11 112
整经装置 2020-05-12 516
整经装置 2020-05-12 136
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈