CN112183718B - 一种用于计算设备的深度学习训练方法和装置 - Google Patents

一种用于计算设备的深度学习训练方法和装置 Download PDF

Info

Publication number
CN112183718B
CN112183718B CN202010899680.0A CN202010899680A CN112183718B CN 112183718 B CN112183718 B CN 112183718B CN 202010899680 A CN202010899680 A CN 202010899680A CN 112183718 B CN112183718 B CN 112183718B
Authority
CN
China
Prior art keywords
neural network
output
layer
training
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.)
Active
Application number
CN202010899680.0A
Other languages
English (en)
Other versions
CN112183718A (zh
Inventor
张军磊
刘传建
李桂林
张星
张维
李震国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010899680.0A priority Critical patent/CN112183718B/zh
Publication of CN112183718A publication Critical patent/CN112183718A/zh
Priority to PCT/CN2021/115216 priority patent/WO2022042713A1/zh
Priority to EP21860545.9A priority patent/EP4198826A4/en
Priority to US18/175,936 priority patent/US20230206069A1/en
Application granted granted Critical
Publication of CN112183718B publication Critical patent/CN112183718B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/096Transfer learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/449Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
    • G06V10/451Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
    • G06V10/454Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/778Active pattern-learning, e.g. online learning of image or video features
    • G06V10/7784Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors
    • G06V10/7792Active pattern-learning, e.g. online learning of image or video features based on feedback from supervisors the supervisor being an automated module, e.g. "intelligent oracle"

Abstract

本申请提供人工智能领域中一种用于计算设备的深度学习训练方法和装置,用于得到残差连接更少的神经网络,提高神经网络的推理效率,降低神经网络运行时占用的内存量。该方法包括:获取训练集、第一神经网络和第二神经网络,第一神经网络包括残差连接少于第二神经网络包括残差连接;根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络,其中,任意一次迭代训练包括:将第一神经网络中的至少一个第一中间层的第一输出,作为第二神经网络的至少一个网络层的输入,得到至少一个网络层的输出结果,使用第一损失函数更新第一神经网络,第一损失函数包括基于第二神经网络的至少一个网络层的输出结果所获取的约束项。

Description

一种用于计算设备的深度学习训练方法和装置
技术领域
本申请涉及人工智能领域,尤其涉及一种用于计算设备的深度学习训练方法和装置。
背景技术
当神经网络的隐层变多时,神经网络的准确度达到饱和然后急剧退化,例如,在对神经网络进行反向传播更新时,传播到底层时,因底层的各个梯度的相关性较低,导致梯度更新不充分,从而使神经网络的输出准确度降低。残差神经网络是为了解决神经网络的深度增加而出现退化现象而提出的神经网络。通常,当神经网络出现退化时,神经网络中的浅层网络能够达到比深层网络更好的训练效果,在残差神经网络中,每个基础单元(block)中添加了残差连接(shortcut),从而将底层的特征直接传输到高层,从而使残差神经网络可以避免或者减少网络退化而导致的输出准确度降低的问题。
然而,在残差网络中,因增加了残差连接,在运行时占用的内存将在得到block的预测标签之后释放,即残差连接使占用的内容延迟释放,导致占用的内存容量大。
发明内容
本申请提供一种神经网络的训练方法和装置,用于得到残差连接更少的神经网络,提高神经网络的推理效率,降低神经网络运行时占用的内存量。
有鉴于此,第一方面,本申请提供一种用于计算设备的深度学习训练方法,包括:获取训练集、第一神经网络和第二神经网络,训练集中包括多个样本,第一神经网络包括一个或者多个第一中间层,且每个第一中间层中包括一个或者多个不具有残差连接的基础单元,第二神经网络包括多个网络层,多个网络层中包括输出层和一个或多个第二中间层,且每个第二中间层包括一个或者多个具有残差连接的基础单元,第一神经网络所包括的残差连接数量是根据计算设备的内存大小确定的;根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络,其中,至少一次迭代训练中的任意一次迭代训练包括:将第一神经网络中的至少一个第一中间层的第一输出,作为第二神经网络的至少一个网络层的输入,得到第二神经网络的至少一个网络层的输出结果,使用第一损失函数更新第一神经网络,得到更新后的第一神经网络,第一损失函数包括基于第二神经网络的至少一个网络层的输出结果所获取的约束项,如该约束项可以是基于第二神经网络的至少一个网络层的输出结果来进行计算的项。
在本申请实施方式中,第一神经网络具有的残差连接少于第二神经网络所具有的查查连接。可以使用具有残差连接的第二神经网络,对不具有残差连接或者残差连接更少的第一神经网络进行知识蒸馏,使得到的训练后的第一神经网络的也可以实现第二神经网络的输出准确度。并且,在不降低输出准确度的基础上,训练后的第一神经网络的残差连接少于第二神经网络,因此在运行训练后的第一神经网络时,所占用的内存量少于第二神经网络,训练后的第一神经网络完成正向推理的时长也更短,得到输出结果的效率更高。
可选地,本申请提供的用于计算设备的深度学习训练方法,可以由计算设备来执行,或者最终得到的训练后的第一神经网络可以部署于计算设备,该计算设备可以包括中央处理器(central processing unit,CPU)、网络处理器(neural-network processingunit,NPU)、图形处理器(graphics processing unit,GPU)、专用集成电路(applicationspecific integrated circuit,ASIC)或现场可编程逻辑门阵列(field programmablegate array,FPGA)等硬件加速芯片)中的一种或者多种。因此,本申请实施方式中,通过具有残差连接的第二神经网络对第一神经网络来进行蒸馏,第一神经网络的残差连接更少,从而在保证第一神经网络的输出精度的基础上,减少运行第一神经网络时占用的计算设备的内存量,减少训练后的第一神经网络在计算设备上运行时的正向推理时长,提高运行效率。
在一种可能的实施方式中,将第一神经网络中的至少一个第一中间层的第一输出,作为第二神经网络的至少一个网络层的输入,得到第二神经网络的至少一个网络层的输出结果,包括:将第一神经网络中的其中一个第一中间层的第一输出,作为第二神经网络的输出层的输入,得到第二神经网络的输出层的第一预测标签;第一损失函数中包括第一约束项,第一约束项包括第二神经网络的全连接层的第一预测标签对应的损失值。
因此,在本申请实施方式中,在对第一神经网络进行训练的过程中,可以将第一神经网络的中间层的输出作为第二神经网络的输出层的输入,从而得到第二神经网络针对第一神经网络的中间层的输出的第一预测标签,然后以该第一预测标签的损失作为约束更新第一神经网络,完成对使用第二神经网络对第一神经网络进行知识蒸馏的过程。
在一种可能的实施方式中,将第一神经网络中的其中一个第一中间层的第一输出,作为第二神经网络的输出层的输入,可以包括:将第一神经网络中的最后一个第一中间层的第一输出,作为第二神经网络的输出层的输入,得到第二神经网络的输出层的第一预测标签。
本申请实施方式中,如第一神经网络的中间层的数量与第二神经网络的中间层的数量相同,则可以将第一神经网络的最后一个中间层的输出作为第二神经网络的输出层的输入,从而得到第二神经网络的输出层输出的第一预测标签。
在一种可能的实施方式中,第一约束项包括第二神经网络的输出层的第一预测标签和第一样本的真实标签之间的损失值,该第一样本即输入至第一神经网络的样本,以下不再赘述;或者,第一约束项包括第二神经网络的输出层的第一预测标签和第二预测标签之间的损失值,第二预测标签为第二神经网络针对第一样本的输出结果。
本申请实施方式中,可以计算第一预测标签和第一样本的真实标签之间的损失值,也可以计算第一预测标签和第二神经网络输出的第二预测标签之间的损失值,进而根据损失值来更新第一神经网络,完成第一神经网络的有监督学习。
在一种可能的实施方式中,将第一神经网络中的至少一个第一中间层的第一输出,作为第二神经网络的至少一个网络层的输入,得到第二神经网络的至少一个网络层的输出结果,还可以包括:获取第一神经网络的至少一个第一中间层的第一输出;将第一神经网络的至少一个第一中间层的第一输出分别作为第二神经网络的至少一个第二中间层的输入,得到第二神经网络的至少一个第二中间层的第二输出;使用第一损失函数更新第一神经网络,得到更新后的第一神经网络,可以包括:将第一样本作为第二神经网络的输入,得到第二神经网络的至少一个第二中间层的第三输出;根据第一损失函数更新上一次迭代训练得到的第一神经网络,得到当前次迭代训练的第一神经网络,第一损失函数中还包括第二约束项,第二约束项中包括第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
因此,本申请实施方式中,可以将第一神经网络的中间层的输出,作为第二神经网络的中间层的输入,从而得到第二神经网络的中间层的第二输出,同时还得到第二神经网络针对输入的样本的第三输出,从而计算得到第二输出和第三输出之间的损失值,并将该损失值作为约束更新第一神经网络,使用第二神经网络的中间层的输出结果完成对第一神经网络的有监督学习。
在一种可能的实施方式中,在任意一次迭代训练中,还可以包括:获取第二神经网络针对第一样本的第二预测标签;根据第二预测标签和第一样本的真实标签计算损失值;根据损失值更新第二神经网络的参数,得到当前次迭代训练的第二神经网络。
因此,在本申请实施方式中,在对第一神经网络进行训练的过程中,可以同步训练第二神经网络,提高提高得到训练后的第一神经网络的效率。
在一种可能的实施方式中,在根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络之前,上述方法还可以包括:使用训练集对第二神经网络的参数进行更新,得到更新后的第二神经网络。
因此,本申请实施方式中,在对第一神经网络进行训练之后,即可得到训练好的第二神经网络,并在训练第一神经网络的过程中固定第二神经网络的结构,将第二神经网络作为教师模型,第一神经网络作为学生模型,完成对第一神经网络的训练。
在一种可能的实施方式中,第一神经网络用于进行图片识别、分类任务或者目标检测中的至少一种。因此,在本申请实施方式中,可以应用于图片识别、分类任务或者目标检测等多种应用场景,本申请提供的方法具有较高的泛化能力。
第二方面,本申请提供一种训练装置,包括:
获取单元,用于获取训练集、第一神经网络和第二神经网络,训练集中包括多个样本,第一神经网络包括一个或者多个第一中间层,且每个第一中间层中包括一个或者多个不具有残差连接的基础单元,第二神经网络包括多个网络层,多个网络层中包括输出层和一个或多个第二中间层,且每个第二中间层包括一个或者多个具有残差连接的基础单元,第一神经网络所包括的残差连接数量是根据运行该第一神经网络的计算设备的内存大小确定的;
训练单元,用于根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络,其中,至少一次迭代训练中的任意一次迭代训练包括:将第一神经网络中的至少一个第一中间层的第一输出,作为第二神经网络的至少一个网络层的输入,得到第二神经网络的至少一个网络层的输出结果,使用第一损失函数更新第一神经网络,得到更新后的第一神经网络,第一损失函数包括基于第二神经网络的至少一个网络层的输出结果所获取的约束项。
在一种可能的实施方式中,训练单元,具体用于:将第一神经网络中的其中一个第一中间层的第一输出,作为第二神经网络的全连接层的输入,得到第二神经网络的全连接层的第一预测标签;第一损失函数中包括第一约束项,第一约束项包括第二神经网络的全连接层的第一预测标签对应的损失值。
在一种可能的实施方式中,训练单元,具体用于:将第一神经网络中的最后一个第一中间层的第一输出,作为第二神经网络的输出层的输入,得到第二神经网络的输出层的第一预测标签。
在一种可能的实施方式中,第一约束项包括第二神经网络的输出层的第一预测标签和输出至第一神经网络的样本的真实标签之间的损失值;或者,第一约束项包括第二神经网络的输出层的第一预测标签和第二预测标签之间的损失值,第二预测标签为第二神经网络针对输出至第一神经网络的样本的输出结果。
在一种可能的实施方式中,训练单元,还用于:获取第一神经网络的至少一个第一中间层的第一输出;将第一神经网络的至少一个第一中间层的第一输出分别作为第二神经网络的至少一个第二中间层的输入,得到第二神经网络的至少一个第二中间层的第二输出;使用第一损失函数更新第一神经网络,得到更新后的第一神经网络,包括:将输出至第一神经网络的样本作为第二神经网络的输入,得到第二神经网络的至少一个第二中间层的第三输出;根据第一损失函数更新上一次迭代训练得到的第一神经网络,得到当前次迭代训练的第一神经网络,第一损失函数中还包括第二约束项,第二约束项中包括第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
在一种可能的实施方式中,训练单元,还用于:获取第二神经网络针对输出至第一神经网络的样本的第二预测标签;根据第二预测标签和输出至第一神经网络的样本的真实标签计算损失值;根据损失值更新第二神经网络的参数,得到当前次迭代训练的第二神经网络。
在一种可能的实施方式中训练单元,还用于在训练单元根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络之前,使用训练集对第二神经网络的参数进行更新,得到更新后的第二神经网络。
在一种可能的实施方式中第一神经网络用于进行图片识别、分类任务或者目标检测中的至少一种。
第三方面,本申请提供一种神经网络,该神经网络包括一个或者多个第一中间层,且每个第一中间层中包括一个或者多个不具有残差连接的基础单元,该神经网络经由如前述第一方面或者第一方面的任一种实施方式进行训练得到。
第四方面,本申请实施例提供一种训练装置,包括:处理器和存储器,其中,处理器和存储器通过线路互联,处理器调用存储器中的程序代码用于执行上述第一方面任一项所示的用于计算设备的深度学习训练方法中与处理相关的功能。可选地,该训练装置可以是芯片。
第五方面,本申请实施例提供了一种训练装置,该训练装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行如上述第一方面或第一方面任一可选实施方式中与处理相关的功能。
第六方面,本申请实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
第七方面,本申请实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一可选实施方式中的方法。
附图说明
图1为本申请应用的一种人工智能主体框架示意图;
图2为本申请实施例提供的一种卷积神经网络结构示意图;
图3为本申请实施例提供的一种残差神经网络结构示意图;
图4为本申请实施例提供的一种具有残差连接的基础单元的结构示意图;
图5为本申请实施例提供的一种系统架构示意图;
图6为本申请实施例提供的另一种系统架构示意图;
图7为本申请实施例提供的一种用于计算设备的深度学习训练方法的流程示意图;
图8为本申请实施例提供的另一种用于计算设备的深度学习训练方法的流程示意图;
图9为本申请实施例提供的另一种用于计算设备的深度学习训练方法的流程示意图;
图10为本申请实施例提供的一种训练装置的结构示意图;
图11为本申请实施例提供的另一种训练装置的结构示意图;
图12为本申请实施例提供的一种芯片结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片,如中央处理器(centralprocessing unit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(英语:graphics processing unit,GPU)、专用集成电路(application specificintegrated circuit,ASIC)或现场可编程逻辑门阵列(field programmable gate array,FPGA)等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、平安城市等。
本申请实施例涉及了大量神经网络的相关应用,为了更好地理解本申请实施例的方案,下面先对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如公式(1-1)所示:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)深度神经网络
深度神经网络(deep neural network,DNN),也称多层神经网络,可以理解为具有多层中间层的神经网络。按照不同层的位置对DNN进行划分,DNN内部的神经网络可以分为三类:输入层,中间层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是中间层,或者称为隐层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。
虽然DNN看起来很复杂,其每一层可以表示为线性关系表达式:其中,/>是输入向量,/>是输出向量,/>是偏移向量或者称为偏置参数,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量/>经过如此简单的操作得到输出向量/>由于DNN层数多,系数W和偏移向量/>的数量也比较多。这些参数在DNN中的定义如下所述:以系数w为例:假设在一个三层的DNN中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为/>上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
综上,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为
需要注意的是,输入层是没有W参数的。在深度神经网络中,更多的中间层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量W形成的权重矩阵)。
(3)卷积神经网络
卷积神经网络(convolutional neuron network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(4)循环神经网络(recurrent neural networks,RNN),也称为递归神经网络,是用来处理序列数据的。在传统的神经网络模型中,是从输入层到中间层再到输出层,层与层之间是全连接的,而对于每一层层内之间的各个节点是无连接的。这种普通的神经网络虽然解决了很多难题,但是却仍然对很多问题无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即中间层本层之间的节点不再无连接而是有连接的,并且中间层的输入不仅包括输入层的输出还包括上一时刻中间层的输出。理论上,RNN能够对任何长度的序列数据进行处理。对于RNN的训练和对传统的CNN或DNN的训练一样。
(5)残差神经网络(ResNet)
残差神经网络是为例解决神经度神经网络的隐藏层过多时产生的退化(degradation)问题而提出。退化问题是指:当网络隐藏层变多时,网络的准确度达到饱和然后急剧退化,而且这个退化不是由于过拟合引起的,而是在进行反向传播时,传播到底层时各个梯度相关性不大,梯度更新不充分,从而使最终得到的模型的预测标签的准确度降低。当神经网络退化时,浅层网络能够达到比深层网络更好的训练效果,这时如果把低层的特征传到高层,那么效果应该至少不比浅层的网络效果差,因此可以通过一条恒等映射(Identity Mapping)来达到此效果。这条恒等映射称为残差连接(shortcut),优化这种残差映射要比优化原始的映射容易。
在本申请以下实施例中,所提及的第二神经网络或者教师模型,即为残差神经网络,能够输出准确度较高的结果。
(6)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(7)反向传播算法
神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的神经网络模型中参数的大小,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。
通常,CNN是一种常用的神经网络,为便于理解,下面示例性地,对卷积神经网络和残差神经网络的结构进行介绍。
下面结合图2示例性地对CNN的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deep learning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像作出响应。
如图2所示,卷积神经网络(CNN)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及神经网络层230。在本申请以下实施方式中,为便于理解,将每一层称为一个stage。下面对这些层的相关内容做详细介绍。
卷积层/池化层220:
卷积层:
如图2所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现方式中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。
下面将以卷积层221为例,介绍一层卷积层的内部工作原理。
卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depth dimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的特征图的尺寸也相同,再将提取到的多个尺寸相同的特征图合并形成卷积运算的输出。
这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络200进行正确的预测。
当卷积神经网络200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。
池化层/池化层220:
由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,池化层也可以称为下采样层。在如图2中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。
神经网络层230:
在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用神经网络层230来生成一个或者一组所需要的类的数量的输出。因此,在神经网络层230中可以包括多层中间层(如图2所示的231、232至23n)以及输出层240,该输出层也可以称为全连接(fully connected,FC)层,该多层中间层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。
在神经网络层230中的多层中间层之后,也就是整个卷积神经网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络200的前向传播(如图2由210至240方向的传播为前向传播)完成,反向传播(如图2由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络200的损失,及卷积神经网络200通过输出层输出的结果和理想结果之间的误差。
需要说明的是,如图2所示的卷积神经网络200仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。
本申请中,可以采用图2所示的卷积神经网络200对待处理图像进行处理,得到待处理图像的分类结果。如图2所示,待处理图像经过输入层210、卷积层/池化层220以及神经网络层230的处理后输出待处理图像的分类结果。
下面示例性地,对本申请提供的一种残差神经网络的结构进行介绍。参阅图3,本申请提供的一种残差神经网络的结构示意图。
在图3所示的残差神经网络中,包括了多个子网络或者称为多层网络,即图3中所示出的stage_1至stage_n中的每个stage,每个stage即代表一层网络层,包括了一个或者多个基础单元(block),其结构与前述图2所示出的卷积神经网络的每一层网络层的结构类似,不同之处在于,在每个block中的输入和输出之间具有一个残差连接(shortcut),用于将block的输入直接映射到输出上,实现网络层的输入和残差输出的恒等映射。以一个block为例,残差神经网络中的一个block的结构可以如图4所示,该block中包括了两个3*3的卷积核,卷积核之间通过激活函数,如线性整流函数(Rectified Linear Unit,ReLU)连接,且该block的输入直接连接到输出,或者说该block的输入通过1*1的卷积连接到输出,然后通过ReLU得到该block的输出。
本申请实施例提供的用于计算设备的深度学习训练方法可以在服务器上被执行,还可以在终端设备上被执行。其中该终端设备可以是具有图像处理功能的移动电话、平板个人电脑(tablet personal computer,TPC)、媒体播放器、智能电视、笔记本电脑(laptopcomputer,LC)、个人数字助理(personal digital assistant,PDA)、个人计算机(personalcomputer,PC)、照相机、摄像机、智能手表、可穿戴式设备(wearable device,WD)或者自动驾驶的车辆等,本申请实施例对此不作限定。
如图5所示,本申请实施例提供了一种系统架构100。在图5中,数据采集设备160用于采集训练数据。在一些可选的实现中,针对于图像分类方法来说,训练数据可以包括训练图像以及训练图像对应的分类结果,其中,训练图像的分类结果可以是人工预先标注的结果。特别的,本申请中为了对第一神经网络进行知识蒸馏,训练数据还可以包括作为教师模型的第二神经网络,第二神经网络可以为训练好的模型,也可以是与第一神经网络进行同步训练的模型。
在采集到训练数据之后,数据采集设备160将这些训练数据存入数据库130,训练设备120基于数据库130中维护的训练数据训练得到目标模型/规则101。可选地,在本申请以下实施方式中所提及的训练集,可以是从该数据库130中得到,也可以是通过用户的输入数据得到。
其中,目标模型/规则101可以为本申请实施例中进行训练后的第一神经网络。
下面对训练设备120基于训练数据得到目标模型/规则101进行描述,训练设备120对输入的原始图像进行处理,将输出的图像与原始图像进行对比,直到训练设备120输出的图像与原始图像的差值小于一定的阈值,从而完成目标模型/规则101的训练。
上述目标模型/规则101能够用于实现本申请实施例的用于计算设备的深度学习训练方法训练得到的第一神经网络,即,将待处理数据(如图像)通过相关预处理后输入该目标模型/规则101,即可得到处理结果。本申请实施例中的目标模型/规则101具体可以为本申请以下所提及的第一神经网络,该第一神经网络可以是前述的CNN、DNN或者RNN等类型的神经网络。需要说明的是,在实际的应用中,所述数据库130中维护的训练数据不一定都来自于数据采集设备160的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备120也不一定完全基于数据库130维护的训练数据进行目标模型/规则101的训练,也有可能从云端或其他地方获取训练数据进行模型训练,上述描述不应该作为对本申请实施例的限定。
根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图5所示的执行设备110,该执行设备110也可以称为计算设备,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR),车载终端等,还可以是服务器或者云端设备等。在图5中,执行设备110配置输入/输出(input/output,I/O)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向I/O接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理数据。
预处理模块113和预处理模块114用于根据I/O接口112接收到的输入数据(如待处理数据)进行预处理,在本申请实施例中,也可以没有预处理模块113和预处理模块114(也可以只有其中的一个预处理模块),而直接采用计算模块111对输入数据进行处理。
在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。
最后,I/O接口112将处理结果,则将处理结果返回给客户设备140,从而提供给用户,例如若第一神经网络用于进行图像分类,处理结果为分类结果,则I/O接口112将上述得到的分类结果返回给客户设备140,从而提供给用户。
值得说明的是,训练设备120可以针对不同的目标或称不同的任务,基于不同的训练数据生成相应的目标模型/规则101,该相应的目标模型/规则101即可以用于实现上述目标或完成上述任务,从而为用户提供所需的结果。在一些场景中,执行设备110和训练设备120可以是相同的设备,或者位于相同的计算设备内部,为便于理解,本申请将执行设备和训练设备分别进行介绍,并不作为限定。
在图5所示情况下,用户可以手动给定输入数据,该手动给定可以通过I/O接口112提供的界面进行操作。另一种情况下,客户设备140可以自动地向I/O接口112发送输入数据,如果要求客户设备140自动发送输入数据需要获得用户的授权,则用户可以在客户设备140中设置相应权限。用户可以在客户设备140查看执行设备110输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备140也可以作为数据采集端,采集如图所示输入I/O接口112的输入数据及输出I/O接口112的预测标签作为新的样本数据,并存入数据库130。当然,也可以不经过客户设备140进行采集,而是由I/O接口112直接将如图所示输入I/O接口112的输入数据及输出I/O接口112的预测标签,作为新的样本数据存入数据库130。
值得注意的是,图5仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图5中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。
如图1所示,根据训练设备120训练得到目标模型/规则101,该目标模型/规则101在本申请实施例中可以是本申请中的第一神经网络,具体的,本申请实施例提供的第一神经网络可以CNN,深度卷积神经网络(deep convolutional neural networks,DCNN),循环神经网络(recurrent neural network,RNN)等等。
参见附图6,本申请实施例还提供了一种系统架构400。执行设备110由一个或多个服务器实现,可选的,与其它计算设备配合,例如:数据存储、路由器、负载均衡器等设备;执行设备110可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备110可以使用数据存储系统150中的数据,或者调用数据存储系统150中的程序代码实现本申请以下图6对应的用于计算设备的深度学习训练方法的步骤。
用户可以操作各自的用户设备(例如本地设备401和本地设备402)与执行设备110进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。
每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备110进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。具体地,该通信网络可以包括无线网络、有线网络或者无线网络与有线网络的组合等。该无线网络包括但不限于:第五代移动通信技术(5th-Generation,5G)系统,长期演进(long termevolution,LTE)系统、全球移动通信系统(global system for mobile communication,GSM)或码分多址(code division multiple access,CDMA)网络、宽带码分多址(widebandcode division multiple access,WCDMA)网络、无线保真(wireless fidelity,WiFi)、蓝牙(bluetooth)、紫蜂协议(Zigbee)、射频识别技术(radio frequency identification,RFID)、远程(Long Range,Lora)无线通信、近距离无线通信(near field communication,NFC)中的任意一种或多种的组合。该有线网络可以包括光纤通信网络或同轴电缆组成的网络等。
在另一种实现中,执行设备110的一个方面或多个方面可以由每个本地设备实现,例如,本地设备401可以为执行设备110提供本地数据或反馈计算结果。该本地设备也可以称为计算设备。
需要注意的,执行设备110的所有功能也可以由本地设备实现。例如,本地设备401实现执行设备110的功能并为自己的用户提供服务,或者为本地设备402的用户提供服务。
通常,包含残差连接的神经网络有以下问题:
残差连接会造成运行内存的增加。残差连接会使得内存延时释放,造成了运行内存的增加。例如,在一些情况下,ResNet的运行内存将会增加1/3。这对于资源有限的设备是极为不利的,也意味着,较其对应的无残差连接的CNN网络,需要花费更多的内存资源来运行ResNet。
残差连接会造成能耗的增加。内存访问占据了绝大部分卷积运算的能耗,由于残差连接需要反复读取与存储残差模块的输入数据,因此残差连接会造成能耗的增加。
在一些场景中,可以通过在权重中添加恒等连接来模拟残差网络,训练时,将卷积层的权重分为两部分,恒等映射I与待学习权重W,训练过程中不断更新学习权重,在训练完成后,通过加法合并恒等映射与训练完成的待学习权重,得到卷积层的权重参数。在进行前向推理时,使用合并后的卷积层的权重参数来进行前向推理,得到预测标签。然而,没有拓展到带有瓶颈结构的深层网络,仅适用于较小型的残差神经网络。
在另一些场景中,可以在shortcut上添加权重参数,训练过程中逐渐降低这个权重参数,并约束训练完成时这个权重系数为0,也就是在训练过程中逐渐降低残差连接的作用,直至消失。训练完成后,即可得到无残差连接的神经网络。然而,因消除了神经网络中的残差连接,对神经网络的输出的准确度存在较大影响,将降低最终得到的神经网络的输出精度。
因此,本申请提供一种用于计算设备的深度学习训练方法,在保持最终输出的训练后的第一神经网络的输出精度不低于原始的残差神经网络(即第二神经网络)的基础上,消除残差连接,得到不具有残差连接,但输出精度更高的神经网络,减少在计算设备上运行神经网络的正向推理时长,减少神经网络在计算机上运行时所占用的内存量,降低计算设备运行神经网络时产生的能耗。
下面基于前述的介绍,对本申请提供的用于计算设备的深度学习训练方法进行详细介绍。
参阅图7,本申请提供的一种用于计算设备的深度学习训练方法的流程示意图,如下所述。
701、获取训练集、第一神经网络和第二神经网络。
其中,训练集中包括了多个样本,每个样本中包括样本特征和真实标签,训练集所包括的样本与第一神经网络或者第二神经网络所需要实现的任务相关,第一神经网络或者第二神经网络可以用于实现图片识别、分类任务或者目标检测等中的一种或者多种。例如,以第一神经网络为例,若第一神经网络用于进行分类任务,则训练集中的样本可以包括图片和每个图片对应的分类,如包括了猫和狗的图片,图片对应的真实标签为猫或者狗的分类。
第二神经网络中包括了多个网络层,如输入层、中间层和输出层等,输出层也可以称为全连接层,每一个中间层可以包括一个或者多个基础单元(block),每个基础单元中可以包括卷积核、池化操作、残差连接(shortcut)或者激活函数等。示例性地,基础单元内的结构可以参阅前述图4,此处不再赘述。
第一神经网络的网络层的数量可以大于、小于或者等于第二神经网络,第一神经网络的网络层与第二神经网络的网络层的结构类似,主要的区别在于,第一神经网络中所包括的残差连接少于第二神经网络所包括的残差连接,或者第一神经网络中不具有残差连接。
在一些场景中,第一神经网络中所具有的残差连接的数量可以是根据运行第一神经网络的计算设备的计算能力来确定的。通常,计算设备的计算能力可以通过内存大小或计算速度来衡量。以使用内存大小来衡量计算能力为例,第一神经网络中所具有的残差连接的数量可以是根据计算设备的内存大小来确定的,第一神经网络中所具有的残差连接的数量和计算设备的内存大小可以呈正相关关系,如正相关的线性关系或者正相关的指数关系等。例如,计算设备的内存容量越大,第一神经网络所具有的残差连接的数量的上限也就越高,计算设备的内存容量越小,第一神经网络所具有的残差连接的数量的上限也就越低。当然,为降低运行第一神经网络时所占用的内存量,第一神经网络可以设置为不具有残差连接。
需要说明的是,以下为便于区别,将第一神经网络的中间层称为第一中间层,将第二神经网络的中间层称为第二中间层,以下不再赘述。
702、使用训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络。
其中,可以对第一神经网络进行迭代训练,直到满足收敛条件,输出训练后的第一神经网络。该收敛条件可以包括对第一神经网络的迭代次数达到预设次数,或者对第一神经网络进行迭代训练的时长达到预设时长等,或者第一神经网络的输出精度的变化小于预设值等。
具体地,在迭代训练的过程中,可以将训练集中的样本作为第一神经网络和第二神经网络的输入,将第一神经网络的一个或多个第一中间层针对训练集中的样本的第一输出,作为第二神经网络的一层或者多层网络层(如第二中间层或者全连接)的输入,得到第二神经网络的输出结果,以第二神经网络的输出结果为约束,使用第一损失函数对第一神经网络进行更新,可以理解为,第一损失函数中增加了基于第二神经网络的一个或者多个中间层的输出结果所获取的约束项。从而使第一神经网络的输入结果更趋向于与第二神经网络的输出结果靠近,从而使第一神经网络在减少了残差连接的同时,也能够实现与第二神经网络接近或者高于第二神经网络的输出精度的结果。
为便于理解,对第一神经网络的迭代训练的过程可以理解为将第一神经网络作为学生(student)模型,将第二神经网络作为教师(teacher)模型,使用教师模型对学生模型进行知识蒸馏的过程。
下面以任意一次迭代训练过程为例,对步骤702的详细步骤进行示例性说明,步骤702具体可以包括如下步骤7021-7025。
需要说明的是,在本申请以下步骤7021-7025中,即针对第一神经网络进行迭代训练的过程中,若以下的迭代训练过程不是第一次迭代训练的过程,则所提及的第一神经网络为上一次迭代得到的第一神经网络,为便于理解,以下简称为第一神经网络。
7021、将训练集中的样本作为上一次迭代训练得到的第一神经网络输入,获取第一神经网络的至少一个第一中间层的第一输出。
其中,以训练集中的任意一个样本作为第一样本为例,将第一样本作为第一神经网络和第二神经网络的输入,得到第一神经网络一个或者多个第一中间层输出的第一输出。
例如,第一神经网络的中间层所包括的基础单元包括了卷积操作和池化操作,对上一层网络层的输出进行特征提取下采样等操作,经过激活函数处理之后,得到该基础单元的第一输出。
7022、将第一神经网络的至少一个第一中间层的第一输出分别作为第二神经网络的至少一个第二中间层的输入,得到第二神经网络的至少一个第二中间层的第二输出。
其中,将第一神经网络中的一个或者多个第一中间层的第一输出,分别作为第二神经网络中对应的第二中间层的输入,得到第二神经网络的一个或者多个第二中间层的第二输出。为便于区分,以下将第二神经网络的一个或者多个第二中间层针对第一中间层的第一输出的输出结果为第二输出。
通常,可以将第一神经网络的多个第一中间层的第一输出分别输入至第二神经网络中对应的第二中间层,然后由该对应的第二中间层的其中一个或者最后一个第二中间层输出针对该多个第一中间层中每个中间层的第一输出而输出的第二输出,或者,由第二神经网络中的最后一个第二中间层输出针对该多个第一中间层中每个中间层的第一输出而输出的第二输出。
示例性地,如图8所示,从训练集中选择一个图像作为输入,第一神经网络包括了中间层Stage11-Stage14,第二神经网络包括了中间层Stage21-Stage24,每一层可以对输入数据通过卷积操作进行特征提取,或者通过池化操作进行下采样等。将Stage11的第一输出输入至Stage22,然后经由Stage22、Stage23以及Stage24进行处理,由Stage24输出针对Stage11的第一输出而输出的第二输出;将Stage12的第一输出输入至Stage23,然后经由Stage23以及Stage24进行处理,由Stage24输出针对Stage12的第一输出而输出的第二输出;将Stage13的第一输出输入至Stage24,得到Stage24针对Stage12的第一输出而输出的第二输出。可以理解为,Stage11-13的第一输出,分别输入至Stage22-24,最后由Stage24来输出Stage11-13的第一输出分别对应的第二输出。即若将第一神经网络的3个第一中间层的第一输出输入至第二神经网络的3个第二中间层,则可以由第二神经网络的最后一个第二中间层输出至少3组第二输出。通常,该Stage24可以是第二神经网络的最后一个Stage,当然,Stage24与FC2之间还可以设置有其他的Stage,此处仅仅是示例,并不作为限定。
7023、将第一样本作为第二神经网络的输入,得到第二神经网络的至少一个第二中间层的第三输出。
其中,第二神经网络的一个或者多个第二中间层,除了输入针对第二输出,还输出针对输入的第一样本的第三输出。例如,如前述图8,第一样本还作为第二神经网络的输入,经由Stage21-Stage24对第一样本进行卷积操作或者池化操作等,由Stage24输出第三输出。
需要说明的是,步骤7022和步骤7023为可选步骤,即可以将第一神经网络的第一中间层的第一输出作为第二神经网络的第二中间层的输入,也可以不执行此步骤。
7024、将第一神经网络中的其中一层第一中间层的第一输出,作为第二神经网络的输出层的输入,得到第二神经网络的输出层的第一预测标签。
其中,可以将第一神经网络中的其中一层第一中间层的第一输出,作为第二神经网络的FC层的输入,从而得到第二神经网络的FC层输出的预测标签,为便于区分,以下将该预测标签称为第一预测标签。
例如,如前述图8所示,将第一神经网络中的Stage14的第一输出,作为第二神经网络的FC2的输入,得到FC2针对该Stage14的第一输出的第一预测标签。或者,如前述图8所示,将第一神经网络中的Stage11的第一输出输入至第二神经网络中的Stage22,然后经由Stage23、Stage24以及FC2,输出针对Stage11的第一输出的第一预测标签。例如,若第二神经网络用于进行分类任务,第一样本为分类为猫的图片,则FC2可以输出该第一样本为猫的概率。
7025、根据第一损失函数更新上一次迭代训练得到的第一神经网络,得到当前次迭代训练的第一神经网络,第一损失函数中包括第一约束项和第二约束项,第一约束项包括第二神经网络的输出层的第一预测标签对应的损失值,第二约束项中包括第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
其中,第一神经网络还针对第一样本输出预测标签,为便于区分,以下将第一神经网络针对第一样本输出的预测标签称为第三预测标签。然后使用该第三预测标签,以前述的第二神经网络的一个或者多个中间层的第二输出和第二神经网络输出的第一预设标签作为约束,对第一神经网络进行更新,得到前次迭代训练的第一神经网络。
具体地,可以使用第一损失函数对第一神经网络进行反向传播更新,即他通过第一损失函数输出的值对第一神经网络的参数进行梯度更新,更新的参数包括第一神经网络的权重参数或者偏置(bias)参数等,从而得到当前次迭代训练后的第一神经网络。其中,第一神经网络包括了第一约束项和第二约束项,其中,第一约束项包括第二神经网络的输出层输出的第一预测标签对应的损失值,第二约束项包括第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
可选地,第一约束项包括第二神经网络的输出层的第一预测标签和第一样本的真实标签之间的损失值;或者,第一约束项包括第二神经网络的输出层的第一预测标签和第二预测标签之间的损失值,第二预测标签为第二神经网络针对第一样本的输出结果。
例如,第一损失函数可以表示为:
其中,losss即第一神经网络输出的预测标签和输入的样本的真实标签之间的损失值。
lossi表示学生模型的最后一层中间层的第一输出输入至教师模型的输出层,然后由教师模型的输出层输出的第一预测标签的损失值。该损失值可以是教师模型针对学生模型输入的特征而输出的第一预测标签和教师模型针对输入样本的样本特征而输出的第二预测标签之间的损失值,也可以是教师模型针对学生模型输入的特征而输出的第一预测标签和输入的样本的真实标签之间的损失值。可以理解为前述的第一约束项。
lossfeat表示将学生模型的中间层输出的特征输入至教师模型的中间层得到的第二输出,和教师模型的中间层针对输入的样本输出的第三输出之间的损失值, feat_s_i为在将学生模型的中间层的第一输出作为教师模型的中间层的输入的情况下,由教师模型的中间层输出的特征,feat_t为教师模型本身的中间层针对输入的样本特征的第一输出,即第三输出。βlossfeat可以理解为前述的第二约束项。
α是和β分别是权重值,可以为固定值,如经验值,也可以根据实际应用场景进行调整。例如,α是和β的取值范围可以是[0,1],例如,α可以取0.6,β可以取0.4。在一些场景中,β的值通常比α小至少一个量级,甚至小两个量级,例如,α的值为0.5,β的值可能取0.05,甚至可以取0.005等。且通常,随着对第一神经网络的训练次数的增加,α和β的值降低。例如,在ImageNet上进行60次epoch训练之后,α的值可能从1降低到0.5。因此,在本申请实施方式中,在对第一神经网络的训练过程中,可以通过α和β的值来约束第二神经网络的中间层的输出结果和输出层的输出结果对更新第一神经网络时的约束力度,使第二神经网络的中间层的输出结果和输出层的输出结果可以对第一神经网络的更新形成更有益的效果。并且,随着对第一神经网络进行训练的迭代次数的增加,可以逐渐降低第二神经网络的中间层的输出结果和输出层的输出结果对第一神经网络进行更新的影响,从而降低第一神经网络的输出精度受第二神经网络的输出精度的限制,从而提升第一神经网络的输出精度。
前述的计算损失值可以使用均方误差、交叉熵或者平均绝对误差等算法计算得到。
7026、判断第一神经网络是否训练完成,若是,则执行步骤7026,若否,则执行步骤703。
其中,在每次对第一神经网络进行迭代训练之后,可以判断对第一神经网络的训练是否完成,如是否满足终止条件。若完成对第一神经网络的训练,则可以终止对第一神经网络的训练,输出最后一次迭代训练得到的第一神经网络。若未完成对第一神经网络的训练,则可以继续对第一神经网络进行迭代训练。
具体地,该终止条件具体可以包括但不限于以下一项或者多项:对第一神经网络进行迭代训练的次数是否达到预设次数、当前次迭代训练得到的第一神经网络输出结果的准确度与上一次迭代或者前多次迭代训练得到的第一神经网络的输出结果的准确度之间的差值小于预设差值、或者当前次迭代的输出结果的准确度与第二神经网络的输出结果的准确度之间的差值小于预设值等。
703、输出训练后的第一神经网络。
在对第一神经网络训练完成之后,即可输出训练后的第一神经网络,该训练后的第一神经网络所包括的残差连接少于第二神经网络,或者该训练后的第一神经网络不包括残差连接。
因此,在本申请实施方式中,可以将第一神经网络的中间层的第一输出输入至第二神经网络的中间层或者全连接层,通过第二神经网络的中间层或者全连接层的输出结果完成对第一神经网络的知识蒸馏,使第一神经网络在不具有残差连接的基础上,也能够实现较高的输出准确率。且相对于第二神经网络,训练后的第一神经网络的残差连接更少,或者第一神经网络中不具有残差连接,因此,提高了第一神经网络的推理效率,降低了第一神经网络在推理过程中占用的内存,降低运行第一神经网络所使用的功耗。
此外,在一些可能的场景中,可以先得到训练后的第二神经网络,然后在对第一神经网络的训练过程中,保持第二神经网络的参数不变,如保持第二神经网络的权重参数或者偏置项等。例如,在步骤702之前,可以使用训练集对第二神经网络进行训练,得到训练后的第二神经网络,并在步骤702中,冻结训练后的第二神经网络的参数,即保持第二神经网络的参数不变。
在另一些可能的场景中,也可以是在对第一神经网络的迭代训练过程中,同时对第二神经网络进行训练,对第一神经网络和第二神经网络进行训练的批训练次数的比例可以是1,也可以根据实际应用场景调整为其他值等。例如,在步骤702中,步骤7021之前,或者,在步骤7026之后,可以使用第一样本对第二神经网络进行训练从而得到训练后的第二神经网络
为便于理解,示例性地,以图9为例对本申请提供的用于计算设备的深度学习训练方法的流程进行示例性地介绍。其中,teacher模型为ResNet,student模型为CNN,teacher模型和student模型的结构类似,都包括了输入层、n个中间层(即图9中所示出的stage_1-stage_n)和全连接层,每个stage内都包括了一个或者多个基础单元,每个基础单元可以包括卷积操作、池化操作、批归一化操作(batch normalization,bn),teacher模型和student模型的区别在于teacher模型中每个stage中的每个基础单元中都包括了残差连接,而student模型中每个stage内的每个基础单元不包括残差连接,或者student模型中包括的残差连接少于teacher模型。
并且,teacher模型和student模型的相对应的stage处理的图片的分辨率相同,例如,teacher模型和student模型的stage_1处理相同分辨率的图像,或者将输入的图像下采样为相同分辨率的图像。
在对student模型进行迭代更新之前,还对student模型与teacher模型的联合前传的结构进行构造,例如,确定student模型的一个或者多个中间层的输出输入至teacher模型中的哪些中间层,并确定student模型中的那一层中间层的第一输出输入至teacher模型的全连接层。
从训练集中选择一个或多个图像作为student模型与teacher模型的输入,可以将student模型的部分stage的第一输出输入至teacher模型中的stage中,例如,student模型的stage_1的第一输出输入至teacher模型中的stage_2,然后由teacher模型中的stage_2输出针对student模型的stage_1的第一输出的第二输出,同时针对teacher模型中的stage_2还输出针对teacher模型的stage_1的第一输出的第三输出,以此类推。其次,还将student模型的stage_n的第一输出作为teacher模型的stage_n的输入,得到teacher模型针对student模型的stage_n的第一预测标签,同时,teacher模型还输出自身针对输入的样本特征的第二预测标签。
可以理解为,在对student模型的迭代训练过程中,teacher模型对输入的样本进行前向运算,得到n个stage针对输入的样本的第一输出feat_t,以及全连接层的第二预测标签logits_t;student模型对输入的样本进行前向运算,得到每个stage的第一输出feat_i,以及全连接层的第三预测标签logits_s;针对跨网络特征传输,将student模型的中间层输出的特征feat_i(i=1,2,…,n),分别传入teacher模型的stage_i+1层,得到学生网络特征通过教师网络的最后一个阶段的特征输出feat_s_i,以及最后的全连接层输出logits_s_i,其中第n个阶段的中间层特征feat_n不经过teacher模型的中间层,直接输入teacher模型的全连接层。
然后,计算student自身的输出结果和输入的样本的真实标签之间的交叉熵(cross entropy,CE)损失函数的值,如前述的losss,以及计算教师网络输出的第二输出和第三输出之间的均方误差(mean squared error,MSE)函数的值,如前述的lossfeat,以及teacher模型的FC层student模型的stage_n的第一输出而输出的第一预测标签和针对输入的样本特征的第二预测标签中之间的损失值,如前述的随后根据前述计算得到的losss、lossfeat和/>针对student模型进行反向传播,计算学生网络的梯度,并更新参数。
此外,若teacher模型是在对student模型进行迭代更新的过程中更新的过程中,还可以计算teacher模型的全连接层输出logits_t与输入样本的真实标签之间的损失值losst,从而使用该losst对teacher模型进行反向传播,更新teacher模型的参数。当然,若在对student模型进行迭代更新之前即使用训练集更新了teacher模型,则在对student模型进行更新的过程中,保持teacher模型的参数不变。
在每次对student模型进行迭代训练之后,可以判断对student模型进行迭代训练的次数是否达到预设次数、当前次迭代训练得到的student模型输出结果的准确度与上一次迭代或者前多次迭代训练得到的student模型的输出结果的准确度之间的差值小于预设差值、或者当前次迭代的输出结果的准确度与teacher模型的输出结果的准确度之间的差值小于预设值等。当完成对student模型的迭代训练之后,即可输出最后一次迭代得到的student模型,若未完成对student模型的迭代训练,则可以继续对student模型进行迭代训练。
通常,复杂的神经网络固然具有更好的性能,但是高额的存储空间、计算资源消耗是使其难以有效的应用在各硬件平台上的重要原因。所以,神经网络(如CNN、DNN等)日益增长的深度和尺寸为深度学习在移动端的部署带来了巨大的挑战,深度学习的模型压缩与加速成为了重点关注的研究领域之一。本申请通过移除残差神经网络的残差连接,能够减少模型的运行时间,并降低能耗。
为便于理解,下面对本申请提供的用于计算设备的深度学习训练方法得到的第一神经网络,与具有残差连接的神经网络在ImageNet分类数据集中的准确率进行示例性说明。参阅表1。
表1
其中,ResNet50表示具有50个子网络,ResNet34表示具有34个子网络。ResNet50(不具有残差连接)和ResNet34(不具有残差连接)为通过本申请提供的用于计算设备的深度学习训练方法得到的第一神经网络,该第一神经网络中不具有残差连接。因此,从表1中可以明显获知,本申请提供的用于计算设备的深度学习训练方法输出的不具有残差连接的神经网络的输出结果的准确率,与具有残差连接的神经网络的输出结果的准确率相当,甚至高于具有残差连接的神经网络的输出结果的准确率。因此,通过本申请提供的方法得到的神经网络,不仅减少或者不具有残差连接,减少了运行该神经网络时的内存占用量,减少了推理时长,降低了功耗,在输出结果的准确率上也占有优势,输出结果具有较高的准确率。
前述对本申请提供的用于计算设备的深度学习训练方法的流程进行了详细介绍,下面基于前述的方法,对本申请提供的装置进行介绍。
首先,参阅图10,本申请提供一种训练装置,包括:
获取单元1001,用于获取训练集、第一神经网络和第二神经网络,训练集中包括多个样本,第一神经网络包括一个或者多个第一中间层,且每个第一中间层中包括一个或者多个不具有残差连接的基础单元,第二神经网络包括多个网络层,多个网络层中包括输出层和一个或多个第二中间层,且每个第二中间层包括一个或者多个具有残差连接的基础单元;
训练单元1002,用于根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络,其中,至少一次迭代训练中的任意一次迭代训练包括:将第一神经网络中的至少一个第一中间层的第一输出,作为第二神经网络的至少一个网络层的输入,得到第二神经网络的至少一个网络层的输出结果,使用第一损失函数更新第一神经网络,得到更新后的第一神经网络,第一损失函数包括基于第二神经网络的至少一个网络层的输出结果所获取的约束项。
在一种可能的实施方式中,训练单元1002,具体用于:将第一神经网络中的其中一个第一中间层的第一输出,作为第二神经网络的全连接层的输入,得到第二神经网络的全连接层的第一预测标签;第一损失函数中包括第一约束项,第一约束项包括第二神经网络的全连接层的第一预测标签对应的损失值。
在一种可能的实施方式中,训练单元1002,具体用于:将第一神经网络中的最后一个第一中间层的第一输出,作为第二神经网络的输出层的输入,得到第二神经网络的输出层的第一预测标签。
在一种可能的实施方式中,第一约束项包括第二神经网络的输出层的第一预测标签和输出至第一神经网络的样本的真实标签之间的损失值;或者,第一约束项包括第二神经网络的输出层的第一预测标签和第二预测标签之间的损失值,第二预测标签为第二神经网络针对输出至第一神经网络的样本的输出结果。
在一种可能的实施方式中,训练单元1002,还用于:获取第一神经网络的至少一个第一中间层的第一输出;将第一神经网络的至少一个第一中间层的第一输出分别作为第二神经网络的至少一个第二中间层的输入,得到第二神经网络的至少一个第二中间层的第二输出;使用第一损失函数更新第一神经网络,得到更新后的第一神经网络,包括:将输出至第一神经网络的样本作为第二神经网络的输入,得到第二神经网络的至少一个第二中间层的第三输出;根据第一损失函数更新上一次迭代训练得到的第一神经网络,得到当前次迭代训练的第一神经网络,第一损失函数中还包括第二约束项,第二约束项中包括第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
在一种可能的实施方式中,训练单元1002,还用于:获取第二神经网络针对输出至第一神经网络的样本的第二预测标签;根据第二预测标签和输出至第一神经网络的样本的真实标签计算损失值;根据损失值更新第二神经网络的参数,得到当前次迭代训练的第二神经网络。
在一种可能的实施方式中训练单元1002,还用于在训练单元1002根据训练集对第一神经网络进行至少一次迭代训练,得到训练后的第一神经网络之前,使用训练集对第二神经网络的参数进行更新,得到更新后的第二神经网络。
在一种可能的实施方式中第一神经网络用于进行图片识别、分类任务或者目标检测中的至少一种。
请参阅图11,本申请提供的另一种训练装置的结构示意图,如下所述。
该训练装置可以包括处理器1101和存储器1102。该处理器1101和存储器1102通过线路互联。其中,存储器1102中存储有程序指令和数据。
存储器1102中存储了前述图7-图9中的步骤对应的程序指令以及数据。
处理器1101用于执行前述图7-图9中任一实施例所示的训练装置执行的方法步骤。
可选地,该训练装置还可以包括收发器1103,用于接收或者发送数据。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于生成车辆行驶速度的程序,当其在计算机上行驶时,使得计算机执行如前述图7-图9所示实施例描述的方法中的步骤。
可选地,前述的图11中所示的训练装置为芯片。
本申请实施例还提供了一种训练装置,该训练装置也可以称为数字处理芯片或者芯片,芯片包括处理单元和通信接口,处理单元通过通信接口获取程序指令,程序指令被处理单元执行,处理单元用于执行前述图7-图9中任一实施例所示的训练装置执行的方法步骤。
本申请实施例还提供一种数字处理芯片。该数字处理芯片中集成了用于实现上述处理器1101,或者处理器1101的功能的电路和一个或者多个接口。当该数字处理芯片中集成了存储器时,该数字处理芯片可以完成前述实施例中的任一个或多个实施例的方法步骤。当该数字处理芯片中未集成存储器时,可以通过通信接口与外置的存储器连接。该数字处理芯片根据外置的存储器中存储的程序代码来实现上述实施例中训练装置执行的动作。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上行驶时,使得计算机执行如前述图7-图9所示实施例描述的方法中训练装置所执行的步骤。
本申请实施例提供的训练装置可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使服务器内的芯片执行上述图7-图9所示实施例描述的用于计算设备的深度学习训练方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体地,前述的处理单元或者处理器可以是中央处理器(central processingunit,CPU)、网络处理器(neural-network processing unit,NPU)、图形处理器(graphicsprocessing unit,GPU)、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)或现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器等。
示例性地,请参阅图12,图12为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 120,NPU 120作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路1203,通过控制器1204控制运算电路1203提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1203内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路1203是二维脉动阵列。运算电路1203还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1203是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1202中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1201中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1208中。
统一存储器1206用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(direct memory access controller,DMAC)1205,DMAC被搬运到权重存储器1202中。输入数据也通过DMAC被搬运到统一存储器1206中。
总线接口单元(bus interface unit,BIU)1210,用于AXI总线与DMAC和取指存储器(instruction fetch buffer,IFB)1209的交互。
总线接口单元1210(bus interface unit,BIU),用于取指存储器1209从外部存储器获取指令,还用于存储单元访问控制器1205从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1206或将权重数据搬运到权重存储器1202中或将输入数据数据搬运到输入存储器1201中。
向量计算单元1207包括多个运算处理单元,在需要的情况下,对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如批归一化(batch normalization),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1207能将经处理的输出的向量存储到统一存储器1206。例如,向量计算单元1207可以将线性函数和/或非线性函数应用到运算电路1203的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1207生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1203的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1204连接的取指存储器(instruction fetch buffer)1209,用于存储控制器1204使用的指令;
统一存储器1206,输入存储器1201,权重存储器1202以及取指存储器1209均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,循环神经网络中各层的运算可以由运算电路1203或向量计算单元1207执行。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述图7-图9的方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
最后应说明的是:以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (18)

