首页> 中国专利> 对神经网络系统中的数据处理方法和神经网络系统

对神经网络系统中的数据处理方法和神经网络系统

摘要

本申请提供了一种对神经网络系统中的数据处理方法和处理装置,应用于人工智能领域的神经网络系统中。该方法能够根据目标量化位宽以及待量化的权重值集合中的权重值的范围,确定量化方式,并根据确定的量化方式对待量化的权重值集合中的权重值进行量化。其中,待量化的权重值集合包括神经网络系统中的多个卷积核组中的一个卷积核组的初始权重值,所述卷积核组包括不同卷积层中的多个卷积核,或包括同一卷积层中的部分卷积核,并基于量化后的权重值集合中的权重值对输入神经网络系统中的数据进行计算。该方法能够提升神经网络系统中进行低位宽量化后的数据精度。

著录项

  • 公开/公告号CN112215331A

    专利类型发明专利

  • 公开/公告日2021-01-12

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201910619898.3

  • 发明设计人 蒋磊;程捷;杨文斌;

    申请日2019-07-10

  • 分类号G06N3/04(20060101);G06N3/063(20060101);

  • 代理机构11329 北京龙双利达知识产权代理有限公司;

  • 代理人张欣;王君

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-06-19 09:30:39

说明书

技术领域

本申请涉及神经网络领域,尤其涉及对神经网络系统中的数据处理方法和神经网络系统。

背景技术

人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。深度学习(deep learning,DL)作为人工智能一个重要分支,得到了学术界和工业界广泛关注和深入的研究,不仅产生了许多理论创新成果,在产业界也有很多实际应用,诸如图像处理、语音识别、运动分析等等。深度学习是为了模仿人脑构造的一种神经网络,可以达到比传统的浅层学习方式更好的识别效果。

性能较好的神经网络通常包括规模较大的模型参数,因而计算复杂度较高。因此,对神经网络进行压缩和加速变得非常重要。而通过有效的低位宽权重量化方法,在精度损失尽可能低的前提下降低权重矩阵的位宽,可以有效压缩模型,降低神经网络的存储量。因此,如何在降低权重的位宽的情况下保证量化后的数据的精度,是神经网络技术领域亟待解决的问题。

发明内容

本申请提供一种对神经网络系统中的数据处理方法和神经网络系统,能够提升神经网络系统中量化后的数据的精度。

第一方面,提供了一种对神经网络系统中的数据处理方法,包括:根据目标量化位宽以及第一初始权重值集合中的权重值的范围,确定第一量化方式,其中,所述第一初始权重值集合包括所述神经网络系统中的多个卷积核组中的第一卷积核组的初始权重值,所述第一卷积核组包括一个或多个卷积核,所述第一卷积核组包括不同卷积层中的多个卷积核,或包括同一卷积层中的部分卷积核;根据所述第一量化方式,对所述第一初始权重值集合中的权重值进行量化,以获得所述第一卷积核组的第一目标权重值集合;根据所述第一目标权重值集合中的权重值对输入所述神经网络系统的数据进行计算。

在本申请实施例中,可以将神经网络的多个卷积核划分为多个卷积核组,同一卷积核组中的卷积核可以来自不同卷积层或者只包括同一卷积层中的部分卷积核,从而通过在量化过程中对卷积核进行灵活的分组,并根据每个卷积核组的权重分布,分别确定量化方式,使卷积核组在量化时不受卷积层的限制,并且可以针对不同的卷积核组确定各自的量化方式,从而能够更有针对性的对卷积核或卷积核组进行量化,以充分利用卷积核组的权重空间长度进行量化,能够在进行低位宽量化时,提升神经网络系统中量化后的数据精度。并且,由于根据本申请实施例提供的权重处理方法处理后的权重值的精度有了提高,所述神经网络系统基于所述第一目标权重值集合中的权重值对输入的数据进行计算后得到的输出数据的准确性更高。

结合第一方面,在一种可能的实现方式中,所述第一卷积核组包括权重分布相近的多个卷积核。

在本申请实施例中,通过将权重分布相近的卷积核划分在同一卷积核组中,针对不同的卷积核组确定各自的量化方式,从而能够更有针对性的对卷积核或卷积核组进行量化,提高权重表达能力,降低量化过程中的精度损失,提高量化后的数据精度。

结合第一方面,在一种可能的实现方式中,所述第一卷积核组满足以下条件中的至少一项:所述第一卷积核组中的任意两个卷积核的权重值的最大值的差值小于第一预设值;或,所述第一卷积核组中的任意两个卷积核的权重值的最小值的差值小于第二预设值;或,所述第一卷积核组中的任意两个卷积核的权重值的平均值的差值小于第三预设值;或,所述第一卷积核组中的任意两个卷积核的权重值的方差的差值小于第四预设值。

在本申请实施例中,通过将权重分布相近的卷积核划分在同一卷积核组中,例如,根据卷积核的权重值的最大值、最小值、平均值或方差对卷积核组进行划分,针对不同的卷积核组确定各自的量化方式,从而能够更有针对性的对卷积核或卷积核组进行量化,提高权重表达能力,降低量化过程中的精度损失,提高量化后的数据精度。

结合第一方面,在一种可能的实现方式中,所述根据所述第一量化方式,对所述第一初始权重集合进行量化,包括:根据所述第一量化方式将所述第一初始权重值集合中的权重值划分为多个子集;分别对所述多个子集中的每个子集中的权重值进行量化,得到所述第一目标权重值集合。

