CN111915004A - 神经网络的训练方法、装置、存储介质及电子设备 - Google Patents

神经网络的训练方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN111915004A
CN111915004A CN202010557121.1A CN202010557121A CN111915004A CN 111915004 A CN111915004 A CN 111915004A CN 202010557121 A CN202010557121 A CN 202010557121A CN 111915004 A CN111915004 A CN 111915004A
Authority
CN
China
Prior art keywords
training data
batch
historical
loss
current
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
Application number
CN202010557121.1A
Other languages
English (en)
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.)
Inner Mongolia Kuangshi Jinzhi Technology Co ltd
Beijing Megvii Technology Co Ltd
Original Assignee
Inner Mongolia Kuangshi Jinzhi Technology Co ltd
Beijing Megvii Technology 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 Inner Mongolia Kuangshi Jinzhi Technology Co ltd, Beijing Megvii Technology Co Ltd filed Critical Inner Mongolia Kuangshi Jinzhi Technology Co ltd
Priority to CN202010557121.1A priority Critical patent/CN111915004A/zh
Publication of CN111915004A publication Critical patent/CN111915004A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Image Analysis (AREA)

Abstract

本申请涉及人工智能技术领域,提供一种神经网络的训练方法、装置、存储介质及电子设备。其中,训练方法包括:利用待训练的神经网络对当前批次的训练数据进行特征提取,获得当前批次的训练数据的特征;基于当前批次的训练数据的特征计算当前损失;获取在之前的训练过程中缓存的历史批次的训练数据的特征;基于当前批次的训练数据的特征以及历史批次的训练数据的特征计算历史损失;基于当前损失以及历史损失计算总损失,并基于总损失利用反向传播算法更新神经网络的参数。该方法变相增加了当前批次的训练数据的数据量,有利于改善训练得到的神经网络的性能,并且不会导致训练过程所需的计算资源显著增加。

Description