1.一种用于计算设备的深度学习训练方法,其特征在于,包括:
获取训练集、第一神经网络和第二神经网络,所述训练集中包括多个样本,所述第一神经网络包括一个或者多个第一中间层,且每个第一中间层中包括一个或者多个不具有残差连接的基础单元,所述第二神经网络包括多个网络层,所述多个网络层中包括输出层和一个或多个第二中间层,且每个第二中间层包括一个或者多个具有残差连接的基础单元,所述第一神经网络中所包括的残差连接少于所述第二神经网络所包括的残差连接,或者所述第一神经网络中不具有残差连接,所述第一神经网络所包括的残差连接数量是根据所述计算设备的内存大小确定的;
根据所述训练集对所述第一神经网络进行至少一次迭代训练,得到训练后的所述第一神经网络,其中,所述至少一次迭代训练中的任意一次迭代训练包括:将所述第一神经网络中的至少一个第一中间层的第一输出,作为所述第二神经网络的至少一个网络层的输入,得到所述第二神经网络的至少一个网络层的输出结果,使用第一损失函数更新所述第一神经网络,得到更新后的所述第一神经网络,所述第一损失函数包括基于所述第二神经网络的至少一个网络层的输出结果所获取的约束项。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一神经网络中的至少一个第一中间层的第一输出,作为所述第二神经网络的至少一个网络层的输入,得到所述第二神经网络的至少一个网络层的输出结果,包括:
将所述第一神经网络中的其中一个第一中间层的第一输出,作为所述第二神经网络的输出层的输入,得到所述第二神经网络的输出层的第一预测标签;
所述第一损失函数中包括第一约束项,所述第一约束项包括所述第二神经网络的输出层的所述第一预测标签对应的损失值。
3.根据权利要求2所述的方法,其特征在于,所述将所述第一神经网络中的其中一个第一中间层的第一输出,作为所述第二神经网络的输出层的输入,包括:
将所述第一神经网络中的最后一个第一中间层的第一输出,作为所述第二神经网络的输出层的输入,得到所述第二神经网络的输出层的第一预测标签。
4.根据权利要求2或3所述的方法,其特征在于,
所述第一约束项包括所述第二神经网络的输出层的所述第一预测标签和输入至所示第一神经网络的样本的真实标签之间的损失值;或者,
所述第一约束项包括所述第二神经网络的输出层的所述第一预测标签和第二预测标签之间的损失值,所述第二预测标签为所述第二神经网络针对输入至所示第一神经网络的样本的输出结果。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述将所述第一神经网络中的至少一个第一中间层的第一输出,作为所述第二神经网络的至少一个网络层的输入,得到所述第二神经网络的至少一个网络层的输出结果,还包括:
获取所述第一神经网络的至少一个第一中间层的第一输出;
将所述第一神经网络的至少一个第一中间层的第一输出分别作为所述第二神经网络的至少一个第二中间层的输入,得到所述第二神经网络的至少一个第二中间层的第二输出;
所述使用第一损失函数更新所述第一神经网络,得到更新后的所述第一神经网络,包括:
将输入至所示第一神经网络的样本作为第二神经网络的输入,得到所述第二神经网络的至少一个第二中间层的第三输出;
根据所述第一损失函数更新上一次迭代训练得到的所述第一神经网络,得到当前次迭代训练的所述第一神经网络,所述第一损失函数中还包括第二约束项,所述第二约束项中包括所述第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
6.根据权利要求1-3中任一项所述的方法,其特征在于,在所述任意一次迭代训练中,还包括:
获取所述第二神经网络针对输入至所示第一神经网络的样本的第二预测标签;
根据所述第二预测标签和输入至所示第一神经网络的样本的真实标签计算损失值;
根据所述损失值更新所述第二神经网络的参数,得到当前次迭代训练的第二神经网络。
7.根据权利要求1-3中任一项所述的方法,其特征在于,在所述根据所述训练集对所述第一神经网络进行至少一次迭代训练,得到训练后的所述第一神经网络之前,所述方法还包括:
使用所述训练集对所述第二神经网络的参数进行更新,得到更新后的所述第二神经网络。
8.根据权利要求1-3中任一项所述的方法,其特征在于,所述第一神经网络用于进行图片识别、分类任务或者目标检测中的至少一种。
9.一种训练装置,其特征在于,包括:
获取单元,用于获取训练集、第一神经网络和第二神经网络,所述训练集中包括多个样本,所述第一神经网络包括一个或者多个第一中间层,且每个第一中间层中包括一个或者多个不具有残差连接的基础单元,所述第二神经网络包括多个网络层,所述多个网络层中包括输出层和一个或多个第二中间层,且每个第二中间层包括一个或者多个具有残差连接的基础单元,所述第一神经网络中所包括的残差连接少于所述第二神经网络所包括的残差连接,或者所述第一神经网络中不具有残差连接,所述第一神经网络所包括的残差连接数量是根据运行所述第一神经网络的计算设备的内存大小确定的;
训练单元,用于根据所述训练集对所述第一神经网络进行至少一次迭代训练,得到训练后的所述第一神经网络,其中,所述至少一次迭代训练中的任意一次迭代训练包括:将所述第一神经网络中的至少一个第一中间层的第一输出,作为所述第二神经网络的至少一个网络层的输入,得到所述第二神经网络的至少一个网络层的输出结果,使用第一损失函数更新所述第一神经网络,得到更新后的所述第一神经网络,所述第一损失函数包括基于所述第二神经网络的至少一个网络层的输出结果所获取的约束项。
10.根据权利要求9所述的装置,其特征在于,所述训练单元,具体用于:
将所述第一神经网络中的其中一个第一中间层的第一输出,作为所述第二神经网络的输出层的输入,得到所述第二神经网络的输出层的第一预测标签;
所述第一损失函数中包括第一约束项,所述第一约束项包括所述第二神经网络的输出层的所述第一预测标签对应的损失值。
11.根据权利要求10所述的装置,其特征在于,
所述训练单元,具体用于:将所述第一神经网络中的最后一个第一中间层的第一输出,作为所述第二神经网络的输出层的输入,得到所述第二神经网络的输出层的第一预测标签。
12.根据权利要求10或11所述的装置,其特征在于,
所述第一约束项包括所述第二神经网络的输出层的所述第一预测标签和输入至所示第一神经网络的样本的真实标签之间的损失值;或者,
所述第一约束项包括所述第二神经网络的输出层的所述第一预测标签和第二预测标签之间的损失值,所述第二预测标签为所述第二神经网络针对输入至所示第一神经网络的样本的输出结果。
13.根据权利要求9-11中任一项所述的装置,其特征在于,所述训练单元,还用于:
获取所述第一神经网络的至少一个第一中间层的第一输出;
将所述第一神经网络的至少一个第一中间层的第一输出分别作为所述第二神经网络的至少一个第二中间层的输入,得到所述第二神经网络的至少一个第二中间层的第二输出;
将输入至所示第一神经网络的样本作为第二神经网络的输入,得到所述第二神经网络的至少一个第二中间层的第三输出;
根据所述第一损失函数更新上一次迭代训练得到的所述第一神经网络,得到当前次迭代训练的所述第一神经网络,所述第一损失函数中还包括第二约束项,所述第二约束项中包括所述第二神经网络的至少一个第二中间层的第二输出和对应的第三输出之间的损失值。
14.根据权利要求9-11中任一项所述的装置,其特征在于,所述训练单元,还用于:
获取所述第二神经网络针对输入至所示第一神经网络的样本的第二预测标签;
根据所述第二预测标签和输入至所示第一神经网络的样本的真实标签计算损失值;
根据所述损失值更新所述第二神经网络的参数,得到当前次迭代训练的第二神经网络。
15.根据权利要求9-11中任一项所述的装置,其特征在于,所述训练单元,还用于在所述训练单元根据所述训练集对所述第一神经网络进行至少一次迭代训练,得到训练后的所述第一神经网络之前,使用所述训练集对所述第二神经网络的参数进行更新,得到更新后的所述第二神经网络。
16.根据权利要求9-11中任一项所述的装置,其特征在于,所述第一神经网络用于进行图片识别、分类任务或者目标检测中的至少一种。
17.一种训练装置,其特征在于,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序,当所述存储器存储的程序指令被所述处理器执行时实现权利要求1至8中任一项所述的方法。
18.一种计算机可读存储介质,包括程序,当其被处理单元所执行时,执行如权利要求1至8中任一项所述的方法。
CN202010899680.0A 2020-08-31 2020-08-31 一种用于计算设备的深度学习训练方法和装置 Active CN112183718B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010899680.0A CN112183718B (zh) 2020-08-31 2020-08-31 一种用于计算设备的深度学习训练方法和装置
PCT/CN2021/115216 WO2022042713A1 (zh) 2020-08-31 2021-08-30 一种用于计算设备的深度学习训练方法和装置
EP21860545.9A EP4198826A4 (en) 2020-08-31 2021-08-30 DEEP LEARNING TRAINING METHOD AND APPARATUS FOR USE IN A DATA PROCESSING APPARATUS
US18/175,936 US20230206069A1 (en) 2020-08-31 2023-02-28 Deep Learning Training Method for Computing Device and Apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010899680.0A CN112183718B (zh) 2020-08-31 2020-08-31 一种用于计算设备的深度学习训练方法和装置