结合第一方面,在一种可能的实现方式中,所述第一量化方式为均匀量化方式,所述根据所述第一量化方式将所述第一初始权重值集合中的权重值划分为多个子集包括:采用第一量化步长将所述第一初始权重值集合中的权重值均匀划分为所述多个子集。

结合第一方面,在一种可能的实现方式中,所述第一量化方式为非均匀量化方式,所述根据所述第一量化方式将所述第一初始权重值集合中的权重值划分为多个子集包括:按照所述第一量化方式确定的多个量化步长将所述第一初始权重值集合中的权重值非均匀的划分为所述多个子集。

在本申请实施例中,可以采用非均匀量化方式将初始权重值集合中的权重中进行划分和量化,从而能够利用权重空间的长度,提高权重表达能力,降低量化后的精度损失,提高量化后的数据精度。

结合第一方面,在一种可能的实现方式中,还包括:对所述第一目标权重值集合中的权重值进行前向推理计算;根据所述前向推理计算的结果,确定所述第一目标权重值集合的权重值不满足预设条件;调整所述第一初始权重值集合中的权重值,得到所述第一卷积核组的第二初始权重值集合;根据所述第二初始权重值集合中的权重值的范围,确定第二量化方式;根据所述第二量化方式对所述第二初始权重值集合中的权重值进行量化,得到所述第一卷积核组的第二目标权重值集合。

在本申请实施例中,通过对获取的第一目标权重集合进行迭代训练,并在训练过程中不断调整第一卷积核组的初始权重值集合的权重值以及量化方式,从而尽可能降低神经网络量化后的精度损失,以提高量化后的数据精度。

结合第一方面,在一种可能的实现方式中,所述根据所述前向推理计算的结果,确定所述第一目标权重值集合的权重值不满足预设条件,包括:在所述前向推理计算的输出值与真实值的误差大于第一预设阈值的情况下,确定所述第一目标权重值集合的权重值不满足预设条件。

结合第一方面,在一种可能的实现方式中,在所述神经网络系统中对所述第一目标权重值集合的权重值进行前向推理计算,其中,所述神经网络系统包括以下任意一种处理器件:图形处理器GPU、现场可编程阵列FPGA、忆阻器交叉阵列。

结合第一方面,在一种可能的实现方式中,还包括:对所述第一目标权重值集合中的权重值进行前向推理计算;根据对所述第一目标权重值集合的权重值进行前向推理计算的结果,确定所述第一目标权重值集合的权重值不满足预设条件;调整所述第一目标权重值集合的权重值,得到所述第一卷积核组的第二目标权重值集合。

结合第一方面,在一种可能的实现方式中,还包括:根据所述多个卷积核组中的第二卷积核组的初始权重值集合的范围,确定所述第二卷积核组的第三量化方式,所述第三量化方式与所述第一量化方式不同;根据所述第三量化方式,对所述第二卷积核组的初始权重值集合进行量化,以获得所述第二卷积核组的目标权重值集合。

第二方面,提供了一种神经网络系统,包括用于实现上述第一方面以及第一方面的各种可能的实现方式的模块。

第三方面,提供了一种芯片,所述芯片上设置有如第二方面或第二方面中任一种可能的实现方式中所述的神经网络系统。

第四方面,提供了一种神经网络系统,所述计算机系统包括存储器以及与所述存储器连接的处理器,所述存储器用于存储计算机指令,所述处理器用于运行所述计算机指令以执行上述第一方面或第一方面任一种可能的实现方式的方法。

第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码包括用于执行第一方面或第一方面任一种可能的实现方式的方法的指令。

附图说明

图1是本申请实施例的神经网络系统的结构示意图。

图2是本申请实施例的卷积核的示意图。

图3是本申请又一实施例的神经网络系统的示意图。

图4是本申请一实施例的ReRAM芯片的结构示意图。

图5是本申请一实施例的对神经网络系统中的数据处理方法的流程示意图。

图6是本申请又一实施例的对神经网络系统中的数据处理方法的流程示意图。

图7是本申请又一实施例的对神经网络系统中的数据处理方法的流程示意图。

图8是本申请又一实施例的对神经网络系统中的数据处理方法的流程示意图。

图9是本申请又一实施例的神经网络系统的结构示意图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