神经网络的训练方法、装置、存储介质及电子设备
技术领域
本发明涉及人工智能技术领域,具体而言,涉及一种神经网络的训练方法、装置、存储介质及电子设备。
背景技术
目前在深度学习领域广泛使用小批量随机梯度下降(Mini-batch StochasticGradient Descent)算法进行神经网络的训练。该算法将训练数据分批次输入至神经网络中进行前向传播以提取数据的特征,然后将提取到的特征带入到损失函数中进行损失计算,最后基于计算得到的损失利用反向传播算法更新神经网络的参数。
研究表明,增加每个批次中的数据量,有利于改善训练好的模型的性能。然而,增加一个批次中的数据量,必然导致训练过程所需的计算资源大幅上升,在硬件条件的制约下,这一目标难以实现。
发明内容
本申请实施例的目的在于提供一种神经网络的训练方法、装置、存储介质及电子设备,以改善上述技术问题。
为实现上述目的,本申请提供如下技术方案:
第一方面,本申请实施例提供一种神经网络的训练方法,包括:利用待训练的神经网络对当前批次的训练数据进行特征提取,获得所述当前批次的训练数据的特征;基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失;获取在之前的训练过程中缓存的历史批次的训练数据的特征,所述历史批次的训练数据的特征是在之前的训练过程中利用所述神经网络对所述历史批次的训练数据进行特征提取后得到的;基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失;基于所述当前损失以及所述历史损失计算总损失,并基于所述总损失利用反向传播算法更新所述神经网络的参数。
上述方法在利用当前批次的训练数据训练神经网络时,既使用当前批次的训练数据的特征计算当前损失,又使用当前批次的训练数据的特征以及在之前的训练过程中缓存的历史批次的训练数据的特征计算历史损失,并基于由当前损失和历史损失计算得到的总损失更新模型参数。
由于在计算损失时融合了历史批次的训练数据的特征,相当于变相增加了当前批次的训练数据的数据量,因此有利于改善训练得到的神经网络的性能。并且,由于历史批次的训练数据的特征是在当前批次之前的训练过程中缓存下来的,所以并不需要针对历史批次的训练数据重新进行特征提取,即该方法并不会导致训练过程所需的计算资源显著增加,其具有较高的实用价值。
在第一方面的一种实现方式中,所述基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失,包括:基于所述当前批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述当前损失;所述获取在之前的训练过程中缓存的历史批次的训练数据的特征,包括:获取在之前的训练过程中所述历史批次的训练数据的特征和标签;所述基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失,包括:基于所述当前批次的训练数据的特征和标签以及所述历史批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述历史损失。
在损失计算中,除了使用特征外,还可能会使用训练样本的标签(特别是在有监督学习中),这种情况下,对历史批次的训练数据的标签也可以进行缓存,以便于历史损失的计算。
在第一方面的一种实现方式中,所述训练数据为图像,所述神经网络为用于执行图像识别任务的网络,所述损失函数满足如下条件:利用所述损失函数进行训练后,所述训练数据中具有相同标签的样本的特征之间的距离尽可能减小,且具有不同标签的样本的特征之间的距离尽可能增大。
图像识别,以人脸识别为例,其基本问题是要判断两张人脸图像是否为同一个人,这就要求人脸识别算法采用的神经网络所提取的特征要具有良好的表征能力。也就是说,对于同一人的图像(标签相同的训练样本),神经网络所提取的特征在距离上要尽可能小,对于非同一人的图像(标签不同的训练样本),神经网络所提取的特征在距离上要尽可能大,这样基于提取到的特征进行人脸识别就会具有较高的精度。按照上述实现方式中提供的条件设置损失函数,正是为了引导神经网络的训练,使得神经网络在训练过程中逐渐地能够提取到具有良好的表征能力的特征。
进一步的,人脸识别关注的不仅仅是单个样本本身的性质问题,而是样本与样本间关系的问题(是同一个人或者不是同一个人),通过上述损失函数的设置也可以看出,样本与样本的特征之间存在交互(即计算样本与样本的特征之间的距离),这样的交互越充分,即一个样本与更多的样本通过特征产生联系,越有利于改善神经网络的性能(即使得提取到的特征表征能力更强)。而本申请的方案在训练模型时会计算历史损失,使得当前批次的样本与历史批次的样本在特征上产生充分的交互,从而非常适于训练这类用于执行人脸识别任务的神经网络。对于其他图像识别任务,例如行人重识别等,可作类似分析。
在第一方面的一种实现方式中,所述损失函数的函数值基于多个特征组计算出的损失累加得到,每个特征组包括一个正样本的特征、一个负样本的特征以及一个锚样本的特征,每个特征组对应的损失根据该组中的正样本的特征与锚样本的特征之间的第一距离以及负样本的特征与锚样本的特征之间的第二距离计算得到;其中,所述正样本和所述锚样本为所述训练数据中具有相同标签的样本,所述负样本和所述锚样本为所述训练数据中具有不同标签的样本,所述特征组对应的损失与所述第一距离正相关且与所述第二距离负相关;所述基于所述当前批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述当前损失,包括:根据所述当前批次的训练数据的标签确定多个当前特征组,所述当前特征组中的特征对应的样本均选择自所述当前批次的训练数据;基于所述多个当前特征组计算所述损失函数的函数值,获得所述当前损失;所述基于所述当前批次的训练数据的特征和标签以及所述历史批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述历史损失,包括:根据所述当前批次的训练数据的标签以及所述历史批次的训练数据的标签确定多个历史特征组,所述历史特征组中的特征对应的样本分别选择自所述当前批次的训练数据以及所述历史批次的训练数据;基于所述多个历史特征组计算所述损失函数的函数值,获得所述历史损失。
上述实现方式中,损失函数的函数值基于多个特征组计算出的损失累加得到,而一个特征组对应的损失与该特征组中的第一距离正相关且与第二距离负相关,从而,经过训练,特征组中正样本的特征与锚样本的特征之间的距离将被拉近,而负样本的特征与锚样本的特征之间的距离将被拉远。因此,该实现方式中的损失函数的设置符合上面提到的条件(指训练用于执行图像识别任务的神经网络时损失函数应满足的条件)。例如,该损失函数可以为Triplet Loss。
在第一方面的一种实现方式中,每批次的训练数据及其对应的标签从全部训练数据及其对应的标签中通过采样确定,每批次的训练数据中均包括正样本、负样本以及锚样本;根据所述当前批次的训练数据的标签以及所述历史批次的训练数据的标签确定一个历史特征组,包括:根据所述当前批次的训练数据的标签,从所述当前批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据所述历史批次的训练数据的标签,从一个历史批次的训练数据的特征中确定该历史特征组中负样本的特征;或者,根据所述历史批次的训练数据的标签,从同一历史批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据所述当前批次的训练数据的标签,从所述当前批次的训练数据的特征中确定该历史特征组中负样本的特征。
在上述实现方式中,由于每个批次的训练数据及其对应的标签通过采样确定,在标签数量较多且采样比例不高时(图像识别任务容易满足这样的条件)不同批次的训练数据的标签存在重复的概率很低,换句话说来自不同批次的训练样本基本上都是互为负样本,所以在选择构成历史特征组的特征时,可以从同一个数据批次对应的特征中选择正样本的特征和锚样本的特征,负样本的特征则可以从另一个数据批次对应的特征中选择。
在第一方面的一种实现方式中,每批次的训练数据均包括正样本集、负样本集以及锚样本集,所述正样本集、所述负样本集以及所述锚样本集中的样本数量相同,且在所述正样本集、所述负样本集以及所述锚样本集的同一位置处的三个样本中,来自所述正样本集中的样本与来自所述锚样本集中的样本具有相同的标签,来自所述负样本集中的样本与来自所述锚样本集中的样本具有不同的标签;根据所述当前批次的训练数据的标签确定一个当前特征组,包括:选择来自所述正样本集、所述负样本集以及所述锚样本集的同一位置处的三个样本的特征作为一个当前特征组。
上述实现方式中,假设正样本集、负样本集以及锚样本集中的样本数量为M,根据上述方法选择正样本、负样本以及锚样本的特征,所能够形成的当前特征组的数量也是M,即当前特征组数量与当前批次的训练样本的数量为线性关系。对历史特征组中特征的选择可类似处理。
在第一方面的一种实现方式中,每批次的训练数据均包括第一样本集以及第二样本集,所述第一样本集以及所述第二样本集中的样本数量相同,所述第一样本集的不同位置处的样本具有不同的标签,所述第二样本集的不同位置处的样本具有不同的标签,且来自所述第一样本集以及所述第二样本集的同一位置处的两个样本具有相同的标签;根据所述当前批次的训练数据的标签确定一个当前特征组,包括:选择来自所述第一样本集以及所述第二样本集的同一位置处的两个样本的特征作为一个当前特征组中正样本的特征以及锚样本的特征;从所述第一样本集或所述第二样本集中另外选择一个不同位置处的样本作为该当前特征组中负样本的特征。
上述实现方式中,假设第一样本集以及第二样本集中的样本数量为M,根据上述方法选择正样本以及锚样本的特征,其存在的组合方式正比于M,负样本的特征选择基本独立于正样本和锚样本的特征选择,其存在的组合方式也正比于M,因此能够形成的当前特征组的数量是M2数量级,即当前特征组数量与当前批次的训练样本的数量为平方关系。当训练样本一定时,若能形成更多的特征组,将有利于增加样本间特征的交互,从而改善训练好的神经网络的性能。对历史特征组中特征的选择可类似处理。
在第一方面的一种实现方式中,所述获取在之前的训练过程中缓存的历史批次的训练数据的特征,包括:从环形缓冲区中获取在之前的训练过程中缓存的历史批次的训练数据的特征。
缓冲区的大小往往受到硬件制约,此时可采用环形缓冲区。在环形缓冲区中的数据存满后,最新存入的数据会覆盖最早存入的数据,使得缓冲区中保存的始终是最近参与训练的若干历史批次的训练数据的特征。
在第一方面的一种实现方式中,所述基于所述当前损失以及所述历史损失计算总损失,包括:对所述当前损失以及所述历史损失进行加权求和,获得所述总损失。
可以根据实际需求确定加权求和的权重,例如,当前损失的权重可以设置得适当大一些,而历史损失的权重可以设置得适当小一些。对于不同批次的历史训练数据产生的历史损失,则可以使更接近于当前批次的历史批次的训练数据产生的历史损失权重更大一些。
在第一方面的一种实现方式中,在所述获得所述当前批次的训练数据的特征之后,所述方法还包括:缓存所述当前批次的训练数据的特征。
在提取到当前批次的训练数据的特征后,可以将其缓存起来,在利用后续批次的训练数据进行神经网络的训练时,此处缓存的特征将被作为历史批次的训练数据的特征参与历史损失的计算。
第二方面,本申请实施例提供一种神经网络的训练装置,包括:当前特征提取模块,用于利用待训练的神经网络对当前批次的训练数据进行特征提取,获得所述当前批次的训练数据的特征;当前损失计算模块,用于基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失;缓存模块,用于获取在之前的训练过程中缓存的历史批次的训练数据的特征,所述历史批次的训练数据的特征是在之前的训练过程中利用所述神经网络对所述历史批次的训练数据进行特征提取后得到的;历史损失计算模块,用于基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失;参数更新模块,用于基于所述当前损失以及所述历史损失计算总损失,并基于所述总损失利用反向传播算法更新所述神经网络的参数。
第三方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
第四方面,本申请实施例提供一种电子设备,包括:存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行第一方面或第一方面的任意一种可能的实现方式提供的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例提供的一种神经网络的训练方法的流程图;
图2示出了本申请实施例提供的一种神经网络的训练方法的原理图;
图3示出了本申请实施例提供的一种神经网络的训练装置的模块图;
图4示出了本申请实施例提供的一种电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
图1示出了本申请实施例提供的一种神经网络的训练方法的流程图,图2则示出了该方法的原理图,在阐述图1内容时将结合图2进行解释。图1中的方法可由一电子设备执行,图4示出了该电子设备的一种可能的结构,具体可参照后文关于图4的阐述。参照图1,该方法包括:
步骤S110:利用待训练的神经网络对当前批次的训练数据进行特征提取,获得当前批次的训练数据的特征。
本申请并不限定神经网络的类型,例如可以是卷积神经网络、循环神经网络等等。训练数据是指训练集中的数据,训练数据由训练样本构成,例如,训练样本可以是一张图像、一段文本等。在一些情况下,比如在进行有监督的学习时,训练样本具有标签,例如,若待训练的神经网络用于执行图像分类任务,则训练图像的标签可以为该图像所属的类别,又例如,若待训练的神经网络用于执行目标检测任务,则训练图像的标签可以包括目标位置、是否为目标等。当然,在另一些情况下,比如在进行无监督的学习时,训练样本也可以不包含标签。
在小批量随机梯度下降算法中,神经网络的训练过程分为多轮,每轮采用一个批次的训练数据进行模型的训练,为简单起见,各批次的训练数据可以具有相同的数据量,例如,每批次32张图像、64张图像等。可以理解的,本申请的方案也可推广至其他分批次使用数据进行训练的算法中使用,不限于小批量随机梯度下降算法。
在当前轮次的训练中,称所使用的训练数据为当前批次的训练数据。将当前批次的训练数据输入至神经网络做前向传播,得到当前批次的训练数据的特征,例如,对于图像数据,神经网络提取到的特征可以是特征图或特征向量。在图2中,为每批训练数据编号,假设当前为第k批次的训练数据(k为正整数),则利用神经网络进行特征提取后得到第k批次的训练数据的特征。
执行完步骤S110后,还可以将当前批次的训练数据的特征缓存起来,在利用后续批次的训练数据进行神经网络的训练时,此处缓存的特征将被作为历史批次的训练数据的特征参与历史损失的计算,具体可参考对步骤S130的阐述。
步骤S120:基于当前批次的训练数据的特征计算损失函数的函数值,获得当前损失。
损失函数的表达式是预先设定好的,例如,可以是Contrast Loss(或称Contrastive Loss)、Triplet Loss等。一般地,损失函数Loss可以表示为:
Figure BDA0002544037510000101
其中,X为训练样本对应的特征,Y为训练样本的标签(当然也不排除某些损失函数不使用标签的情况,此时公式中可以去掉Y),训练样本被分为多组,若用i表示组序号,则第i组中训练样本的特征以及标签为Xi1,Yi1,Xi2,Yi2,…,根据第i组训练样本的特征以及标签可以计算一项损失L(Xi1,Yi1,Xi2,Yi2,…),损失函数为每组训练样本计算得到的损失之和。
在步骤S120中,将步骤S110中得到的当前批次的训练数据的特征作为自变量代入到损失函数的表达式中进行计算(如果表达式涉及标签,当前批次的训练数据的标签也需代入),即可得到其函数值,称为当前损失。
步骤S130:获取在之前的训练过程中缓存的历史批次的训练数据的特征。
在使用当前批次的训练数据进行模型训练之前,已经训练了若干轮次,称这些轮次中使用的训练数据为历史批次的训练数据,对于历史批次的训练数据,其处理方式和当前批次的训练数据是类似的,也会用神经网络进行特征提取得到其特征并缓存起来,在需要使用这些特征时直接从缓存中读取即可。
如果在后续步骤S140中计算历史损失需要用到样本的标签,则历史批次的训练数据的标签也会随特征一并缓存,但需要注意的是,对于标签的缓存,未必是显性缓存,也可能是隐性缓存。所谓显性缓存,是指为标签数据分配独立的存储空间,比如某张图像可能不包含人脸也可能包含人脸,则可以在一个存储单元中存储数值0或1,表示该样本是否包含人脸。所谓隐性缓存,是指不为标签数据分配独立的存储空间,通过其他方式表明样本的标签,比如将100张图像分为两个集合各50张,集合S1中的图像不包含人脸,集合S2中的图像包含人脸,则只要从集合S1的缓存位置处获取图像,自然获取到的就是不包含人脸的图像,并不需要额外的标签指明该图像是否包含人脸。在一些情况下,采用隐性标签可以减少需要缓存的数据量。
步骤S130并不限定要获取哪些历史批次的训练数据的特征,既可以是缓存的全部历史批次的训练数据的特征,也可以只是缓存的部分历史批次的训练数据的特征。
历史批次的训练数据的特征的缓存位置称为缓冲区,例如,缓冲区可以是计算机内存或硬盘中的一块区域。缓冲区的大小往往受到硬件制约,比如,具有固定的大小。假设缓冲区的大小为Ncache,每个批次的训练数据的特征的大小为T,则Ncache可以取T的正整数倍,当然,该规定不是强制的,例如Ncache也可以取T的非整数倍。上述“缓冲区的大小”应理解为缓冲区所能容纳的数据量,“特征的大小”应理解为特征数据的数据量。
在一些实现方式中,缓冲区在逻辑上采用环形结构,各历史批次的训练数据的特征按照时间上的先后顺序依次存入缓冲区中。在环形缓冲区中的数据存满后,最新存入的数据会覆盖最早存入的数据,使得缓冲区中保存的始终是最近参与训练的若干历史批次的训练数据的特征。这些历史批次的训练数据被用于训练的时间过去还不太久,在这段时间内神经网络的参数还不至于发生太大的变换,因此其特征与当前批次的训练数据的特征在关系上更密切一些,若用于与当前批次的训练数据的特征进行比较等操作也更合适一些。例如,图2中就采用了环形缓冲区,该缓冲区可以缓存最近三个批次的训练数据的特征,若当前批次为k,则缓冲区中的训练数据的批次为k-1、k-2以及k-3。
可以理解的,若当前为第一轮训练,则尚未缓存任何历史批次的训练数据,执行步骤S130自然也无法获取到任何数据,此时也没有执行步骤S140计算历史损失的必要,可直接基于当前损失进行模型参数的更新。
步骤S140:基于当前批次的训练数据的特征以及历史批次的训练数据的特征计算损失函数的函数值,获得历史损失。
步骤S140和步骤S120有类似之处,将步骤S110中得到的当前批次的训练数据的特征以及步骤S130中得到的历史批次的训练数据的特征作为自变量代入到损失函数的表达式中进行计算(如果表达式涉及标签,当前批次的训练数据的标签以及历史批次的训练数据的标签也需代入),即可得到其函数值,称为历史损失。
至于在损失函数的表达式中哪些自变量采用当前批次的训练数据的特征,哪些自变量采用历史批次的训练数据的特征则可以灵活设定。例如,若损失函数Loss表示为:
Figure BDA0002544037510000121
则Xi1,Yi1可以采用当前批次的训练数据的特征以及标签,Xi2,Yi2可以采用历史批次的训练数据的特征以及标签,或者,也可以反过来,Xi1,Yi1采用历史批次的训练数据的特征以及标签,Xi2,Yi2采用当前批次的训练数据的特征以及标签。后文还会给出更多的例子。
但需要注意的是,在计算历史损失时,不能只使用历史批次的训练数据的特征,而不结合当前批次的训练数据的特征。参照图2,环形缓冲区中的特征与神经网络的连线皆为虚线,表示这些特征曾经对神经网络的参数施加过影响,但目前仅凭这些特征计算的历史损失已经无法对神经网络的参数再次施加影响,必须结合当前批次的训练数据的特征进行历史损失的计算,所得到的历史损失才能够再次对神经网络的参数再次施加影响。
当前批次的训练数据的特征若与来自不同历史批次的训练数据的特征相结合,可以计算得到多项历史损失,比如,在图2中,批次k的训练数据的特征分别与批次k-1、k-2、k-3的训练数据的特征相结合,计算得到三项历史损失。当然,也不排除在某些实现方式中,当前批次的训练数据的特征同时与来自多个历史批次的训练数据的特征相结合,比如,在图2的替代实现方式中,批次k的训练数据的特征可能同时与批次k-1、k-2、k-3的训练数据的特征相结合,计算得到一项历史损失。
步骤S150:基于当前损失以及历史损失计算总损失,并基于总损失利用反向传播算法更新神经网络的参数。
将步骤S120中得到的当前损失和步骤S140中得到的一项或多项历史损失累加起来即可得到总损失,累加的方式既可以是直接相加,也可以是加权求和等。若采用加权求和的方式,可以根据实际需求确定加权求和的权重:例如,当前损失的权重可以设置得适当大一些,而历史损失的权重可以设置得适当小一些,以体现当前批次的训练数据对于模型参数的影响更重要;又例如,对于不同批次的历史训练数据产生的历史损失,可以将更接近于当前批次的历史批次的训练数据产生的历史损失的权重设置得更大一些,等等。得到总损失后,可以根据反向传播算法更新神经网络模型的参数,从而完成当前轮次的训练,反向传播算法属于现有技术,此处不作具体介绍。
综上所述,在本申请实施例提供的训练方法中,在利用当前批次的训练数据训练神经网络时,既使用当前批次的训练数据的特征计算当前损失,又使用当前批次的训练数据的特征以及在之前的训练过程中缓存的历史批次的训练数据的特征计算历史损失,并基于由当前损失和历史损失计算得到的总损失更新模型参数。由于该方法在计算损失时融合了历史批次的训练数据的特征,相当于变相增加了当前批次的训练数据的数据量,因此有利于改善训练得到的神经网络的性能。并且,由于历史批次的训练数据的特征是在当前批次之前的训练过程中缓存下来的,所以并不需要针对历史批次的训练数据重新进行特征提取,所以该方法并不会导致训练过程所需的计算资源显著增加,因此其具有较高的实用价值。
上述方法中训练的神经网络可以是用于执行图像识别任务的网络,即利用训练好的神经网络提取图像的特征,然后基于图像的特征去做识别,可以理解的,此时的训练数据应为图像。这里所称的图像识别任务,常见的如人脸识别、行人重识别、车辆识别、花卉识别等,下面主要以人脸识别为例进行介绍:
人脸识别基本问题是要判断两张人脸图像是否为同一个人,这就要求人脸识别算法采用的神经网络所提取的特征要具有良好的表征能力。也就是说,对于同一人的多张图像,神经网络所提取的特征要尽可能地相似,对于非同一人的多张图像,神经网络所提取的特征要尽可能不相似,这样基于提取到的特征才能将不同人的图像进行很好地区分,进而人脸识别才会具有较高的精度。
由于神经网络提取到的特征是可度量的,因此,特征之间的相似性可以通过计算特征之间的距离(例如,欧式距离、曼哈顿距离等)来表示,从而,若对于同一人的多张图像,神经网络所提取的特征在距离上尽可能小,而对于非同一人的多张图像,神经网络所提取的特征在距离上尽可能大,则表明该神经网络所提取的特征具有良好的表征能力,或者说该神经网络对于执行人脸识别任务来说具有较好的性能。
为达到这一目的,可通过设置适当的损失函数以引导神经网络按照该目的进行训练,即可以采用满足如下条件(为后文引用方便,将此条件称为第一条件)的损失函数:利用该损失函数进行训练后,训练数据中具有相同标签的样本(对于人脸识别来说就是属于同一人的图像)的特征之间的距离尽可能减小,而训练数据中具有不同标签的样本(对于人脸识别来说就是属于不同人的图像)的特征之间的距离尽可能增大。例如,Contrast Loss、Triplet Loss等损失函数均可以满足上述第一条件。
进一步的,人脸识别关注的不仅仅是单个样本本身的性质问题,而是样本与样本间关系的问题(是同一个人或者不是同一个人),通过上述损失函数的设置也可以看出,样本与样本的特征之间存在交互(即计算损失时会计算样本与样本的特征之间的距离),这样的交互越充分,即一个样本与更多的样本通过特征产生联系,越有利于改善神经网络的性能(即使得提取到的特征表征能力更强)。而本申请的方案在训练神经网络模型时,不仅会计算当前损失,使得当前批次中的样本在特征上产生交互,还会计算历史损失,使得当前批次的样本与历史批次的样本在特征上产生交互,从而可以使得样本与样本的特征之间的交互量显著增加,所以该方法非常适于训练用于执行人脸识别任务的神经网络。
对于其他图像识别任务,可作类似于上面的分析,总之,训练用于执行图像识别任务的神经网络是一种适于使用本申请实施例提供的训练方法场景。
在训练用于执行图像识别任务的神经网络时,参照上文给出的第一条件,损失函数可以这样设置(当然,训练其他用途的神经网络时也可以这样设置损失函数):
首先,选择训练数据中的三个样本:正样本、负样本以及锚样本,其中,正样本和锚样本为具有相同标签的样本,负样本和锚样本为具有不同标签的样本。
然后,将这三个样本的特征(利用神经网络提取获得)确定为一个特征组。当然,既可以先选择三个满足条件的样本,再提取其特征构成特征组,也可以先提取所有样本的特征,然后选择一个正样本的特征、一个负样本的特征以及一个锚样本的特征构成特征组,虽然这两种方式在执行顺序上有所不同,但最终得到的特征组是相同的。
之后,根据该组中的正样本的特征与锚样本的特征之间的第一距离以及负样本的特征与锚样本的特征之间的第二距离计算该特征组对应的损失。其中,特征组对应的损失与第一距离正相关且与第二距离负相关。例如,特征组对应的损失中至少可以包括两项之和,其中一项为第一距离,另一项为第二距离的相反数。
重复上面三个步骤可以得到多个特征组对应的损失,损失函数的函数值就定义为多个特征组对应的损失之和。并且,根据特征组对应的损失的计算方法,按照该损失函数进行模型训练后,特征组中正样本的特征与锚样本的特征之间的距离将被尽可能拉近(因为特征组对应的损失中包括第一距离),而负样本的特征与锚样本的特征之间的距离将被尽可能拉远(因为特征组对应的损失中包括第二距离的相反数),即符合第一条件。例如,该损失函数可以为Triplet Loss,后文还会结合Triplet Loss的公式作进一步说明。
若按照第一条件设置损失函数,对于当前损失,在计算时先根据当前批次的训练数据的标签确定多个特征组,这些特征组被称为当前特征组,每个当前特征组中的特征对应的样本均选择自当前批次的训练数据,然后再基于多个当前特征组计算损失函数的函数值即可。如前所述,对于当前特征组,既可以是先从当前批次的训练数据中选择好正样本、负样本以及锚样本后,再提取其特征以构成特征组,也可以先提取当前批次的训练数据的特征,然后从中选择一个正样本的特征、一个负样本的特征以及一个锚样本的特征构成特征组。然而,这只是形成一个当前特征组的过程,还并未涉及形成多个当前特征组过程,下面说明两种形成多个当前特征组的方式:
方式一:
每批次的训练数据均包括正样本集、负样本集以及锚样本集,分别记作SP、SN、SA,其对应的特征集为XP、XN、XA,其对应的标签集为YP、YN、YA(既有可能是显示标签,也有可能是隐式标签)。SP、SN、SA中的样本数量相同,假设均为M。在SP、SN、SA的同一位置处的三个样本满足:来自SP与SA的样本具有相同的标签,而来自SN与SA的样本具有不同的标签,即YPi=YAi≠YNi,其中i表示样本集中的位置,i可取1至M中的任意整数,例如,样本集存储在线性数据结构中,样本集中的位置可以指线性数据结构的元素索引。对于当前批次的训练数据,i任取1至M中的一个整数,就可以得到一个当前特征组XPi、XNi、XAi,也就是说方式一中所能够形成的当前特征组的数量为M,即当前特征组数量与当前批次的训练样本的数量为线性关系。
以损失函数采用Triplet Loss为例,在方式一下,计算当前损失的公式为:
Figure BDA0002544037510000171
其中,max表示取最大值运算,d表示计算欧式距离,d(XAi,XPi)即上文提到的第一距离,d(XAi,XNi)即上文提到的第二距离,Margin表示第一距离和第二距离之间的一个最小间隔,max(0,d(XAi,XPi)-d(XAi,XNi)+Margin)表示第i个当前特征组对应的损失。需要指出,上式中虽然未直接使用标签,但由于XPi、XNi、XAi本就依据标签才能够区分,所以在确定当前特征组的过程中实际上是使用了标签的,同样也可以认为标签参与了当前损失的计算。
方式二
每批次的训练数据均包括第一样本集以及第二样本集,分别记作Sa、Sb,其对应的特征集为Xa、Xb,其对应的标签集为Ya、Yb(既有可能是显示标签,也有可能是隐式标签)。Sa、Sb中的样本数量相同,假设均为M。在Sa、Sb的同一位置处的两个样本具有相同的标签,即Yai=Ybi,其中i表示样本集中的位置,i可取1至N中的任意整数。并且,Sa的不同位置处的样本具有不同的标签,Sb的不同位置处的样本也具有不同的标签,即i≠j时,Yai≠Yaj且Ybi≠Ybj,其中j也表示样本集中的位置。对于当前批次的训练数据,i任取1至M中的一个整数,就可以得到一个特征组中锚样本的特征Xai以及正样本的特征Xbi(或者锚样本的特征Xbi以及正样本的特征Xai),j再任取1至M中的一个不等于i的整数,就可以得到该特征组中负样本的特征Xaj或Xbj。不难看出,按照方式二选择正样本以及锚样本的特征,其存在的组合方式正比于M(即i的取值可能性为M数量级),负样本的特征选择基本独立于正样本和锚样本的特征选择,其存在的组合方式也正比于M(即j的取值可能性为M数量级),因此能够形成的当前特征组的数量是M2数量级,即当前特征组数量与当前批次的训练样本的数量为平方关系。当训练样本数量一定时,若能形成更多的特征组,将有利于增加样本间特征的交互,从而改善训练好的神经网络的性能。
同样以损失函数采用Triplet Loss为例,在方式二下,计算当前损失的公式为:
Figure BDA0002544037510000181
其中,max表示取最大值运算,d表示计算欧式距离,d(Xai,Xbi)即上文提到的第一距离,d(Xai,Xaj)即上文提到的第二距离,Margin表示第一距离和第二距离之间的一个最小间隔,max(0,d(Xai,Xai)-d(Xai,Xaj)+Margin)表示第(i,j)个当前特征组对应的损失。注意,上式中的Xai和Xbi还可以交换,上式中的Xaj还可以替换为Xbj
上面介绍了当前损失的计算,若按照第一条件设置损失函数,对于历史损失,在计算时先根据当前批次的训练数据的标签以及历史批次的训练数据的标签确定多个特征组,这些特征组被称为历史特征组,每个历史特征组中的特征对应的样本均选择自当前批次的训练数据以及历史批次的训练数据,然后再基于多个历史特征组计算损失函数的函数值即可。
在一些实现方式中,每批次的训练数据及其对应的标签从全部训练数据及其对应的标签中通过采样(例如,均匀采样、加权采样、分层采样等)确定,其中,由于样本和标签是绑定的,采样过程可视为同时作用于样本和样本的标签。在训练数据中的标签数量较多且采样比例不高时(图像识别任务容易满足这样的条件)不同批次的训练数据的标签存在重复的概率很低,例如,假设训练数据有10000人的图像,每个批次的数据是随机选择其中10个人的图像,那么每两个批次中有相同人的概率就是1-0.999^10=0.009955119790251765,该数值还不到1%。换句话说,来自不同批次的训练样本基本上都互为负样本,所以在选择构成历史特征组的特征时,可以从同一个数据批次对应的特征中选择正样本的特征和锚样本的特征,负样本的特征则可以从另一个数据批次对应的特征中选择。更具体地说,在这些实现方式中,历史特征组中特征的选择方式至少包括如下两种:
方式一
根据当前批次的训练数据的标签,从当前批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据历史批次的训练数据的标签,从某一个历史批次的训练数据的特征中确定该历史特征组中负样本的特征。
直接以损失函数采用Triplet Loss历史损失的计算公式为例进行说明,假设每批次的训练数据均包括第一样本集以及第二样本集,分别记作Sa、Sb,其对应的特征集为Xa、Xb,其对应的标签集为Ya、Yb,关于第一样本集以及第二样本集的特性,前文已经介绍,此处不再重复。
Figure BDA0002544037510000191
其中,k和m均表示训练数据的批次编号,当前为第k批次,m为某个历史批次的编号。
Figure BDA0002544037510000192
Figure BDA0002544037510000193
是从第k批次的训练数据的特征中选择的锚样本的特征和正样本的特征(参考选择当前特征组的方式二),
Figure BDA0002544037510000194
是第m批次的训练数据中训练样本的特征,
Figure BDA0002544037510000195
在第k批次的样本
Figure BDA0002544037510000196
的标签
Figure BDA0002544037510000197
和第m批次的样本
Figure BDA0002544037510000198
的标签
Figure BDA0002544037510000199
不同时为1,相同时则为0,即跨批次数据中的标签相同的样本不是负样本,无法构成历史特征组,因而不参与损失计算,只有跨批次数据中的标签不相同的样本才是负样本,此时
Figure BDA00025440375100001910
Figure BDA0002544037510000201
才会构成一个历史特征组参与损失计算。但之前也提到,跨批次数据中样本标签相同的概率很低,因此在一些简化的实现方式中
Figure BDA0002544037510000202
一项也可以去掉。公式中对m进行了求和运算,意思是要遍历所有的历史批次m(此处所有的历史批次可以指缓冲区中所有的历史批次)。
注意,上式中的
Figure BDA0002544037510000203
Figure BDA0002544037510000204
还可以交换,上式中的
Figure BDA0002544037510000205
还可以替换为
Figure BDA0002544037510000206
上式并不要求j≠i,因为j和i是不同批次的训练数据中的位置。此外,上式中还有一些变量或记号在介绍前面的公式时已经说明其定义,此处没有重复介绍,可以参考前面的公式中的定义。
方式二
根据历史批次的训练数据的标签,从同一历史批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据当前批次的训练数据的标签,从当前批次的训练数据的特征中确定该历史特征组中负样本的特征。
直接以损失函数采用Triplet Loss时历史损失的计算公式为例进行说明,假设每批次的训练数据均包括第一样本集以及第二样本集,分别记作Sa、Sb,其对应的特征集为Xa、Xb,其对应的标签集为Ya、Yb
Figure BDA0002544037510000207
其中,k和m均表示训练数据的批次编号,当前为第k批次,m为某个历史批次的编号,
Figure BDA0002544037510000208
Figure BDA0002544037510000209
是从第m批次的训练数据的特征中选择的锚样本的特征和正样本的特征(参考选择当前特征组的方式二),
Figure BDA00025440375100002010
是从第k批次的训练数据中训练样本的特征,
Figure BDA00025440375100002011
表示第m批次的样本
Figure BDA00025440375100002012
的标签
Figure BDA00025440375100002013
和第k批次的样本
Figure BDA00025440375100002014
的标签
Figure BDA00025440375100002015
不同时为1,相同时则为0,即跨批次数据中的标签相同的样本不是负样本,无法构成历史特征组,因而不参与损失计算。只有跨批次数据中的标签不相同的样本才是负样本,此时
Figure BDA00025440375100002016
Figure BDA0002544037510000211
才会构成一个历史特征组参与损失计算。
图3示出了本申请实施例提供的神经网络的训练装置200(以下简称训练装置200)的功能模块图。参照图3,训练装置200包括:
当前特征提取模块210,用于利用待训练的神经网络对当前批次的训练数据进行特征提取,获得所述当前批次的训练数据的特征;
当前损失计算模块220,用于基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失;
缓存模块230,用于获取在之前的训练过程中缓存的历史批次的训练数据的特征,所述历史批次的训练数据的特征是在之前的训练过程中利用所述神经网络对所述历史批次的训练数据进行特征提取后得到的;
历史损失计算模块240,用于基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失;
参数更新模块250,用于基于所述当前损失以及所述历史损失计算总损失,并基于所述总损失利用反向传播算法更新所述神经网络的参数。
在训练装置200的一种实现方式中,当前损失计算模块220基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失,包括:基于所述当前批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述当前损失;
缓存模块230获取在之前的训练过程中缓存的历史批次的训练数据的特征,包括:获取在之前的训练过程中所述历史批次的训练数据的特征和标签;
历史损失计算模块240基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失,包括:基于所述当前批次的训练数据的特征和标签以及所述历史批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述历史损失。
在训练装置200的一种实现方式中,所述训练数据为图像,所述神经网络为用于执行图像识别任务的网络,所述损失函数满足如下条件:利用所述损失函数进行训练后,所述训练数据中具有相同标签的样本的特征之间的距离尽可能减小,且具有不同标签的样本的特征之间的距离尽可能增大。
在训练装置200的一种实现方式中,所述损失函数的函数值基于多个特征组计算出的损失累加得到,每个特征组包括一个正样本的特征、一个负样本的特征以及一个锚样本的特征,每个特征组对应的损失根据该组中的正样本的特征与锚样本的特征之间的第一距离以及负样本的特征与锚样本的特征之间的第二距离计算得到;其中,所述正样本和所述锚样本为所述训练数据中具有相同标签的样本,所述负样本和所述锚样本为所述训练数据中具有不同标签的样本,所述特征组对应的损失与所述第一距离正相关且与所述第二距离负相关;
当前损失计算模块220基于所述当前批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述当前损失,包括:根据所述当前批次的训练数据的标签确定多个当前特征组,所述当前特征组中的特征对应的样本均选择自所述当前批次的训练数据;基于所述多个当前特征组计算所述损失函数的函数值,获得所述当前损失;
历史损失计算模块240基于所述当前批次的训练数据的特征和标签以及所述历史批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述历史损失,包括:根据所述当前批次的训练数据的标签以及所述历史批次的训练数据的标签确定多个历史特征组,所述历史特征组中的特征对应的样本分别选择自所述当前批次的训练数据以及所述历史批次的训练数据;基于所述多个历史特征组计算所述损失函数的函数值,获得所述历史损失。
在训练装置200的一种实现方式中,每批次的训练数据及其对应的标签从全部训练数据及其对应的标签中通过采样确定,每批次的训练数据中均包括正样本、负样本以及锚样本;
历史损失计算模块240根据所述当前批次的训练数据的标签以及所述历史批次的训练数据的标签确定一个历史特征组,包括:根据所述当前批次的训练数据的标签,从所述当前批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据所述历史批次的训练数据的标签,从一个历史批次的训练数据的特征中确定该历史特征组中负样本的特征;或者,根据所述历史批次的训练数据的标签,从同一历史批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据所述当前批次的训练数据的标签,从所述当前批次的训练数据的特征中确定该历史特征组中负样本的特征。
在训练装置200的一种实现方式中,每批次的训练数据均包括正样本集、负样本集以及锚样本集,所述正样本集、所述负样本集以及所述锚样本集中的样本数量相同,且在所述正样本集、所述负样本集以及所述锚样本集的同一位置处的三个样本中,来自所述正样本集中的样本与来自所述锚样本集中的样本具有相同的标签,来自所述负样本集中的样本与来自所述锚样本集中的样本具有不同的标签;
当前损失计算模块220根据所述当前批次的训练数据的标签确定一个当前特征组,包括:选择来自所述正样本集、所述负样本集以及所述锚样本集的同一位置处的三个样本的特征作为一个当前特征组。
在训练装置200的一种实现方式中,每批次的训练数据均包括第一样本集以及第二样本集,所述第一样本集以及所述第二样本集中的样本数量相同,所述第一样本集的不同位置处的样本具有不同的标签,所述第二样本集的不同位置处的样本具有不同的标签,且来自所述第一样本集以及所述第二样本集的同一位置处的两个样本具有相同的标签;
当前损失计算模块220根据所述当前批次的训练数据的标签确定一个当前特征组,包括:选择来自所述第一样本集以及所述第二样本集的同一位置处的两个样本的特征作为一个当前特征组中正样本的特征以及锚样本的特征;从所述第一样本集或所述第二样本集中另外选择一个不同位置处的样本作为该当前特征组中负样本的特征。
在训练装置200的一种实现方式中,缓存模块230获取在之前的训练过程中缓存的历史批次的训练数据的特征,包括:从环形缓冲区中获取在之前的训练过程中缓存的历史批次的训练数据的特征。
在训练装置200的一种实现方式中,参数更新模块250基于所述当前损失以及所述历史损失计算总损失,包括:对所述当前损失以及所述历史损失进行加权求和,获得所述总损失。
在训练装置200的一种实现方式中,缓存模块230还用于:在当前特征提取模块210获得所述当前批次的训练数据的特征之后,缓存所述当前批次的训练数据的特征。
本申请实施例提供的神经网络的训练装置200,其实现原理及产生的技术效果在前述方法实施例中已经介绍,为简要描述,装置实施例部分未提及之处,可参考方法施例中相应内容。
图4示出了本申请实施例提供的电子设备300的一种可能的结构。参照图4,电子设备300包括:处理器310、存储器320以及通信接口330,这些组件通过通信总线340和/或其他形式的连接机构(未示出)互连并相互通讯。
其中,存储器320包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。处理器310以及其他可能的组件可对存储器320进行访问,读和/或写其中的数据。
处理器310包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器310可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括图形处理器(Graphics Processing Unit,GPU)、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuits,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器310为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
通信接口330包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口330可以包括进行有线和/或无线通信的接口。
在存储器320中可以存储一个或多个计算机程序指令,处理器310可以读取并运行这些计算机程序指令,以实现本申请实施例提供的神经网络的训练方法以及其他期望的功能。
可以理解,图4所示的结构仅为示意,电子设备300还可以包括比图4中所示更多或者更少的组件,或者具有与图4所示不同的配置。图4中所示的各组件可以采用硬件、软件或其组合实现。电子设备300可能是实体设备,例如PC机、笔记本电脑、平板电脑、手机、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。电子设备300既可以采用通用设备,也可以在通用设备的基础再结合专用计算设备(如GPU设备等)加速神经网络的训练。并且,电子设备300也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本申请实施例提供的神经网络的训练方法。例如,计算机可读存储介质可以实现为图4中电子设备300中的存储器320。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (13)

