CN111950689A - 神经网络的训练方法及装置 - Google Patents
神经网络的训练方法及装置 Download PDFInfo
- Publication number
- CN111950689A CN111950689A CN201910407634.1A CN201910407634A CN111950689A CN 111950689 A CN111950689 A CN 111950689A CN 201910407634 A CN201910407634 A CN 201910407634A CN 111950689 A CN111950689 A CN 111950689A
- Authority
- CN
- China
- Prior art keywords
- training
- training data
- error
- weight matrix
- neural network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012549 training Methods 0.000 title claims abstract description 565
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 189
- 238000000034 method Methods 0.000 title claims abstract description 149
- 239000011159 matrix material Substances 0.000 claims abstract description 258
- 238000012545 processing Methods 0.000 claims abstract description 184
- 230000008569 process Effects 0.000 claims abstract description 51
- 238000013139 quantization Methods 0.000 claims description 145
- 238000012805 post-processing Methods 0.000 claims description 11
- 238000013461 design Methods 0.000 description 29
- 230000015654 memory Effects 0.000 description 25
- 238000004364 calculation method Methods 0.000 description 20
- 230000006854 communication Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 238000010606 normalization Methods 0.000 description 6
- 238000007781 pre-processing Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000007175 bidirectional communication Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 238000006467 substitution reaction Methods 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本申请提供一种神经网络的训练方法及装置,能够有效减少神经网络的训练过程中的计算量,从而提高神经网络的训练效率,拓展神经网络的训练方法的适用范围。该方法包括:利用由大位宽的第一训练数据和第一权重矩阵量化后的小位宽的第二训练数据和第二权重矩阵得到本处理层的大位宽的回传误差,并量化为本处理层对应的小位宽的回传误差,然后再利用小位宽的第二训练数据和小位宽的回传误差,计算本处理层对应的大位宽的第二权重矩阵,从而完成神经网络的一次训练迭代。
Description
技术领域
本申请涉及神经网络领域,尤其涉及一种神经网络的训练方法及装置。
背景技术
神经网络的应用主要有训练(train)和推断(inference)两种任务。其中,推断是指将待识别数据输入神经网络得到识别结果,如识别待分类图像的图像类别。训练是指利用包含真实标签的数据(训练样本),不断迭代优化神经网络的权重矩阵(weight matrix),以提高推断任务的准确性。在上述各个过程中,通常要涉及大量的矩阵乘法运算(主要包括乘加运算),计算量巨大,功耗和成本较高。例如,对于一个深度为16的计算机视觉组(visual geometry group 16,VGG16)神经网络,使用一张224*224图片完成一次训练迭代的计算量高达290*3亿次乘加运算。因此,如图1所示,可以采用云端训练、客户端推断的应用方案降低客户端的计算量。具体地,由云计算设备,如计算能力强大的服务器、大型计算机等完成神经网络的训练任务,更新权重矩阵并下发给客户端,然后由客户端完成推断任务。
容易理解,图1所示的应用方案可能需要客户上传个人信息,存在隐私泄露风险。为此,提出了一种可降低计算量,以便在客户端实施的量化推断方案。具体地,如图2所示,采用离线校准方式确定推断数据的量化参数和量化后的权重矩阵,然后采用在线量化方式量化推断数据,并根据量化后的推断数据和量化后的权重矩阵进行推断,输出反量化后的推断结果。其中,“量化”是指,根据神经网络模型、初始量化参数和校准样例,确定推断数据和权重矩阵校准后的量化参数,如饱和阈值(saturated threshold)和校准后的量化位宽,然后将取值范围较大的推断数据和权重矩阵转换为取值范围较小的推断数据和权重矩阵,从而进一步降低客户端完成推断任务的计算量。例如,可以采用线性饱和量化方式,将32位(bit)的浮点数量化为8位的定点数。
但是,在图2所示的离线校准、在线量化的推断方案中,量化参数是离线校准的,在线推断过程中不能改变,而在训练过程中,样本数据的取值范围是不断变化的,这要求量化参数,如饱和阈值也能够随之调整。因此,图2所示的离线校准、在线量化的推断方案并不适用于的训练过程。也就是说,迄今为止,尚不存在可用于客户端等计算能力受限场景、既能执行推断任务,又能执行训练任务的可行技术方案。
发明内容
本申请提供一种神经网络的训练方法及装置,能够有效减少神经网络的训练任务的计算量,从而提高神经网络的训练效率,拓展神经网络的训练方法的适用范围。
第一方面,提供一种神经网络的训练方法。其中,该神经网络包括多个处理层,该多个处理层包括第一处理层以及一个或多个后级处理层。该神经网络的训练方法由第一处理层执行。该神经网络的训练方法包括:将经过预处理后的第一训练数据量化为第二训练数据,并将第一权重矩阵量化为第二权重矩阵。其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽,第二权重矩阵的位宽小于第一权重矩阵的位宽。然后,利用第二训练数据和第二权重矩阵,得到第一中间结果。其中,第一中间结果依次经过一个或多个后级处理层处理后,最终得到第一回传误差。之后,接收第二回传误差,并将第二回传误差量化为第三回传误差。其中,第二回传误差为第一回传误差经过一个或多个后级处理层处理后得到的误差,第三回传误差的位宽小于第二回传误差的位宽。最后,利用第二训练数据和第三回传误差,计算第三权重矩阵。其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
第一方面提供的神经网络的训练方法,能够将位宽较大的第一训练数据和第一权重矩阵、分别量化为位宽较小的第二训练数据和第二权重矩阵,并利用位宽较小的第二训练数据和第二权重矩阵得到第一中间结果、第一回传误差和第二回传误差,然后,将位宽较大的第二回传误差量化为位宽较小的第三回传误差,并利用位宽较小的第二训练数据和第三回传误差计算位宽较大的第三权重矩阵,能够在确保每次训练迭代前后的权重矩阵具有相同精度的前提下,大幅降低执行神经网络的训练任务的过程中的矩阵乘法的计算量,以便在客户端等计算能力受限场景下执行神经网络的训练任务,从而提高神经网络的训练效率,拓展神经网络的训练方法的适用范围。
在一种可能的设计方法中,上述将经过预处理后的第一训练数据量化为第二训练数据,可以包括:根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据。
可选地,上述根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据,可以包括:若第一训练数据小于或等于0,则第二训练数据等于0;若第一训练数据大于或等于第一饱和阈值,则第二训练数据等于第一饱和阈值;若第一训练数据大于0且小于第一饱和阈值,则第二训练数据根据如下公式确定:其中,d2为第二训练数据,d1为第一训练数据,t1为第一饱和阈值,Sd为训练数据的量化阶数,运算符号表示向下取整。
在一种可能的设计方法中,上述神经网络的训练方法还可以包括:利用第二权重矩阵和第三回传误差,计算第四回传误差。其中,第四回传误差为第一处理层的前一处理层的回传误差。
在一种可能的设计方法中,上述神经网络的训练方法还可以包括:根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,上述根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,可以包括:将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
可选地,上述根据第一饱和阈值和阈值更新量,计算第二饱和阈值,可以包括:根据如下公式,计算第二饱和阈值:t2=t1-rt×tupdate。其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
在一种可能的设计方法中,上述利用第二训练数据和第二权重矩阵,得到第一中间结果,可以包括:利用第二训练数据和第二权重矩阵,基于卷积处理,得到第一中间结果。
第二方面,提供一种神经网络的训练方法。该神经网络包括多个处理层,该多个处理层包括第一处理层,该第一处理层为神经网络的最后一层。该神经网络的训练方法由第一处理层执行。该神经网络的训练方法包括:将经过预处理后的第一训练数据量化为第二训练数据,并将第一权重矩阵量化为第二权重矩阵。其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽,第二权重矩阵的位宽小于第一权重矩阵的位宽。然后,利用第二训练数据和第二权重矩阵,得到第一回传误差。之后,将第一回传误差量化为第三回传误差,并利用第二训练数据和第三回传误差,计算第三权重矩阵。其中,第三回传误差的位宽小于第一回传误差的位宽,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
第二方面提供的神经网络的训练方法,能够将位宽较大的第一训练数据和第一权重矩阵、分别量化为位宽较小的第二训练数据和第二权重矩阵,并利用位宽较小的第二训练数据和第二权重矩阵得到第一回传误差,然后,将位宽较大的第一回传误差量化为位宽较小的第三回传误差,并利用位宽较小的第二训练数据和第三回传误差计算位宽较大的第三权重矩阵,能够在确保每次训练迭代前后的权重矩阵具有相同精度的前提下,大幅降低执行神经网络的训练任务的过程中的矩阵乘法的计算量,以便在客户端等计算能力受限场景下执行神经网络的训练任务,从而提高神经网络的训练效率,拓展神经网络的训练方法的适用范围。
在一种可能的设计方法中,上述将经过预处理后的第一训练数据量化为第二训练数据,可以包括:根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据。
可选地,上述根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据,可以包括:若第一训练数据小于或等于0,则第二训练数据等于0;若第一训练数据大于或等于第一饱和阈值,则第二训练数据等于第一饱和阈值;若第一训练数据大于0且小于第一饱和阈值,则第二训练数据根据如下公式确定:
在一种可能的设计方法中,上述神经网络的训练方法还可以包括:利用第二权重矩阵和第三回传误差,计算第四回传误差。其中,第四回传误差为第一处理层的前一层的回传误差。
在一种可能的设计方法中,上述神经网络的训练方法还可以包括:根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,上述根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,可以包括:将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
可选地,上述根据第一饱和阈值和阈值更新量,计算第二饱和阈值,可以包括:根据如下公式,计算第二饱和阈值:t2=t1-rt×tupdate。其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
第三方面,提供一种神经网络的训练装置。其中,该神经网络包括多个处理层,该多个处理层包括第一处理层以及一个或多个后级处理层,该第一处理层用于执行该神经网络的训练任务。该神经网络的训练装置包括:数据量化电路、权重量化电路、误差量化电路、卷积电路和接收电路。其中,数据量化电路,用于将经过预处理后的第一训练数据量化为第二训练数据;其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽。权重量化电路,用于将第一权重矩阵量化为第二权重矩阵;其中,第二权重矩阵的位宽小于第一权重矩阵的位宽。卷积电路,用于利用第二训练数据和第二权重矩阵,得到第一中间结果;其中,第一中间结果依次经过一个或多个后级处理层处理后,最终得到第一回传误差。接收电路,用于接收第二回传误差;其中,第二回传误差为第一回传误差经过一个或多个后级处理层处理后得到的误差。误差量化电路,用于将第二回传误差量化为第三回传误差;其中,第三回传误差的位宽小于第二回传误差的位宽。卷积电路,还用于利用第二训练数据和第三回传误差,计算第三权重矩阵;其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
在一种可能的设计中,上述数据量化电路,还用于根据第一饱和阈值,将第一训练数据量化为第二训练数据。
可选地,数据量化电路,还用于若第一训练数据小于或等于0,则将第二训练数据置为0。数据量化电路,还用于若第一训练数据大于或等于第一饱和阈值,则将第二训练数据置为第一饱和阈值。数据量化电路,还用于若第一训练数据大于0且小于第一饱和阈值,则根据如下公式确定第二训练数据:其中,d2为第二训练数据,d1为第一训练数据,t1为第一饱和阈值,Sd为训练数据的量化阶数,运算符号表示向下取整。
在一种可能的设计中,上述卷积电路,还用于利用第二权重矩阵和第三回传误差,计算第四回传误差。其中,第四回传误差为第一处理层的前一层的回传误差。
在一种可能的设计中,上述数据量化电路,还用于根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,上述数据量化电路,还用于将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
可选地,上述数据量化电路,还用于根据如下公式,计算第二饱和阈值:t2=t1-rt×tupdate。其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
第四方面,提供一种神经网络的训练装置。该神经网络包括多个处理层,多个处理层包括第一处理层,第一处理层为神经网络的最后一层。该第一处理层用于执行该神经网络的训练任务。该神经网络的训练装置包括:数据量化电路、权重量化电路、误差量化电路和卷积电路。其中,数据量化电路,用于将经过预处理后的第一训练数据量化为第二训练数据;其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽。权重量化电路,用于将第一权重矩阵量化为第二权重矩阵;其中,第二权重矩阵的位宽小于第一权重矩阵的位宽。卷积电路,用于利用第二训练数据和第二权重矩阵,得到第一回传误差。误差量化电路,还用于将第一回传误差量化为第三回传误差;其中,第三回传误差的位宽小于第一回传误差的位宽。卷积电路,还用于利用第二训练数据和第三回传误差,计算第三权重矩阵;其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
在一种可能的设计中,上述数据量化电路,还用于根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据。
可选地,上述数据量化电路,还用于若第一训练数据小于或等于0,则将第二训练数据置为0。数据量化电路,还用于若第一训练数据大于或等于第一饱和阈值,则将第二训练数据置为第一饱和阈值。数据量化电路,还用于若第一训练数据大于0且小于第一饱和阈值,则根据如下公式确定第二训练数据:其中,d2为第二训练数据,d1为第一训练数据,t1为第一饱和阈值,Sd为训练数据的量化阶数,运算符号表示向下取整。
在一种可能的设计中,上述卷积电路,还用于利用第二权重矩阵和第三回传误差,计算第四回传误差;其中,第四回传误差为第一处理层的前一层的回传误差。
在一种可能的设计中,上述数据量化电路,还用于根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,数据量化电路,还用于将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
可选地,数据量化电路,还用于根据如下公式,计算第二饱和阈值:t2=t1-rt×tupdate。其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
第五方面,提供一种训练装置,包括:处理器,该处理器与存储器耦合;存储器,用于存储计算机程序。该处理器,用于执行存储器中存储的计算机程序,使得该训练装置执行上述第一方面和/或第二方面中任一种可能的实现方式所述的神经网络的训练方法。
在一种可能的设计中,第五方面所述的装置还包括一个或多个收发器。所述收发器用于支持所述训练装置与其他设备通信,实现接收和/或发送功能。例如,接收外部存储器发送的第一训练数据、第一权重矩阵、第一饱和阈值等,或者向外部存储器发送第二权重矩阵、第二饱和阈值等。所述处理器包括一个或多个处理器,被配置为支持第五方面所述的训练装置执行上述训练方法。例如,利用第二训练数据和第二权重矩阵得到第一中间结果或识别结果、利用第二训练数据和第三回传误差计算权重矩阵更新量、新权重矩阵、第四回传误差等。
可选的,所述存储器还可以包括一个或多个存储器,所述存储器与处理器耦合,用于存储该装置必要的程序指令和/或数据。其中,所述存储器与处理器耦合,是指存储器与处理器之间存在信号连接。所述一个或多个存储器可以和处理器集成在一起,也可以与处理器分离设置,本申请对此不作限定。
所述训练装置可以为客户端、服务器、大型计算机等训练设备。所述收发器可以是所述训练装置的收发电路。可选的,所述收发器也可以为输入/输出电路或者接口。
所述训练装置还可以为设置于上述训练设备中的软件或软硬件组合,如设置于上述训练设备中的一个或多个训练芯片。所述收发器可以为该训练芯片的输入/输出电路或者接口。
第六方面,提供一种可读存储介质,存储有程序或指令,当程序或指令在计算机或处理器上运行时,使得计算机或处理器执行如第一方面和/或第二方面中任一种可能的实现方式所述的神经网络的训练方法。
第七方面,提供一种计算机程序产品,包括计算机程序代码,当计算机程序代码在计算机或处理器上运行时,使得计算机或处理器执行如第一方面和/或第二方面中任一种可能的实现方式所述的神经网络的训练方法。
附图说明
图1为云端训练客户端推断的神经网络的示意图;
图2为离线校准在线量化的神经网络的示意图;
图3为本申请实施例提供的神经网络的训练装置的结构示意图一;
图4为本申请实施例提供的神经网络的训练场景一的示意图;
图5为本申请实施例提供的神经网络的训练方法一的流程示意图;
图6为本申请实施例提供的第一处理层的结构示意图一;
图7为本申请实施例提供的训练数据的量化方法的示意图;
图8为本申请实施例提供的神经网络的训练场景二的示意图;
图9为本申请实施例提供的神经网络的训练方法二的流程示意图;
图10为本申请实施例提供的第一处理层的结构示意图二;
图11为本申请实施例提供的神经网络的训练装置的结构示意图二;
图12为本申请实施例提供的神经网络的训练装置的结构示意图三。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例的技术方案可以应用于客户端等计算能力受限的单一设备组成的神经网络的训练/推断系统,但并不限于此。本申请将围绕可包括多个组件、电路等的单一设备来呈现各个方面、实施例或特征。应当理解和明白的是,该单一设备还可以包括另外的组件、电路等,并且/或者可以并不包括结合附图讨论的所有组件、电路等。此外,还可以使用这些方案的组合。
在本申请实施例中,神经网络是一个能够学习、总结归纳的算法网络,可以神经网络软件和/或硬件的形式被内置于上述单一设备中,如神经网络程序、可执行脚本等。神经网络能够通过对训练数据的实验运用来学习和归纳总结,以提高神经网络的识别能力。通常来说,一个神经网络由多层神经元(算子)组成,如输入层、中间层和输出层。其中,每一层有多个输入和输出,以及一个或多个权重(weight)。其中,多个输入、多个输出和多个权重可以采用向量(vector)或矩阵(matrix)的方式表示。某一层的输出结果,等于该层输入和权重的相加或相乘等数学运算的结果,通常涉及矩阵乘法运算,也就是涉及大量的乘加累和运算。
在本申请实施例中,通过训练数据对各个层的权重进行优化而改进算法模型的过程,称为训练过程。使用一个训练数据执行一次训练任务,并对各个层的权重实现一次校正的过程,称为一次训练迭代。
上述一次训练迭代可以包括前向过程和反向过程。在前向过程中,神经网络对输入的训练数据和各层权重矩阵进行逐层处理,最终得到该训练数据对应的识别结果。例如,第一个中间层利用输入层提供的训练数据和第一个中间层的权重矩阵,计算第一个中间层的输出数据。然后,第二个中间层将第一个中间层的输出数据作为自己的训练数据,利用第二个中间层的权重矩阵计算第二个中间层的输出数据,作为第三个中间层的训练数据。以此类推,输出层将倒数第一个中间层的输出数据作为训练数据,利用输出层的权重矩阵计算输出层的输出数据,也就是整个神经网络的识别结果。然后,将该识别结果与人为标签的偏差作为输出层的回传误差,也就是整个神经网络的回传误差,并启动反向过程。
在反向过程中,神经网络对输入的回传误差和各层权重矩阵进行逐层处理,得到各层权值矩阵更新量(又称为梯度,gradient),并根据该更新量和各层原权重矩阵最终得到各层的新权重矩阵,从而完成神经网络的一次训练迭代。例如,输出层利用整个神经网络的回传误差和输出层的权重矩阵,计算输出层的权重矩阵更新量和新权重矩阵,以及倒数第一个中间层的回传误差。然后,倒数第一个中间层利用倒数第一个中间层的回传误差和权重矩阵,计算倒数第一个中间层的权重矩阵更新量和新权重矩阵,以及倒数第二个中间层的回传误差。以此类推,直到得到神经网络的每个层的新权重矩阵。
从上述过程可以看出,在神经网络的训练迭代过程中,通常会涉及到矩阵乘法运算。其中,矩阵乘法运算涉及大量的乘加运算。随着神经网络的规模越来越大,越来越复杂,训练过程中涉及的矩阵乘法的数量也会越来越大。因此,一方面,对于客户端等计算能力受的设备或装置,没有足够的计算能力完成神经网络的训练迭代任务,限制了神经网络的训练方法的适用范围。另一方面,对于服务器、大型计算机等计算能力强大的设备或装置,也会由于大量的矩阵乘法运算而降低神经网络的训练效率。
在本申请实施例中,“示例”、“例如”用于表示作例子、例证或说明。本申请中被描述为“示例”、“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。本申请实施例中,“的(of)”,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是类似的或一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。为便于理解本申请实施例,首先以图3中示出的训练装置300为例,详细说明适用于本申请实施例提供的神经网络的训练装置。
如图3所示,训练装置300包括一个或多个处理器,如处理器301和/或处理器307,至少一个通信接口,如通信接口304,以及通信线路302。可选的,通信装置300还可以包括存储器303。下面以处理器301为例进行说明。
处理器301可以是一个通用中央处理器(central processing unit,CPU),微处理器,专用集成电路(application-specific integrated circuit,ASIC),FPGA(FieldProgrammable Gate Array,即现场可编程门阵列),或一个或多个集成了多种处理电路功能(如CPU+ASIC)的集成电路。
通信线路302可包括一个或多个通路,用于连接不同组件。
通信接口304,可以是收发电路,用于与其他设备或通信网络通信,如云计算网络、以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。例如,所述收发电路可以是收发器、收发机一类的装置。可选的,所述通信接口304也可以是处理器301的输入/输出(input/output,I/O)电路,用以实现处理器301的信号输入和信号输出。
存储器303可以是具有存储功能的装置。例如可以是只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器303可以是独立存在,并通过通信线路302与处理器301相连接。当然,存储器303也可以和处理器301集成在一起。
其中,存储器303用于存储执行本申请方案的计算机执行指令,并由处理器301来控制执行。处理器301用于读取并执行存储器303中存储的计算机指令(如用于CPU)或者配置文件(如用于FPGA),从而实现本申请实施例提供的神经网络的训练方法。
或者,可选的,本申请实施例中,也可以是处理器301执行本申请下述实施例提供的神经网络的训练方法中的相关处理功能,通信接口304负责与其他设备或通信网络通信,本申请实施例对此不作具体限定。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器301可以包括一个或多个CPU,例如图3中的CPU0和CPU1。
在具体实现中,作为一种实施例,训练装置300也可以包括多个处理器,例如图3中的处理器301和处理器307。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,训练装置300还可以包括输出设备305和输入设备306。输出设备305和处理器301通信,可以以多种方式来输出信息。例如,输出设备305可以是触摸屏,液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,投影仪(projector),或打印机(printer)等。输入设备306和处理器301通信,可以以多种方式接收用户的输入。例如,输入设备306可以是鼠标、键盘、触摸屏设备或传感设备等。
上述训练装置300有时也可以称为训练设备,其可以是一个通用设备或者是一个专用设备。例如,该训练设备可以是客户端、台式机、便携式电脑、网络服务器、掌上电脑(personal digital assistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备、或具有图3中类似结构的单一设备。当然,上述训练装置300也可以是设置于上述各单一设备内部的软件和/或硬件实体,如用于执行本申请实施例提供的训练任务的芯片或芯片系统。本申请实施例不限定训练装置300的类型。
应理解,图3仅为便于理解而示例的简化示意图,该神经网络的训练装置中还可以包括其他组件、电路或装置,图3中均未予以画出。
在本申请实施例中,图3所示的训练装置300,可以针对图4所示的训练场景一,执行图5所示的神经网络的训练方法。
如图4所示,该神经网络包括多个处理层,该多个处理层包括第一处理层以及一个或多个后级处理层。该神经网络的训练方法由第一处理层执行。例如,该第一处理层可以为神经网络的某一个包含有矩阵乘法运算的中间层或中间层集合。其中,该中间层集合可以包括多个中间层,该多个中间层中存在至少一个包含有矩阵乘法运算的中间层。
需要说明的是,在图4所示的第一处理层之前,还可以存在0个、1个或多个前级处理层。该1个或多个前级处理层可以包含矩阵乘法运算,也可以不包含矩阵乘法运算,本申请实施例对此不作限定。
示例性地,图6为图4所示的训练场景一下的第一处理层的一个示例。如图6所示,该第一处理层包括:卷积电路、数据量化电路、权重量化电路、误差量化电路。其中,卷积电路包含矩阵乘法运算,数据量化电路、权重量化电路、误差量化电路分别对输入第一处理层的第一训练数据、第一权重矩阵、第二回传误差执行量化操作。量化操作的具体实现方式可以参见下述S501-S506中的相关描述,此处不再赘述。
此外,图4所示的第一处理层还可以包括不包含矩阵乘法运算的附属处理子层。示例性地,在图6所示的第一处理层的示例中,第一处理层还可以包括批量归一化(batchnormalization,BN)子层、修正线性单元(rectified linear unit,ReLU)子层等附属处理子层,用于对第一训练数据作预处理操作,或者对第一处理层输出给前一层的回传误差作预处理操作。上述预处理操作可以包括批量归一化处理、线性修正处理、均值、方差、平方根、统计最大值等。
需要说明的是,鉴于附属处理子层的计算量较小,在本申请实施例中,将只包含有矩阵乘法运算的第一处理层,以及既包含有矩阵乘法运算,也包含有附属处理子层的第一处理层,统称为第一处理层。
此外,图6所示的第一处理层的示例只包含一个卷积电路。在本申请实施例中,图4所示的训练场景一下的第一处理层也可以包括多个卷积电路,还可以包括一种或多种其他类型的包含有矩阵乘法运算的处理子层。对于第一处理层中包含的包含有矩阵乘法运算的处理子层的种类和数量,本申请实施例不做任何限定。
参考图4和图6,如图5所示,该神经网络的训练方法可以包括如下步骤:
S501,将经过预处理后的第一训练数据量化为第二训练数据。
示例性地,如图4所示,第一训练数据为第一处理层的前一层的输出数据。例如,若第一处理层为第一个中间层,则第一训练数据可以为输入层的输出数据。又例如,若第一处理层不是第一个中间层,则第一训练数据为该第一处理层的前一个中间层的输出数据。
在本申请实施例中,第二训练数据的位宽小于第一训练数据的位宽。也就是说,第二训练数据的精度低于第一训练数据的精度。例如,第一训练数据为32位(bit)的浮点(floating-point)数,第二训练数据为8位的定点(fixed-point)数。
在一种可能的设计方法中,上述S501将经过预处理后的第一训练数据量化为第二训练数据,可以包括如下步骤:根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据。
其中,第一饱和阈值可以事先配置,也可以根据之前的训练数据的取值范围确定,还可以根据本次训练任务所使用的部分或全部训练数据的取值范围的统计结果确定,此处不做限定。
在本申请实施例中,第一饱和阈值可以是一个具体数值。例如,对于取值范围在[-6000,6125]的32位训练数据,第一饱和阈值可以设置为6000。
容易理解,第一饱和阈值也可以为一个比值。可选地,该比值可以为实际用于第一训练数据的饱和判决的阈值与训练数据的最大值的百分比,如90%、95%、100%等。例如,最大值为5000,百分比为95%,则实际用于训练数据饱和判决的阈值为5000*95%=4750。进一步地,当训练数据有正有负时,该最大值可以为训练数据的绝对值的最大值。
可选地,上述根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据,可以包括:
若第一训练数据小于或等于0,则第二训练数据等于0;
若第一训练数据大于或等于第一饱和阈值,则第二训练数据等于第一饱和阈值;
若第一训练数据大于0且小于第一饱和阈值,则第二训练数据根据如下公式确定:
实际应用中,量化阶数Sd可以为正整数,通常可以为2的整数次幂,其取值与第二训练数据的位宽b2可以满足如下公式:例如,量化阶数为256,对应的第二训练数据的位宽为8为,取值范围可以为0至255。当然,若要求第二训练数据为有符号数,则第二训练数据的取值范围也可以为-127至127。
图7为本申请实施例提供的一种训练数据的量化方法的示意图。如图7所示,对于小于或等于0的第一训练数据,如a、b和0,量化后的第二训练数据为0;对于大于或等于第一饱和阈值的第一训练数据,如c、和d,量化后的第二训练数据为最大量化值255;对于取值大于0且小于第一饱和阈值的其他训练数据,如e和f,则按照公式(1)进行量化,且量化后的第二训练数据大于0且小于最大量化阶数,如g和h。
在本申请实施例中,对于将取值大于0且小于第一饱和阈值的训练数据量化为大于0且小于最大量化阶数的第二训练数据,可以采用按比例缩小的线性量化的方式确定第二训练数据的取值。示例性地,假定第一饱和阈值为5000,第一训练数据为3000,量化阶数为256,第二训练数据的取值范围为0至255,则按照上述公式(1),对应的第二训练数据为:
需要说明的是,对于将取值大于0且小于第一饱和阈值的训练数据量化为大于0且小于最大量化阶数的第二训练数据,也可以采用非线性量化方式,如双曲正切量化方式或其他方式,确定第二训练数据的取值。本申请实施例对此不做限定。
此外,上述向下取整运算也可以替换为截尾取整运算。例如,小数158.83和158.12的截尾取整值均为158。
示例性地,上述S501,将经过预处理后的第一训练数据量化为第二训练数据,可以由图6所示的数据量化电路执行。可选地,在数据量化电路之前,上述第一处理层还可以包括一个或多个附属处理子层。也就是说,上述S501,将经过预处理后的第一训练数据量化为第二训练数据,还可以包括由一个或多个附属处理子层执行的预处理操作。如图6所示,在数据量化电路之前,第一处理层还包括BN子层和ReLU子层。相应地,上述预处理可以包括归一化处理和线性修正处理,下面分别说明。
示例性地,在前向过程中,数据量化电路用于计算第一训练数据的均值和方差,然后利用均值和方差执行如下归一化处理:
其中,dBN_out为BN子层输出的归一化训练数据,也就是ReLU子层的输入数据,dBN_in为BN子层的输入数据,也就是上述第一训练数据,运算符号mean()表示求平均值,运算符号var()表示求方差,运算符号sqrt()表示求平方根。鉴于归一化处理没有改变BN子层的输出数据的位宽,dBN_out与dBN_in一样,也是高精度数据。
此外,BN子层在计算输入数据的均值和方差的同时,还可以通过随路计算的方式得到输入数据的最大值。所述随路计算,是指不需要从外部存储重新读入数据,而是在每次读取数据的过程中依次进行比较就能得到这些数据的最大值,从而降低资源开销。
示例性地,上述ReLU子层用于对BN层输出的归一化训练数据执行线性修正处理和随路量化处理。具体实现可以参考现有实现方式,本申请实施例不再赘述。
需要说明的是,在上述第一处理层还包括附属处理子层,且该附属处理子层与数据量化电路相邻的情况下,上述数据量化电路也可以与该附属处理子层合并为一个处理子层或一个处理电路,或者,上述数据量化操作由该附属处理子层,如ReLU子层完成,本申请实施例不作限定。
S502,将第一权重矩阵量化为第二权重矩阵。
其中,第二权重矩阵的位宽小于第一权重矩阵的位宽。也就是说,第二权重矩阵的精度低于第一权重矩阵的精度。例如,第一权重矩阵为32位(bit)的浮点数,第二权重矩阵为10位的定点数。
示例性地,如图6所示,S502,将第一权重矩阵量化为第二权重矩阵,可以由权重量化电路执行。
可选地,上述S502,将第一权重矩阵量化为第二权重矩阵,可以包括:
根据如下公式,将第一权重矩阵量化为第二权重矩阵:
其中,w2为第二权重矩阵,w1为第一权重矩阵,Sw为权重矩阵的量化阶数,运算符号tanh(w1)表示双曲正切运算。
容易理解,权重矩阵的量化也可以参考上述第一训练数据的量化过程进行量化,此处不再赘述。
需要说明的是,在本申请实施例中,S502可以在S501之后执行,也可以在S501之前执行,本申请实施例对此不做限定。
S503,利用第二训练数据和第二权重矩阵,得到第一中间结果,也就是第一处理层的识别结果。
在一种可能的设计方法中,上述S503利用第二训练数据和第二权重矩阵,得到第一中间结果,可以包括:利用第二训练数据和第二权重矩阵,基于卷积处理,得到第一中间结果。
其中,第一中间结果依次经过一个或多个后级处理层处理,以及比较处理后,最终得到第一回传误差,也就是整个神经网络的回传误差。
示例性地,如图6所示,第一处理层输出的第一中间结果,作为第一处理层的后一级后级处理层的第一训练数据,以执行该后一级处理层的前向过程。以此类推,直到神经网络的输出层输出最终识别结果。然后,将最终识别结果与人为标签之间的偏差作为整个神经网络的回传误差,即第一回传误差。
需要说明的是,上述第一回传误差的计算可以涉及多个处理层,如第一处理层、第一处理层的一个或多个后级处理层(包括输出层)的训练数据和权重矩阵的矩阵乘法运算。一方面,鉴于各处理层的训练数据和权重矩阵都是量化的训练数据和权重矩阵,位宽较小,可以降低计算第一回传误差的工作量。另一方面,鉴于乘法运算中,乘积的位宽为乘数位宽和被乘数的位宽之和。因此,在本申请实施例中,可以将第一回传误差视为高精度回传误差。
然后,即可启动整个神经网络的反向训练过程。具体地,对于第一处理层,该神经网络的训练方法还包括如下步骤:
S504,接收第二回传误差。
其中,第二回传误差为第一回传误差经过一个或多个后级处理层的反向处理后得到的回传误差。
具体地,参考图6,按照与前向训练过程相反的方向,依次执行第一处理层之后的各后级处理层的反向训练过程。与前向训练过程中根据各层的训练数据和权重矩阵得到各层识别结果,且后一层的第一训练数据即为前一层的识别结果不同,在反向训练过程中,根据各层的输入回传误差和权重矩阵计算各层的新权重矩阵,且前一层的输入回传误差为后一层的输出回传误差。
需要说明的是,上述第二回传误差的计算也涉及到第一处理层的各后级处理层的量化后输入回传误差和量化后权重矩阵的矩阵乘法运算。一方面,鉴于各后级处理层量化后的回传误差和权重矩阵的位宽较小,可以降低计算各后级处理层的输出回传误差的计算量。另一方面,与第一回传误差类似,第一处理层的各后级处理层的输出回传误差也均可视为高精度回传误差。因此,为了进一步降低计算量,第一处理层还需要对第二回传误差进行量化。
S505,将第二回传误差量化为第三回传误差。
其中,第三回传误差的位宽小于第二回传误差的位宽。也就是说,第三回传误差的精度低于第二回传误差的精度。例如,第二回传误差为32位(bit)的浮点数,第三回传误差为12位的定点数。
示例性地,如图6所示,上述S505,将第二回传误差量化为第三回传误差误差,可以由误差量化电路执行。具体地,将第二回传误差量化为第三回传误差,可以采用S501中所述的将第一训练数据量化为第二训练数据的量化方法,也可以采用S502中所述的将第一权重矩阵量化为第二权重矩阵的量化方法,还可以采用其他的量化方法,本申请实施例对此不作限定。
S506,利用第二训练数据和第三回传误差,计算第三权重矩阵。
其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。也就是说,第三权重矩阵与第一权重矩阵具有同样的精度,从而可以确保推断任务的准确性。
示例性地,S506利用所述第二训练数据和所述第三回传误差,计算第三权重矩阵,可以包括如下步骤:
首先,利用第二训练数据和第三回传误差,计算权重更新矩阵。
其中,计算权重更新矩阵涉及第二训练数据与第三回传误差之间的矩阵乘法。鉴于第二训练数据与第三回传误差均为低精度数据,可以降低计算权重更新矩阵的计算量。
然后,利用权重更新矩阵和第一权重矩阵,计算第三权重矩阵。
示例性地,上述利用权重更新矩阵和第一权重矩阵,计算第三权重矩阵,可以具体实现为如下步骤:
根据如下公式,计算第三权重矩阵:
w3=w1-rw×wupdate。 (4)
其中,w3为第三权重矩阵,w1为第一权重矩阵,wupdate为权重更新矩阵,rw为权重学习率,可以实现配置,0<rw<1。
在本申请实施例中,权重更新矩阵可以视为第一处理层本次训练迭代之前的权重矩阵,即第一权重矩阵,与第一处理层本次训练迭代之后的权重矩阵,即第三矩阵之间的偏差。因此,可以利用权重更新矩阵和第一权重矩阵计算高精度的第三权重矩阵,从而完成第一处理层的一次训练迭代,即将第一权重矩阵更新为第三权重矩阵。容易理解,第三权重矩阵可以用于第一处理层的下一次训练迭代,也可以用于神经网络的推断任务,此处不再赘述。
参考图4,倘若第一处理层还存在一个或多个前级处理层,除完成本层权重矩阵的训练迭代之外,还需要为前一处理层提供回传误差。因此,在一种可能的设计方法中,图5所示的神经网络的训练方法还可以包括如下步骤:
利用第二权重矩阵和第三回传误差,计算第四回传误差。
其中,第四回传误差为第一处理层的前一处理层的回传误差,其计算方法可以参考第一回传误差的计算方法,此处不再赘述。
可选地,参考图6,在卷积电路之前,倘若上述第一处理层还包括一个或多个附属处理子层,如BN子层和ReLU子层,则上述利用第二权重矩阵和第三回传误差,计算第四回传误差,还可以反向归一化处理和反向线性修正处理,具体实现可以参考现有实现方式,此处不再赘述。
鉴于不同训练数据的取值范围通常是动态变化的,还需要相应调整上述量化参数,如第一饱和阈值,以便尽可能地降低量化过程中引入的量化误差。因此,在一种可能的设计方法中,图5所示的神经网络的训练方法还可以包括如下步骤:
根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,上述根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,可以包括:将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
示例性地,可以根据如下公式,计算阈值更新量:
其中,tupdate为阈值更新量,S为第二训练数据d2中取值等于第一饱和阈值t1的第二训练数据d2,i对应的元素编号i组成的集合,即S={i|d2,i=t1},e3,i为第三回传误差e3中对应的元素编号为i的回传误差。
可选地,上述根据第一饱和阈值和阈值更新量,计算第二饱和阈值,可以包括:
根据如下公式,计算第二饱和阈值:
t2=t1-rt×tupdate。 (6)
其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率(learning rate of threshold),0<rt<1。
图5所示的神经网络的训练方法,能够将位宽较大的第一训练数据和第一权重矩阵、分别量化为位宽较小的第二训练数据和第二权重矩阵,并利用位宽较小的第二训练数据和第二权重矩阵得到第一中间结果、第一回传误差和第二回传误差,然后,将位宽较大的第二回传误差量化为位宽较小的第三回传误差,并利用位宽较小的第二训练数据和第三回传误差计算位宽较大的第三权重矩阵,能够在确保每次训练迭代前后的权重矩阵具有相同精度的前提下,大幅降低执行神经网络的训练任务的过程中的矩阵乘法的计算量,以便在客户端等计算能力受限场景下执行神经网络的训练任务,从而提高神经网络的训练效率,拓展神经网络的训练方法的适用范围。
在本申请实施例中,图3所示的训练装置300,也可以针对图8所示的训练场景二,执行图9所示的神经网络的训练方法。
如图8所示,该神经网络包括多个处理层,该多个处理层包括第一处理层,该第一处理层为神经网络的最后一层。该神经网络的训练方法由第一处理层执行。例如,该第一处理层可以为整个神经网络的输出层,且该输出层包含有矩阵乘法运算,或者,该第一处理层也可以为由整个神经网络的输出层,以及一个或多个中间层组成的处理层集合,且在该处理层集合中,该输出层和/或该一个或多个中间层包含有矩阵乘法运算。
需要说明的是,与图4所示的训练场景一下的第一处理层不同,图8所示的训练场景二下的第一处理层为神经网络的最后一层。也就是说,在图8所示的训练场景二下的第一处理层之后,比较电路之前,不存在其他包含有矩阵乘法运算的处理层。有鉴于此,结合图4和图8,对于图8所示的第一处理层,输入的回传误差为第一回传误差,而不是第二回传误差。当然,也可以视为:对于图8所示的第一处理层,第一回传误差与第二回传误差相同。
此外,在图8所示的第一处理层之前,还可以存在一个或多个包含矩阵乘法运算的前级处理层。
示例性地,图10为图8所示的训练场景二下的第一处理层的一个示例。如图10所示,该第一处理层包括:卷积电路、数据量化电路、权重量化电路、误差量化电路。其中,卷积电路包含矩阵乘法运算,数据量化电路、权重量化电路、误差量化电路分别对输入第一处理层的第一训练数据、第一权重矩阵、第二回传误差执行量化操作。量化操作的具体实现方式可以参见下述S901-S905中的相关描述,此处不再赘述。
参考图8和图10,如图9所示,该神经网络的训练方法可以包括如下步骤:
S901,将经过预处理后的第一训练数据量化为第二训练数据。其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽。
S902,将第一权重矩阵量化为第二权重矩阵。其中,第二权重矩阵的位宽小于第一权重矩阵的位宽。
需要说明的是,S901-S902可以参考S501-S502,此处不再赘述。
S903,利用第二训练数据和第二权重矩阵,得到第一回传误差。
参考图8和图10,由于第一处理层为神经网络的最后一层,第一处理层的输出结果也就是该神经网络的识别结果。计算该识别结果与人为标签之间的偏差,即可得到第一处理层的第一回传误差。
示例性地,如图10所示,可以由比较电路计算第一回传误差。
S904,将第一回传误差量化为第三回传误差。其中,第三回传误差的位宽小于第一回传误差的位宽。
示例性地,S904,将第一回传误差量化为第三回传误差可以由图10所示的误差量化电路执行,具体实现可以参考S505中将第二回传误差量化为第三回传误差的量化方法的相关描述,此处不再赘述。
S905,利用第二训练数据和第三回传误差,计算第三权重矩阵。其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
具体地,S905的实现方式可以参考S506中的相关描述,此处不再赘述。
参考图8,鉴于第一处理层之前,还存在其他前级处理层,第一处理层还需要为上述前级处理层提供回传误差。因此,在一种可能的设计方法中,上述神经网络的训练方法还可以包括:利用第二权重矩阵和第三回传误差,计算第四回传误差。其中,第四回传误差为第一处理层的前一层的回传误差。具体计算方法可以参考训练场景一的方法实施例的相关描述,此处不再赘述。
在一种可能的设计方法中,上述神经网络的训练方法还可以包括:根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,上述根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,可以包括:将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
示例性地,可以根据如下公式,计算阈值更新量:
其中,tupdate为阈值更新量,S为第二训练数据d2中取值等于第一饱和阈值t1的第二训练数据d2,i对应的元素编号i组成的集合,即S={i|d2,i=t1},e3,i为第三回传误差e3中对应的元素编号为i的回传误差。
可选地,上述根据第一饱和阈值和阈值更新量,计算第二饱和阈值,可以包括:根据如下公式,计算第二饱和阈值:
t2=t1-rt×tupdate。
其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
图9所示的神经网络的训练方法,能够将位宽较大的第一训练数据和第一权重矩阵、分别量化为位宽较小的第二训练数据和第二权重矩阵,并利用位宽较小的第二训练数据和第二权重矩阵得到第一回传误差,然后,将位宽较大的第一回传误差量化为位宽较小的第三回传误差,并利用位宽较小的第二训练数据和第三回传误差计算位宽较大的第三权重矩阵,能够在确保每次训练迭代前后的权重矩阵具有相同精度的前提下,大幅降低执行神经网络的训练任务的过程中的矩阵乘法的计算量,可以由客户端等计算能力受限的训练装置上执行,以便拓展神经网络的训练方法的适用范围,也可以由云端服务器等计算能力不受限的训练装置执行,以便大幅提高神经网络的训练效率。
需要说明的是,在本申请实施例中,上述量化后数据或参数,如第二训练数据、第二权重矩阵、第三回传误差等,可以存储在第一处理层内部,也可以存储在外部缓存中,本申请实施例对此不作限定。
例如,若第一处理层内部可用存储空间较大,则可以将第二训练数据、第二权重矩阵、第三回传误差中的至少一项存储在第一处理层内部,从而避免重复执行量化操作,或需要从外部缓存中再次读入而浪费时间,以提高神经网络的训练效率。
又例如,若第一处理层内部可用存储空间不足,则可以将第二训练数据、第二权重矩阵、第三回传误差中的至少一项存储在外部缓存中,节省第一处理层的内部空间,以便为矩阵乘法运算预留更多资源,从而扩展神经网络的训练方法的适用范围。
需要说明的是,在本申请实施例中,上述第一处理层可以软件实现,也可以硬件实现,还可以软硬件结合实现。可选地,鉴于卷积电路涉及矩阵乘法运算,计算量较大,卷积电路可以通过硬件实现,如可以通过ASIC、FPGA等实现。上述各种量化操作,如将第一训练数据量化为第二训练数据、将第一权重矩阵量化为第二权重矩阵、将第二回传误差或第一回传误差量化为第三回传误差,可以由软件实现,也可以由硬件实现,还可以软硬件结合实现。可选地,第一处理层中其他附属子层,如BN子层、ReLU子层,以及比较电路等计算量较小的子层或电路,也可以通过软件实现。具体地,可以由一个基于指令集的处理器来实现,如通过CPU、数字信号处理器DSP或者图形处理器(graphic processing unit,GPU)等处理器来实现。
需要说明的是,图4和/或图6所示的第一处理层,以及图8和/或图10所示的第一处理层,可以为同一个神经网络的不同组成部分。相应地,图5和图9所示的神经网络的训练方法也可以为同一个神经网络的训练方法不同组成部分,从而可以结合使用。
以上结合图4-图10详细说明了本申请实施例的神经网络的训练方法。以下结合图11-图12详细说明本申请实施例提供的神经网络的训练装置。图11为本申请实施例提供的适用于训练场景一的神经网络的训练装置。图12为本申请实施例提供的适用于训练场景二的神经网络的训练装置。下面分别予以说明。
如图11所示,神经网络的训练装置1100可以包括多个处理层,该多个处理层包括第一处理层以及一个或多个后级处理层,该第一处理层用于执行该神经网络的训练任务。该神经网络的训练装置包括:数据量化电路1101、权重量化电路1102、误差量化电路1103、卷积电路1104和接收电路1105。
其中,数据量化电路1101,用于将经过预处理后的第一训练数据量化为第二训练数据;其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽。
权重量化电路1102,用于将第一权重矩阵量化为第二权重矩阵;其中,第二权重矩阵的位宽小于第一权重矩阵的位宽。
卷积电路1104,用于利用第二训练数据和第二权重矩阵,得到第一中间结果;其中,第一中间结果依次经过一个或多个后级处理层处理后,最终得到第一回传误差。
接收电路1105,用于接收第二回传误差;其中,第二回传误差为第一回传误差经过一个或多个后级处理层处理后得到的误差。
误差量化电路1103,用于将第二回传误差量化为第三回传误差;其中,第三回传误差的位宽小于第二回传误差的位宽。
卷积电路1104,还用于利用第二训练数据和第三回传误差,计算第三权重矩阵;其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
在一种可能的设计中,数据量化电路1101,还用于根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据。
可选地,数据量化电路1101,还用于若第一训练数据小于或等于0,则将第二训练数据置为0。数据量化电路1101,还用于若第一训练数据大于或等于第一饱和阈值,则将第二训练数据置为第一饱和阈值。数据量化电路1101,还用于若第一训练数据大于0且小于第一饱和阈值,则根据如下公式确定第二训练数据:
在一种可能的设计中,卷积电路1104,还用于利用第二权重矩阵和第三回传误差,计算第四回传误差。其中,第四回传误差为第一处理层的前一层的回传误差。
在一种可能的设计中,数据量化电路1101,还用于根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,数据量化电路1101,还用于将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
可选地,数据量化电路1101,还用于根据如下公式,计算第二饱和阈值:
t2=t1-rt×tupdate。
其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
可选地,图11所示的神经网络的训练装置1100还可以包括发送电路(图11中未示出),以便神经网络的训练装置1100也能够向云计算设备或其他神经网络的训练装置发送信号,以便实现双向通信。
可选地,图11所示的数据量化电路1101、权重量化电路1102、误差量化电路1103、卷积电路1104的功能也可以由一个或多个处理器执行,本申请实施例对此不作限定。
可选地,图11所示的神经网络的训练装置1100还可以包括存储电路(图11中未示出),该存储电路存储有程序或指令。当上述一个或多个处理器执行该程序或指令时,使得神经网络的训练装置1100可以执行图5所示的神经网络的训练方法。
需要说明的是,上述神经网络的训练装置1100可以是图1所示的客户端或云计算设备或图3所示的神经网络的训练装置300,也可以是设置于上述客户端、云计算设备或神经网络的训练装置300中的芯片或芯片系统,本申请实施例对此不做限定。
神经网络的训练装置1100的技术效果,可以分别参考图5所示的神经网络的训练方法的技术效果,此处不再赘述。
如图12所示,神经网络的训练装置1200包括多个处理层,多个处理层包括第一处理层,第一处理层为神经网络的最后一层。该第一处理层用于执行该神经网络的训练任务。该神经网络的训练装置1200包括:数据量化电路1201、权重量化电路1202、误差量化电路1203和卷积电路1204。
其中,数据量化电路1201,用于将经过预处理后的第一训练数据量化为第二训练数据。其中,第一训练数据为第一处理层的前一层的输出数据;第二训练数据的位宽小于第一训练数据的位宽。
权重量化电路1202,用于将第一权重矩阵量化为第二权重矩阵;其中,第二权重矩阵的位宽小于第一权重矩阵的位宽。
卷积电路1204,用于利用第二训练数据和第二权重矩阵,得到第一回传误差。
误差量化电路1203,还用于将第一回传误差量化为第三回传误差;其中,第三回传误差的位宽小于第一回传误差的位宽。
卷积电路1204,还用于利用第二训练数据和第三回传误差,计算第三权重矩阵;其中,第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且第三权重矩阵的位宽与第一权重矩阵的位宽相同。
在一种可能的设计中,数据量化电路1201,还用于根据第一饱和阈值,将经过预处理后的第一训练数据量化为第二训练数据。
可选地,数据量化电路1201,还用于若第一训练数据小于或等于0,则将第二训练数据置为0。数据量化电路1201,还用于若第一训练数据大于或等于第一饱和阈值,则将第二训练数据置为第一饱和阈值。数据量化电路1201,还用于若第一训练数据大于0且小于第一饱和阈值,则根据如下公式确定第二训练数据:
在一种可能的设计中,卷积电路1204,还用于利用第二权重矩阵和第一回传误差,计算第三回传误差;其中,第三回传误差为第一处理层的前一层的回传误差。
在一种可能的设计中,数据量化电路1201,还用于根据第二训练数据、第一饱和阈值和第三回传误差,确定阈值更新量,以及根据第一饱和阈值和阈值更新量,计算第二饱和阈值。其中,第二饱和阈值用于量化下次训练中使用的训练数据。
可选地,数据量化电路1201,还用于将第二训练数据中等于第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为阈值更新量。
可选地,数据量化电路1201,还用于根据如下公式,计算第二饱和阈值:
t2=t1-rt×tupdate。
其中,t2为第二饱和阈值,t1为第一饱和阈值,tupdate为阈值更新量,rt为阈值学习率,0<rt<1。
可选地,图12所示的神经网络的训练装置1200还可以包括发送电路(图12中未示出),以便神经网络的训练装置1200也能够向云计算设备或其他神经网络的训练装置发送信号,以便实现双向通信。
可选地,图12所示的数据量化电路1201、权重量化电路1202、误差量化电路1203、卷积电路1204的功能也可以由一个或多个处理器执行,本申请实施例对此不作限定。
可选地,图12所示的神经网络的训练装置1200还可以包括存储电路(图12中未示出),该存储电路存储有程序或指令。当上述一个或多个处理器执行该程序或指令时,使得神经网络的训练装置1200可以执行图9所示的神经网络的训练方法。
需要说明的是,上述神经网络的训练装置1200可以是图1所示的客户端或云计算设备或图3所示的神经网络的训练装置300,也可以是设置于上述客户端、云计算设备或神经网络的训练装置300中的芯片或芯片系统,本申请实施例对此不做限定。
神经网络的训练装置1200的技术效果,可以分别参考图9所示的神经网络的训练方法的技术效果,此处不再赘述。
本申请提供一种可读存储介质,存储有程序或指令,当程序或指令在计算机或处理器上运行时,使得计算机或处理器执行上述方法实施例所述的神经网络的训练方法。
本申请提供了一种计算机程序产品,包括计算机程序代码,当计算机程序代码在计算机或处理器上运行时,使得计算机或处理器执行上述方法实施例所述的神经网络的训练方法。
还应理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A、B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示下述项之一:a;b;c;a和b;a和c;b和c;a、b和c,其中a、b、c可以是单个,也可以是多个。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上实施例所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (25)
1.一种神经网络的训练方法,其特征在于,所述神经网络包括多个处理层,所述多个处理层包括第一处理层以及一个或多个后级处理层;所述神经网络的训练方法由所述第一处理层执行;所述神经网络的训练方法包括:
将经过预处理后的第一训练数据量化为第二训练数据;其中,所述第一训练数据为所述第一处理层的前一层的输出数据;所述第二训练数据的位宽小于所述第一训练数据的位宽;
将第一权重矩阵量化为第二权重矩阵;其中,所述第二权重矩阵的位宽小于所述第一权重矩阵的位宽;
利用所述第二训练数据和所述第二权重矩阵,得到第一中间结果;其中,所述第一中间结果依次经过所述一个或多个后级处理层处理后,最终得到第一回传误差;
接收第二回传误差;其中,所述第二回传误差为所述第一回传误差经过所述一个或多个后级处理层处理后得到的误差;
将所述第二回传误差量化为第三回传误差;其中,所述第三回传误差的位宽小于所述第二回传误差的位宽;
利用所述第二训练数据和所述第三回传误差,计算第三权重矩阵;其中,所述第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且所述第三权重矩阵的位宽与所述第一权重矩阵的位宽相同。
2.根据权利要求1所述的神经网络的训练方法,其特征在于,所述将经过预处理后的第一训练数据量化为第二训练数据,包括:
根据第一饱和阈值,将所述第一训练数据量化为所述第二训练数据。
3.根据权利要求1或2所述的神经网络的训练方法,其特征在于,所述神经网络的训练方法还包括:
利用所述第二权重矩阵和所述第三回传误差,计算第四回传误差;其中,所述第四回传误差为所述第一处理层的前一层的回传误差。
4.根据权利要求2所述的神经网络的训练方法,其特征在于,所述神经网络的训练方法还包括:
根据所述第二训练数据、所述第一饱和阈值和所述第三回传误差,确定阈值更新量;
根据所述第一饱和阈值和所述阈值更新量,计算第二饱和阈值;其中,所述第二饱和阈值用于量化下次训练中使用的训练数据。
5.根据权利要求4所述的神经网络的训练方法,其特征在于,所述根据所述第二训练数据、所述第一饱和阈值和所述第三回传误差,确定阈值更新量,包括:
将所述第二训练数据中等于所述第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为所述阈值更新量。
6.根据权利要求4或5所述的神经网络的训练方法,其特征在于,所述根据所述第一饱和阈值和所述阈值更新量,计算第二饱和阈值,包括:
根据如下公式,计算所述第二饱和阈值:
t2=t1-rt×tupdate,
其中,t2为所述第二饱和阈值,t1为所述第一饱和阈值,tupdate为所述阈值更新量,rt为阈值学习率,0<rt<1。
7.根据权利要求1-6中任一项所述的神经网络的训练方法,其特征在于,所述利用所述第二训练数据和所述第二权重矩阵,得到第一中间结果,包括:
利用所述第二训练数据和所述第二权重矩阵,基于卷积处理,得到所述第一中间结果。
8.一种神经网络的训练方法,其特征在于,所述神经网络包括多个处理层,所述多个处理层包括第一处理层,所述第一处理层为所述神经网络的最后一层;所述神经网络的训练方法由所述第一处理层执行;所述神经网络的训练方法包括:
将经过预处理后的第一训练数据量化为第二训练数据;其中,所述第一训练数据为所述第一处理层的前一层的输出数据;所述第二训练数据的位宽小于所述第一训练数据的位宽;
将第一权重矩阵量化为第二权重矩阵;其中,所述第二权重矩阵的位宽小于所述第一权重矩阵的位宽;
利用所述第二训练数据和所述第二权重矩阵,得到第一回传误差;
将所述第一回传误差量化为第三回传误差;其中,所述第三回传误差的位宽小于所述第一回传误差的位宽;
利用所述第二训练数据和所述第三回传误差,计算第三权重矩阵;其中,所述第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且所述第三权重矩阵的位宽与所述第一权重矩阵的位宽相同。
9.根据权利要求8所述的神经网络的训练方法,其特征在于,所述将经过预处理后的第一训练数据量化为第二训练数据,包括:
根据第一饱和阈值,将所述第一训练数据量化为所述第二训练数据。
10.根据权利要求8或9所述的神经网络的训练方法,其特征在于,所述神经网络的训练方法还包括:
利用所述第二权重矩阵和所述第三回传误差,计算第四回传误差;其中,所述第四回传误差为所述第一处理层的前一层的回传误差。
11.根据权利要求9所述的神经网络的训练方法,其特征在于,所述神经网络的训练方法还包括:
根据所述第二训练数据、所述第一饱和阈值和所述第三回传误差,确定阈值更新量;
根据所述第一饱和阈值和所述阈值更新量,计算第二饱和阈值;其中,所述第二饱和阈值用于量化下次训练中使用的训练数据。
12.根据权利要求11所述的神经网络的训练方法,其特征在于,所述根据所述第二训练数据、所述第一饱和阈值和所述第三回传误差,确定阈值更新量,包括:
将所述第二训练数据中等于所述第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为所述阈值更新量。
13.根据权利要求11或12所述的神经网络的训练方法,其特征在于,所述根据所述第一饱和阈值和所述阈值更新量,计算第二饱和阈值,包括:
根据如下公式,计算所述第二饱和阈值:
t2=t1-rt×tupdate,
其中,t2为所述第二饱和阈值,t1为所述第一饱和阈值,tupdate为所述阈值更新量,rt为阈值学习率,0<rt<1。
14.一种神经网络的训练装置,其特征在于,所述神经网络包括多个处理层,所述多个处理层包括第一处理层以及一个或多个后级处理层;所述神经网络的训练装置由所述第一处理层执行;所述神经网络的训练装置包括:数据量化电路、权重量化电路、误差量化电路、卷积电路和接收电路;其中,
所述数据量化电路,用于将经过预处理后的第一训练数据量化为第二训练数据;其中,所述第一训练数据为所述第一处理层的前一层的输出数据;所述第二训练数据的位宽小于所述第一训练数据的位宽;
所述权重量化电路,用于将第一权重矩阵量化为第二权重矩阵;其中,所述第二权重矩阵的位宽小于所述第一权重矩阵的位宽;
所述卷积电路,用于利用所述第二训练数据和所述第二权重矩阵,得到第一中间结果;其中,所述第一中间结果依次经过所述一个或多个后级处理层处理后,最终得到第一回传误差;
所述接收电路,用于接收第二回传误差;其中,所述第二回传误差为所述第一回传误差经过所述一个或多个后级处理层处理后得到的误差;
所述误差量化电路,用于将所述第二回传误差量化为第三回传误差;其中,所述第三回传误差的位宽小于所述第二回传误差的位宽;
所述卷积电路,还用于利用所述第二训练数据和所述第三回传误差,计算第三权重矩阵;其中,所述第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且所述第三权重矩阵的位宽与所述第一权重矩阵的位宽相同。
15.根据权利要求14所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于根据第一饱和阈值,将所述第一训练数据量化为所述第二训练数据。
16.根据权利要求14或15所述的神经网络的训练装置,其特征在于,
所述卷积电路,还用于利用所述第二权重矩阵和所述第三回传误差,计算第四回传误差;其中,所述第四回传误差为所述第一处理层的前一层的回传误差。
17.根据权利要求15所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于根据所述第二训练数据、所述第一饱和阈值和所述第三回传误差,确定阈值更新量;
所述数据量化电路,还用于根据所述第一饱和阈值和所述阈值更新量,计算第二饱和阈值;其中,所述第二饱和阈值用于量化下次训练中使用的训练数据。
18.根据权利要求17所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于将所述第二训练数据中等于所述第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为所述阈值更新量。
19.根据权利要求17或18所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于根据如下公式,计算所述第二饱和阈值:
t2=t1-rt×tupdate,
其中,t2为所述第二饱和阈值,t1为所述第一饱和阈值,tupdate为所述阈值更新量,rt为阈值学习率,0<rt<1。
20.一种神经网络的训练装置,其特征在于,所述神经网络包括多个处理层,所述多个处理层包括第一处理层,所述第一处理层为所述神经网络的最后一层;所述神经网络的训练装置由所述第一处理层执行;所述神经网络的训练装置包括:数据量化电路、权重量化电路、误差量化电路和卷积电路;其中,
所述数据量化电路,用于将经过预处理后的第一训练数据量化为第二训练数据;其中,所述第一训练数据为所述第一处理层的前一层的输出数据;所述第二训练数据的位宽小于所述第一训练数据的位宽;
所述权重量化电路,用于将第一权重矩阵量化为第二权重矩阵;其中,所述第二权重矩阵的位宽小于所述第一权重矩阵的位宽;
所述卷积电路,用于利用所述第二训练数据和所述第二权重矩阵,得到第一回传误差;
所述误差量化电路,还用于将所述第一回传误差量化为第三回传误差;其中,所述第三回传误差的位宽小于所述第一回传误差的位宽;
所述卷积电路,还用于利用所述第二训练数据和所述第三回传误差,计算第三权重矩阵;其中,所述第三权重矩阵作为下次训练的正向过程中输入的第一权重矩阵,且所述第三权重矩阵的位宽与所述第一权重矩阵的位宽相同。
21.根据权利要求20所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于根据第一饱和阈值,将所述第一训练数据量化为所述第二训练数据。
22.根据权利要求20或21所述的神经网络的训练装置,其特征在于,
所述卷积电路,还用于利用所述第二权重矩阵和所述第三回传误差,计算第四回传误差;其中,所述第四回传误差为所述第一处理层的前一层的回传误差。
23.根据权利要求21所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于根据所述第二训练数据、所述第一饱和阈值和所述第三回传误差,确定阈值更新量;
所述数据量化电路,还用于根据所述第一饱和阈值和所述阈值更新量,计算第二饱和阈值;其中,所述第二饱和阈值用于量化下次训练中使用的训练数据。
24.根据权利要求23所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于将所述第二训练数据中等于所述第一饱和阈值的训练数据对应的第三回传误差的累加和,确定为所述阈值更新量。
25.根据权利要求23或24所述的神经网络的训练装置,其特征在于,
所述数据量化电路,还用于根据如下公式,计算所述第二饱和阈值:
t2=t1-rt×tupdate,
其中,t2为所述第二饱和阈值,t1为所述第一饱和阈值,tupdate为所述阈值更新量,rt为阈值学习率,0<rt<1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910407634.1A CN111950689A (zh) | 2019-05-16 | 2019-05-16 | 神经网络的训练方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910407634.1A CN111950689A (zh) | 2019-05-16 | 2019-05-16 | 神经网络的训练方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111950689A true CN111950689A (zh) | 2020-11-17 |
Family
ID=73335927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910407634.1A Pending CN111950689A (zh) | 2019-05-16 | 2019-05-16 | 神经网络的训练方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111950689A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692865A (zh) * | 2020-12-31 | 2022-07-01 | 安徽寒武纪信息科技有限公司 | 一种神经网络量化训练方法、装置及相关产品 |
WO2024082705A1 (zh) * | 2022-10-19 | 2024-04-25 | 华为技术有限公司 | 一种神经网络训练方法及装置 |
-
2019
- 2019-05-16 CN CN201910407634.1A patent/CN111950689A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114692865A (zh) * | 2020-12-31 | 2022-07-01 | 安徽寒武纪信息科技有限公司 | 一种神经网络量化训练方法、装置及相关产品 |
WO2024082705A1 (zh) * | 2022-10-19 | 2024-04-25 | 华为技术有限公司 | 一种神经网络训练方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110363279B (zh) | 基于卷积神经网络模型的图像处理方法和装置 | |
Fu et al. | Don’t waste your bits! squeeze activations and gradients for deep neural networks via tinyscript | |
CN108701250B (zh) | 数据定点化方法和装置 | |
JP7266693B2 (ja) | トレーニング済み長短期記憶ニューラルネットワークの量子化 | |
CN110008952B (zh) | 一种目标识别方法及设备 | |
WO2023050707A1 (zh) | 网络模型量化方法、装置、计算机设备以及存储介质 | |
KR102655950B1 (ko) | 뉴럴 네트워크의 고속 처리 방법 및 그 방법을 이용한 장치 | |
WO2022111002A1 (zh) | 用于训练神经网络的方法、设备和计算机可读存储介质 | |
TWI744724B (zh) | 處理卷積神經網路的方法 | |
CN112200296A (zh) | 网络模型量化方法、装置、存储介质及电子设备 | |
CN111950689A (zh) | 神经网络的训练方法及装置 | |
US20220044109A1 (en) | Quantization-aware training of quantized neural networks | |
CN113255922A (zh) | 量子纠缠量化方法和装置、电子设备、计算机可读介质 | |
CN113159318B (zh) | 一种神经网络的量化方法、装置、电子设备及存储介质 | |
CN111598227B (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
Chang et al. | GraphCS: Graph-based client selection for heterogeneity in federated learning | |
CN117351299A (zh) | 图像生成及模型训练方法、装置、设备和存储介质 | |
CN116795324A (zh) | 混合精度浮点乘法装置和混合精度浮点数处理方法 | |
JP2023103419A (ja) | 演算方法、装置、チップ、電子機器及び記憶媒体 | |
US20200134434A1 (en) | Arithmetic processing device, learning program, and learning method | |
US20220113943A1 (en) | Method for multiply-add operations for neural network | |
US11861452B1 (en) | Quantized softmax layer for neural networks | |
US20210216867A1 (en) | Information processing apparatus, neural network computation program, and neural network computation method | |
CN115577786A (zh) | 量子熵确定方法、装置、设备及存储介质 | |
Liu et al. | Block-Wise Dynamic-Precision Neural Network Training Acceleration via Online Quantization Sensitivity Analytics |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201117 |
|
RJ01 | Rejection of invention patent application after publication |