下面首先结合图1介绍本申请实施例的人工神经网络系统的架构和工作原理。人工神经网络(artificial neural network,ANN),简称为神经网络(neural network,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。人工神经网络可以包括卷积神经网络(convolutional neural network,CNN)、深度神经网络(deep neural network,DNN)、多层感知器(multilayer perceptron,MLP)等神经网络。

图1为本申请实施例提供的一种神经网络系统的结构示意图。如图1所示,神经网络系统100可以包括主机105以及神经网络电路110。神经网络电路110通过主机接口与主机105连接。主机接口可以包括标准的主机接口以及网络接口(network interface)。例如,主机接口可以包括快捷外设互联标准(peripheral component interconnect express,PCIE)接口。如图1所示,神经网络电路110可以通过PCIE总线106与主机105连接。因此,数据可以通过PCIE总线106输入至神经网络电路110中,并通过PCIE总线106接收神经网络电路110处理完成后的数据。并且,主机105也可以通过主机接口监测神经网络电路110的工作状态。

主机105可以包括处理器1052以及内存1054。需要说明的是,除了图1所示的器件外,主机105还可以包括通信接口以及作为外存的磁盘等其他器件,在此不做限制。

处理器(processor)1052是主机105的运算核心和控制核心(control unit)。处理器1052中可以包括多个处理器核(core)。处理器1052可以是一块超大规模的集成电路。在处理器1052中安装有操作系统和其他软件程序,从而处理器1052能够实现对内存1054、缓存、磁盘及外设设备(如图1中的神经网络电路)的访问。可以理解的是,在本发明实施例中,处理器1052中的Core例如可以是中央处理器(central processing unit,CPU),还可以是其他特定集成电路(application specific integrated circuit,ASIC)。

内存1054是主机105的主存。内存1054通过双倍速率(double data rate,DDR)总线和处理器1052相连。内存1054通常用来存放操作系统中各种正在运行的软件、输入和输出数据以及与外存交换的信息等。为了提高处理器1052的访问速度,内存1054需要具备访问速度快的优点。在传统的计算机系统架构中,通常采用动态随机存取存储器(dynamicrandom access memory,DRAM)作为内存1054。处理器1052能够通过内存控制器(图1中未示出)高速访问内存1054,对内存1054中的任意一个存储单元进行读操作和写操作。

神经网络电路110可以是由多个神经网络芯片(chip)组成的芯片阵列。例如,如图1所示,神经网络电路110包括多个进行数据处理的神经网络芯片(chip)115和多个路由器120。为了描述方便,本发明实施例将申请中的神经网络芯片115简称为芯片115。所述多个芯片115通过路由器120相互连接。例如,一个芯片115可以与一个或多个路由器120连接。多个路由器120可以组成一种或多种网络拓扑。芯片115之间可以通过所述多种网络拓扑进行数据传输。

在一些示例中,上述神经网络电路110可以由基于模拟计算的电阻式随机存取器(resistive random-access memory,ReRAM)交叉阵列(crossbar)来实现。例如,上述神经网络电路110中的每个神经网络芯片115可以包括一个或多个ReRAM crossbar。在本申请实施例中,ReRAM crossbar也可以称为忆阻器交叉阵列、ReRAM器件或者ReRAM。包括一个或多个ReRAM crossbar的芯片可以称为ReRAM芯片。ReRAM Crossbar是一种全新的非冯诺依曼计算架构。该架构集存储和计算功能于一身,具有灵活的可配置特性,并利用了模拟计算方式,有望实现比传统的计算构架更快速度、更低能耗的矩阵向量乘,在深度网络计算中具有广泛应用前景。

可选地,图1中的神经网络系统100的架构仅作为示例,本领域技术人员能够理解,在实践中,上述神经网络系统100可以包括比图1中更多或更少的单元。或者神经网络系统100中的模块、单元或电路也可以被其它具有类似功能的模块、单元或电路替代,本申请实施例对此不作限定。例如,在另一些示例中,上述神经网络系统100也可以由基于数字计算的图形处理器(graphics processing unit,GPU)或现场可编程门阵列(fieldprogrammable gate array,FPGA)实现。

本申请实施例的技术方案可以应用于各种神经网络,例如:卷积神经网络(convolutional neural network,CNN),在处理自然语言和语音中有广泛应用的循环神经网络,以及卷积神经网络和循环神经网络结合的深度神经网络等等。卷积神经网络的处理过程类似于动物的视觉系统,使得其非常适用于图片识别领域。卷积神经网络可以应用于各个图片识别领域如安防领域、计算机视觉、平安城市等,还可以应用于语音识别、搜索引擎、机器翻译等等。实际应用中,巨大的参数量和计算量对神经网络在实时性高、功耗低的场景的应用带来极大挑战。如在自动驾驶场景中,基于CNN的深度模型需要在毫秒级响应时间内完成对车辆和行人的检测与识别,从而为后续的运动规划(如避让)提供足够的决策时间;同时,为了保证自动驾驶汽车足够的续航时间,深度神经网络的功耗也必须尽可能的低。因此,如何能在功耗尽可能低,速度尽可能快的情况下完成计算是神经网络应用落地的关键。

下文继续介绍本申请实施例中涉及到的若干术语。

卷积核(kernel):一个卷积核代表神经网络计算过程中的一种特征提取方式。例如,在神经网络系统中进行图像处理时,给定输入图像,在输出图像中每一个像素是输入图像中一个小区域中像素的加权平均,其中权值由一个函数定义,这个函数即称为卷积核。在计算过程中,卷积核按照一定的步长(stride)依次划过输入特征图(feature map)产生特征提取后的输出数据(也被称为输出特征图)。因此,卷积核大小(kernel size)也用于指示神经网络系统中的计算节点执行一次计算的数据量的大小。本领域技术人员可以知道,卷积核可以用一个实数矩阵来表示,例如图2示出了一个4行3列的卷积核,该卷积核中的每一个元素代表一个权重值。实际应用中,一个神经网络层可以包括多个卷积核。在神经网络计算过程中,可以将输入数据与卷积核进行乘加计算。

神经网络层:在本申请实施例中,神经网络层为逻辑的层概念,一个神经网络层是指要执行一次神经网络操作。神经网络系统可以包括多个神经网络层。每一层神经网络计算均是由计算节点来实现。例如,计算节点可以由ReRAM芯片实现。实际应用中,神经网络层可以包括卷积层、池化层等。为描述简便,本申请中的“神经网络层”也可以简称为“层”。

权重:可以指神经网络层的卷积核。其中,神经网络层的权重可包括多个卷积核。权重里的元素可以称为权重值。

权重值:指卷积核中的元素,如图2所示,卷积核中的一个元素代表一个权重值。

量化:一般神经网络模型的计算采用浮点数计算,在基本不影响模型准确率的情况下,模型的权重和特征图采用一定位宽的整数来近似原始浮点数的网络,即为量化技术。例如,可以将32位的浮点数权重值量化为4比特或8比特的权重值。

量化位宽:指量化后的神经网络中权重值所采用的位数,典型的是4比特或8比特。

为了得到功耗更低、速度更快的神经网络系统,对输入神经网络系统的数据进行量化是一种常见的方式。具体地,可以对神经网络中的权重值进行低位宽量化,以得到精度更低、占用空间更少的权重值。例如,可以将32bit的浮点数量化为1bit、2bit的定点数。对神经网络进行量化可以有效地压缩神经网络模型,降低神经网络的存储量和计算量。从而提高了神经网络的运行速度和降低功耗。但是,由于对神经网络的量化需要牺牲数据的精度,从而影响神经网络的精度。因此,如何在量化过程中尽可能降低神经网络的精度损失,是神经网络技术领域亟待解决的问题。

例如,一方面,由于ReRAM器件的电导值写入存在误差,难以支持高位宽的权重。因此,为充分利用ReRAM的优势,需要有效的权重低位宽量化方法,能够在精度损失尽可能低的前提下降低权重矩阵的位宽。另一方面,为面向低功耗、高速度的计算需求,GPU、FPGA等计算硬件相继支持低位宽,这也对低位宽化算法提出新的需求。

本领域技术人员可以知道,传统的低位宽量化方法假定每层的卷积核具有一致的权重分布,并且在迭代训练中保持不变,因此为每层卷积核选用一致的量化步长,并且该量化步长在训练中保持不变,进而对权重进行量化。然而由于卷积核的权重分布具有差异,并且权重分布在训练过程中会发生改变,选取一致的量化步长无法获得最优的量化效果,影响网络的精度。本申请实施例提供了一种对神经网络系统中的数据处理方法和处理装置,能够根据每个卷积核或每组卷积核的权重分布,选取卷积核的量化方式,并且量化方式在迭代训练中可以随权重分布的变化而改变,保证量化后的神经网络精度尽可能高,从而提供了一种精度损失较低的量化方案。该方法可应用于基于ReRAM芯片计算的场景,也可用于基于GPU、FPGA等的计算场景。或者,该方法也可以应用于其它神经网络计算的场景中,本申请实施例对此不作限定。

图3是本申请实施例的又一种可能的神经网络系统300的示意图。该神经网络系统300包括处理装置310和计算装置320。如图3所示,本申请实施例的对神经网络系统中的数据处理方法也可以由神经网络系统300执行,所述处理装置310可以是计算机系统,例如处理装置310可以包括中央处理器(central processor unit,CPU)、GPU、FPGA或者其它类型的处理器。神经网络的权重经过处理装置310量化之后,可以将量化后的权重加载到计算装置320中进行计算。计算装置320可以是能够执行神经网络计算的装置。计算装置320可以包括神经网络芯片。例如,该神经网络芯片可以为GPU、FPGA或ReRAM芯片。计算装置320也可以包括其它类型的处理器,只要其能够执行神经网络的计算即可。可选地,处理装置310和计算装置320可以是同一装置,也可以是不同装置。例如,处理装置310的处理器可以为CPU,计算装置320可以为ReRAM芯片。或者,处理装置310和计算装置320为同一个GPU或者同一个FPGA。

在一个示例中,处理装置310可以是图1中的主机105,计算装置320可以是图1中的神经网络电路110。

图4是本申请实施例提供的ReRAM芯片的结构示意图。图4以一个ReRAM crossbar结构为例,展示了利用ReRAM芯片进行矩阵向量乘的原理。在ReRAM芯片计算中,矩阵的权重W用ReRAM芯片中忆阻器的电导值G表示,ReRAM芯片的输入电压V代表输入向量,因此矩阵的乘加结果通过测量ReRAM芯片输出端的电流值I得到。例如,可以用以下公式表示:

I=GV (1)

由于器件工艺的问题,当前ReRAM芯片中忆阻器的电导值(对应矩阵权重)写入存在误差。当写入电导值状态过多时,相邻两个不同的电导值状态难以区分,因此尚难以实现多个不同电导值的写入。然而由于器件工艺限制,ReRAM能够表示的位宽较小。作为一个示例,当前的忆阻器一般支持16个不同的电导状态,即可表示4比特(bit)的权重。因此,为充分利用ReRAM芯片模拟计算在神经网络中的优势,需要研究有效的权重低位宽量化方法,使得在精度损失尽可能低的前提下尽可能降低权重矩阵的位宽。

图5是本申请实施例的对神经网络系统中的数据处理方法的示意图。图5的方法可以由图1或图3中的神经网络系统(100,300)执行。例如,S501和S502可以由处理装置310执行,S503可以由计算装置320执行。如图5所示,该方法包括:

S501、根据目标量化位宽以及第一初始权重值集合中的权重值的范围,确定第一量化方式,其中,所述第一初始权重值集合包括神经网络系统中的多个卷积核组中的第一卷积核组的初始权重值,所述第一卷积核组包括一个或多个卷积核,所述第一卷积核组包括不同卷积层中的多个卷积核,或包括同一卷积层中的部分卷积核。

如前所述,所述神经网络系统可以包括多个卷积层,每个卷积层包括一个或多个卷积核。在量化过程中,可以将神经网络系统中的多个卷积核划分为多个卷积核组,并根据每个卷积核组的权重分布确定量化方式,并进行量化,不同卷积核组的量化方式可以不同。具体地,一个卷积核组包括的卷积核可来自不同的卷积层,或者一个卷积核组可包括一个卷积层中的部分卷积核。每个卷积核组可包括一个卷积核或多个卷积核。在一些示例中,每个卷积核组可以只包括一个卷积核,则量化过程中,可以根据每个卷积核的权重分布确定量化方式并进行量化。

可选地,第一卷积核组可以指上述划分的多个卷积核组中的一个卷积核组。第一初始权重值集合可以指量化前的第一卷积核组的权重值的集合。其中,卷积核的权重值可以理解为卷积核的元素。目标量化位宽可以指量化后的权重值的位宽。例如,量化前的权重值的位宽为32bit,量化后的权重值的位宽可以为4bit。

可选地,在本发明实施例中,上述量化方式可以是均匀量化方式也可以是非均匀量化方式。其中,均匀量化方式是指根据相同的量化步长,将初始权重值集合中的权重值均匀的划分为多个子集,然后分别对各子集中的权重值进行量化。在量化时,同一个子集中的权重值被量化为同一个值。例如,可以根据目标量化位宽和量化步长,将初始权重集合中的权重区间均匀地划分为固定数目的权重子区间,落入每个权重子区间的权重值的集合为一个子集。

非均匀量化方式是指根据多个不同的量化步长,将初始权重值集合中的权重值非均匀的划分为多个子集,然后分别对各子集中的权重值进行量化。在量化时,同一个子集中的权重值被量化为同一个值。例如,可以根据目标量化位宽和多个量化步长,将初始权重集合的权重区间非均匀地划分为固定数目的子区间,落入每个子区间的权重值的集合为一个子集。

若所述第一量化方式为均匀量化方式,则上述确定第一量化方式可以包括确定第一量化步长。例如,假定第一初始权重值集合共有128个权重值,分布在[0,1]的范围内,如果量化位宽为4bit。对于4bit的量化位宽,可表示16个不同的值。当采用均匀量化方式时,对于[0,1]的权重空间,可量化为16个不同的值。第一量化步长为1/16。

若所述第一量化方式为非均匀量化方式,则上述确定第一量化方式可以包括确定多个量化步长。举例来说,假定第一初始权重值集合共有个128个权重值,分布在[0,1]的范围内,如果量化位宽为4bit,其中分布在[0,0.25]的权重值共有96个(占总数的75%),分布在[0.25,1]的权重值共有32个(占总数的25%)。对于4bit的量化位宽,可表示16个不同的值。当采用非均匀量化方式时,对于[0,0.25]的权重空间,量化为16*0.75=12个不同的值,量化步长为0.25/12=1/48,而对于[0.25,1]的权重空间,量化为16*0.25=4个不同的值,量化步长为0.75/4=3/16。

在本申请实施例中,可以采用非均匀量化方式将初始权重值集合中的权重中进行划分和量化,从而能够利用权重空间的长度,提高权重表达能力,降低量化过程中的精度损失,以提高量化后的数据精度。

S502、根据所述第一量化方式,对所述第一初始权重值集合中的权重值进行量化,以获得所述第一卷积核组的第一目标权重值集合。

第一目标权重集合可以指量化后的第一卷积核组的权重值的集合。其中,上述对第一初始权重值集合中的权重值进行量化,可以包括:根据所述第一量化方式将所述第一初始权重值集合中的权重值划分为多个子集;分别对所述多个子集中的每个子集中的权重值进行量化,得到所述第一目标权重值集合。其中,上述分别对所述多个子集中的各个子集中的权重值进行量化,在量化时,同一个子集中的权重值被量化为同一个值,从而各子集量化后的数据获取第一目标权重值集合。可选地,每个子集中的权重值的量化的值可以是权重子区间的中间值。

其中,若第一量化方式为均匀量化方式,在对第一初始权重值集合中的权重值进行划分时,可以采用第一量化步长将所述第一初始权重值集合中的权重值均匀划分为所述多个子集。若第一量化方式为非均匀量化方式,在对第一初始权重值集合中的权重值进行划分时,可以按照多个量化步长将所述第一初始权重值集合中的权重值非均匀的划分为所述多个子集。

S503、基于所述第一目标权重值集合中的权重值对输入所述神经网络系统的数据进行计算。

例如,可以将所述第一目标权重值集合中的权重值加载到计算装置320中进行计算。该计算装置320的处理器可以为GPU、FPGA或者ReRAM芯片。可选地,上述对输入神经网络系统的数据进行计算可以包括卷积、或池化等神经网络计算,或者也可以包括进行前向推理计算。

在本申请实施例中,可以将神经网络的多个卷积核划分为多个卷积核组,同一卷积核组中的卷积核可以来自不同卷积层或者只包括同一卷积层中的部分卷积核,从而通过在量化过程中对卷积核进行灵活的分组,并根据每个卷积核组的权重分布,分别确定量化方式,使卷积核组在量化时不受卷积层的限制,充分利用卷积核组的权重空间长度进行量化,能够降低神经网络量化后的精度损失,提升神经网络系统量化后的数据精度。并且,由于根据本申请实施例提供的权重处理方法处理后的权重值的精度有了提高,将处理后的第一目标权重值集合中的权重值加载到神经网络系统中,所述神经网络系统基于所述第一目标权重值集合中的权重值对输入的数据进行计算后得到的输出数据的准确性更高。进一步地,本申请实施例的方法还能够提高神经网络系统处理的具体应用的精确性。例如,若神经网络系统进行图像处理,则可以提高神经网络系统进行图像识别的准确性或者精确性。

可选地,在划分卷积核组时,可以将权重分布相近的多个卷积核划分在一组中。可选的,权重分布可以由卷积核中的权重值的最大值,最小值,平均值或方差所定义。如果两个卷积核权重值的最大值,最小值,平均值或方差相近,则可认为两个卷积核权重分布相近。在实际应用中,可以采用聚类的方法,将权重分布相近的卷积核聚成不同的卷积核组。

例如,上述划分卷积核组的原则可以包括下述划分方式中的至少一种:同一卷积核组中的任意两个卷积核中的权重值的最大值的差值小于第一预设值;或者同一卷积核组中的任意两个卷积核中的权重值的最小值的差值小于第二预设值;或者同一卷积核组中的任意两个卷积核中的权重值的平均值的差值小于第三预设值;或者同一卷积核组中的任意两个卷积核中的权重值的方差的差值小于第四预设值。其中,上述第一预设值-第四预设值的大小可根据实践设置,本申请实施例对此不作限定。

在本申请实施例中,通过将权重分布相近的卷积核划分在同一卷积核组中,采用相同的量化方式进行量化,从而能够尽可能的利用权重空间的长度,提高权重表达能力,降低量化过程中的精度损失,以提高量化后的数据精度。

可选地,在发明实施例中,在获取第一目标权重值集合之后,可以对第一目标权重值集合进行迭代训练,以获取符合预设条件的最终的目标权重值集合。具体地,可以对第一目标权重值集合进行前向推理计算,并根据前向推理计算的结果,确定第一目标权重值集合的权重值是否满足预设条件。若第一目标权重值集合的权重值满足预设条件,则确定所述第一目标权重值集合为最终的目标权重值集合。若第一目标权重值集合不满足预设条件,则调整第一初始权重值集合中的权重值,得到所述第一卷积核组的第二初始权重值集合。并根据所述第二初始权重值集合中的权重值的范围,确定第二量化方式。根据所述第二量化方式对所述第二初始权重值集合中的权重值进行量化,得到所述第一卷积核组的第二目标权重值集合。

类似地,在迭代训练中,在获取第二目标权重值集合之后,可以继续判断第二目标权重集合的权重值是否符合预设条件,若不符合预设条件,则继续调整第二目标权重值集合的权重值,如此循环,直至获取到符合预设条件的目标权重值集合。

可选地,第二量化方式的定义与第一量化方式类似,为了简洁,此处不再赘述。

在本申请实施例中,通过对获取的第一目标权重集合进行迭代训练,并在训练过程中不断调整第一卷积核组的初始权重值集合的权重值以及量化方式,从而尽可能降低神经网络量化后的精度损失。

可选地,上述对第一目标权重值集合中的权重值进行前向推理计算,可以包括:在神经网络系统中将第一目标权重值集合中的权重值进行计算。例如,可以将权重值加载在以下任意一种处理器件中进行计算:GPU、FPGA、ReRAM芯片,或者也可以将第一目标权重值集合中的权重值加载在其他类型的神经网络芯片中进行计算。

可选地,上述确定第一目标权重值集合的权重值是否满足预设条件,可以包括:判断对第一目标权重值集合进行前向推理计算的输出值与真实值的误差是否收敛。若该误差收敛,则确定第一目标权重集合的权重值满足预设条件,若该误差不收敛,则确定第一目标权重集合的权重值不满足预设条件。其中,本申请对判断误差收敛的方式不作限定。在实际应用中,误差收敛的判断依据是前向推理计算后的输出值与真实值的误差小于某个特定阈值,或误差在多次迭代中几乎没有变化。在一个示例中,可以根据该误差是否大于第一预设阈值判断误差是否收敛。例如,若该误差小于第一预设阈值,则确定第一目标权重集合的权重值满足预设条件。若该误差大于第一预设阈值,则确定第一目标权重值集合的权重值不满足预设条件。第一预设阈值的大小可以根据实际应用确定,本申请实施例对此不作限定。可选地,上述误差也可以称为损失值。

可选地,所述调整所述第一初始权重值集合,得到所述第一卷积核组的第二初始权重值集合,包括:计算所述第一初始权重值集合中的权重值的梯度;根据所述第一初始权重值集合中的权重值的梯度,调整所述第一初始权重值集合,得到所述第二初始权重值集合。其中,前向推理计算后的输出值与真实值的误差沿着梯度的方向变化最快,变化率最大。

可选地,可以利用反向传播方法计算第一初始权重集合中的各个权重值的梯度,反向传播算法分为前向和反向两个过程,前向过程计算神经网络的输出值与真实值的误差,反向传播过程则根据误差值计算每个权重对应的梯度。在一些示例中,如果前向推理计算在GPU中进行,那么每个权重值的梯度通过第一目标权重值集合和GPU中每一层卷积核输出的特征图(feature map)计算得到。如果前向推理计算在ReRAM芯片中进行,那么权重值的梯度通过写入到ReRAM芯片的实际电导值和ReRAM芯片的输出值计算得到。

在迭代训练过程中,除了调整第一初始权重值集合之外和量化方式之外,也可以调整目标权重值集合。例如,根据对所述第一目标权重值集合的权重值进行前向推理计算的结果,确定所述第一目标权重值集合的权重值不满足预设条件;调整所述第一目标权重值集合的权重值,得到所述第一卷积核组的第二目标权重值集合。类似地,可以对第二目标权重值集合的权重值进行前向推理计算,若第二目标权重值集合的前向推理计算结果不符合预设条件,则可以继续调整第二目标权重值集合,直至获得符合预设条件的目标权重值集合。

可选地,不同卷积核组的量化方式可以不同,例如,假设第二卷积组是所述多个卷积核组中与第一卷积组不同的另一个卷积组,则可以根据第二卷积核组的初始权重值集合的范围,确定所述第二卷积核组的第三量化方式,所述第三量化方式与所述第一量化方式不同;根据所述第三量化方式,对所述第二卷积核组的初始权重值集合进行量化,以获得所述第二卷积核组的目标权重值集合。可选地,在获取第二卷积核组的目标权重值集合后,也可以判断该目标权重集合是否符合预设条件。若不符合预设条件,对第二卷积核组的目标权重值集合进行迭代训练,以获取符合预设条件的目标权重值集合,其迭代训练过程与第一卷积核组相同或相似,此处不再赘述。

图6是本申请又一实施例的对神经网络系统中的数据处理方法的示意图。图6的例子以处理装置310为GPU、计算装置320为ReRAM芯片为例进行阐述。如图6所示,该方法包括以下步骤。

S601、GPU对每个卷积核组选择量化方式,并对每个卷积核组的初始权重值集合进行量化,以得到目标权重值集合。

其中,上述关于对初始权重值集合的量化方式的选择和进行量化的具体方式,可以参见图5中的S501和S502的相关内容,为了简洁,此处不再赘述。

S602、GPU将目标权重值集合加载至ReRAM芯片。

例如,GPU将目标权重值集合写入ReRAM芯片,作为ReRAM芯片中的权重值,也即ReRAM芯片的电导值G。

S603、ReRAM芯片对目标权重值集合进行前向推理计算,并获取前向推理计算的输出值。

S604、ReRAM芯片判断前向推理计算的输出值与真实值之间的误差是否收敛。

若确定上述误差收敛,则迭代训练过程结束。若上述误差不收敛,则执行S605部分。

S605、若误差不收敛,则ReRAM芯片将前向推理计算的输入值和输出值输出到GPU。

具体地,可以将ReRAM芯片的电导值G以及每个交叉阵列的输出值输出到GPU中。例如,可以测量ReRAM芯片中每个ReRAM器件写入的实际电导值,并将实际电导值和每个crossbar的输出值一并输出到GPU中。

S606、GPU对初始权重值集合中的权重值进行调整,然后继续进行迭代训练。

例如,GPU可以通过反向传播方法对GPU中的初始权重值集合中的权重值进行更新。

在本申请实施例中,由于前向推理计算在ReRAM芯片中进行,因此能够充分考虑到ReRAM芯片中存在的噪声问题,例如ReRAM电导值写不准的问题、模数转化器(analog todigital converter,ADC)和数模转换器(digital to analog converter,DAC)的噪声等,从而能够尽可能的保证后续在ReRAM芯片进行神经网络系统的前向推理计算的精度。

图7是本申请又一实施例的对神经网络系统中的数据处理方法的示意图。图7的例子以处理装置310为GPU,计算装置320为GPU或FPGA为例进行阐述。如图7所示,该方法包括以下步骤。

S701、GPU对每个卷积核组选择量化方式,并对每个卷积核组的初始权重值集合进行量化,以得到目标权重值集合。

其中,上述关于对初始权重值集合的量化方式的选择和进行量化的具体方式,可以参见图5中的S501和S502的相关内容,为了简洁,此处不再赘述。

S702、GPU对目标权重值集合进行前向推理计算,并获取前向推理计算的输出值。

S703、GPU判断前向推理计算的输出值与真实值之间的误差是否收敛。

若确定上述误差收敛,则执行S704部分。若上述误差不收敛,则执行S705部分。

S704、若误差收敛,则将目标权重值集合加载至部署至计算装置320中。

可选地,计算装置320可以为GPU或者FPGA。在一个示例中,处理装置310和计算装置320可以为同一个GPU,也可以为不同的GPU。

S705、若误差不收敛,则GPU对初始权重值集合中的权重值进行调整,然后继续进行迭代训练。

例如,GPU可以通过反向传播方法对GPU中的初始权重值集合进行更新。

在本申请实施例中,处理装置310为GPU,计算装置320为GPU或FPGA,由于不存在ReRAM芯片中的噪声问题,因此迭代训练的前向推理计算可以在处理装置310中进行,待目标权重值集合的前向推理计算的输出值与真实值收敛时,然后将目标权重值集合部署到计算装置320中即可。

图8是本申请又一实施例的对神经网络系统中的数据处理方法的示意图。如图8所示,该方法包括如下步骤。

S801、分析神经网络系统中的各个卷积组的初始权重值集合的权重分布。

例如,可以获取神经网络系统的各个卷积层中每个卷积核(或每组卷积核)的初始权重重值,并分析每个卷积核(或每组卷积核)的权重值的分布。在实际应用中,分析权重分布一般可采用统计每个卷积核(或每组卷积核)的权重绝对值的最大值,或者对权重值进行高斯分布建模,并统计两倍标准差的范围。

S802、根据目标量化位宽以及各个卷积组的权重分布,确定各个卷积组的量化方式。

例如,可以根据当前迭代中每个卷积核(或每组卷积核)的权重分布,以及目标量化位宽,选择在当前迭代中每个卷积核(或每组卷积核)特定的量化步长,从而将每个卷积核权重分布范围进行均匀或非均匀的划分。

S803、根据量化方式,量化各卷积核组的初始权重值集合,得到目标权重值集合。

例如,可以根据S802确定的量化步长,将初始权重值集合进行低位宽量化。

S804、判断迭代训练好的目标权重值集合是否在ReRAM芯片上进行前向推理计算。

若在ReRAM芯片上进行前向推理计算,则执行S806部分。若不在ReRAM芯片上进行前向推理计算,则执行S806部分。

S805、如果迭代训练好的目标权重值集合后续不在ReRAM芯片中进行前向推理计算,而是在GPU或FPGA等数字芯片中进行计算,则使用当前量化后的目标权重集合在GPU中进行前向推理计算。

在本申请中,若训练好的神经网络系统在GPU或FPGA等数字芯片中进行计算,则不需要考虑ReRAM芯片的噪声问题,因此迭代训练过程中,当前量化后的目标权重集合只需在GPU中进行前向推理计算,在迭代训练完成之后,再将训练好的目标权重集合部署在GPU或FPGA中即可。

S806、如果训练好的权重在ReRAM芯片中进行推理计算,则将量化后的目标权重值集合写入为ReRAM芯片中的ReRAM器件的电导值G。

需要说明的是,由于ReRAM的电导值G写入可能存在误差,实际写入到ReRAM器件中的电导值G可能并不完全等于量化后的目标权重值集合对应的电导值G。

在本申请中,若训练好的神经网络系统需要在ReRAM芯片执行前向推理计算,则需要考虑ReRAM芯片的噪声问题,因此迭代训练过程中,需要在ReRAM芯片上执行前向推理计算。

S807、在ReRAM芯片中进行前向推理计算。

例如,可以基于当前写入的实际电导值,在ReRAM芯片中进行前向推理计算。

S808、判断前向推理计算的输出值和实际值之间的误差是否收敛。

如果误差收敛,则停止迭代训练过程。如果误差未收敛,则继续执行下面的步骤。

S809、若误差不收敛,则ReRAM芯片将前向推理计算的输入值和输出值输出到GPU。

例如,可以测量ReRAM芯片中每个ReRAM器件写入的实际电导值,并将实际电导值和每个crossbar的输出值一并输出到GPU中。

S810、GPU计算初始权重值集合中的各个权重值的梯度。

例如,在GPU中,可以通过反向传播方法计算每个权重值的梯度。

S811、根据初始权重值集合中的各个权重值的梯度,更新初始权重值集合中的权重值。

可选地,可以根据更新后的初始权重值集合,继续进行迭代训练,直至迭代训练过程结束。

本申请实施例的对神经网络系统中的数据处理方法可以应用于多种场景。例如,以自动驾驶为例,在自动驾驶中,如何快速、精度地识别出行人、车辆以及其他物体,并且能够精确的对这些物体定位是实现安全、稳定的自动驾驶的前提和基础。而为达到这一目标,精确的目标检测算法是关键。目前常用的目标检测算法是基于CNN的Resnet18-SSD模型。

下面以Resnet18-SSD模型为例,继续描述本申请实施例的对神经网络系统中的数据处理方法。假设每个卷积核组包括一个卷积核,初始权重值集合为下文中的浮点权重,目标权重值结合为下文中的低位宽权重。目标量化位宽的大小为k,k为大于或等于1的整数。令Resnet18-SSD中的卷积核的浮点权重为

S1、首先确定该卷积核的浮点权重

假定采用均匀量化的方式,即设置特定的最优量化步长对[-W

S3、基于量化步长,将神经网络的浮点权重进行低位宽量化.

具体的方式可以是基于步骤S702量化步长划分的权重子区间,在权重子区间范围内的权重值均被量化为同一个值。量化的值可以是权重子区间的中间值,从而将

S4、利用低位宽的权重

如果误差收敛,即误差小于某个特定阈值,或误差在多次迭代中几乎没有变化,则迭代训练停止,获得最终的量化权重

S5、基于量化的低位宽权重

例如,在本申请实施例中,

图9是本申请实施例的神经网络系统900的结构示意图。该神经网络系统900能够执行上述由神经网络系统执行的方法和步骤。如图9所示,该神经网络系统900包括:确定模块910,用于根据目标量化位宽以及第一初始权重值集合中的权重值的范围,确定第一量化方式,其中,所述第一初始权重值集合包括神经网络系统中的多个卷积核组中的第一卷积核组的初始权重值,所述第一卷积核组包括一个或多个卷积核,所述第一卷积核组包括不同卷积层中的多个卷积核,或包括同一卷积层中的部分卷积核;

量化模块920,用于根据所述第一量化方式,对所述第一初始权重值集合中的权重值进行量化,以获得所述第一卷积核组的第一目标权重值集合;

计算模块930,用于基于所述第一目标权重值集合中的权重值对输入所述神经网络系统的数据进行计算。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号