Publications (2)

Publication Number Publication Date
CN112183718A CN112183718A (zh) 2021-01-05
CN112183718B true CN112183718B (zh) 2023-10-10

Family

ID=73924573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010899680.0A Active CN112183718B (zh) 2020-08-31 2020-08-31 一种用于计算设备的深度学习训练方法和装置

Country Status (4)

Country Link
US (1) US20230206069A1 (zh)
EP (1) EP4198826A4 (zh)
CN (1) CN112183718B (zh)
WO (1) WO2022042713A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112183718B (zh) * 2020-08-31 2023-10-10 华为技术有限公司 一种用于计算设备的深度学习训练方法和装置
CN112766463A (zh) * 2021-01-25 2021-05-07 上海有个机器人有限公司 基于知识蒸馏技术优化神经网络模型的方法
CN112949761A (zh) * 2021-03-31 2021-06-11 东莞中国科学院云计算产业技术创新与育成中心 三维图像神经网络模型的训练方法、装置和计算机设备
CN113239985B (zh) * 2021-04-25 2022-12-13 北京航空航天大学 一种面向分布式小规模医疗数据集的分类检测方法
US11775655B2 (en) * 2021-05-11 2023-10-03 International Business Machines Corporation Risk assessment of a container build
CN113411425B (zh) * 2021-06-21 2023-11-07 深圳思谋信息科技有限公司 视频超分模型构建处理方法、装置、计算机设备和介质
CN113935554B (zh) * 2021-12-15 2022-05-13 北京达佳互联信息技术有限公司 投放系统中的模型训练方法、资源投放方法及装置
CN114299304B (zh) * 2021-12-15 2024-04-12 腾讯科技(深圳)有限公司 一种图像处理方法及相关设备
CN114693995B (zh) * 2022-04-14 2023-07-07 北京百度网讯科技有限公司 应用于图像处理的模型训练方法、图像处理方法和设备
CN114881170B (zh) * 2022-05-27 2023-07-14 北京百度网讯科技有限公司 用于对话任务的神经网络的训练方法和对话任务处理方法
CN115333903B (zh) * 2022-07-13 2023-04-14 丝路梵天(甘肃)通信技术有限公司 同步头检测方法、同步方法、装置、接收机及通信系统
CN115563907A (zh) * 2022-11-10 2023-01-03 中国长江三峡集团有限公司 水动力模型参数优化、水位流量变化过程模拟方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109978003A (zh) * 2019-02-21 2019-07-05 上海理工大学 基于密集连接残差网络的图像分类方法
CN109993809A (zh) * 2019-03-18 2019-07-09 杭州电子科技大学 基于残差U-net卷积神经网络的快速磁共振成像方法
CN110210555A (zh) * 2019-05-29 2019-09-06 西南交通大学 基于深度学习的钢轨鱼鳞伤损检测方法
CN110390660A (zh) * 2018-04-16 2019-10-29 北京连心医疗科技有限公司 一种医学图像危及器官自动分类方法、设备和储存介质
CN110674880A (zh) * 2019-09-27 2020-01-10 北京迈格威科技有限公司 用于知识蒸馏的网络训练方法、装置、介质与电子设备
CN111598182A (zh) * 2020-05-22 2020-08-28 北京市商汤科技开发有限公司 训练神经网络及图像识别的方法、装置、设备及介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10540591B2 (en) * 2017-10-16 2020-01-21 Illumina, Inc. Deep learning-based techniques for pre-training deep convolutional neural networks
EP3622519B1 (en) * 2017-10-16 2023-09-13 Illumina, Inc. Deep learning-based aberrant splicing detection
CN112183718B (zh) * 2020-08-31 2023-10-10 华为技术有限公司 一种用于计算设备的深度学习训练方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110390660A (zh) * 2018-04-16 2019-10-29 北京连心医疗科技有限公司 一种医学图像危及器官自动分类方法、设备和储存介质
CN109978003A (zh) * 2019-02-21 2019-07-05 上海理工大学 基于密集连接残差网络的图像分类方法
CN109993809A (zh) * 2019-03-18 2019-07-09 杭州电子科技大学 基于残差U-net卷积神经网络的快速磁共振成像方法
CN110210555A (zh) * 2019-05-29 2019-09-06 西南交通大学 基于深度学习的钢轨鱼鳞伤损检测方法
CN110674880A (zh) * 2019-09-27 2020-01-10 北京迈格威科技有限公司 用于知识蒸馏的网络训练方法、装置、介质与电子设备
CN111598182A (zh) * 2020-05-22 2020-08-28 北京市商汤科技开发有限公司 训练神经网络及图像识别的方法、装置、设备及介质

