CN113326930A - 数据处理方法、神经网络的训练方法及相关装置、设备 - Google Patents
数据处理方法、神经网络的训练方法及相关装置、设备 Download PDFInfo
- Publication number
- CN113326930A CN113326930A CN202010134455.8A CN202010134455A CN113326930A CN 113326930 A CN113326930 A CN 113326930A CN 202010134455 A CN202010134455 A CN 202010134455A CN 113326930 A CN113326930 A CN 113326930A
- Authority
- CN
- China
- Prior art keywords
- neural network
- training
- layer
- convolution
- convolution kernels
- 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.)
- Granted
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 375
- 238000012549 training Methods 0.000 title claims abstract description 261
- 238000000034 method Methods 0.000 title claims abstract description 134
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000007667 floating Methods 0.000 claims abstract description 54
- 238000012545 processing Methods 0.000 claims description 87
- 239000011159 matrix material Substances 0.000 claims description 77
- 239000013598 vector Substances 0.000 claims description 62
- 230000015654 memory Effects 0.000 claims description 58
- 238000012360 testing method Methods 0.000 claims description 36
- 238000013139 quantization Methods 0.000 claims description 34
- 238000013473 artificial intelligence Methods 0.000 claims description 20
- 230000008859 change Effects 0.000 claims description 19
- 230000017105 transposition Effects 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 abstract description 22
- 238000013527 convolutional neural network Methods 0.000 description 64
- 230000006870 function Effects 0.000 description 46
- 230000008569 process Effects 0.000 description 46
- 238000011176 pooling Methods 0.000 description 37
- 238000003062 neural network model Methods 0.000 description 25
- 238000010586 diagram Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 17
- 230000004913 activation Effects 0.000 description 15
- 238000004590 computer program Methods 0.000 description 15
- 210000002569 neuron Anatomy 0.000 description 13
- 230000001537 neural effect Effects 0.000 description 12
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000002829 reductive effect Effects 0.000 description 8
- 238000012795 verification Methods 0.000 description 7
- 238000013500 data storage Methods 0.000 description 6
- 238000013135 deep learning Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 101100153591 Cricetulus griseus TOP1 gene Proteins 0.000 description 4
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 4
- 239000000872 buffer Substances 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000002790 cross-validation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 2
- 238000013136 deep learning model Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 206010063385 Intellectualisation Diseases 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002238 attenuated effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007477 logistic regression Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Abstract
本申请提供了一种数据处理方法、神经网络的训练方法及相关装置、设备,方法应用于训练设备,方法包括:将神经网络的模型参数设置为浮点数进行训练,直到训练设备训练第一神经网络达到收敛状态;确定训练后的第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,卷积核对应的相关度越大,训练设备在进行计算时产生的冗余计算越多;将M个卷积核进行量化训练,直至训练设备训练第一神经网络达到收敛状态,得到量化后的第二神经网络;其中,其中,M为大于0的正整数;M个卷积核为相关度较高的前M个卷积核。实施本申请,可以在提高神经网络的运算效率的同时,尽可能地保持神经网络的运算精度。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种数据处理方法、神经网络的训练方法及相关装置、设备。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式作出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人,自然语言处理,计算机视觉,决策与推理,人机交互,推荐与搜索,AI基础理论等。
神经网络(Neural Network,NN)作为人工智能的重要分支,是一种模仿动物神经网络行为特征进行信息处理的网络结构。神经网络的结构由大量的节点(或称神经元)相互联接构成,基于特定运算模型通过对输入信息进行学习和训练达到处理信息的目的。一个神经网络包括输入层、隐藏层及输出层,输入层负责接收输入信号,输出层负责输出神经网络的计算结果,隐藏层负责学习、训练等计算过程,是网络的记忆单元,隐藏层的记忆功能由权重矩阵来表征,通常每个神经元对应一个权重系数。
现有技术中,神经网络(neural network,NN)、深度神经网络(deep neuralnetworks,DNN)等机器学习模型已经被应用于各种领域中,例如,图片分类、物体检测、语音识别等,并取得了良好的效果。随着神经网络模型的不断加深和加宽,神经网络模型的性能不断提升,但是神经网络模型过拟合的问题也日益突出。具体来说,神经网络模型过拟合的问题可以体现在:神经网络模型通过训练数据集可以获取比较好的模型精度,而在一个新的数据集下(例如,新的数据集为测试数据集),获取得到的神经网络的模型精度往往比较差,这意味着神经网络模型的泛化能力弱。
目前,可以通过对神经网络的模型参数(例如,权值)进行量化训练来有效解决神经网络模型过拟合的问题。具体来说,对神经网络的模型参数进行量化训练是指,将神经网络的模型参数由浮点数设置为整型数的训练过程。以卷积神经网络为例,由于卷积核可以看作一个权值矩阵,在对该卷积网络进行量化训练时,一般将卷积神经网络包含的所有卷积核中的权值均设置为整型数,这一实现方式可以提高卷积神经网络的运算效率,然而,该卷积神经网络的模型精度低。因此,如何在提高神经网络的运算效率的同时,尽可能地保持神经网络的运算精度是急需解决的技术问题。
发明内容
本申请提供了一种数据处理方法、神经网络的训练方法及相关装置、设备,由于量化后的神经网络保留了卷积核的绝大多数信息,可以在提高神经网络的运算效率的同时,尽可能地保持神经网络的运算精度。
第一方面,提供了一种神经网络的训练方法,所述方法应用于训练设备,所述方法包括:将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态;确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多;将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络;其中,M为大于0的正整数;所述M个卷积核为相关度较高的前M个卷积核。
实施本申请实施例,将第一神经网络的模型参数设置为浮点数进行训练,当训练设备训练第一神经网络达到收敛状态时,确定训练后的第一神经网络中每一个卷积层包含的各个卷积核之间的相关度,之后,将相关度较高的前M个卷积核进行量化训练,而其他的卷积核仍然保持浮点数,由于这一实现方式保留了卷积核的绝大多数信息,即:采用低比特量化的方式,而非采用去除整个卷积核或将卷积核中的多数权值设置为0,可以提高神经网络模型的泛化能力。
在一种可能的实现方式中,所述量化后的第二神经网络包括量化后的模型参数;所述方法还包括:通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。实施本申请实施例,考虑到量化后的第二神经网络的性能小于设定好的条件(例如,第二神经网络的模型精度过低),此时,通过迭代训练的方式对第一神经网络进行训练,直至得到最终量化后的第二神经网络。由于神经网络在训练阶段经历了多次将部分模型参数设置为整型数而后又将模型参数设置为浮点数进行训练的过程,使得训练好的第二神经网络的模型精度不发生变化,当通过测试数据集进行测试时,可以避免测试精度低的情形,从而可以提高神经网络模型的泛化能力。
在一种可能的实现方式中,所述第l卷积层包括第l权值张量和所述第l卷积层对应的输出通道数;所述确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度,包括:根据所述第l权值张量、所述第l权值张量的转置以及所述第l卷积层的输出通道数确定第l协方差矩阵;根据所述第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量;其中,所述目标向量用于表征所述各个卷积核各自对应的相关度。
在一种可能的实现方式中,所述将M个卷积核进行量化训练,包括:将所述M个卷积核按照设置的目标运算属性的值进行量化训练。
在一种可能的实现方式中,所述将所述M个卷积核按照设置的目标运算属性的值进行量化训练之前,还包括:设置所述M个卷积核的运算属性的值,通过训练数据集对所述M个卷积核,按照设置的运算属性的值进行训练,得到所述第一神经网络在不同的运算属性的值下的模型参数;根据所述第一神经网络在不同的运算属性的值下的模型参数确定测试精度大于第二阈值的至少一种运算属性的值作为所述目标运算属性的值。实施本申请实施例,由于第一神经网络在目标运算属性的值下的模型参数可以保证测试精度大于设定好的阈值,可以提高神经网络的泛化能力。
在一种可能的实现方式中,所述M为小于等于10的正整数。实施本申请实施例,由于第一神经网络中的大部分卷积核仍然保持浮点数,小部分卷积核为整形数据,这一实现方式可以在提高神经网络的运算效率的同时,尽可能地保持神经网络的运算精度。
第二方面,本申请实施例提供了一种数据处理方法,该方法包括:接收输入数据;将所述输入数据输入到训练好的第二神经网络,通过所述第二神经网络对所述输入数据进行处理,得到处理结果;其中,所述训练好的第二神经网络为通过上述第一方面任一项所述的神经网络的训练方法得到的;输出所述处理结果。实施本申请实施例,由于训练好的第二神经网络的泛化能力强,当通过训练好的第二神经网络对输入数据进行处理时,可以提高输入数据的处理精度。例如,当输入数据为图像时,可以提高图像的识别精度;又例如,当输入数据为语音时,可以提高语音的识别精度。
第三方面,本申请实施例提供了一种神经网络的训练装置,该装置可以包括:第一训练单元,用于将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态;第一确定单元,用于确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多;第二训练单元,用于将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络;其中,其中,M为大于0的正整数;所述M个卷积核为相关度较高的前M个卷积核。
实施本申请实施例,将第一神经网络的模型参数设置为浮点数进行训练,当训练设备训练第一神经网络达到收敛状态时,确定训练后的第一神经网络中每一个卷积层包含的各个卷积核之间的相关度,之后,将相关度较高的前M个卷积核进行量化训练,而其他的卷积核仍然保持浮点数,由于这一实现方式保留了卷积核的绝大多数信息,即:采用低比特量化的方式,而非采用去除整个卷积核或将卷积核中的多数权值设置为0,可以提高神经网络模型的泛化能力。
在一种可能的实现方式中,所述量化后的第二神经网络包括量化后模型参数;所述装置还包括:迭代训练单元,用于通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。
在一种可能的实现方式中,所述第l卷积层包括第l权值张量和所述第l卷积层对应的输出通道数;所述第一确定单元,具体用于:根据所述第l权值张量、所述第l权值张量的转置以及所述第l卷积层的输出通道数确定第l协方差矩阵;根据所述第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量;其中,所述目标向量用于表征所述各个卷积核各自对应的相关度。
在一种可能的实现方式中,所述第二训练单元,具体用于:将所述M个卷积核按照设置的目标运算属性的值进行量化训练。
在一种可能的实现方式中,所述训练装置还包括处理单元;所述处理单元,用于:设置所述M个卷积核的运算属性的值,通过训练数据集对所述M个卷积核,按照设置的运算属性的值进行训练,得到所述第一神经网络在不同的运算属性的值下的模型参数;根据所述第一神经网络在不同的运算属性的值下的模型参数确定测试精度大于第二阈值的至少一种运算属性的值作为所述目标运算属性的值。
在一种可能的实现方式中,所述M为小于等于10的正整数。
第四方面,本申请实施例提供了一种数据处理装置,该装置可以包括:接收单元,用于接收输入数据;处理单元,用于将所述输入数据输入到训练好的第二神经网络,通过所述第二神经网络对所述输入数据进行处理,得到处理结果;其中,所述训练好的第二神经网络为通过上述第一方面任一项所述的神经网络的训练方法得到的;输出单元,用于输出所述处理结果。
实施本申请实施例,由于训练好的第二神经网络的泛化能力强,当通过训练好的第二神经网络对输入数据进行处理时,可以提高输入数据的处理精度。例如,当输入数据为图像时,可以提高图像的识别精度;又例如,当输入数据为语音时,可以提高语音的识别精度。
第五方面,本申请实施例提供一种神经网络的训练装置,该装置可以包括存储器和处理器,所述存储器用于存储支持所述训练装置执行上述第一方面方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第一方面的方法。
第六方面,本申请实施例提供一种终端,该终端包括存储器和处理器,所述存储器用于存储支持终端执行上述第二方面方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行上述第二方面的方法。
第七方面,本申请实施例提供了一种人工智能处理器,该人工智能处理器包括运算电路和耦合于所述运算电路的至少一个累加器,所述人工智能处理器用于执行上述第一方面的方法。
第八方面,本申请实施例还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第一方面的方法。
第九方面,本申请实施例还提供一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述第二方面的方法。
第十方面,本申请实施例还提供了一种计算机程序,所述计算机程序包括计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机执行如第一方面所述的任一种神经网络的训练方法。
第十一方面,本申请实施例还提供了一种计算机程序,所述计算机程序包括计算机软件指令,所述计算机软件指令当被计算机执行时使所述计算机执行如第二方面所述的任一种数据处理方法。
附图说明
图1a为本申请实施例提供的一种卷积神经网络具体的实施场景;
图1b为本申请实施例提供的另一种卷积神经网络具体的实施场景;
图2a为本申请实施例提供的一种系统架构200的结构示意图;
图2b为本申请实施例提供的一种卷积神经网络200的结构示意图;
图2c为本申请实施例提供的另一种卷积神经网络200的结构示意图;
图2d为本申请实施例提供的一种卷积神经网络200的立体结构示意图;
图3为本申请实施例提供的一种芯片硬件结构的示意图;
图4a为本申请实施例提供的一种神经网络的训练方法的路程示意图;
图4b为本申请实施例提供的一种卷积核的表现形态的示意图;
图4c为本申请实施例提供的一种对权值张量N×C×H×W进行量化的示意图;
图5为本申请实施例提供的另一种神经网络的训练方法的流程示意图;
图6a为本申请实施例提供的一种数据处理方法的流程示意图;
图6b为本申请实施例提供的一种神经网络进行图像分类的示意图;
图7为本申请实施例提供的一种神经网络的训练装置的示意性框图;
图8为本申请实施例提供的一种数据处理装置80(终端)的示意性框图;
图9为本申请实施例提供的一种训练设备220的结构示意图;
图10为本申请实施例提供的一种终端的结构示意图。
具体实施方式
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
本申请的说明书以及附图中的术语“第一”和“第二”等是用于区分不同的对象,或者用于区别对同一对象的不同处理,而不是用于描述对象的特定顺序。此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一些列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。需要说明的是,本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方法不应被解释为比其他实施例或设计方案更优地或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。在本申请实施例中,“A和/或B”表示A和B,A或B两个含义。“A,和/或B,和/或C”表示A、B、C中的任一个,或者,表示A、B、C中的任两个,或者,表示A和B和C。
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例提供了一种神经网络训练方法,该训练方法应用于特定任务/预测模型(以下简称为任务模型)的训练。具体地,可以用于训练基于深度神经网络构建的各种任务模型,可以包括但不限于分类模型、识别模型、分割模型、检测模型。通过本申请所描述的训练方法得到的任务模型(例如,量化后的第二神经网络)可广泛应用到图像识别、音频识别等多种具体应用场景,以实现应用场景的智能化。
第一应用场景:
以图像识别应用场景为例,在一种具体的实施场景,如图1a所示,一轿车103在道路上高速行驶,一路人101使用数码相机102拍下了该轿车103的车牌号,但是由于轿车103具有较高的车速v,数码相机的输入信号104发生了运动模糊现象,该输入信号为二维数字图像信号,该数码相机102中配备有神经网络100,具体来说,该神经网络为根据本申请描述的技术方案训练好的神经网络,例如,第二神经网络。具体地,当验证数据集数据的精度不发生变化时,表示已经完成了对神经网络的训练阶段,可以进入神经网络的应用阶段。在实际应用中,该神经网络可以是以专用电路的形式在芯片中实现,也可以是运行在图像信号处理器中的软件模块。输入信号104在数码相机102中的神经网络中经过处理后,该处理包括轿车运动模型估计、运动模糊去除等,得到输出信号105,输出信号中包含的车牌号信息清晰度得以提高,可得到准确辨识。
第二应用场景:
以音频识别为例,在一种具体的实施场景,如图1b所示,智能手机102和104已内置神经网络相关的处理器,这里,该神经网络为根据本申请描述的技术方案训练好的神经网络,例如,第二神经网络。具体地,当验证数据集数据的精度不发生变化时,表示已经完成了对神经网络的训练阶段,可以进入神经网络的应用阶段。例如,移动智能手机客户101向移动智能手机客户105发起语音呼叫,语音信号经智能手机102发出,经基站103转送给智能手机104,由于发起语音呼叫时暴雨骤起且伴有强烈的电闪雷鸣,导致输入信号106被严重削弱且含有较大的噪声。这里,该输入信号可以为一维数字语音信号。由于智能手机104中配备有神经网络,具体地,该神经网络可以是以专用电路的形式在芯片中实现,也可以是运行在中央处理单元(Central Processing Unit,CPU)或其他处理器中的程序指令。输入信号106在智能手机104中的神经网络中经过处理,该处理包括噪声去除以及有效信号增强等,得到输出信号107,该输出信号完整的保留了主叫用户传送的语音信息,避免了恶劣自然环境对信号的干扰。
下面从模型训练侧和模型应用侧对本申请提供的方法进行描述:
本申请实施例提供的神经网络模型训练方法,涉及计算机视觉的处理或自然语言的处理,具体可以应用于数据训练、机器学习、深度学习等数据处理方法,对训练数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等,最终得到训练好的神经网络模型(也即:目标模型/规则);并且,本申请实施例提供的数据处理方法可以运用上述训练好的神经网络模型,将输入数据(如本申请中的图片,语音片段)输入到所述训练好的神经网络模型中,得到输出数据(如,图片的识别结果)。需要说明的是,本申请实施例提供的神经网络的训练方法和数据处理方法是基于同一个构思产生的发明,也可以理解为一个系统中的两个部分,或一个整体流程的两个阶段:模型训练阶段和模型应用阶段。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。
(1)图像/视频识别
本申请实施例中,图像/视频识别是利用图像处理和机器学习、计算机图形学等相关方法,根据图像识别图像所属的分类或者图像的属性等。例如,第一场景中,识别车牌所属的分类。
(2)文本识别
本申请实施例中,文本识别也成为自然语言识别,是利用语言学、计算机科学、人工智能等相关方法,根据文本识别文本所表达的意图、情感或者其他属性等。例如,第二场景中,识别文本所表达的意图。
(3)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距b为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(4)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准。从DNN按不同层的位置划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:,其中,是输入向量,是输出向量,b是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量。由于DNN层数多,则系数w和偏移向量b的数量也就很多了。这些参数在DNN中的定义如下所述:以系数w为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为。上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。总结就是:第L-1层的第k个神经元到第L层的第j个神经元的系数定义为。需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。
(5)卷积神经网络
卷积神经网络(CNN,convolutional neuron network)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的数据(如图像数据,以图像数据为例描述)或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(6)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
例如,在本申请实施例中,目标模型/规则为训练好的神经网络,例如,训练好的神经网络为第二神经网络,目标模型/规则可以实现对输入数据的处理,例如,当输入数据为图像时,可以准确识别图像;又例如,当输入图像为文本时,可以准确识别文本。因此,通过比较目标模型/规则对输入数据的判定结果与和真正想要的真实结果,再根据两者之间的差异情况来更新初始模型中每一层神经网络的权重向量(当然,在第一次更新之前通常会有过程,即为初始模型中的各层预先配置参数),比如,如果目标模型/规则的判定结果的值高了,就调整权重向量让它的值低一些,不断的调整,直到目标模型/规则能够预测出与真实结果非常接近的值。因此,就需要预先定义“如何比较判定结果和真实结果之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量判定结果和真实结果的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么初始模型的训练就变成了尽可能缩小这个loss的过程。
(7)反向传播算法
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始模型中参数的大小,使得初始模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的目标模型的参数,例如权重矩阵。
(8)像素值
图像的像素值可以是一个红绿蓝(RGB)颜色值,像素值可以是表示颜色的长整数。例如,像素值为256*Red+100*Green+76Blue,其中,Blue代表蓝色分量,Green代表绿色分量,Red代表红色分量。各个颜色分量中,数值越小,亮度越低,数值越大,亮度越高。对于灰度图像来说,像素值可以是灰度值。
(9)训练数据集、验证数据集和测试数据集
在深度神经网络的模型训练中,常常将原始数据集分为3部分:训练数据集(training data)、验证数据集(validation data)和测试数据集(testing data)。这三个数据集分别有各自的功能,其中训练数据集,用于深度神经学习模型的训练;验证数据集,用于确定深度学习模型的网络结构或者控制模型复杂程度的参数,测试数据集是用于评估训练好的深度学习模型的好坏和精确度。
下面以一个具体的实例阐述训练数据集、验证数据集和测试数据集各自的功能,以反向传播BP(Back Propagation)神经网络为例,在初始状态下,将隐含层节点数设定为某一具体的值,通过训练数据集训练出相应的模型参数,之后,通过交叉验证数据集来检测BP神经网络模型的误差;然后,改变隐含层节点数,重复上述过程,直到交叉验证误差最小时,可以得到训练好的BP神经网络模型。在训练好的BP神经网络模型中,此时的隐含层节点数可以认为是最优节点数,即:该节点数(BP神经网络模型的参数)是通过交叉验证数据集得到的。之后,将测试数据集输入训练好的BP神经网络模型,可以得到运算结果,例如,该运算结果可以包括分类、聚类、预测等。
(10)张量(tensor)
具体来说,张量是对存储的一块数据的特征描述,张量记录了数据的形状、类型等信息。
本申请实施例中,张量应该理解为张量数据,可以包括神经网络模型中输入张量、输出张量,也可以包括特征张量、权值张量等。
以人工智能深度学习框架TensorFlow为例,一般使用阶(rank),形状(shape)和维数(dimension number)来描述张量的维度,其关系可以表示为表1所示:
表1
阶 | 形状 | 维数 | 例子 |
0 | [] | 0-D | 4 |
1 | [D1] | 1-D | [2] |
2 | [D1,D2] | 2-D | [6,2] |
3 | [D1,D2,D3] | 3-D | [7,3,2] |
n | [D1,D2,D3,...,Dn] | n-D | 形为[D1,D2,D3,...,Dn]的张量 |
如表1所示,张量A=4,其表示一个数。
如表1所示,张量A=[6,2],其表示二维矩阵,具体地,该矩阵为6行2列的矩阵。
(11)量化
在本申请实施例中,量化是将一组原始值域范围内的数,通过一个数学变换将原始值域映射到另一个目标值域范围的过程。可采用的方法如查表、移位、截位等。其中,往往采用线性变换,通常使用乘法完成这个变换。
在本申请实施例中,量化训练是指,将神经网络的模型参数由浮点数转换为整型数的训练过程。
下面介绍本申请实施例提供的系统架构。
参见附图2a,本申请实施例提供了一种系统架构200。如所述系统架构200所示,数据采集设备260用于采集或生成训练数据,本申请实施例中训练数据可以为:带标签的多张图像或多个语音片段等;并将训练数据存入数据库230,训练设备220基于数据库130中维护的训练数据生成目标模型/规则201。在本申请实施例中,训练过程可包括:训练设备220将训练数据集输入第一神经网络中,以进行全精度训练。这里,第一神经网络为待量化的神经网络,也即:在没有对第一神经网络的模型参数进行量化之前,第一神经网络中的模型参数为浮点数。示例性地,该浮点数可以为单精度浮点数,也可以为双精度浮点数。当训练设备训练第一神经网络达到收敛状态,此时,可以确定训练好的第一神经网络每一个卷积层包含的各个卷积核之间的相关度。之后,将相关度较高的前M个卷积核进行量化训练,直至训练设备220训练第一神经网络达到收敛状态,从而可以得到量化后的第二神经网络。一般来说,卷积核可以看作一个权重(或权值)矩阵。
例如,1*1的卷积核可以表示为[2];3*3的卷积核可以表示为:具体来说,矩阵中每一个位置上的数值即为权值。在一些实现方式中,在这一训练的基础上,还可以通过验证数据集,对设置为浮点数的量化后的模型参数进行训练,在第二神经网络的模型精度的变化值大于第一阈值的情况下,更新量化后的模型参数,重复执行对设置为浮点数的量化后的模型参数进行训练的步骤,直至最终量化后的第二神经网络满足第二神经网络的模型精度的变化值小于或等于第一阈值。例如,当第一阈值为0时,表示:通过验证数据集,对设置为浮点数的量化后的模型参数进行训练之后,第二神经网络满足模型的精度不发生变化。在这一实现方式中,由于通过验证数据集可以实现对训练数据集确定的模型参数的优化,以获取最终的模型参数。当通过验证数据集获取的模型参数在投入使用时,可以保证神经网络的模型精度,从而可以提高神经网络模型的泛化能力。训练设备220基于训练数据集得到量化后的第二神经网络的详细描述可参见后续实施例中的相关描述,此处不对此展开。该量化后的第二神经网络能够用于实现本申请实施例提供的数据处理方法,即,输入数据输入到训练好的第二神经网络,通过第二神经网络对输入数据进行处理,得到处理结果。这里,输入数据可以图像、文本等。
在本申请提供的实施例中,该目标模型/规则201是通过训练深度神经网络得到的。需要说明的是,在实际的应用中,所述数据库230中维护的训练数据不一定都来自于数据采集设备260的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备220也不一定完全基于数据库230维护的训练数据进行目标模型/规则201的训练,也有可能从云端获取或者自己生成训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备220训练得到的目标模型/规则201可以应用于不同的系统或设备中,如应用于图2a所示的执行设备210,所述执行设备210可以是终端,如手机终端,平板电脑,笔记本电脑,AR/VR,车载终端等,还可以是服务器或者云端等。执行设备210可以执行本申请实施例中数据处理方法,例如,该数据处理方法可以包括图像处理方法、文本处理方法等。在附图2a中,执行设备210配置有I/O接口212,用于与外部设备进行数据交互,用户可以通过客户设备240向I/O接口212输入数据,所述输入数据在本申请实施例中可以包括:待识别的图像、视频或待识别的语音片段。
在执行设备210的计算模块211执行计算等相关的处理过程中,执行设备210可以调用数据存储系统270中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统270中。
最后,I/O接口212将处理结果,如图像、视频或语音的识别结果或分类结果返回给客户设备240,从而客户设备240可以提供给用户设备250。该用户设备250可以是需要使用目标模型/规则201的轻量级终端,如手机终端、笔记本电脑、AR/VR终端或车载终端等,以用于响应于终端用户的相应需求,如对终端用户输入的图像进行图像识别输出识别结果给该终端用户,或对终端用户输入的文本进行文本分类输出分类结果给该终端用户等。
值得说明的是,训练设备220可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则201,该相应的目标模型/规则201即可以用于完成上述任务,从而为用户提供所需的结果。
在附图2a中所示情况下,用户可以手动指定输入执行设备210中的数据,例如,在I/O接口212提供的界面中操作。另一种情况下,客户设备240可以自动地向I/O接口212输入数据并获得结果,如果客户设备240自动输入数据需要获得用户的授权,用户可以在客户设备240中设置相应权限。用户可以在客户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备240也可以作为数据采集端将采集到图片数据、视频数据或语音数据存入数据库230。
客户设备240在接收到输出结果后,可以将结果传输给用户设备250,用户设备250可以是终端,如手机终端,平板电脑,笔记本电脑,AR/VR,车载终端等。在其中一个示例中,用户设备250可以运行目标模型/规则201,以实现特定的功能。
值得注意的是,附图2a仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在附图2a中,数据存储系统270相对执行设备210是外部存储器,在其它情况下,也可以将数据存储系统270置于执行设备210中。
如图2a所示,根据训练设备220训练得到目标模型/规则201,该目标模型/规则201可以是第一场景中的图像识别模型、第二场景中的语音识别模型,具体的,本申请实施例提供的目标模型/规则201,例如,图像识别模型;又例如,语音识别模型等等,都可以是卷积神经网络模型。
如前文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
在一些可能的实现方式中,如图2b所示,卷积神经网络(CNN)300可以包括输入层310,卷积层/池化层320(其中池化层为可选的),以及神经网络层330。
卷积层/池化层320:
卷积层:
如图2b所示卷积层/池化层320可以包括如示例321-326层,举例来说:在一种实现中,321层为卷积层,322层为池化层,323层为卷积层,324层为池化层,325为卷积层,326为池化层;在另一种实现方式中,321、322为卷积层,323为池化层,324、325为卷积层,326为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
下面将以卷积层321为例,介绍一层卷积层的内部工作原理。
卷积层321可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素,这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络300进行正确的预测。
当卷积神经网络300有多个卷积层的时候,初始的卷积层(例如321)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络300深度的加深,越往后的卷积层(例如326)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图2b中320所示例的321-326各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。具体来说,池化层,用于对数据进行采样,降低数据的数量。例如,以数据为图像数据为例,在图像处理过程中,通过池化层,可以减少图像的空间大小。一般情况下,池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层330:
在经过卷积层/池化层320的处理后,卷积神经网络300还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层320只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络300需要利用神经网络层330来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层330中可以包括多层隐含层(如图2b所示的331、332至33n)以及输出层340,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
在神经网络层330中的多层隐含层之后,也就是整个卷积神经网络300的最后层为输出层340,该输出层340具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络300的前向传播(如图2b由310至340方向的传播为前向传播)完成,反向传播(如图2b由340至310方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络300的损失,及卷积神经网络300通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图2b所示的卷积神经网络300仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。例如,如图2c所示的多个卷积层/池化层并行,将分别提取的特征均输入给神经网络层330进行处理。
示例性地,如图2d所示,为本申请提供的一种具体的卷积神经网络300的结构示意图,该卷积神经网络(CNN)300可以包括输入层310,卷积层/池化层320(其中池化层为可选的)、全连接层350以及输出层340。这里,全连接层350是指图2c所示的隐含层1(331)本身保持有全连接特性的网络结构。在实际应用中,可以通过隐含层1的输入数据与隐含层1对应的权值张量的乘积来表示全连接特性,例如,该全连接特性可以量化为ωx,其中,ω表示隐含层1对应的权值张量,x表示隐含层1的输入数据。具体来说,卷积层320,用于提取输入数据的特征,例如,当输入数据为图像时,卷积层320用于提取输入图像的特征,以减少输入图像带来的参数;全连接层350,用于整合卷积层320(或者池化层)中具有类别区分性的局部信息,例如,全连接层350可以连接卷积层320提取到的特征。在实际应用中,为了提升卷积神经网络300的网络性能,全连接层350中每个神经元的激励函数一般采用ReLU函数。最后一层全连接层350的输出值被传递给一个输出,例如,可以采用softmax逻辑回归(softmaxregression)进行分类,从而可以得到处理结果。例如,该处理结果可以为图像的识别概率,从而可以通过输出层340输出该处理结果。
下面介绍本申请实施例提供的一种芯片硬件结构。
图3为本申请实施例提供的一种芯片硬件结构,该芯片包括人工智能处理器30。该芯片可以被设置在如图2a所示的执行设备210中,用以完成计算模块211的计算工作。该芯片也可以被设置在如图2a所示的训练设备220中,用以完成训练设备220的训练工作并输出目标模型/规则201。如图2b、图2c以及图2d所示的卷积神经网络中各层的算法均可在如图3所示的芯片中得以实现。
人工智能处理器30可以是神经网络处理器(Network Processing Unit,NPU),张量处理器(Tensor Processing Unit,TPU),或者图形处理器(Graphics Processing Unit,GPU)等一切适合用于大规模异或运算处理的处理器。以NPU为例:NPU可以作为协处理器挂载到主CPU(Host CPU)上,由主CPU为其分配任务。NPU的核心部分为运算电路303,通过控制器304控制运算电路303提取存储器(301和302)中的矩阵数据并进行乘加运算。
在一些实现中,运算电路303内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路303是二维脉动阵列。运算电路303还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路303是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路303从权重存储器302中取矩阵B的权重数据,并缓存在运算电路303中的每一个PE上。运算电路303从输入存储器301中取矩阵A的输入数据,根据矩阵A的输入数据与矩阵B的权重数据进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)308中。
统一存储器306用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(DMAC,Direct Memory Access Controller)305,被搬运到权重存储器302中。输入数据也通过DMAC被搬运到统一存储器306中。
总线接口单元(BIU,Bus Interface Unit)310,用于DMAC和取指存储器(Instruction Fetch Buffer)309的交互;总线接口单元301还用于取指存储器309从外部存储器获取指令;总线接口单元301还用于存储单元访问控制器305从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器306中,或将权重数据搬运到权重存储器302中,或将输入数据搬运到输入存储器301中。
向量计算单元307可以包括多个运算处理单元,在需要的情况下,对运算电路303的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。向量计算单元307主要用于神经网络中非卷积层,或全连接层(FC,fully connected layers)的计算,具体可以处理:Pooling(池化),Normalization(归一化)等的计算。例如,向量计算单元307可以将非线性函数应用到运算电路303的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元307生成归一化的值、合并值,或二者均有。
在一些实现中,向量计算单元307将经处理的向量存储到统一存储器306。在一些实现中,经向量计算单元307处理过的向量能够用作运算电路303的激活输入,例如用于神经网络中后续层中的使用,如图2b所示,若当前处理层是隐含层1(231),则经向量计算单元307处理过的向量还可以被用到隐含层2(232)中的计算。
控制器304连接的取指存储器(instruction fetch buffer)309,用于存储控制器304使用的指令;
统一存储器306,输入存储器301,权重存储器302以及取指存储器309均为On-Chip存储器。外部存储器独立于该NPU硬件架构。
其中,图2b、图2c、图2d所示的卷积神经网络中各层的运算可以由运算电路303或向量计算单元307执行。
下面详细描述本申请实施例涉及的方法。图4a为本申请实施例提供的一种神经网络的训练方法,该方法具体可以由如图2a所示的训练设备220执行。
在一个示例中,该方法可以由中央处理器(Central Processing Unit/Processor,CPU)处理,也可以由CPU和GPU共同处理,也可以不用GPU,而使用其他适合用于神经网络计算的处理器,如图3所示的人工智能处理器30,本申请不做限制。该方法可以包括如下部分或全部步骤:
步骤S402、将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态。
在本申请实施例中,第一神经网络可以是指待量化的卷积神经网络。第一神经网络的模型参数可以包括卷积层的参数、全连接层的参数等。以卷积层的参数为例,在一个示例中,第一神经网络的模型参数可以包括权值等等。
在本申请实施例中,训练设备210可以通过训练数据集对待量化的第一神经网络的模型参数设置为浮点数进行训练。具体来说,在初始状态下,将卷积神经网络模型中的模型参数(例如,权值)设定为某一具体的数值,该数值的数据类型为浮点数。例如,浮点数可以包括单精度浮点数和双精度浮点数。当训练设备220训练第一神经网络达到收敛状态时,表示训练设备220已经完成了对卷积神经网络的训练。
在一个示例中,上述收敛状态可以包括训练设备220训练第一神经网络的次数达到设定好的时期(Epoch)数量之后,第一神经网络所达到的状态。具体来说,Epoch数为1时,表示训练设备220使用训练数据集中的全部数据对第一神经网络进行一次训练。当使用训练数据集中的全部数据对第一神经网络进行训练的次数达到设定好的Epoch数,这表示完成了对第一神经网络的训练,此时,第一神经网络处于收敛状态。在一个示例中,考虑到第一神经网络可以具体为卷积神经网络,而卷积神经网络中可以采用误差反向传播算法在训练过程中修正初始模型中参数的大小,使得初始模型的重建误差损失越来越小。基于此,上述收敛状态还可以包括训练设备220训练第一神经网络满足损失函数的输出值不断缩小,直至损失函数逼近目标函数时,第一神经网络所达到的状态。
步骤S404、确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多。
在卷积神经网络中,通常会有多个卷积核。卷积核往往是三维的,也即包含三个维度的数据,其中,x、y方向为数据的长和宽,z方向可以认为是数据的深度。例如,以数据为图像数据为例,数据的长和宽代表图像的大小,数据的深度代表图像的色彩通道。具体地,在黑白模式下,图像的深度为1;在彩色模式下,图像的深度为3。具体来说,在图像识别过程中,卷积核,其实就是滤波器(filter),主要用于提取图像中不同的特征。参见图4b,为本申请实施例提供的一种卷积核的表现形态。从实质上来看,卷积核是一系列权重的组合,假设卷积核个数为K,将K个卷积核中同一位置z方向上的N个元素提取出来,即可得到N*K的权重矩阵(weight matrix)。具体来说,N表示当前卷积层到下一卷积层的特征图的通道数,K为通过张量展开方式,将权值张量N×C×H×W中的C×H×W展开成一维得到的。例如,可以通过张量展开方式将四维张量3*1*2*2展开成3*4。在本申请实施例中,权重矩阵与权值矩阵等价的概念。
在本申请实施例中,卷积神经网络往往具有多层网络结构。在一个示例中,卷积神经网络的各层为卷积层,权值张量的维度顺序为NCHW,其中,N表示最外侧的维度,W表示最内侧的维度。在一个示例中,卷积神经网络的各层为全连接层,权值张量的维度顺序为NCHW,且H=W=1。下面对这两种网络结构进行具体说明:
在卷积神经网络的各层为卷积层的情况下,例如,该卷积神经网络中包含有M个卷积核,M为大于0的正整数,其中,M个卷积核中有K个为待量化的卷积核,这里,K为小于等于M的正整数;该卷积神经网络模型的层数为L。以第l层卷积层为例,其中,l为小于等于L的整数,设定第l层卷积层的权值张量为N×C×H×W的四维张量,第l层卷积层的输入特征张量X为n×c×h×w;其中,N为第l个卷积层中包含的卷积核的数量,C为上一层(也即:第l-1层)特征图的通道数,H为第l层卷积核的高度,W为第l层卷积核的宽;n为第l层输入的图像的数量,c为第l层的输出特征图的通道数目,h为第l层的输出特征图的高,w为第l层的输出特征图的宽。具体来说,第l卷积层包括第l权值张量和第l卷积层对应的输出通道数;计算训练后的第一神经网络第l个卷积层包含的各个卷积核之间的相关度的实现过程可以包括:根据第l权值张量、第l权值张量的转置以及第l卷积层的输出通道数确定第l协方差矩阵;根据第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量;其中,所述目标向量用于表征所述各个卷积核各自对应的相关度。下面对其进行具体阐述:
在一个示例中,训练设备220可以获取训练后的第一神经网络中第l个卷积层的权值张量wl,例如,该权值张量wl可以表示为N*C*H*W的矩阵;然后,根据该权值张量wl到协方差矩阵Dl。示例性地,训练设备220可以根据第一公式计算得到协方差矩阵Dl,例如,第一公式可以表示为:
其中,Nl表示第l层的输出通道数,wl表示第l层卷积核的权值张量,wl T表示对第l层卷积核的权值张量wl进行转置。
在一个示例中,训练设备220在确定第l协方差矩阵时:可以先将第l个卷积层的权值张量wl进行转换,例如,将N*C*H*W的矩阵转换为N*K的矩阵,其中,K为将权值张量N×C×H×W中的C×H×W三维张量展开成一维得到的,然后,根据第一公式计算得到协方差矩阵Dl。
在本申请实施例中,协方差矩阵Dl是一个N*N的矩阵,该矩阵中的每个元素是各个向量(该向量为N*K矩阵中的向量)之间的协方差。每一个元素,用于表征N*K矩阵中不同向量之间的协方差。例如,该协方差可以为正值,也可以为负值,还可以为0。具体来说,当N*K矩阵中两个向量之间的协方差为正值,表示这两个向量之间呈正相关关系。当N*K矩阵中两个向量之间的协方差为负值,表示这两个向量之间呈负相关关系。当N*K矩阵中两个向量之间的协方差为0,表示这两个向量为独立的两个向量。需要说明的是,当协方差矩阵中的元素越大时,表示第l个卷积层包含的多个卷积核之间的正相关关系越大,这意味着人工智能处理器30在进行计算时,产生了冗余计算。基于此,本申请所描述的方法旨在确定确定需要进行量化训练的卷积核,以达到:提高神经网络的运算效率的同时,尽可能地保持神经网络的运算精度。
在本申请实施例中,根据所述第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量的实现过程可以包括:将协方差矩阵Dl中第j行向量中的元素进行相加,得到目标向量dj,其中,j的取值从1到N;之后,根据目标向量获取第l卷积层包含的各个卷积核各自对应的相关度。现有技术中,向量是具有大小和方向的量,这里,训练设备220可以通过向量的大小来表征每个卷积核各自对应的相关度,从而可以根据每个卷积核的相关度确定需要进行量化训练的卷积核。
在一个实施例中,出于对卷积核对应的相关度进行排序的便利,训练设备220可以对目标向量dj取倒数,得到向量Ij;其中,向量Ij用于表征第l个卷积层中各个卷积核的相关度。这里,向量dj和向量Ij是维度为N的向量,N为当前层(即:第l层)的输出通道数。
下面结合具体实例阐述如何获取每个卷积核各自的相关度,例如,在某一卷积层中,卷积核的数量为3个,每个卷积核只有一个通道,卷积核的大小为2×2,也即:权值张量w1可以表示为3×1×2×2的矩阵。首先,根据该权值张量w1、权值张量w1的装置以及该卷积层的输出通道数确定协方差矩阵,之后,根据该协方差矩阵获取该卷积层包含的各个卷积核各自对应的目标向量,继而通过目标向量的大小来表征每个卷积核各自对应的相关度,具体地,卷积核1对应的相关度为3.9505,卷积核2对应的相关度为2.9137,卷积核3对应的相关度为3.0279。
在卷积神经网络的各层为全连接层的情况下,将全连接层转化为卷积层。其中,第一层全连接层为卷积核与该层输入特征图大小相同的卷积层,除第一层全连接层之外的其余全连接层等效为N×C×1×1的卷积层;其中,N表示全连接层输出节点的个数,C表示全连接输入节点的个数,也就是说,若全连接层属于除第一层全连接层之外的其他全连接层,此时,W=H=1。在将全连接层转化为卷积层之后,确定每一个卷积层中各个卷积核之间的相关度的实现方式请参考前述描述,此处不多加赘述。
步骤S406将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络;其中,其中,M为大于0的正整数;所述M个卷积核为相关度较高的前M个卷积核。
在本申请实施例中,设定卷积神经网络中包含N个卷积核,在获取到这N个卷积核各自对应的相关度之后,可以根据相关度从大到小的顺序对这N个卷积核进行排序,也可以根据相关度从小到大的顺序对这N个卷积核进行排序,本申请实施例不作具体限定。
如前所述,在得到3个卷积核各自对应的相关度之后,可以按照相关度从大到小的顺序对这N个卷积核进行排序,其排序结果可以为:卷积核1对应的相关度3.9505>卷积核3对应的相关度3.0279>卷积核2对应的相关度2.9137。
在对这N个卷积核按照相关度从大到小进行排序之后,将相关度高的前M个卷积核进行量化训练,其中,M为大于0,且小于等于N的整数。在本申请实施例中,关于M的取值,可以为经验值,也可以为随机值。例如,M可以为2;又例如,M可以为3等等。
在一个示例中,相关度高的前M个卷积核可以处于不同的卷积层。例如,卷积神经网络包括2层卷积层,分别为卷积层1和卷积层2。设定M为3,其中,卷积层1包括相关度高的卷积核1和卷积核3,卷积层2包括相关度高的卷积核2。在一个示例中,相关度高的前M个卷积核可以处在同一个卷积层中。例如,卷积神经网络包括2层卷积层,分别为卷积层1和卷积层2。设定M为3,其中,卷积层1包括相关度高的卷积核1、卷积核2和卷积核3。
在一个示例中,M为小于等于10的正整数。这一实现方式,可以使得第一神经网络中的大部分卷积核仍然保持浮点数,小部分卷积核为整形数据,可以在提高神经网络的运算效率的同时,尽可能地保证神经网络的计算精度。
在本申请实施例中,将M个卷积核进行量化训练的实现过程可以包括:将M个卷积核按照设置的目标运算属性的值进行量化训练。
具体来说,运算属性的值可以是指各个网络层的运算属性的值。这里,网络层可以包括但不限于卷积层、全连接层等。其中,网络层的运算属性表征该网络层中与运算相关的属性。例如,该网路层中模型参数的属性,如模型参数值的位宽,表示采用多少位来存储/表示该网络中层中的各模型参数的值;例如,该网络层中激活值的属性,如激活值的位宽,表示采用多少位来存储/表示该网络层涉及的运算过程中的中间运算值以及输出值等;例如,该网络层的宽度,如该网络层的输出通道数(或者是等价的输入通道数,因为该网络层的输入通道数等于与该网络层的连接的上一网络层的输出通道数,该网络层的输出通道数等于与该网络层连接的下一网络层的输入通道数)。可以理解的是,某个网络层的模型参数值的位宽、激活值的位宽等运算属性的值越小,意味着该网络层的运算量越小。而且当网络层的模型参数值的位宽的值越小时,意味着存储该网络层的模型参数所需的存储空间较小。因此,当选择合适的运算属性的值时,可以降低量化得到的第二神经网络的模型文件所需的存储空间。那么,在这种情况下,当通过执行设备210运行量化后的第二神经网络时,可以降低第二神经网络在运算时消耗的计算资源。可以理解的是,这一实现方式,可以将模型文件小型化甚至部署在移动终端等运算资源较少的设备中。
在一些实现方式中,运算属性可以包括以下内容中的至少一种:网络层中激活值的位宽、网络层中模型参数值的位宽、网络层的宽度、网络层的组数、网络层的卷积核数量;其中,网络层的组数表征将输入网络层的不同通道的特征进行分组运算时的分组个数。示例性地,某个卷积层的输出通道数为2,则该卷积层可以对应两个卷积核,以3×3的卷积核为例,该卷积层的输入通道数为4,即输入为四个通道的输入特征;若组数的值为默认的1,即不进行分组运算,需要对四个通道的输入特征分别采用两个卷积核进行卷积处理,则该卷积层的模型参数的数目为2×3×3×4;若组数的值为2,即进行分组运算(组卷积),即将四个通道的输入特征分成两组输入特征,每组输入特征有两个通道的输入特征,其中一组输入特征采用两个卷积核中的一个卷积核进行卷积运算,另外一组输入特征采用两个卷积核中的另一个卷积核进行卷积运算,则该卷积层的模型参数的数目为2×3×3×2,降低了该卷积层的模型参数,同时降低了运算次数。
在本申请实施例中,每个网络层的运算属性与网络层的类型可以存在相关性,例如卷积层的运算属性可以包括:网络层中激活值的位宽、网络层中模型参数值的位宽、网络层的宽度、网络层的组数;池化层的运算属性可以包括:网络层中激活值的位宽,而不涉及模型参数值的位宽、网络层的宽度,也不涉及分组运算相关的组数。
在本申请实施例中,每个网络层的运算属性可以具有至少一种可选值,每个网络层的运算属性的可选值的数目可以相同,也可以不同。以上述卷积层为例,该卷积层的运算属性的值可以包括:网络层中激活值的位宽的取值、网络层中模型参数值的位宽的取值、网络层的宽度的取值、网络层的组数的取值,以及这四种取值的组合;示例性地,该卷积层的运算属性具有4种可选值,分别为:[4、1、1、1]、[2、2、2、1]、[1、1、2、1]、[2、2、2、2],其中,[2、2、2、2]表征激活值的位宽的取值为2bit,网络层中模型参数值的位宽的取值为2bit、网络层的宽度的取值为2、网络层的组数的取值为2。需要提醒的是,例如,某个卷积层的运算属性的可选值中没有涉及组数的取值时,实际仍然存在组数的取值,只是该卷积层的运算属性中组数的取值可以均为为默认取值1,而不存在其它可选值。总之,对于每个网络层中运算属性的可选值存在多种具体实施方式,本申请实施例不作具体限定。
在本申请实施例中,目标运算属性的值可以是根据第一神经网络的各网络层的运算属性和设置规则实时生成的,也可以是预先设置的。在实际应用中,目标运算属性的值,可以存储在训练设备220的本地存储区中,也可以存储在服务器中,本申请实施例不作具体限定。其中,设置规则包括但不限于运算属性的取值范围等取值要求。
在一些可能的实现方式中,确定目标运算属性的值的实现过程可以包括:设置M个卷积核的运算属性的值,通过训练数据集对M个卷积核,按照设置的运算属性的值进行训练,得到所述第一神经网络在不同的运算属性的值下的模型参数;根据所述第一神经网络在不同的运算属性的值下的模型参数确定测试精度大于第二阈值的至少一种运算属性的值作为所述目标运算属性的值。下面对其进行具体阐述:
具体来说,训练设备220可以对训练后的第一神经网络中相关度高的M个卷积核配置多种不同运算属性的值,其中,多种不同运算属性的值可以覆盖符合配置规则的各网络层的运算属性的所有可能的取值,即使只有一个网络层的运算属性的取值不同,这表示对第一神经网络的量化方法也是不同的。因为不同运算属性的值表征了第一神经网络在运算过程中各网络层的运算属性,因此第一神经网络在各个不同运算属性的值下具有对应的模型参数;例如采用4位数据表示模型参数,还是采用2位数据表示模型参数,针对同一训练数据集所训练得到的模型参数可以不同。
以运算属性的值为模型参数的位宽为例,若每个网络层采用相同的模型参数的位宽,或多或少总有网络层的模型参数的位宽是过于冗余的,即使将某个网络层的模型参数的位宽进行部分压缩,第一神经网络针对测试数据集的测试精度可能并没有削弱,甚至可能因为过拟合导致压缩后测试精度提升的情况。总之,当M个相关度高的M个卷积核采用不同的运算属性的值时,第一神经网络的模型参数不同,相应地,第一神经网络采用不同运算属性的值下的模型参数对测试数据集进行测试的测试精度是不同的。本实施例可以基于这一点,可以从第一神经网络对应的多种不同运算属性的值中选择至少一种测试精度较高的运算属性的值作为目标运算属性的值,例如可以选择符合预设的测试精度条件(如,测试精度大于第二阈值)的至少一种运算属性的值。其中,符合预设的测试精度条件可以为测试误差小于或等于预设测试误差。因为测试精度可以衡量预测精度,这一实现方式可以避免预测精度严重下降的问题。
在一种可能的实施方式中,可以获取多个不同运算属性的值下第一神经网络的模型参数,并采用不同运算属性的值下的模型参数对测试数据集分别进行测试,得到不同运算属性的值下的测试精度,并选取符合预设的测试精度条件(例如,第二阈值)的一种运算属性的值作为目标运算属性的值。这一实现方式,可以实现在对第一神经网络压缩的同时,还可以避免量化后的第二神经网络的预测精度严重下降的问题。
在本申请实施例中,以目标运算属性的值为设定好的模型参数值的位宽为例,按照设置的目标运算属性的值进行量化训练的实现过程可以包括:对量化后的权值张量进行前向计算和反向梯度传播。具体地,可以包括但不限于步骤步骤A1-A3:
步骤A1、根据第二公式计算第l层的第n个卷积核的定点量化后的权值张量,这里,第二公式可以表示为:
其中,Ql,n表示第l层的第n个卷积核的定点量化后的权值张量;wl,n表示第l层的第n个卷积核的经过训练的全精度权值张量,αl,n表示第l层的第n个卷积核的定点量化张量的缩放系数。
在本申请实施例中,Ql,n可以为二进制的形式,例如,4bit的0010表示数值2,4bit表示的数值范围是区间[0,15]之间的16个整数;又例如,8bit的00010010表示数值18,8bit表示的数值范围是区间[0,255]之间的256个整数。
在本申请实施例中,αl,n为浮点型数值。示例性地,αl,n可以为0.52,也可以为1.1。当αl,n=1.0时,表示wl,n没有进行量化。在实际应用中,对于不同的神经网络层来说,αl,n的取值可以相同,也可以不同。
步骤A2、根据定点量化后的张量wl,n进行前向计算。
步骤A3、利用反向传播得到的梯度信息更新权值张量wl,n,并利用定点量化后的权值张量αl,nQl,n进行反向传播中的特征图的梯度计算。
通过这一实现方式,可以完成量化训练,从而可以得到量化后的第二神经网络。
为了便于更好的理解量化训练,下面结合具体的实例进行阐述。图4c为本申请实施例提供的一种对权值张量N×C×H×W进行量化的实现过程,其中,N=3,C=1,H=4,W=4,初始缩放系数α=1.0。目标运算属性的值为设定好的模型参数值的位宽,例如,该模型参数值的位宽为2。当模型参数的位宽确定之后,根据第二公式获取定点量化后的权值张量。当训练设备220训练第二神经网络的次数达到设定好的epoch数时,可以发现,定点量化后的权值张量为原始权值张量的最优近似。
可以理解的是,在本申请实施例中,仅对M个相关度高的卷积核进行量化训练,而其他的卷积核仍保持浮点数,这一实现方式可以保留卷积核的绝大多数信息。
实施本申请实施例,将第一神经网络的模型参数设置为浮点数进行训练,当训练设备训练第一神经网络达到收敛状态时,确定训练后的第一神经网络中每一个卷积层包含的各个卷积核之间的相关度,之后,将相关度较高的前M个卷积核进行量化训练,而其他的卷积核仍然保持浮点数,由于这一实现方式保留了卷积核的绝大多数信息,即:采用低比特量化的方式,而非采用去除整个卷积核或将卷积核中的多数权值设置为0,可以提高神经网络模型的泛化能力。
在一些实现方式中,如图5所示,该方法在前述实施例所涉及的步骤S402-步骤S406的基础上,还可以包括步骤S408,下面对步骤S408进行具体阐述:
步骤S408、通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。
在本申请实施例中,模型精度的变化值大于第一阈值可以是指,模型精度发生变化。例如,将验证数据集1输入量化后的第二神经网络,得到第二神经网络的模型精度为0.85;将验证数据集2输入量化后的第二神经网络,得到第二神经网络的模型精度为0.9。这表示,量化后的第二神经网络中的模型参数有待进一步优化。此时,可以更新量化后的模型参数(例如,权值),以获取最终量化后的第二神经网络。
在本申请实施例中,模型精度的变化值小于或等于第一阈值可以是指,模型精度不发生变化。例如,将验证数据集1输入量化后的第二神经网络时,得到第二神经网络的模型精度为0.85;将验证数据集2输入量化后的第二神经网络,得到第二神经网络的模型精度为0.85。这表示,通过验证数据集已经完成了神经网络中各个模型参数的确定,继而,可以通过测试数据集来实现该神经网络的特定功能,例如,该特定功能为图像识别、边缘检测等等。
这里,第一阈值可以为0,也可以为0.001等等。例如,当第一阈值为0时,表示:通过验证数据集,对设置为浮点数的量化后的模型参数进行训练之后,第二神经网络满足模型的精度不发生变化。
在本申请实施例中,当通过图4a所示的方法得到的量化后的第二神经网络的性能小于设定好的条件,例如,量化后的第二神经网络的图像识别精度小于设定好的阈值,此时,通过多次迭代训练得到最终量化后的第二神经网络。以其中的一次迭代训练为例,该实现过程可以包括:通过验证数据集,对设置为浮点数的量化后的模型参数进行训练,也即:利用量化后的模型参数(例如,权值)再次对第一神经网络进行训练,当训练设备220训练第一神经网络达到收敛状态时,确定训练后的第一神经网络每个卷积层中包含的各个卷积核之间的相关度,之后,选取相关度较高的M个卷积核进行量化训练,直至训练设备220训练第一神经网络达到收敛状态,从而可以得到重新量化后的第二神经网络。当通过验证数据集,对设置为浮点数的量化后的模型参数进行训练,得到第二神经网络的模型精度不发生变化的情况下,表示训练过程结束,此时,可以通过最终量化后的第二神经网络来完成图像识别、语音识别等特定任务。由于神经网络在训练阶段经历了多次将部分模型参数设置为整型数而后又将模型参数设置为浮点数进行训练的过程,使得训练好的第二神经网络的模型精度不发生变化,当通过测试数据集进行测试时,可以避免测试精度低的情形,从而可以提高神经网络模型的泛化能力。
为了便于更好的理解本申请所描述的技术方案,下面结合具体的实例进行阐述:
执行设备220拟运行卷积神经网络VGG16来实现图像分类,在卷积神经网络VGG16未采用本申请所描述的技术方案进行处理之前,VGG16占用的存储空间为528兆字节,且权值张量、输入特征张量为32bit浮点数。执行设备220运行卷积神经网络VGG16之后,在ImageNet数据集上的分类精度为:TOP-1的准确率为71.59%,TOP-5的准确率为90.38%。这里,TOP-1的准确率是指,如果卷积神经网络VGG16输出的分类结果中,如果概率最大的是正确分类结果,才认为正确。TOP-5的准确率是指,如果卷积神经网络VGG16输出的分类结果中,如果概率前5中包含正确分类结果,即认为正确。
采用本申请所描述的技术方案对卷积神经网络VGG16进行处理,例如,设定模型参数值的位宽为4bit。执行设备220运行量化后的卷积神经网络VGG16之后,在ImageNet数据集上的分类精度为:TOP-1的准确率为73.36%,TOP-5的准确率为91.50%。比较处理前的分类精度和处理后的分类精度可以知道的是,采用本申请中训练好的第二神经网络进行图像分类时,可以实现将TOP-1的准确率增加1.77%,将TOP-5的准确率增加1.12。可以理解的是,由于在对神经网络进行训练时,保留了卷积核的绝大多数信息,即:采用低比特量化的方式,而非采用去除整个卷积核或将卷积核中的多数权值设置为0,可以提高神经网络模型的泛化能力。
前述实施例重点阐述了如何对神经网络进行训练,以得到量化后的第二神经网络。接下来将具体阐述如何使用训练好的第二神经网络。
具体来说,在训练设备220得到训练好的神经网络后,可以将该训练好的神经网络发送给客户设备240,由客户设备240将该训练好的神经网络发送给用户设备250(终端)。可选地,训练设备220也可以将训练好的神经网络发送至用户设备而250。用户设备250可以运行该训练好的神经网络以实现特定功能。下面结合图6a描述本申请实施例提供的一种数据处理方法,该方法可以包括但不限于如下部分或全部步骤:
S600:接收输入数据;
S602:将接收到的输入数据输入到量化后的第二神经网络,通过所述第二神经网络对所述输入数据进行处理,得到处理结果;
具体来说,量化后的第二神经网络包括量化后的模型参数,例如,模型参数可以包括权值和偏置。在本申请实施例中,第二神经网络对输入数据进行处理,得到处理结果的实现过程可以包括:对输入数据以及量化后的第i层卷积层权值进行乘法运算;对乘法运算的结果与量化后的偏置进行加法运算,从而可以得到第i层卷积层的卷积结果。
S604:输出该处理结果。
其中,输出的方式包括但不限于通过文本、图像、语音、视频等方式输出。
其中,训练好的神经网络为通过上述实施例所述的神经网络训练方法训练得到的。该输入数据可以是图像、文本等,与待训练的神经网络的具体功能有关。关于神经网络的训练过程可以参见上述实施例中相关描述,本申请实施例不再赘述。
在本申请实施例的一种应用场景中,该数据处理方法具体为图像处理方法,包括:终端接收输入图像;将该输入图像输入到训练好的神经网络,例如,第二神经网络,通过该训练好的神经网络对输入图像进行处理,得到处理结果。例如,该处理过程可以如图6b所示。其中,该处理结果的内容依赖于训练好的神经网络的功能,而训练好的神经网络的功能依赖于待训练神经网络的功能,可以是对图像的分类结果、识别结果等。例如,待训练神经网络为人脸属性识别网络,用于识别输入的人脸图像所描述的人的属性,比如性别、年龄、种族等,那么,训练好的神经网络可以识别输入图像描述人的性别、年龄、种族等,该处理结果可以包括输入图像被识别到的性别、年龄和种族。
在本申请实施例的另一种应用场景中,该数据处理方法具体为文本处理方法,包括:终端接收输入文本;将该输入文本输入到训练好的神经网络,例如,第二神经网络,通过该训练好的神经网络对输入文本进行处理,得到处理结果。其中,该处理结果的内容依赖于训练好的神经网络的功能,而训练好的神经网络的功能依赖于待训练神经网络的功能,可以是对文本的分类结果、识别结果等。例如,待训练神经网络为文本识别网络,用于识别输入文本的描述的意图,那么,训练好的神经网络可以识别输入文本的意图,进而执行该该识别到的意图对应的操作,例如,在识别到意图为“接通电话”,终端(如手机)可以接通当前的呼叫。
实施本申请实施例,由于训练好的第二神经网络的泛化能力强,当通过训练好的第二神经网络对输入数据进行处理时,可以提高输入数据的处理精度。例如,当输入数据为图像时,可以提高图像的识别精度;又例如,当输入数据为语音时,可以提高语音的识别精度。
下面结合附图介绍本申请实施例涉及的装置。
图7为本申请实施例中一种神经网络的训练装置的示意性框图。图7所示的神经网络的训练装置70(该装置70具体可以是图2a训练设备220),可以包括:
第一训练单元700,用于将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态;
第一确定单元702,用于确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多;
第二训练单元704,用于将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络;其中,其中,M为大于0的正整数;所述M
在一些可能的实现方式中,所述量化后的第二神经网络包括量化后模型参数;所述训练装置70还可以包括:
迭代训练单元706,用于通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。
在一些可能的实现方式中,所述第l卷积层包括第l权值张量和所述第l卷积层对应的输出通道数;所述第一确定单元702,具体用于:
根据所述第l权值张量、所述第l权值张量的转置以及所述第l卷积层的输出通道数确定第l协方差矩阵;
根据所述第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量;其中,所述目标向量用于表征所述各个卷积核各自对应的相关度。
在一些可能的实现方式中,所述第二训练单元704,具体用于:
将所述M个卷积核按照设置的目标运算属性的值进行量化训练。
在一些可能的实现方式中,所述训练装置还包括处理单元708;所述处理单元708,用于:
设置所述M个卷积核的运算属性的值,通过训练数据集对所述M个卷积核,按照设置的运算属性的值进行训练,得到所述第一神经网络在不同的运算属性的值下的模型参数;
根据所述第一神经网络在不同的运算属性的值下的模型参数确定测试精度大于第二阈值的至少一种运算属性的值作为所述目标运算属性的值。
在一些可能的实现方式中,所述M为小于等于10的正整数。
本申请实施例中,各个的单元的具体实现可以参见上述实施例中的相关描述,此处不再赘述。
实施本申请实施例,将第一神经网络的模型参数设置为浮点数进行训练,当训练设备训练第一神经网络达到收敛状态时,确定训练后的第一神经网络中每一个卷积层包含的各个卷积核之间的相关度,之后,将相关度较高的前M个卷积核进行量化训练,而其他的卷积核仍然保持浮点数,由于这一实现方式保留了卷积核的绝大多数信息,即:采用低比特量化的方式,而非采用去除整个卷积核或将卷积核中的多数权值设置为0,可以提高神经网络模型的泛化能力。
图8为本申请实施例中一种数据处理装置80(终端)的示意性框图,图8所示的数据处理装置80(该装置80具体可以是图2a中的用户设备250),可以包括:
接收单元800,用于接收输入数据;
处理单元802,用于将所述输入数据输入到训练好的第二神经网络,通过所述第二神经网络对所述输入数据进行处理,得到处理结果;其中,所述训练好的第二神经网络为通过如权利要求1-6任一项所述的神经网络的训练方法得到的;
输出单元804,用于输出处理结果。
上述各个功能单元的具体实现可以参见上述方法实施例中的相关描述,本申请实施例不再赘述。
如图9所示,本申请实施例提供的一种训练设备,该训练设备可以包括处理器901、存储器902、通信总线903和通信接口904,所述处理器901通过所述通信总线连接所述存储器902和所述通信接口903。
处理器901可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Network Processing Unit,NPU)或者一个或多个集成电路,用于执行相关程序,以执行本申请方法实施例的第一机器学习模型的训练方法。
处理器901还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的神经网络的训练方法的各个步骤可以通过处理器901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器901还可以是通用处理器、数字信号处理器(DigitalSignal Processing,DSP)、专用集成电路(ASIC)、现成可编程门阵列(Field ProgrammableGate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器901,处理器901读取存储器902中的信息,结合其硬件执行本申请方法实施例的神经网络的训练方法。
存储器902可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器902可以存储程序和数据,例如本申请实施例中神经网络的的训练方法的程序等。当存储器901中存储的程序被处理器902执行时,处理器901和通信接口904用于执行本申请实施例的神经网络的训练方法的各个步骤。
例如,本申请实施例中用于实现本申请实施例中神经网络的训练方法的程序等。
通信接口904使用例如但不限于收发器一类的收发装置,来实现训练设备900与其他设备或通信网络之间的通信。例如,可以通过通信接口904获取训练好的神经网络,以实现与执行设备、客户设备、用户设备或者终端设备等的信息交互。
可选地,该训练设备还可以包括人工智能处理器905,人工智能处理器905可以是神经网络处理器(Network Processing Unit,NPU),张量处理器(Tensor ProcessingUnit,TPU),或者图形处理器(Graphics Processing Unit,GPU)等一切适合用于大规模异或运算处理的处理器。人工智能处理器905可以作为协处理器挂载到主CPU(Host CPU)上,由主CPU为其分配任务。人工智能处理器905可以实现上述神经网络的训练方法中涉及的一种或多种运算。例如,以NPU为例,NPU的核心部分为运算电路,通过控制器控制运算电路提取存储器902中的矩阵数据并进行乘加运算。
所述处理器901用于调用所述存储器中的数据和程序代码,执行:
将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态;
确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多;
将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络;其中,M为大于0的正整数;所述M个卷积核为相关度较高的前M个卷积核。
其中,所述量化后的第二神经网络包括量化后模型参数;所述处理器901还可以用于:
通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。
应理解,各个器件的实现还可以对应参照上述神经网络的训练方法实施例中的相应描述,本申请实施例不再赘述。
图10为本申请实施例中另一种数据处理装置的示意性框图;图10所示的数据处理装置1000(该装置1000具体可以是一种终端)包括存储器1001、基带芯片1002、射频模块1003、外围系统1004和传感器1005。基带芯片1002包括至少一个处理器10021,例如CPU,时钟模块10022和电源管理模块10023;外围系统1004包括摄像头10041、音频模块10042、触摸显示屏10043等,进一步地,传感器1005可以包括光线传感器10051、加速度传感器10052、指纹传感器10053等;外围系统1004和传感器1005包括的模块可以视实际需要来增加或者减少。上述任意两个相连接的模块可以具体通过总线相连,该总线可以是工业标准体系结构(英文:industry standard architecture,简称:ISA)总线、外部设备互连(英文:peripheral component interconnect,简称:PCI)总线或扩展标准体系结构(英文:extended industry standard architecture,简称:EISA)总线等。
射频模块1003可以包括天线和收发器(包括调制解调器),该收发器用于将天线接收到的电磁波转换为电流并且最终转换为数字信号,相应地,该收发器还用于将该手机将要输出的数字信号据转换为电流然后转换为电磁波,最后通过该天线将该电磁波发射到自由空间中。射频模块1003还可包括至少一个用于放大信号的放大器。通常情况下,可以通过该射频模块1003进行无线传输,如蓝牙(英文:Bluetooth)传输、无线保证(英文:Wireless-Fidelity,简称:WI-FI)传输、第三代移动通信技术(英文:3rd-Generation,简称:3G)传输、第四代移动通信技术(英文:the 4th Generation mobile communication,简称:4G)传输等。
触摸显示屏10043可用于显示由用户输入的信息或向用户展示信息,触摸显示屏10043可包括触控面板和显示面板,可选的,可以采用液晶显示器(英文:Liquid CrystalDisplay,简称:LCD)、有机发光二极管(英文:Organic Light-Emitting Diode,简称:OLED)等形式来配置显示面板。进一步的,触控面板可覆盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器10021以确定触摸事件的类型,随后处理器10021根据触摸事件的类型在显示面板上提供相应的视觉输出。触控面板与显示面板是作为两个独立的部件来实现终端1000的输入和输出功能,但是在某些实施例中,可以将触控面板与显示面板集成而实现终端1000的输入和输出功能。
摄像头10041用于获取图像,以输入到量化后的神经网络。应理解,此情况下,量化后的神经网络是用于实现对图像进行处理的深度神经网络。如,对第一场景中图像识别网络经过量化后的神经网络。
音频模块10042具体可以为麦克风,可以获取语音。本身实施例中,终端1000可以将语音转换为文本,进而将该文本输入到量化后的神经网络。应理解,此情况下,量化后的神经网络是用于实现对文本进行处理的深度神经网络。如,对第二场景中文本识别网络经过量化后的神经网络。
传感器1005用于可以包括光线传感器10051、加速度传感器10052、指纹传感器10052,其中,光线传感器10051用于获取环境的光强,加速度传感器10052(比如陀螺仪等)可以获取终端1000的运动状态,指纹传感器10053可以输入的指纹信息;传感器1005感应到相关信号后将该信号量化为数字信号并传递给处理器10021做进一步处理。
存储器1001可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1001可选的还可以包括至少一个位于远离前述处理器10021的存储装置,该存储器1001可以具体包括存储指令区和存储数据区,其中,存储指令区可存储操作系统、用户接口程序、通信接口程序等程序,该存储数据区可存储该处理在执行相关操作所需要的数据,或者执行相关操作所产生的数据。
处理器10021是终端1000的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行存储在存储器1001内的程序,以及调用存储在存储器1001内的数据,执行终端1000的各项功能。可选的,处理器10021可包括一个或多个应用处理器,该应用处理器主要处理操作系统、用户界面和应用程序等。在本申请实施例中,处理器10021读取存储器1001中的信息,结合其硬件完成本申请实施例的数据处理装置80中包括的单元所需执行的功能,或者执行本申请方法实施例的数据处理方法。
通过射频模块1003用户实现该终端1000的通信功能,具体地,终端1000可以接收客户设备240发送的经过量化后的神经网络或其他数据。
需要说明的是,上述各个功能单元的具体实现可以参见上述实施例中的相关描述,本申请实施例不再赘述。
应注意,尽管图9、图10所示的装置90和100仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,装置90和100还包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,装置90和100还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,装置90和100也可仅仅包括实现本申请实施例所必须的器件,而不必包括图9和图10中所示的全部器件。
可以理解,所述装置90相当于图2a中的所述训练设备220,所述装置100相当于图2a中的所述执行设备210,所述装置100还可以相当于图2a中的所述用户设备250。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例还提供了一种计算机存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个实施例所述方法中的一个或多个步骤。上述装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中,基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机产品存储在计算机可读存储介质中。
上述计算机可读存储介质可以是前述实施例所述的设备的内部存储单元,例如硬盘或内存。上述计算机可读存储介质也可以是上述设备的外部存储设备,例如配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述设备的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述设备所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可通过计算机程序来指令相关的硬件来完成,该计算机的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
可以理解,本领域普通技术人员可以意识到,结合本申请各个实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本领域技术人员能够领会,结合本申请各个实施例中公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种神经网络的训练方法,其特征在于,所述方法应用于训练设备,所述方法包括:
将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态;
确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多;
将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络其中,M为大于0的正整数;所述M个卷积核为相关度较高的前M个卷积核。
2.根据权利要求1所述的方法,其特征在于,所述量化后的第二神经网络包括量化后的模型参数;所述方法还包括:
通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。
3.根据权利要求1所述的方法,其特征在于,所述第l卷积层包括第l权值张量和所述第l卷积层对应的输出通道数;所述确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度,包括:
根据所述第l权值张量、所述第l权值张量的转置以及所述第l卷积层的输出通道数确定第l协方差矩阵;
根据所述第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量;其中,所述目标向量用于表征所述各个卷积核各自对应的相关度。
4.根据权利要求1所述的方法,其特征在于,所述将M个卷积核进行量化训练,包括:
将所述M个卷积核按照设置的目标运算属性的值进行量化训练。
5.根据权利要求4所述的方法,其特征在于,所述将所述M个卷积核按照设置的目标运算属性的值进行量化训练之前,还包括:
设置所述M个卷积核的运算属性的值,通过训练数据集对所述M个卷积核,按照设置的运算属性的值进行训练,得到所述第一神经网络在不同的运算属性的值下的模型参数;
根据所述第一神经网络在不同的运算属性的值下的模型参数确定测试精度大于第二阈值的至少一种运算属性的值作为所述目标运算属性的值。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述M为小于等于10的正整数。
7.一种数据处理方法,其特征在于,包括:
接收输入数据;
将所述输入数据输入到训练好的第二神经网络,通过所述第二神经网络对所述输入数据进行处理,得到处理结果;其中,所述训练好的第二神经网络为通过如权利要求1-6任一项所述的神经网络的训练方法得到的;
输出所述处理结果。
8.一种神经网络的训练装置,其特征在于,包括:
第一训练单元,用于将第一神经网络的模型参数设置为浮点数进行训练,直到所述训练设备训练所述第一神经网络达到收敛状态;
第一确定单元,用于确定训练后的所述第一神经网络中第l个卷积层包含的各个卷积核之间的相关度;其中,所述相关度用于表征所述第l个卷积层包含的各个卷积核之间的关联程度;所述第一神经网络包括L个卷积层,所述L为大于0的正整数;所述l的取值依次为1到L;其中,卷积核对应的相关度越大,所述训练设备在进行计算时产生的冗余计算越多;
第二训练单元,用于将M个卷积核进行量化训练,直至所述训练设备训练所述第一神经网络达到所述收敛状态,得到量化后的第二神经网络;其中,其中,M为大于0的正整数;所述M个卷积核为相关度较高的前M个卷积核。
9.根据权利要求8所述的训练装置,其特征在于,所述量化后的第二神经网络包括量化后模型参数;所述装置还包括:
迭代训练单元,用于通过验证数据集,对设置为浮点数的所述量化后的模型参数进行训练,在所述第二神经网络的模型精度的变化值大于第一阈值的情况下,更新所述量化后的模型参数,重复执行对设置为浮点数的所述量化后的模型参数进行训练的步骤,直至最终量化后的所述第二神经网络满足所述第二神经网络的模型精度的变化值小于或等于第一阈值。
10.根据权利要求8所述的训练装置,其特征在于,所述第l卷积层包括第l权值张量和所述第l卷积层对应的输出通道数;所述第一确定单元,具体用于:
根据所述第l权值张量、所述第l权值张量的转置以及所述第l卷积层的输出通道数确定第l协方差矩阵;
根据所述第l协方差矩阵获取所述第l卷积层包含的各个卷积核各自对应的目标向量;其中,所述目标向量用于表征所述各个卷积核各自对应的相关度。
11.根据权利要求8所述的训练装置,其特征在于,所述第二训练单元,具体用于:
将所述M个卷积核按照设置的目标运算属性的值进行量化训练。
12.根据权利要求11所述的训练装置,其特征在于,所述训练装置还包括处理单元;所述处理单元,用于:
设置所述M个卷积核的运算属性的值,通过训练数据集对所述M个卷积核,按照设置的运算属性的值进行训练,得到所述第一神经网络在不同的运算属性的值下的模型参数;
根据所述第一神经网络在不同的运算属性的值下的模型参数确定测试精度大于第二阈值的至少一种运算属性的值作为所述目标运算属性的值。
13.根据权利要求8-12任一项所述的训练装置,其特征在于,所述M为小于等于10的正整数。
14.一种数据处理装置,其特征在于,包括:
接收单元,用于接收输入数据;
处理单元,用于将所述输入数据输入到训练好的第二神经网络,通过所述第二神经网络对所述输入数据进行处理,得到处理结果;其中,所述训练好的第二神经网络为通过如权利要求1-6任一项所述的神经网络的训练方法得到的;
输出单元,用于输出所述处理结果。
15.一种神经网络的训练装置,其特征在于,包括:存储器和处理器,所述存储器用于程序,所述处理器执行所述存储器存储的程序,当存储器存储的程序被执行时,所述处理器用于执行如权利要求1-6任一项所述的神经网络的训练方法。
16.一种终端,其特征在于,包括存储器存储器和处理器,所述存储器用于程序,所述处理器执行所述存储器存储的程序,当存储器存储的程序被执行时,所述处理器用于执行如权利要求7所述的数据处理方法。
17.一种人工智能处理器,其特征在于,所述人工智能处理器包括运算电路和耦合于所述运算电路的至少一个累加器,所述人工智能处理器用于执行如权利要求1-6任一项所述的神经网络的训练方法。
18.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码包括如权利要求1-6任一项所述的神经网络的训练方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,所述程序代码如权利要求7所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010134455.8A CN113326930B (zh) | 2020-02-29 | 2020-02-29 | 数据处理方法、神经网络的训练方法及相关装置、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010134455.8A CN113326930B (zh) | 2020-02-29 | 2020-02-29 | 数据处理方法、神经网络的训练方法及相关装置、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113326930A true CN113326930A (zh) | 2021-08-31 |
CN113326930B CN113326930B (zh) | 2024-05-03 |
Family
ID=77412915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010134455.8A Active CN113326930B (zh) | 2020-02-29 | 2020-02-29 | 数据处理方法、神经网络的训练方法及相关装置、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113326930B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113593538A (zh) * | 2021-09-02 | 2021-11-02 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
CN113807504A (zh) * | 2021-09-30 | 2021-12-17 | 上海阵量智能科技有限公司 | 一种神经网络的生成方法、装置、计算机设备及存储介质 |
CN114004352A (zh) * | 2021-12-31 | 2022-02-01 | 杭州雄迈集成电路技术股份有限公司 | 一种仿真实现方法、神经网络编译器以及计算机可读存储介质 |
CN114124973A (zh) * | 2021-09-27 | 2022-03-01 | 烽火通信科技股份有限公司 | 一种面向多云场景的镜像同步方法和装置 |
CN114297940A (zh) * | 2021-12-31 | 2022-04-08 | 合肥工业大学 | 确定非稳态储层参数的方法及装置 |
CN114943324A (zh) * | 2022-05-26 | 2022-08-26 | 中国科学院深圳先进技术研究院 | 神经网络训练方法、人体运动识别方法及设备、存储介质 |
CN115496200A (zh) * | 2022-09-05 | 2022-12-20 | 中国科学院半导体研究所 | 神经网络量化模型训练方法、装置及设备 |
CN115841140A (zh) * | 2022-04-20 | 2023-03-24 | 北京爱芯科技有限公司 | 一种反最大池化运算方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263913A (zh) * | 2019-05-23 | 2019-09-20 | 深圳先进技术研究院 | 一种深度神经网络压缩方法及相关设备 |
US20190340492A1 (en) * | 2018-05-04 | 2019-11-07 | Microsoft Technology Licensing, Llc | Design flow for quantized neural networks |
CN110647990A (zh) * | 2019-09-18 | 2020-01-03 | 无锡信捷电气股份有限公司 | 基于灰色关联分析的深度卷积神经网络模型的裁剪方法 |
-
2020
- 2020-02-29 CN CN202010134455.8A patent/CN113326930B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190340492A1 (en) * | 2018-05-04 | 2019-11-07 | Microsoft Technology Licensing, Llc | Design flow for quantized neural networks |
CN110263913A (zh) * | 2019-05-23 | 2019-09-20 | 深圳先进技术研究院 | 一种深度神经网络压缩方法及相关设备 |
CN110647990A (zh) * | 2019-09-18 | 2020-01-03 | 无锡信捷电气股份有限公司 | 基于灰色关联分析的深度卷积神经网络模型的裁剪方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113593538A (zh) * | 2021-09-02 | 2021-11-02 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
CN113593538B (zh) * | 2021-09-02 | 2024-05-03 | 北京声智科技有限公司 | 语音特征的分类方法、相关设备及可读存储介质 |
CN114124973A (zh) * | 2021-09-27 | 2022-03-01 | 烽火通信科技股份有限公司 | 一种面向多云场景的镜像同步方法和装置 |
CN114124973B (zh) * | 2021-09-27 | 2023-06-09 | 烽火通信科技股份有限公司 | 一种面向多云场景的镜像同步方法和装置 |
CN113807504A (zh) * | 2021-09-30 | 2021-12-17 | 上海阵量智能科技有限公司 | 一种神经网络的生成方法、装置、计算机设备及存储介质 |
CN113807504B (zh) * | 2021-09-30 | 2024-04-16 | 上海阵量智能科技有限公司 | 一种神经网络的生成方法、装置、计算机设备及存储介质 |
CN114004352A (zh) * | 2021-12-31 | 2022-02-01 | 杭州雄迈集成电路技术股份有限公司 | 一种仿真实现方法、神经网络编译器以及计算机可读存储介质 |
CN114297940A (zh) * | 2021-12-31 | 2022-04-08 | 合肥工业大学 | 确定非稳态储层参数的方法及装置 |
CN114297940B (zh) * | 2021-12-31 | 2024-05-07 | 合肥工业大学 | 确定非稳态储层参数的方法及装置 |
CN115841140B (zh) * | 2022-04-20 | 2023-08-11 | 北京爱芯科技有限公司 | 一种反最大池化运算方法、装置、电子设备及存储介质 |
CN115841140A (zh) * | 2022-04-20 | 2023-03-24 | 北京爱芯科技有限公司 | 一种反最大池化运算方法、装置、电子设备及存储介质 |
CN114943324B (zh) * | 2022-05-26 | 2023-10-13 | 中国科学院深圳先进技术研究院 | 神经网络训练方法、人体运动识别方法及设备、存储介质 |
CN114943324A (zh) * | 2022-05-26 | 2022-08-26 | 中国科学院深圳先进技术研究院 | 神经网络训练方法、人体运动识别方法及设备、存储介质 |
CN115496200B (zh) * | 2022-09-05 | 2023-09-22 | 中国科学院半导体研究所 | 神经网络量化模型训练方法、装置及设备 |
CN115496200A (zh) * | 2022-09-05 | 2022-12-20 | 中国科学院半导体研究所 | 神经网络量化模型训练方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113326930B (zh) | 2024-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110084281B (zh) | 图像生成方法、神经网络的压缩方法及相关装置、设备 | |
CN113326930B (zh) | 数据处理方法、神经网络的训练方法及相关装置、设备 | |
CN110175671B (zh) | 神经网络的构建方法、图像处理方法及装置 | |
WO2021042828A1 (zh) | 神经网络模型压缩的方法、装置、存储介质和芯片 | |
WO2022083536A1 (zh) | 一种神经网络构建方法以及装置 | |
WO2021022521A1 (zh) | 数据处理的方法、训练神经网络模型的方法及设备 | |
CN111291809B (zh) | 一种处理装置、方法及存储介质 | |
WO2022042713A1 (zh) | 一种用于计算设备的深度学习训练方法和装置 | |
CN110222717B (zh) | 图像处理方法和装置 | |
WO2022001805A1 (zh) | 一种神经网络蒸馏方法及装置 | |
CN113705769A (zh) | 一种神经网络训练方法以及装置 | |
CN110222718B (zh) | 图像处理的方法及装置 | |
CN114611705A (zh) | 数据处理方法、机器学习的训练方法及相关装置、设备 | |
CN114255361A (zh) | 神经网络模型的训练方法、图像处理方法及装置 | |
WO2021018245A1 (zh) | 图像分类方法及装置 | |
CN113191489B (zh) | 二值神经网络模型的训练方法、图像处理方法和装置 | |
WO2023231794A1 (zh) | 一种神经网络参数量化方法和装置 | |
CN113449573A (zh) | 一种动态手势识别方法及设备 | |
CN113570029A (zh) | 获取神经网络模型的方法、图像处理方法及装置 | |
CN112561028A (zh) | 训练神经网络模型的方法、数据处理的方法及装置 | |
WO2023280113A1 (zh) | 数据处理方法、神经网络模型的训练方法及装置 | |
CN114698395A (zh) | 神经网络模型的量化方法和装置、数据处理的方法和装置 | |
CN113536970A (zh) | 一种视频分类模型的训练方法及相关装置 | |
CN116863194A (zh) | 一种足溃疡图像分类方法、系统、设备及介质 | |
CN112884118A (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 | ||
GR01 | Patent grant |