1.一种神经网络的训练方法,其特征在于,包括:
利用待训练的神经网络对当前批次的训练数据进行特征提取,获得所述当前批次的训练数据的特征;
基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失;
获取在之前的训练过程中缓存的历史批次的训练数据的特征,所述历史批次的训练数据的特征是在之前的训练过程中利用所述神经网络对所述历史批次的训练数据进行特征提取后得到的;
基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失;
基于所述当前损失以及所述历史损失计算总损失,并基于所述总损失利用反向传播算法更新所述神经网络的参数。
2.根据权利要求1所述的训练方法,其特征在于,所述基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失,包括:
基于所述当前批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述当前损失;
所述获取在之前的训练过程中缓存的历史批次的训练数据的特征,包括:
获取在之前的训练过程中缓存的所述历史批次的训练数据的特征和标签;
所述基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失,包括:
基于所述当前批次的训练数据的特征和标签以及所述历史批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述历史损失。
3.根据权利要求2所述的训练方法,其特征在于,所述训练数据为图像,所述神经网络为用于执行图像识别任务的网络,所述损失函数满足如下条件:
利用所述损失函数进行训练后,所述训练数据中具有相同标签的样本的特征之间的距离尽可能减小,且具有不同标签的样本的特征之间的距离尽可能增大。
4.根据权利要求3所述的训练方法,其特征在于,所述损失函数的函数值基于多个特征组计算出的损失累加得到,每个特征组包括一个正样本的特征、一个负样本的特征以及一个锚样本的特征,每个特征组对应的损失根据该组中的正样本的特征与锚样本的特征之间的第一距离以及负样本的特征与锚样本的特征之间的第二距离计算得到;其中,所述正样本和所述锚样本为所述训练数据中具有相同标签的样本,所述负样本和所述锚样本为所述训练数据中具有不同标签的样本,所述特征组对应的损失与所述第一距离正相关且与所述第二距离负相关;
所述基于所述当前批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述当前损失,包括:
根据所述当前批次的训练数据的标签确定多个当前特征组,所述当前特征组中的特征对应的样本均选择自所述当前批次的训练数据;
基于所述多个当前特征组计算所述损失函数的函数值,获得所述当前损失;
所述基于所述当前批次的训练数据的特征和标签以及所述历史批次的训练数据的特征和标签计算所述损失函数的函数值,获得所述历史损失,包括:
根据所述当前批次的训练数据的标签以及所述历史批次的训练数据的标签确定多个历史特征组,所述历史特征组中的特征对应的样本分别选择自所述当前批次的训练数据以及所述历史批次的训练数据;
基于所述多个历史特征组计算所述损失函数的函数值,获得所述历史损失。
5.根据权利要求4所述的训练方法,其特征在于,每批次的训练数据及其对应的标签从全部训练数据及其对应的标签中通过采样确定,每批次的训练数据中均包括正样本、负样本以及锚样本;
根据所述当前批次的训练数据的标签以及所述历史批次的训练数据的标签确定一个历史特征组,包括:
根据所述当前批次的训练数据的标签,从所述当前批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据所述历史批次的训练数据的标签,从一个历史批次的训练数据的特征中确定该历史特征组中负样本的特征;或者,
根据所述历史批次的训练数据的标签,从同一历史批次的训练数据的特征中确定一个历史特征组中正样本的特征以及锚样本的特征,以及,根据所述当前批次的训练数据的标签,从所述当前批次的训练数据的特征中确定该历史特征组中负样本的特征。
6.根据权利要求4所述的训练方法,其特征在于,每批次的训练数据均包括正样本集、负样本集以及锚样本集,所述正样本集、所述负样本集以及所述锚样本集中的样本数量相同,且在所述正样本集、所述负样本集以及所述锚样本集的同一位置处的三个样本中,来自所述正样本集中的样本与来自所述锚样本集中的样本具有相同的标签,来自所述负样本集中的样本与来自所述锚样本集中的样本具有不同的标签;
根据所述当前批次的训练数据的标签确定一个当前特征组,包括:
选择来自所述正样本集、所述负样本集以及所述锚样本集的同一位置处的三个样本的特征作为一个当前特征组。
7.根据权利要求4所述的训练方法,其特征在于,每批次的训练数据均包括第一样本集以及第二样本集,所述第一样本集以及所述第二样本集中的样本数量相同,所述第一样本集的不同位置处的样本具有不同的标签,所述第二样本集的不同位置处的样本具有不同的标签,且来自所述第一样本集以及所述第二样本集的同一位置处的两个样本具有相同的标签;
根据所述当前批次的训练数据的标签确定一个当前特征组,包括:
选择来自所述第一样本集以及所述第二样本集的同一位置处的两个样本的特征作为一个当前特征组中正样本的特征以及锚样本的特征;
从所述第一样本集或所述第二样本集中另外选择一个不同位置处的样本作为该当前特征组中负样本的特征。
8.根据权利要求1-7中任一项所述的训练方法,其特征在于,所述获取在之前的训练过程中缓存的历史批次的训练数据的特征,包括:
从环形缓冲区中获取在之前的训练过程中缓存的历史批次的训练数据的特征。
9.根据权利要求1-7中任一项所述的训练方法,其特征在于,所述基于所述当前损失以及所述历史损失计算总损失,包括:
对所述当前损失以及所述历史损失进行加权求和,获得所述总损失。
10.根据权利要求1-7中任一项所述的训练方法,其特征在于,在所述获得所述当前批次的训练数据的特征之后,所述方法还包括:
缓存所述当前批次的训练数据的特征。
11.一种神经网络的训练装置,其特征在于,包括:
当前特征提取模块,用于利用待训练的神经网络对当前批次的训练数据进行特征提取,获得所述当前批次的训练数据的特征;
当前损失计算模块,用于基于所述当前批次的训练数据的特征计算损失函数的函数值,获得当前损失;
缓存模块,用于获取在之前的训练过程中缓存的历史批次的训练数据的特征,所述历史批次的训练数据的特征在之前的训练过程中利用所述神经网络对所述历史批次的训练数据进行特征提取后得到的;
历史损失计算模块,用于基于所述当前批次的训练数据的特征以及所述历史批次的训练数据的特征计算所述损失函数的函数值,获得历史损失;
参数更新模块,用于基于所述当前损失以及所述历史损失计算总损失,并基于所述总损失利用反向传播算法更新所述神经网络的参数。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器读取并运行时,执行如权利要求1-10中任一项所述的方法。
13.一种电子设备,其特征在于,包括存储器以及处理器,所述存储器中存储有计算机程序指令,所述计算机程序指令被所述处理器读取并运行时,执行权利要求1-10中任一项所述的方法。
CN202010557121.1A 2020-06-17 2020-06-17 神经网络的训练方法、装置、存储介质及电子设备 Pending CN111915004A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010557121.1A CN111915004A (zh) 2020-06-17 2020-06-17 神经网络的训练方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010557121.1A CN111915004A (zh) 2020-06-17 2020-06-17 神经网络的训练方法、装置、存储介质及电子设备