Also Published As

Publication number Publication date
CN112183718A (zh) 2021-01-05
US20230206069A1 (en) 2023-06-29
EP4198826A4 (en) 2024-03-06
EP4198826A1 (en) 2023-06-21
WO2022042713A1 (zh) 2022-03-03

Similar Documents

Publication Publication Date Title
CN112183718B (zh) 一种用于计算设备的深度学习训练方法和装置
WO2022083536A1 (zh) 一种神经网络构建方法以及装置
CN110175671B (zh) 神经网络的构建方法、图像处理方法及装置
WO2021120719A1 (zh) 神经网络模型更新方法、图像处理方法及装置
WO2021238366A1 (zh) 一种神经网络构建方法以及装置
CN112651511B (zh) 一种训练模型的方法、数据处理的方法以及装置
CN111507378A (zh) 训练图像处理模型的方法和装置
WO2022001805A1 (zh) 一种神经网络蒸馏方法及装置
WO2022052601A1 (zh) 神经网络模型的训练方法、图像处理方法及装置
CN113807399B (zh) 一种神经网络训练方法、检测方法以及装置
WO2021008206A1 (zh) 神经网络结构的搜索方法、图像处理方法和装置
CN113705769A (zh) 一种神经网络训练方法以及装置
CN111783937A (zh) 一种神经网络构建方法以及系统
WO2021218517A1 (zh) 获取神经网络模型的方法、图像处理方法及装置
CN110222718B (zh) 图像处理的方法及装置
WO2023231794A1 (zh) 一种神经网络参数量化方法和装置
WO2022012668A1 (zh) 一种训练集处理方法和装置
CN113592060A (zh) 一种神经网络优化方法以及装置
CN111797992A (zh) 一种机器学习优化方法以及装置
CN111340190A (zh) 构建网络结构的方法与装置、及图像生成方法与装置
CN111931901A (zh) 一种神经网络构建方法以及装置
CN113627163A (zh) 一种注意力模型、特征提取方法及相关装置
WO2022156475A1 (zh) 神经网络模型的训练方法、数据处理方法及装置
CN114298289A (zh) 一种数据处理的方法、数据处理设备及存储介质
CN113128285A (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
GR01 Patent grant