一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

神经网络训练方法、电子设备及计算机可读存储介质与流程

2022-02-22 17:38:02 来源:中国专利 TAG:


1.本技术属于深度学习领域,具体涉及一种神经网络训练方法、电子设备及计算机可读存储介质。


背景技术:

2.在结合多个图形处理器(graphics processing unit,gpu)来并行训练卷积神经网络前向传播过程中,由于位于不同gpu上的样本之间的分布可能会有显著差异,可能会导致计算损失函数并按照损失函数反向传播梯度时,卷积神经网络的参数学习发生了剧烈扰动而使得训练不收敛,因此,有针对各个gpu上的样本使用批归一化(batch normalization,bn)的需求。
3.其中,批归一化的具体做法是:在单个gpu上,统计所有样本的特征向量,计算该gpu上所有样本的特征向量的实际均值以及实际标准差;然后用该gpu上的每个样本的特征向量减去该gpu上的实际均值并除以实际标准差。
4.此外,还存在一种全局同步批归一化(sync bn),其具体做法是:在单个gpu上,统计所有样本的特征向量,计算该gpu上所有样本的特征向量的实际均值以及实际标准差,然后计算所有gpu的实际均值的平均均值以及所有gpu的实际标准差的平均标准差,并用平均均值替换各个gpu的实际均值以及用平均标准差替换各个gpu的实际标准差。后续,用该gpu上的每个样本的特征向量减去该gpu上的平均均值并除以平均标准差。
5.在现有技术中,针对待训练的卷积神经网络m1,会初始化与其存在相同结构的卷积神经网络m2。m1通过梯度反向传播,m2使用m1的参数的滑动平均进行更新。
6.其中,为了保证后续的训练效果,m1与m2均需要采用全局同步批归一化,让每个gpu上的样本均值以及样本标准差相同。但是由于全局同步批归一化对设备的计算能力存在较高的要求,因此,使用全局同步批归一化所对应的计算消耗较大,会使得训练过程较为缓慢。


技术实现要素:

7.有鉴于此,本技术的目的在于提供一种神经网络训练方法、电子设备及计算机可读存储介质,可以在尽可能保证训练效果的基础上,减少训练过程的计算消耗,有利于加快训练速度。
8.本技术的实施例是这样实现的:
9.第一方面,本技术实施例提供一种神经网络训练方法,应用于gpu,所述gpu用于对结构部分相同或完全相同的第一卷积神经网络m1以及第二卷积神经网络m2进行训练,所述方法包括:获取第一样本子集中每个样本的第一特征向量;所述每个样本的第一特征向量通过所述m2对该样本进行特征提取,并对特征提取结果进行批归一化得到;获取第二样本子集中的部分样本,以及获取所述部分样本中的每个样本的第二特征向量;所述每个样本的第二特征向量通过所述m1对该样本进行特征提取,并对特征提取结果进行全局同步批归
一化得到;根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数;其中,所述第一样本子集与所述第二样本子集由同一个原始样本集通过不同的数据增广方法得到。
10.在上述过程中,由于通过m2进行特征提取来得到第一特征向量时使用的是普通批归一化,通过m1进行特征提取来得到第二特征向量时使用的是全局同步批归一化,且已知普通批归一化对计算资源的消耗量小于全局同步批归一化对计算资源的消耗量,因此,相较于现有技术中m1与m2均采用全局同步批归一化的做法,本技术实施例所提供的训练方式,可以减轻整个训练过程对计算资源的消耗量,有利于加快训练速度。
11.结合第一方面实施例,在一种可能的实施方式中,所述方法应用于存在多个gpu的应用场景,在每个所述gpu上初始化所述m1以及所述m2,各个所述gpu并行地根据保存在本设备上的第一样本子集以及第二样本子集对初始化在本设备上的m1的参数以及m2的参数进行更新。
12.结合第一方面实施例,在一种可能的实施方式中,所述获取第二样本子集中的部分样本,以及获取所述部分样本中的每个样本的第二特征向量,包括:分批次地从所述第二样本子集中获取部分样本,以及获取本批次得到的部分样本中的每个样本的第二特征向量;
13.相应的,所述根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数,包括:在每个批次,根据所述第一特征向量以及本批次的第二特征向量,更新所述m1当前的参数以及所述m2当前的参数。
14.结合第一方面实施例,在一种可能的实施方式中,所述在每个批次,根据所述第一特征向量以及本批次的第二特征向量,更新所述m1当前的参数以及所述m2当前的参数,包括:在每个批次,从所述第一样本子集的所有第一特征向量中确定出目标特征向量,其中,所述第一样本子集中用于提取出所述目标特征向量的样本与所述第二样本子集中用于提取出本批次的第二特征向量的样本,由所述原始样本集中的同一个样本通过不同的数据增广方法得到;在每个批次,根据损失函数计算所述目标特征向量与本批次的第二特征向量的损失值;在每个批次,根据所述损失函数以及本批次所得到的损失值更新所述m1当前的参数以及所述m2当前的参数;其中,所述m1当前的参数通过梯度反向传播进行更新,所述梯度为将所述损失值带入所述损失函数的偏导数后所得到的结果;所述m2当前的参数通过所述m1更新后的参数的滑动平均进行更新。
15.结合第一方面实施例,在一种可能的实施方式中,更新所述m2当前的参数的过程为:计算所述m2当前的参数与第一预设参数的第一乘积值;计算所述m1更新后的参数与第二预设参数的第二乘积值;计算所述第一乘积值与所述第二乘积值的和值,所述和值为所述m2更新后的参数。
16.结合第一方面实施例,在一种可能的实施方式中,所述m2当前的参数通过公式a2’=m
·
a2 (1-m)
·
a1更新;其中,m为所述第一预设参数,a2’为所述m2更新后的参数,a2为所述m2当前的参数,a1为所述m1更新后的参数,(1-m)为所述第二预设参数。
17.结合第一方面实施例,在一种可能的实施方式中,所述对特征提取结果进行全局同步批归一化,包括:通过本设备上的m1对本设备上的所述部分样本进行特征提取,得到本设备的特征提取结果;计算所述本设备的特征提取结果的实际均值以及所述本设备的特征
提取结果的实际标准差;获取其他gpu的特征提取结果的实际均值,并根据所述其他gpu的特征提取结果的实际均值以及所述本设备的特征提取结果的实际均值,计算全局均值;获取其他gpu的特征提取结果的实际标准差,并根据所述其他gpu的特征提取结果的实际标准差以及所述本设备的特征提取结果的实际标准差,计算全局标准差;根据所述全局均值以及所述全局标准差,对本设备的特征提取结果进行批归一化。
18.结合第一方面实施例,在一种可能的实施方式中,所述第一样本子集与所述第二样本子集在所述gpu上分别单独存储,且所述gpu上用于存储所述第一样本子集的存储空间与所述gpu上用于存储所述第二样本子集的存储空间相同,且所述存储空间大于所述m2单次所能处理的样本数量与所述gpu的个数的乘积值。
19.结合第一方面实施例,在一种可能的实施方式中,所述gpu所获取到的所述原始样本集是由从训练集中采样得到的一批样本按照所述gpu的个数进行均等分后得到。
20.结合第一方面实施例,在一种可能的实施方式中,所述损失函数为比对损失函数或者为l2损失函数。
21.第二方面,本技术实施例提供一种神经网络训练装置,应用于gpu,所述gpu用于对结构部分相同或完全相同的第一卷积神经网络m1以及第二卷积神经网络m2进行训练,所述装置包括:获取模块以及训练模块。
22.获取模块,用于获取第一样本子集中每个样本的第一特征向量;所述每个样本的第一特征向量通过所述m2对该样本进行特征提取,并对特征提取结果进行批归一化得到;
23.所述获取模块,还用于获取第二样本子集中的部分样本,以及获取所述部分样本中的每个样本的第二特征向量;所述每个样本的第二特征向量通过所述m1对该样本进行特征提取,并对特征提取结果进行全局同步批归一化得到;
24.所述训练模块,用于根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数;
25.其中,所述第一样本子集与所述第二样本子集由同一个原始样本集通过不同的数据增广方法得到。
26.结合第二方面实施例,在一种可能的实施方式中,所述方法应用于存在多个gpu的应用场景,在每个所述gpu上初始化所述m1以及所述m2,各个所述gpu并行地根据保存在本设备上的第一样本子集以及第二样本子集对初始化在本设备上的m1的参数以及m2的参数进行更新。
27.结合第二方面实施例,在一种可能的实施方式中,所述获取模块,用于分批次地从所述第二样本子集中获取部分样本,以及获取本批次得到的部分样本中的每个样本的第二特征向量;
28.相应的,所述训练模块,用于在每个批次,根据所述第一特征向量以及本批次的第二特征向量,更新所述m1当前的参数以及所述m2当前的参数。
29.结合第二方面实施例,在一种可能的实施方式中,所述训练模块,用于:在每个批次,从所述第一样本子集的所有第一特征向量中确定出目标特征向量,其中,所述第一样本子集中用于提取出所述目标特征向量的样本与所述第二样本子集中用于提取出本批次的第二特征向量的样本,由所述原始样本集中的同一个样本通过不同的数据增广方法得到;在每个批次,根据损失函数计算所述目标特征向量与本批次的第二特征向量的损失值;在
每个批次,根据所述损失函数以及本批次所得到的损失值更新所述m1当前的参数以及所述m2当前的参数;
30.其中,所述m1当前的参数通过梯度反向传播进行更新,所述梯度为将所述损失值带入所述损失函数的偏导数后所得到的结果;所述m2当前的参数通过所述m1更新后的参数的滑动平均进行更新。
31.结合第二方面实施例,在一种可能的实施方式中,更新所述m2当前的参数的过程为:计算所述m2当前的参数与第一预设参数的第一乘积值;计算所述m1更新后的参数与第二预设参数的第二乘积值;计算所述第一乘积值与所述第二乘积值的和值,所述和值为所述m2更新后的参数。
32.结合第二方面实施例,在一种可能的实施方式中,所述m2当前的参数通过公式a2’=m
·
a2 (1-m)
·
a1更新;其中,m为所述第一预设参数,a2’为所述m2更新后的参数,a2为所述m2当前的参数,a1为所述m1更新后的参数,(1-m)为所述第二预设参数。
33.结合第二方面实施例,在一种可能的实施方式中,所述获取模块,用于:通过本设备上的m1对本设备上的所述部分样本进行特征提取,得到本设备的特征提取结果;计算所述本设备的特征提取结果的实际均值以及所述本设备的特征提取结果的实际标准差;获取其他gpu的特征提取结果的实际均值,并根据所述其他gpu的特征提取结果的实际均值以及所述本设备的特征提取结果的实际均值,计算全局均值;获取其他gpu的特征提取结果的实际标准差,并根据所述其他gpu的特征提取结果的实际标准差以及所述本设备的特征提取结果的实际标准差,计算全局标准差;根据所述全局均值以及所述全局标准差,对本设备的特征提取结果进行批归一化。
34.结合第二方面实施例,在一种可能的实施方式中,所述第一样本子集与所述第二样本子集在所述gpu上分别单独存储,且所述gpu上用于存储所述第一样本子集的存储空间与所述gpu上用于存储所述第二样本子集的存储空间相同,且所述存储空间大于所述m2单次所能处理的样本数量与所述gpu的个数的乘积值。
35.结合第二方面实施例,在一种可能的实施方式中,所述gpu所获取到的所述原始样本集是由从训练集中采样得到的一批样本按照所述gpu的个数进行均等分后得到。
36.结合第二方面实施例,在一种可能的实施方式中,所述损失函数为比对损失函数或者为l2损失函数。
37.第三方面,本技术实施例还提供一种电子设备,包括:存储器和处理器,所述存储器和所述处理器连接;所述存储器用于存储程序;所述处理器调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
38.第四方面,本技术实施例还提供一种非易失性计算机可读取存储介质(以下简称计算机可读存储介质),其上存储有计算机程序,所述计算机程序被计算机运行时执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
39.第五方面,本技术实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器运行时执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
40.本技术的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得
显而易见,或者通过实施本技术实施例而了解。本技术的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
41.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本技术的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本技术的主旨。
42.图1示出本技术实施例提供的一种神经网络训练方法的流程图。
43.图2示出本技术实施例提供的一种神经网络训练方法的处理过程示意图之一。
44.图3示出本技术实施例提供的一种神经网络训练方法的处理过程示意图之二。
45.图4示出本技术实施例提供的一种神经网络训练装置的结构框图。
46.图5示出本技术实施例提供的一种电子设备的结构示意图。
47.附图标记:100-电子设备;110-处理器;120-存储器;130-图形处理器;400-神经网络训练装置;410-获取模块;420-训练模块。
具体实施方式
48.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
49.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
50.再者,本技术中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。
51.近年来,基于人工智能的计算机视觉、深度学习、机器学习、图像处理、图像识别等技术研究取得了重要进展。人工智能(artificial intelligence,ai)是研究、开发用于模拟、延伸人的智能的理论、方法、技术及应用系统的新兴科学技术。人工智能学科是一门综合性学科,涉及芯片、大数据、云计算、物联网、分布式存储、深度学习、机器学习、神经网络等诸多技术种类。计算机视觉作为人工智能的一个重要分支,具体是让机器识别世界,计算机视觉技术通常包括人脸识别、活体检测、指纹识别与防伪验证、生物特征识别、人脸检测、行人检测、目标检测、行人识别、图像处理、图像识别、图像语义理解、图像检索、文字识别、视频处理、视频内容识别、行为识别、三维重建、虚拟现实、增强现实、同步定位与地图构建
(slam)、计算摄影、机器人导航与定位等技术。随着人工智能技术的研究和进步,该项技术在众多领域展开了应用,例如安防、城市管理、交通管理、楼宇管理、园区管理、人脸通行、人脸考勤、物流管理、仓储管理、机器人、智能营销、计算摄影、手机影像、云服务、智能家居、穿戴设备、无人驾驶、自动驾驶、智能医疗、人脸支付、人脸解锁、指纹解锁、人证核验、智慧屏、智能电视、摄像机、移动互联网、网络直播、美颜、美妆、医疗美容、智能测温等领域。
52.其中,由于人工智能行业得到迅速发展,相应的,在对神经网络模型进行训练时,对神经网络模型的训练要求也越来越高,而目前的神经网络的训练方式存在训练过程较慢的问题,无法满足行业需求。
53.为了解决上述问题,本技术实施例提供一种神经网络训练方法、电子设备及计算机可读存储介质,可以在尽可能保证训练效果的基础上,减少训练过程的计算消耗,有利于加快训练速度。
54.该技术可采用相应的软件、硬件以及软硬结合的方式实现。以下对本技术实施例进行详细介绍。
55.下面将针对本技术所提供的神经网络训练方法进行介绍。
56.其中,本技术实施例所提供的神经网络训练方法,应用于gpu,该gpu用于对第一卷积神经网络m1以及第二卷积神经网络m2进行训练。
57.在一些实施方式中,m1与m2的结构可以完全相同。例如针对moco(momentum contrast for unsupervised visual representation learning,一种非监督学习框架)框架而言,m1与m2完全相同。
58.在另一些实施方式中,m1与m2的结构也可以部分相同,例如针对byol(bootstrap your own latent,一种自监督学习框架)框架而言,m1与m2的大致结构相同,局部结构存在区别。
59.值得指出的是,当m1与m2的结构部分相同时,本技术实施例所提及的神经网络训练方法用于对m1与m2的相同部分的参数进行更新。
60.下面将结合图1对神经网络训练方法所包含的步骤进行说明。
61.步骤s110:获取第一样本子集中每个样本的第一特征向量;所述每个样本的第一特征向量通过所述m2对该样本进行特征提取,并对特征提取结果进行批归一化得到。
62.步骤s120:获取第二样本子集中的部分样本,以及获取所述部分样本中的每个样本的第二特征向量;所述每个样本的第二特征向量通过所述m1对该样本进行特征提取,并对特征提取结果进行全局同步批归一化得到。
63.值得指出的是,上述所涉及到的样本可以是三维张量,例如为尺寸为3
×h×
w的图片;m1与m2的输出为经过模长归一化的l维向量。
64.步骤s130:根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数。
65.其中,第一样本子集与第二样本子集分别是由同一个原始样本集通过不同的数据增广方法得到的两个不同的样本子集。
66.由于是由同一个原始样本集通过不同的数据增广方法得到的两个不同的样本子集,那么对于第二样本子集内的任意样本a,均可以在第一样本子集内找到与该样本a属于同一类样本的目标样本a’。
67.其中,属于同一类样本的样本a与样本a’是由同一个样本采用不同的数据增广方法得到的具有不同的样本特性的两个样本,这两个样本之间形成样本对。
68.在上述前提下,在对m1与m2进行训练时,是先从第二样本子集所包括的所有样本中获取部分样本,以及获取与该部分样本中的每个样本对应的第二特征向量。
69.然后从第一样本子集所提取出来的所有第一特征向量中找到与各个第二特征向量一一对应的目标特征向量。每个一一对应的目标特征向量与第二特征向量之间形成一个特征向量对。
70.其中,第一样本子集中用于提取出目标特征向量的样本与第二样本子集中用于提取出第二特征向量的样本,分别是由原始样本集中的同一个样本通过不同的数据增广方法得到的两个样本,这两个样本之间是样本对的关系。
71.在得到特征向量对后,可以将特征向量对中的目标特征向量以及第二特性向量带入到预先设置的损失函数中,从而可以通过损失函数计算出特征向量对中的目标特征向量与第二特性向量之间的损失值,以便后续根据该损失值以及该损失函数来对m1当前的参数以及m2当前的参数进行更新。
72.其中,在对m1当前的参数进行更新时,是先对损失函数求偏导数,得到偏导数的表达式,然后将损失值带入偏导数的表达式,得到梯度。在得到梯度后,将梯度在m1中进行反向传播,以此来对m1当前的参数进行更新,得到m1更新后的参数。
73.其中,该损失函数是m1的目标函数,且该损失函数可以根据具体的模型框架来确定,例如针对moco框架,损失函数可以设置为对比损失,针对byol框架,损失函数可以设置为l2损失。
74.在对m1的参数进行更新后,再根据m1更新后的参数来对m2的当前的参数进行更新,例如m2当前的参数通过m1更新后的参数的滑动平均进行更新。也就是说,在本技术实施例中,m2是不需要通过梯度反向传播更新的卷积神经网络。
75.在一些实施方式中,更新m2当前的参数的过程可以为:计算m2当前的参数与第一预设参数的第一乘积值;计算m1更新后的参数与第二预设参数的第二乘积值;计算第一乘积值与第二乘积值的和值。该和值即为m2更新后的参数。
76.具体的,在一些实施方式中,可以通过公式a2’=m
·
a2 (1-m)
·
a1,来对m2当前的参数进行更新。其中,m为第一预设参数(例如为0.99,当然也可以是其他经验值),a2’为m2更新后的参数,a2为m2当前的参数,a1为m1更新后的参数,(1-m)为第二预设参数。
77.在上述过程中,由于通过m2对第一样本子集内的样本进行特征提取来得到第一特征向量时,使用的是普通批归一化;通过m1对第二样本子集内的部分样本进行特征提取来得到第二特征向量时,使用的是全局同步批归一化;且已知普通批归一化对计算资源的消耗量小于全局同步批归一化对计算资源的消耗量,因此,相较于现有技术中m2与m1均采用全局同步批归一化的做法,本技术实施例所提供的训练方式,可以减轻整个训练过程对计算资源的消耗量,有利于加快训练速度。
78.在一些实施方式中,在执行上述步骤s120时,可以分批次地从第二样本子集中获取部分样本,以及获取本批次得到的部分样本中的每个样本的第二特征向量。
79.在这种实施方式下,对m1以及m2进行训练时,相应的是分多个批次,采用迭代的方式对m1当前的参数以及m2当前的参数进行更新,即在执行步骤s130时,是在每个批次,根据
第一特征向量以及本批次的第二特征向量,更新m1当前的参数以及m2当前的参数。
80.具体的,在分批次地从第二样本子集中获取部分样本这种实施方式中,在执行步骤s130时,在每个批次,根据第一特征向量以及本批次的第二特征向量,更新m1当前的参数以及m2当前的参数,包括:在每个批次,从第一样本子集的所有第一特征向量中确定出目标特征向量,其中,第一样本子集中用于提取出目标特征向量的样本与第二样本子集中用于提取出本批次的第二特征向量的样本,由原始样本集中的同一个样本通过不同的数据增广方法得到;在每个批次,根据损失函数计算目标特征向量与本批次的第二特征向量的损失值;在每个批次,根据损失函数以及本批次所得到的损失值更新m1当前的参数以及m2当前的参数。
81.其中,在每个批次根据损失函数以及本批次所得到的损失值更新m1当前的参数以及m2当前的参数的过程与前述实施方式类似,此处不再赘述。
82.值得指出的是,上述任意实施方式所介绍的神经网络训练方法可以适用于单个gpu的应用场景,也可以适用于多个gpu的应用场景。下面将结合具体的应用场景(以多个gpu来并行训练m1以及m2为例),对图1中的各个步骤进行详细介绍。
83.在结合多个gpu并行训练m1以及m2的具体应用场景中,在每个gpu上均初始化有m1以及m2,且各个gpu上的m1相同,以及各个gpu上的m2也相同。至于m1与m2的结构是否相同,则与上文类似的,根据具体的训练框架来决定。
84.其中,各个gpu并行地根据保存在本设备上的第一样本子集以及第二样本子集,对本设备上的m1以及m2当前的参数进行更新。
85.值得指出的是,针对每个gpu而言,该gpu上所保存的第一样本子集以及第二样本子集分别单独存储。例如针对每个gpu而言,从其存储空间(例如内存、磁盘等)申请两个独立的存储位置,分别为第一存储位置o1以及第二存储位置o2,第一存储位置o1以及第二存储位置o2的存储容量相同。
86.当然,o1以及o2所占用的存储资源可以是gpu所在的设备上自带的存储资源,也可以是gpu所在的设备通过增设额外的存储器所形成的存储资源。
87.其中o1用于存储第一样本子集所包括的样本,o2用于存储第二样本子集所包括的样本。
88.对于每个gpu而言,其第一存储位置o1内存储的第一样本子集与该gpu的第二存储位置器o2内存储的第二样本子集,是由同一个原始样本集通过不同的数据增广方法得到的两个样本子集。
89.相应的,对于每个gpu而言,其第二存储位置o2内存储的第二样本子集所包括的任意样本a,都能在该gpu的第一存储位置器o1内存储的第一样本子集所包括的样本中找到一个目标样本a’,该目标样本a’与样本a可形成样本对。
90.为了保证在同一个gpu上的o1内所存储的样本与该gpu的o2内所存储的样本构成一一对应的样本对,在一些实施方式中,可以从包括大量样本的训练集中,通过分批次采样的方式抽取出多批样本。然后针对每一批次的样本,将其均分成n份(n等于gpu的个数),并均分给各个gpu。对于每个gpu而言,其所获取到的那一份样本所形成的集合即为原始样本集。
91.后续,可以针对每个gpu所获取到的原始样本集中的每个原始样本z按照不同的数
据增广方法进行两次数据增广,得到第一增广样本x以及第二增广样本y,并将第一增广样本x保存到该gpu的o1内,将第二增广样本y保存到该gpu的o2内。然后再重复上述从训练集中采样一批样本-均分-数据增广-分配增广样本的流程,直至每个gpu的o1以及o2存满增广样本。其中,o1内的第一增广样本所构成的集合即为第一样本子集,o2内的第二增广样本所构成的集合即为第二样本子集。
92.其中,通过数据增广后所得到的第一增广样本x以及第二增广样本y同源(都来自于样本z)。此外,由于数据增广中具有随机性,因此,第一增广样本x以及第二增广样本y是同源且具有不同样本特征的同一类样本,可以形成样本对。
93.当然,在一些实施方式中,也可以是先将从训练集中分批次采样得到的那一批次样本按照不同的数据增广方法进行数据增广后,再将增广样本均分成n份分配给n个gpu,直至每个gpu的o1以及o2存满增广样本。
94.值得指出的是,由于上述过程所涉及到的数据增广操作是较为成熟的现有技术,此处不再赘述。
95.在各个gpu的o1以及o2均装满样本后,针对每个gpu而言,即可对本设备上的m1以及m2进行一轮训练。
96.在本技术实施例中,当每个gpu针对本设备上的m1以及m2进行一轮训练,均会并行地执行一次步骤s110-步骤s130。
97.前文提及,在执行步骤s120-130时,可以是获取第二样本子集中的部分样本,以及获取该部分样本中的每个样本的第二特征向量,根据第一特征向量以及第二特征向量,更新m1的参数以及m2的参数。在这种实施方式下,每一轮训练过程包括一次训练。
98.前文提及,在执行步骤s120-130时,还可以是分批次地从第二样本子集中获取部分样本,以及获取本批次得到的部分样本中的每个样本的第二特征向量,在每个批次,根据第一特征向量以及本批次的第二特征向量,更新m1当前的参数以及m2当前的参数。在这种实施方式下,在每一轮训练过程中,包括多次训练,对应于上文所提及到的分批次地从第二样本子集所包括的所有样本中获取部分样本,以及获取该部分样本的第二特征向量及其后续训练过程。
99.具体的,一次训练对应于一个批次,具体可以包括:每个gpu按照上文所提及的方式,从本设备上的第二样本子集所包括的所有样本中获取一批部分样本及其第二特征向量,然后从本设备上的第一样本子集所提取出来的所有第一特征向量中找到与当前的各个第二特征向量一一对应的目标特征向量,形成多个特征向量对。根据m1的损失函数计算多个特征向量对的损失值,并将通过损失值以及m1的损失函数所计算出的梯度在m1中进行反向传播,以此来对m1当前的参数进行更新,以及基于m1更新后的参数来对m2当前的参数进行更新。
100.其中,在一些实施方式中,在每一次训练完成后,针对第一样本子集以及第二样本子集中本次训练时所使用到的那些样本,会对其进行清空处理。因此,对于每个gpu而言,每一轮训练,即是本设备的o1以及o2内的样本从满载到被清空的过程。后续,若需要再次进行下轮训练,则需要重新向各个gpu的o1以及o2内存储满样本,并重复上述过程。对应于这种实施方式,训练过程的示意图可以参照图2。
101.在另一些实施方式中,在每一次训练完成后,并不会立即对本次所使用到的样本
进行清空,而是对其进行记录,表征该样本在本轮训练过程中已被使用过一次。当经过多次训练使得o1以及o2内的所有样本均被使用过一次后,gpu可以清空本设备当前的所有第一特征向量以及所有第二特征向量,并将o1以及o2内的样本进行互换,即将第一样本子集与第二样本子集进行互换。
102.在完成互换后,gpu重新通过m2对新的第一样本子集内的所有样本进行特征提取,得到第一特征向量,以及重新分批次地通过m1对新的第二样本子集内的部分样本进行特征提取,得到第二特征向量,并继续基于第一特征向量以及第二特征向量进行多次训练。每一次训练完成后,依旧对使用过的样本进行记录,直至再次经过多次训练导致o1以及o2内的所有样本均被使用过两次后,清空本设备上的所有样本。对应于这种实施方式,训练过程的示意图可以参照图3。
103.当然,值得指出的是,不管采用图2的方式还是采用图3的方式,针对每次训练过程中从第二样本子集groupb中所获取到的部分样本groupb1,均可以在第一样本子集groupa中找到groupa1,使得groupb1与groupa1中所包括的样本形成一一对应的样本对。
104.当然,针对由groupb1中的样本进行特征提取所得到的每个第二特征向量,均可以在所有第一特征向量中找到对应的第一特征向量(目标特征向量),使得特征向量与目标特征向量形成一一对应的特征向量对。
105.现在假设一轮训练包括多次训练,以及存在8个gpu,分别为gpu1、gpu2、gpu3...gpu8,且在每个gpu的第一样本子集groupa内存在256个样本,以及在每个gpu的第二样本子集groupb内存在256个样本。
106.由于在训练过程中,每个gpu所需要执行的步骤都一样,因此,为了便于描述,以下将以gpu1根据本设备上的第一样本子集groupa以及第二样本子集groupb来对本设备上的m1以及m2进行训练的过程进行介绍:
107.gpu1将第一本子集groupa内的256个样本输入至m2后,m2会针对获取到256个样本进行特征提取,并对得到的256个特征提取结果进行批归一化处理,得到与各个样本对应的第一特征向量,即得到256个第一特征向量。
108.批归一化处理的过程如下:
109.m2针对这256个特征提取结果,计算出一个与这256个特征提取结果对应的gpu1的实际均值,以及计算出一个与这256个特征提取结果对应的gpu1的实际标准差。然后m2根据gpu1的实际均值以及gpu1的实际标准差,对256个特征提取结果中的每个特征提取结果进行归一化(减去实际均值后除以标准差),从而得到256个第一特征向量。
110.gpu1将分批次地从第二本子集groupb内确定出多个部分样本集合groupb,并在每个批次,将当前批次所确定出的部分样本集合内的n个样本输入至m1。m1会针对获取到n(在这个例子中n是小于256的正整数)个样本进行特征提取,并对得到的n个特征提取结果进行全局同步批归一化处理,得到与各个样本对应的第一特征向量,即得到n个第一特征向量。
111.假设gpu1分8次地从groupb内确定出8个部分样本集合,分别为groupb1、groupb2、groupb3...groupb8,且每个groupb内包括32个样本。
112.以第一批次所确定出的groupb1为例,gpu1将groupb1所包括的32个样本输入至m1后,m1会针对获取到32个样本进行特征提取,并对得到的32个特征提取结果进行全局同步批归一化处理,得到与各个样本对应的第二特征向量,即得到32个第二特征向量。
113.全局同步批归一化处理的过程如下:
114.m1针对这32个特征提取结果,计算出一个与这32个特征提取结果对应的gpu1的实际均值,以及计算出一个与这32个特征提取结果对应的gpu1的实际标准差。然后m1计算当前的这8个gpu的8个实际均值的平均值,得到全局均值,以及计算当前的这8个gpu的8个实际标准差的平均值,得到全局标准差。然后m1根据全局均值以及全局标准差,对gpu1的这32个特征提取结果中的每个特征提取结果进行归一化(减去全局均值后除以全局标准差),从而得到32个第二特征向量。
115.前文提及,不管采用图2的方式还是采用图3的方式,针对groupb内的任意样本而言,可以在groupa中找到可以形成样本对的目标样本。因此,针对属于groupb1内的任意样本的第二特征向量,都可以从根据group1得到的第一特征向量中,找到可以与该第二特征向量形成特征向量对的目标特征向量,以便计算出梯度对m1的参数以及m2的参数进行更新。
116.那么在执行步骤s130时,针对每个批次,例如确定出groupb1的批次,gpu1先从所有第一特征向量中确定出32个目标特征向量,使得根据groupb1所包括的32个样本得到的那32个第二特征向量可以与这32个目标特征向量之间一一对应形成32个特征向量对。然后在gpu1在确定出groupb1的批次,基于这32个特征向量对计算梯度对m1的参数以及m2的参数进行更新。
117.更新过程请参照前述实施例。
118.当然,值得指出的是,上述只是介绍了一个gpu针对本设备上的第一样本子集以及第二样本子集进行处理过程,可以理解,在上述对m1的参数以及m2的参数进行更新的过程中,是结合8个gpu上的样本所得到的梯度来并行地对m1的参数以及m2的参数进行更新。
119.在一些实施方式中,各个gpu的o1以及o2所能存储的最大样本数量相同,且大于m2单次所能处理的样本数量与gpu的个数的乘积值。
120.值得指出的是,在现有技术中,由于受限于m1以及m2在通过全局批归一化处理时所能处理的最大样本数量(假设为32个样本),m1与m2每次所能处理的样本量均为32个。
121.当将各个gpu的o1以及o2所能存储的最大样本数量设置为大于m2单次所能处理的样本数量(32)与gpu的个数(8)的乘积值(256)后,那么m2在对groupa内的样本进行特征提取时,即使使用的是普通的批归一化处理,由于其所面对的样本量得到增多,因此,也可以近似达到使用全局同步批归一化处理的效果,进而实现在尽可能保证训练效果的基础上,减少训练过程的计算消耗,有利于加快训练速度。
122.如图4所示,本技术实施例还提供一种神经网络训练装置400,应用于gpu,所述gpu用于对结构部分相同或完全相同的第一卷积神经网络m1以及第二卷积神经网络m2进行训练。
123.神经网络训练装置400可以包括:获取模块410以及训练模块420。
124.获取模块410,用于获取第一样本子集中每个样本的第一特征向量;所述每个样本的第一特征向量通过所述m2对该样本进行特征提取,并对特征提取结果进行批归一化得到;
125.所述获取模块410,还用于获取第二样本子集中的部分样本,以及获取所述部分样本中的每个样本的第二特征向量;所述每个样本的第二特征向量通过所述m1对该样本进行
特征提取,并对特征提取结果进行全局同步批归一化得到;
126.所述训练模块420,用于根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数;
127.其中,所述第一样本子集与所述第二样本子集由同一个原始样本集通过不同的数据增广方法得到。
128.在一种可能的实施方式中,在一种可能的实施方式中,所述方法应用于存在多个gpu的应用场景,在每个所述gpu上初始化所述m1以及所述m2,各个所述gpu并行地根据保存在本设备上的第一样本子集以及第二样本子集对初始化在本设备上的m1的参数以及m2的参数进行更新。
129.在一种可能的实施方式中,所述获取模块410,用于分批次地从所述第二样本子集中获取部分样本,以及获取本批次得到的部分样本中的每个样本的第二特征向量;
130.相应的,所述训练模块420,用于在每个批次,根据所述第一特征向量以及本批次的第二特征向量,更新所述m1当前的参数以及所述m2当前的参数。
131.在一种可能的实施方式中,所述训练模块420,用于:在每个批次,从所述第一样本子集的所有第一特征向量中确定出目标特征向量,其中,所述第一样本子集中用于提取出所述目标特征向量的样本与所述第二样本子集中用于提取出本批次的第二特征向量的样本,由所述原始样本集中的同一个样本通过不同的数据增广方法得到;在每个批次,根据损失函数计算所述目标特征向量与本批次的第二特征向量的损失值;在每个批次,根据所述损失函数以及本批次所得到的损失值更新所述m1当前的参数以及所述m2当前的参数;
132.其中,所述m1当前的参数通过梯度反向传播进行更新,所述梯度为将所述损失值带入所述损失函数的偏导数后所得到的结果;所述m2当前的参数通过所述m1更新后的参数的滑动平均进行更新。
133.在一种可能的实施方式中,更新所述m2当前的参数的过程为:计算所述m2当前的参数与第一预设参数的第一乘积值;计算所述m1更新后的参数与第二预设参数的第二乘积值;计算所述第一乘积值与所述第二乘积值的和值,所述和值为所述m2更新后的参数。
134.在一种可能的实施方式中,所述m2当前的参数通过公式a2’=m
·
a2 (1-m)
·
a1更新;其中,m为所述第一预设参数,a2’为所述m2更新后的参数,a2为所述m2当前的参数,a1为所述m1更新后的参数,(1-m)为所述第二预设参数。
135.在一种可能的实施方式中,所述获取模块410,用于:通过本设备上的m1对本设备上的所述部分样本进行特征提取,得到本设备的特征提取结果;计算所述本设备的特征提取结果的实际均值以及所述本设备的特征提取结果的实际标准差;获取其他gpu的特征提取结果的实际均值,并根据所述其他gpu的特征提取结果的实际均值以及所述本设备的特征提取结果的实际均值,计算全局均值;获取其他gpu的特征提取结果的实际标准差,并根据所述其他gpu的特征提取结果的实际标准差以及所述本设备的特征提取结果的实际标准差,计算全局标准差;根据所述全局均值以及所述全局标准差,对本设备的特征提取结果进行批归一化。
136.在一种可能的实施方式中,所述第一样本子集与所述第二样本子集在所述gpu上分别单独存储,且所述gpu上用于存储所述第一样本子集的存储空间与所述gpu上用于存储所述第二样本子集的存储空间相同,且所述存储空间大于所述m2单次所能处理的样本数量
与所述gpu的个数的乘积值。
137.在一种可能的实施方式中,所述gpu所获取到的所述原始样本集是由从训练集中采样得到的一批样本按照所述gpu的个数进行均等分后得到。
138.在一种可能的实施方式中,所述损失函数为比对损失函数或者为l2损失函数。
139.本技术实施例所提供的神经网络训练装置400,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
140.此外,本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被计算机运行时,执行如上述的神经网络训练方法所包含的步骤。
141.此外,本技术实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器运行如上述的神经网络训练方法所包含的步骤。
142.此外,请参照图5,本技术实施例还提供一种用于实现本技术实施例的神经网络训练方法、装置的电子设备100。
143.可选的,电子设备100,可以是,但不限于个人电脑(personal computer,pc)、移动上网设备(mobile internet device,mid)、服务器等设备。
144.其中,服务器可以是,但不限于网络服务器、数据库服务器、云端服务器等。
145.其中,电子设备100可以包括:处理器110、存储器120、图形处理器(即gpu)130。
146.应当注意,图5所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,电子设备100也可以具有其他组件和结构。
147.处理器110、存储器120、图形处理器130以及其他可能出现于电子设备100的组件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,处理器110、存储器120、图形处理器130以及其他可能出现的组件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
148.存储器120用于存储程序,例如存储有前文出现的神经网络训练方法对应的程序或者前文出现的神经网络训练装置。可选的,当存储器120内存储有神经网络训练装置时,神经网络训练装置包括至少一个可以以软件或固件(firmware)的形式存储于存储器120中的软件功能模块。
149.可选的,神经网络训练装置所包括软件功能模块也可以固化在电子设备100的操作系统(operating system,os)中。
150.处理器110用于执行存储器120中存储的可执行模块,例如神经网络训练装置包括的软件功能模块或计算机程序。当处理器110在接收到执行指令后,可以执行计算机程序,例如执行:获取第一样本子集中每个样本的第一特征向量;所述每个样本的第一特征向量通过所述m2对该样本进行特征提取,并对特征提取结果进行批归一化得到;获取第二样本子集中的部分样本,以及获取所述部分样本中的每个样本的第二特征向量;所述每个样本的第二特征向量通过所述m1对该样本进行特征提取,并对特征提取结果进行全局同步批归一化得到;根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数;其中,所述第一样本子集与所述第二样本子集由同一个原始样本集通过不同的数据增广方法得到。
151.值得指出的是,上述多个gpu可以是内置于电子设备100内的gpu,也可以是位于其他电子设备上的gpu。
152.当然,本技术任一实施例所揭示的方法都可以应用于处理器110中,或者由处理器110实现。
153.综上所述,本发明实施例提出的神经网络训练方法、电子设备及计算机可读存储介质,该方法包括:获取第一样本子集中每个样本的第一特征向量;所述每个样本的第一特征向量通过所述m2对该样本进行特征提取,并对特征提取结果进行批归一化得到;获取第二样本子集中的部分样本,以及获取部分样本中的每个样本的第二特征向量;所述每个样本的第二特征向量通过所述m1对该样本进行特征提取,并对特征提取结果进行全局同步批归一化得到;根据所述第一特征向量以及所述第二特征向量,更新所述m1的参数以及所述m2的参数。
154.在上述过程中,由于通过m2进行特征提取来得到第一特征向量时使用的是普通批归一化,通过m1进行特征提取来得到第二特征向量时使用的是全局同步批归一化,且已知普通批归一化对计算资源的消耗量小于全局同步批归一化对计算资源的消耗量,因此,相较于现有技术中m1与m2均采用全局同步批归一化的做法,本技术实施例所提供的训练方式,可以减轻整个训练过程对计算资源的消耗量,有利于加快训练速度。
155.需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
156.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
157.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
158.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
159.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何
熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献