Publications (1)

Publication Number Publication Date
CN111915004A true CN111915004A (zh) 2020-11-10

Family

ID=73237766

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010557121.1A Pending CN111915004A (zh) 2020-06-17 2020-06-17 神经网络的训练方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN111915004A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022139263A1 (ko) * 2020-12-23 2022-06-30 주식회사 엘지에너지솔루션 머신러닝 학습 장치 및 그것의 동작 방법
CN115147679A (zh) * 2022-06-30 2022-10-04 北京百度网讯科技有限公司 多模态图像识别方法和装置、模型训练方法和装置
CN115563499A (zh) * 2021-12-02 2023-01-03 华为技术有限公司 训练模型的方法和装置、系统以及计算节点
CN115797373A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种图像分割方法、装置、电子设备及介质
CN117273086A (zh) * 2023-11-17 2023-12-22 支付宝(杭州)信息技术有限公司 多方联合训练图神经网络的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325584A (zh) * 2018-08-10 2019-02-12 深圳前海微众银行股份有限公司 基于神经网络的联邦建模方法、设备及可读存储介质
WO2019127924A1 (zh) * 2017-12-29 2019-07-04 深圳云天励飞技术有限公司 样本权重分配方法、模型训练方法、电子设备及存储介质
WO2020029585A1 (zh) * 2018-08-10 2020-02-13 深圳前海微众银行股份有限公司 基于迁移学习的神经网络联邦建模方法、设备及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019127924A1 (zh) * 2017-12-29 2019-07-04 深圳云天励飞技术有限公司 样本权重分配方法、模型训练方法、电子设备及存储介质
CN109325584A (zh) * 2018-08-10 2019-02-12 深圳前海微众银行股份有限公司 基于神经网络的联邦建模方法、设备及可读存储介质
WO2020029585A1 (zh) * 2018-08-10 2020-02-13 深圳前海微众银行股份有限公司 基于迁移学习的神经网络联邦建模方法、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
余成波;田桐;熊递恩;许琳英;: "中心损失与Softmax损失联合监督下的人脸识别", 重庆大学学报, no. 05 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022139263A1 (ko) * 2020-12-23 2022-06-30 주식회사 엘지에너지솔루션 머신러닝 학습 장치 및 그것의 동작 방법
CN115563499A (zh) * 2021-12-02 2023-01-03 华为技术有限公司 训练模型的方法和装置、系统以及计算节点
CN115147679A (zh) * 2022-06-30 2022-10-04 北京百度网讯科技有限公司 多模态图像识别方法和装置、模型训练方法和装置
CN115147679B (zh) * 2022-06-30 2023-11-14 北京百度网讯科技有限公司 多模态图像识别方法和装置、模型训练方法和装置
CN115797373A (zh) * 2023-01-09 2023-03-14 苏州浪潮智能科技有限公司 一种图像分割方法、装置、电子设备及介质
CN117273086A (zh) * 2023-11-17 2023-12-22 支付宝(杭州)信息技术有限公司 多方联合训练图神经网络的方法及装置
CN117273086B (zh) * 2023-11-17 2024-03-08 支付宝(杭州)信息技术有限公司 多方联合训练图神经网络的方法及装置

Similar Documents

Publication Publication Date Title
CN111915004A (zh) 神经网络的训练方法、装置、存储介质及电子设备
US11694109B2 (en) Data processing apparatus for accessing shared memory in processing structured data for modifying a parameter vector data structure
CN109326353B (zh) 预测疾病终点事件的方法、装置及电子设备
US11954881B2 (en) Semi-supervised learning using clustering as an additional constraint
CN113378940B (zh) 神经网络训练方法、装置、计算机设备及存储介质
CN112464865A (zh) 一种基于像素和几何混合特征的人脸表情识别方法
CN112560985B (zh) 神经网络的搜索方法、装置及电子设备
CN108985133B (zh) 一种人脸图像的年龄预测方法及装置
CN113326852A (zh) 模型训练方法、装置、设备、存储介质及程序产品
EP4040320A1 (en) On-device activity recognition
CN113706502B (zh) 一种人脸图像质量评估方法及装置
CN112418292A (zh) 一种图像质量评价的方法、装置、计算机设备及存储介质
CN112668482B (zh) 人脸识别训练方法、装置、计算机设备及存储介质
US20220398500A1 (en) Partially local federated learning
CN114817612A (zh) 多模态数据匹配度计算和计算模型训练的方法、相关装置
CN115545103A (zh) 异常数据识别、标签识别方法和异常数据识别装置
CN112784102B (zh) 视频检索方法、装置和电子设备
CN111310462A (zh) 用户属性的确定方法、装置、设备及存储介质
Karam et al. Task incremental learning with static memory for audio classification without catastrophic interference
CN112949433B (zh) 视频分类模型的生成方法、装置、设备和存储介质
CN114266252A (zh) 命名实体识别方法、装置、设备及存储介质
CN111814653B (zh) 一种视频中异常行为的检测方法、装置、设备及存储介质
CN117113087A (zh) 模型训练方法、装置、电子设备以及存储介质
CN112529029A (zh) 信息处理方法、神经网络的训练方法、装置及存储介质
CN113450764B (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