发布信息

一种神经网络模型的训练方法、装置、设备及存储介质与流程

作者:admin      2022-08-26 21:41:58     307



计算;推算;计数设备的制造及其应用技术1.本发明实施例涉及机器学习技术领域,尤其涉及一种神经网络模型的训练方法、装置、设备及存储介质。背景技术:2.当下基于深度学习的技术取得了显著应用成果,比如电商推荐系统、手机人脸解锁。深度学习算法是数据驱动的,即依赖大量的训练数据,且往往也需要对应的标签信息。比如训练人脸识别模型,需要先收集大量人脸图片,然后给每张人脸图片打上id标签,然后将带标签的人脸图片作为训练数据,去训练人脸识别模型。跟人类的学习类似,对深度模型而言,不同的样本可能具有不同的学习难度。3.一般而言,训练集中的大部分样本属于简单样本,一定比例的样本为困难样本。以分类型人脸识别模型的训练为例,模型输入单位是单个样本,此时简单样本可以是清晰的正脸,困难样本可能是一张侧脸或者存在遮挡、模糊等情况的人脸。以度量型人脸识别模型的训练为例,模型输入单位是组合样本,比如输入为人脸对(pair),此时,简单样本可能是两张id不同且脸部样貌差异明显的负样本对,或者是同一个id的两张拍得几乎一样的正样本对,而困难样本可能是两张id不同但脸部样貌接近的负样本对,或者同一个id的两张样貌很不一样的正样本对。4.在训练过程中经常出现一种情况,就是模型在简单样本上表现好,对应的样本损失很小,在困难样本上没怎么学,对应的样本损失较大,但由于简单样本数量庞大,导致整体的训练损失可能减小,此时若认为模型已训练收敛,将导致模型在实际应用过程中的泛化性较差。技术实现要素:5.本发明提供一种神经网络模型的训练方法、装置、设备及存储介质,使得模型在训练过程中更多地关注到难样本的学习,进而提高神经网络模型在实际应用过程中的泛化性。6.第一方面,本发明实施例提供了一种神经网络模型的训练方法,包括:7.获取用于训练神经网络模型的第i批次的数据,所述第i批次的数据包括多个训练样本,所述训练样本标注有表示所述训练样本的类别的标签;8.将所述第i批次的数据的多个所述训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测所述训练样本属于各类别的第一概率向量;9.基于所述第一概率向量和所述训练样本的标签计算所述训练样本的交叉熵损失值;10.计算所述训练样本的特征向量的l2范数,所述特征向量为所述神经网络模型提取的,用于映射得到所述第一概率向量;11.基于所述特征向量的l2范数确定所述训练样本的交叉熵损失值的权重;12.计算所述第i批次的数据中各所述训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值;13.基于所述第一总损失值更新所述神经网络模型的参数。14.第二方面,本发明实施例还提供了一种神经网络模型的训练装置,包括:15.数据获取模块,用于获取用于训练神经网络模型的第i批次的数据,所述第i批次的数据包括多个训练样本,所述训练样本标注有表示所述训练样本的类别的标签;16.第一概率值获取模块,用于将所述第i批次的数据的多个所述训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测所述训练样本属于各类别的第一概率向量;17.交叉熵损失值计算模块,用于基于所述第一概率向量和所述训练样本的标签计算所述训练样本的交叉熵损失值;18.l2范数计算模块,用于计算所述训练样本的特征向量的l2范数,所述特征向量为所述神经网络模型提取的,用于映射得到所述概率向量;19.权重确定模块,用于基于所述特征向量的l2范数确定所述训练样本的交叉熵损失值的权重;20.第一总损失值计算模块,用于计算所述第i批次的数据中各所述训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值;21.参数更新模块,用于基于所述第一总损失值更新所述神经网络模型的参数。22.第三方面,本发明实施例还提供了计算机设备,包括:23.一个或多个处理器;24.存储装置,用于存储一个或多个程序;25.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明第一方面提供的神经网络模型的训练方法。26.第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明第一方面提供的神经网络模型的训练方法。27.本发明实施例提供的神经网络模型的训练方法,在获取用于训练神经网络模型的第i批次的数据之后,将第i批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测训练样本属于各类别的第一概率向量,基于第一概率向量和训练样本的标签计算训练样本的交叉熵损失值,计算训练样本的特征向量的l2范数,基于特征向量的l2范数确定训练样本的交叉熵损失值的权重,计算第i批次的数据中各训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值,基于第一总损失值更新神经网络模型的参数。本发明实施例基于训练样本的特征向量的l2范数挖掘训练数据中的难样本,为该难样本的交叉熵损失值配置相应的权重,让模型在训练过程中更多地关注到难样本的学习,进而提高神经网络模型在实际应用过程中的泛化性。此外,基于训练样本的特征向量的l2范数挖掘训练数据中的难样本,无需计算训练样本间的相似度和排序操作,节省了计算资源,提高了训练效率。附图说明28.图1为本发明实施例一提供的神经网络模型的训练方法的流程图;29.图2a为本发明实施例二提供的一种神经网络模型的训练方法的流程图;30.图2b为基于公开数据集统计的特征向量的l2范数的分布图;31.图3为本发明实施例三提供的一种分类预测方法;32.图4为本发明实施例四提供的一种神经网络模型的训练装置的结构示意图;33.图5为本发明实施例提供的一种分类预测装置的结构示意图;34.图6为本发明实施例六提供的一种计算机设备的结构示意图。具体实施方式35.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。36.实施例一37.图1为本发明实施例一提供的神经网络模型的训练方法的流程图,本实施例可适用于对训练集中的难样本进行挖掘,让模型在训练过程中关注到难样本的学习,该方法可以由本发明实施例提供的神经网络模型的训练装置来执行,该装置可以由软件和/或硬件的方式实现,通常配置于计算机设备中,如图1所示,该方法具体包括如下步骤:38.s101、获取用于训练神经网络模型的第i批次的数据,第i批次的数据包括多个训练样本,训练样本标注有表示训练样本的类别的标签。39.本发明实施例中,待训练的神经网络模型用于实现数据的分类、识别任务,本发明实施例对待训练的神经网络模型的网络结构和应用场景不做限定。示例性的,在本发明的其中一实施例中,神经网络模型用于人脸识别,根据输入的人脸图片,预测该人脸图片所属的人的id。以分类型深度人脸识别模型为例,神经网络模型可划分为主干网络(backbone)和头部网络(head),主干网络对输入的人脸图片进行处理,输出该人脸图片的特征向量,头部网络对输入的特征向量进行处理,输出用于预测该人脸图片属于各id的概率值。40.用于训练神经网络模型的数据集包括多个类别的训练样本,每个类别具有多个训练样本,一个批次(batch)的数据包括多个训练样本,每个训练样本标注有表示该训练样本的类别的标签。对于分类型模型的训练,模型输入单位是单个训练样本,对于度量型模型的训练,模型输入单位是组合样本,比如输入为人脸对(pair),本发明实施例在此不做限定。41.示例性的,本发明其中一实施例中,以分类型深度人脸识别模型为例,用于训练神经网络模型的数据集包括10000个人的id的人脸图片,一个批次具有64张人脸图片,每张人脸图片标注有标示该人脸图片所述的人的id的标签。42.s102、将第i批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测训练样本属于各类别的第一概率向量。43.将第i批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,神经网络模型可以的对输入的训练样本进行卷积、池化、特征融合等操作,提取出用于表征训练样本的特征的特征向量,并经由全连接网络层的转换,输出用于预测训练样本的类别的logits向量,logits向量经由softmax函数归一化处理,得到用于预测训练样本属于各类别的第一概率向量。第一概率向量中每个位置分别对应每个类别,第一概率向量中最大元素值的位置对应的类别即为模型预测的该训练样本所属的类别。44.示例性的,如上所述,主干网络对输入的人脸图像进行处理,得到该人脸图片的特征向量,示例性的,特征向量为512维。头部网络通过512×10000的全连接层,将512为的特征向量转换为10000维的logits向量。softmax函数对logits向量进行归一化处理,得到10000维的第一概率向量。第一概率向量中10000个位置分别对应10000个人的id,第一概率向量中最大元素值的位置对应的id作为模型预测的该训练样本的预测id。45.s103、基于第一概率向量和训练样本的标签计算训练样本的交叉熵损失值。46.具体的,利用交叉熵损失函数计算训练样本的交叉熵损失值。对于二分类问题,模型最终预测的结果只有2类,对于每个类别我们预测的概率为p和1-p。此时,交叉熵损失值计算公式如下:47.l=-[y·log(p)+(1-y)·log(1-p)][0048]其中,y为训练样本的标签,正样本的标签为1,负样本的标签为0。p为模型预测的训练样本为正样本的概率值。[0049]对于多分类问题,交叉熵损失值的计算公式如下:[0050][0051]其中,k为类别数量,yc为指示变量(为0或1),如果该类别和训练样本的标签表示的类别相同就是1,否则是0,pc为模型预测的训练样本属于类别c的概率值。[0052]s104、计算训练样本的特征向量的l2范数,特征向量为神经网络模型提取的,用于映射得到第一概率向量。[0053]如前文所述,特征向量为神经网络模型提取的,用于表征训练样本的特征的向量,后续可以经由全连接网络层的转换,输出logits向量,logits向量经由softmax函数归一化处理,得到用于预测训练样本属于各类别的第一概率向量。[0054]计算训练样本的特征向量的l2范数。特征向量的l2范数是指特征向量中各元素的平方和,然后求平方根,计算公式如下:[0055][0056]其中,‖x‖2为特征向量x的l2范数,xi为特征向量x中的第i个元素。[0057]s105、基于特征向量的l2范数确定训练样本的交叉熵损失值的权重。[0058]基于特征向量的l2范数确定训练样本的交叉熵损失值的权重。具体的,特征向量的l2范数反应了训练样本的难易程度,基于此,可以为不同的l2范数对应的训练样本的交叉熵损失值配置不同的权重。例如,特征向量的l2范数越小,对于模型来说,该训练样本的学习难度越大,此时,可以为该训练样本的交叉熵损失值配置比较大的权重,让模型在训练过程中更多地关注到难样本的学习。[0059]s106、计算第i批次的数据中各训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值。[0060]在确定训练样本的交叉熵损失值的权重后,将该权重与对应的训练样本的交叉熵损失值相乘,得到加权后的损失值,然后计算第i批次的数据中各训练样本加权后的损失值之和,得到第一总损失值。[0061]s107、基于第一总损失值更新神经网络模型的参数。[0062]在得到第一总损失值之后,基于第一总损失值更新神经网络模型的参数。示例性的,在本发明的一些实施例中,将第一总损失值与第一预设值进行比较,在第一总损失值大于第一预设值时,更新神经网络模型的参数,并返回获取训练数据的步骤,以获取第i+1批次的数据,再次对神经网络模型进行训练,如此循环,直至第一总损失值小于或等于第一预设值时,确定神经网络模型训练完成。[0063]现有技术中,通常需要计算一个批次中每个训练样本的特征向量与其余训练样本的特征向量的相似度,基于相似度挖掘难根本。例如,若某一训练样本的特征向量与其余所有训练样本(或其余大部分的训练样本)的特征向量的相似度均小于设定值,则确定该训练样本为难样本。由于该方法需要计算每两个样本间的相似度,且还要进行排序找到相似度的最大值或最小值,因此需要占用额外的计算资源,并延长训练时间。[0064]本发明实施例提供的神经网络模型的训练方法,在获取用于训练神经网络模型的第i批次的数据之后,将第i批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测训练样本属于各类别的第一概率向量,基于第一概率向量和训练样本的标签计算训练样本的交叉熵损失值,计算训练样本的特征向量的l2范数,基于特征向量的l2范数确定训练样本的交叉熵损失值的权重,计算第i批次的数据中各训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值,基于第一总损失值更新神经网络模型的参数。本发明实施例基于训练样本的特征向量的l2范数挖掘训练数据中的难样本,为该难样本的交叉熵损失值配置相应的权重,让模型在训练过程中更多地关注到难样本的学习,进而提高神经网络模型在实际应用过程中的泛化性。此外,基于训练样本的特征向量的l2范数挖掘训练数据中的难样本,无需计算训练样本间的相似度和排序操作,节省了计算资源,提高了训练效率。[0065]实施例二[0066]图2a为本发明实施例二提供的一种神经网络模型的训练方法的流程图,本实施例在上述实施例一的基础上进行细化,详细描述了确定训练样本的交叉熵损失值的权重的具体过程,如图2a所示,该方法具体包括如下步骤:[0067]s201、获取用于训练神经网络模型的多个批次的数据。[0068]本发明实施例中,在模型训练初期,一般只进行普通训练,否则一开始就关注难样本,可能会使得模型训练过程无法正常收敛。通常是待普通训练进行到一定程度,使得神经网络模型满足预设条件后,才启动难样本挖掘,让已在简单样本上学得较好的模型,开始倾向于难样本的学习。[0069]s202、利用多个批次的数据对神经网络模型进行初始训练,直至神经网络模型满足预设条件。[0070]本发明实施例,利用该多个批次的数据对神经网络模型进行初始训练,直至神经网络模型满足预设条件。预设条件可以根据实际情况来设置,比如设定一个损失阈值,监控模型的交叉熵损失值是否降至阈值以下,或者是否降低至阈值以下并经过设定批次的迭代训练;比如设置一个准确率阈值,监控模型在验证集上的准确率是否超过阈值,或者准确率是否超过阈值并经过设定批次的迭代训练;再比如,组合上述多种判定方式中的至少两种,监控模型是否同时满足。[0071]示例性的,在本发明一具体实施例中,设定一个损失阈值,通过监控模型的交叉熵损失值是否降至阈值以下,进而判断神经网络模型是否满足预设条件。具体的,预设条件判断过程如下:[0072]1、将第j批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测所述训练样本属于各类别的第二概率向量。[0073]如前述实施例所述,神经网络模型获取一个批次的数据(为了与前述实施例进行区分,此处称之为第j批次的数据),对输入的该批次的数据中的训练样本进行卷积、池化、特征融合等操作,提取出用于表征训练样本的特征的特征向量,并经由全连接网络层的转换,输出用于预测训练样本的类别的logits向量,logits向量经由softmax函数归一化处理,得到用于预测训练样本属于各类别的第二概率向量。[0074]2、基于第二概率向量和训练样本的标签计算训练样本的交叉熵损失值。[0075]基于第二概率向量和训练样本的标签计算训练样本的交叉熵损失值,具体的,计算训练样本的交叉熵损失值的具体过程在前述实施例中已有详细记载,本发明实施例在此不再赘述。[0076]3、计算第j批次的数据中各训练样本的交叉熵损失值之和,得到第二总损失值。[0077]计算第j批次的数据中各训练样本的交叉熵损失值之和,得到该批次数据的总损失值,称之为第二总损失值。具体的,第二总损失值的计算公式如下:[0078][0079]其中,m一个批次中训练样本的数量,ykc为指示变量(为0或1),如果该类别和训练样本的标签表示的类别相同就是1,否则是0,pkc为模型预测的第k个训练样本属于类别c的概率值,k为类别数量。示例性的,本发明实施例中,m=64,k=10000。[0080]4、判断第二总损失是否小于或等于预设值。[0081]将第二总损失值与预设的第二预设值进行比较,判断第二总损失是否小于或等于第二预设值。[0082]5、在第二总损失值大于预设值时,更新神经网络模型的参数,将第j+1批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理。[0083]具体的,在第二总损失值大于第二预设值时,更新神经网络模型的参数,并将第j+1批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理。[0084]6、在第二总损失值小于或等于预设值时,确定神经网络模型满足预设条件。[0085]如上所述,如此循环执行上述步骤1-5,直至第二总损失值小于或等于预设值时,确定神经网络模型满足预设条件。[0086]s203、获取用于训练神经网络模型的第i批次的数据,第i批次的数据包括多个训练样本,训练样本标注有表示训练样本的类别的标签。[0087]在普通训练进行到一定程度,使得神经网络模型满足预设条件后,此时,获取用于训练神经网络模型的第i批次的数据,启动难样本的挖掘训练。[0088]s204、将第i批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测训练样本属于各类别的第一概率向量。[0089]将第i批次的数据的多个训练样本分别输入待训练的神经网络模型中进行处理,提取出用于表征训练样本的特征的特征向量,并经由全连接网络层的转换,输出用于预测训练样本的类别的logits向量,logits向量经由softmax函数归一化处理,得到用于预测训练样本属于各类别的第一概率向量。[0090]示例性的,在本发明的其中一实施例中,神经网络模型用于人脸识别,根据输入的人脸图片,预测该人脸图片所属的人的id。以分类型深度人脸识别模型为例,神经网络模型可划分为主干网络(backbone)和头部网络(head),主干网络对输入的人脸图片进行处理,输出该人脸图片的特征向量,头部网络对输入的特征向量进行处理,输出用于预测该人脸图片属于各id的概率值。用于训练神经网络模型的数据集包括10000个人的id的人脸图片,一个批次具有64张人脸图片,每张人脸图片标注有标示该人脸图片所述的人的id的标签。其中,训练样本(人脸图片)记为xk。本发明实施例中,记主干网络为fθ(),头部网络为其中θ和分别表示主干网络和头部网络的参数,则训练样本xk的特征向量记为fθ(xk)。[0091]在本发明的一些实施例中,为了加快模型的收敛速度,可以对特征向量标准化处理,得到标准化的特征向量,记为norm(fθ(xk))。特征向量标准化是指将特征向量fθ(xk)中的每个元素除以特征向量的l2范数。因此,第一概率向量可以记为[0092]s205、基于第一概率向量和训练样本的标签计算训练样本的交叉熵损失值。[0093]具体的,利用交叉熵损失函数计算训练样本的交叉熵损失值。示例性的,用于训练神经网络模型的数据集包括10000个人的id的人脸图片,即本发明实施例中的神经网络模型应用于多分类问题。多分类问题中,训练样本的交叉熵损失值的计算过程在前述实施例中已有详细记载,本发明实施例在此不再赘述。[0094]示例性的,记多分类中训练样本的交叉熵损失函数为lce(),则训练样本的的交叉熵损失函数值记为[0095]s206、计算训练样本的特征向量的l2范数,特征向量为神经网络模型提取的,用于映射得到第一概率向量。[0096]计算训练样本的特征向量的l2范数,特征向量的l2范数是指特征向量中各元素的平方和,然后求平方根。示例性的,特征向量fθ(xk)的l2范数记为‖fθ(xk)‖2。[0097]s207、将第i批次的数据的多个训练样本对应的l2范数存入数据队列中。[0098]在本发明实施例中,引入一个大小为m×p的数据队列q,用于存特征向量的l2范数。以数据队列q中的l2范数的分布近似整个数据集的训练样本的特征向量的l2范数的分布。其中,数据队列q具有m×p个存储位,m为每一批次的数据中训练样本的数量,p为大于1的整数。p的取值不宜过小,避免数据队列q中的l2范数的分布与整个数据集的l2范数的分布出现较大偏差,另一方面,p的取值也不能太大,因为模型在不断优化,学到的特征也在逐渐变好,将过早期的l2范数存起来,可能会给后续难样本挖掘带来负面影响。作为参考,在58万大小的ms1m上,大小为6400(m=64,p=100)的队列q基本够用。具体的,l2范数存入数据队列的过程如下:[0099]首先,判断数据队列是否存在空置的存储位。若是,则从空置的存储位中确定待存储的目标存储位;若否,则擦除第i-p批次的数据的多个训练样本对应的l2范数,得到目标存储位,然后将第i批次的数据的多个训练样本对应的l2范数存入目标存储位中。即数据队列初始为空,未存储数据,在第一次迭代训练(包括如前所述的普通训练)时,将第一批次数据对应的m个l2范数存入数据队列q中。在后续的迭代训练过程中,当数据队列q未装满时,直接将新一批数据对应的m个l2范数值存入数据队列q中。当数据队列q装满时,则先将数据队列q中前m个值擦除,再存入新一批数据对应的m个l2范数。[0100]s208、基于数据队列中所有l2范数的均值和标准差,以及训练样本的特征向量的l2范数确定训练样本的交叉熵损失值的权重。[0101]在本发明实施例中,每次迭代训练时,均对数据队列q中的数据进行更新(将该批次的数据对应的m个l2范数存入数据队列q中),然后基于更新后的数据队列q中所有l2范数的均值和标准差,以及训练样本的特征向量的l2范数确定训练样本的交叉熵损失值的权重。[0102]对于当前批次中的训练样本,有多种方法确定训练样本的交叉熵损失值的权重。示例性的,在本发明的其中一实施例中,通过设置用于表示训练样本难易程度的多个分区,根据训练样本的l2范数所属的分区来确定权重。具体过程如下:[0103]1、计算数据队列中所有l2范数的均值和标准差。[0104]具体的,计算更新后的数据队列q中所有l2范数的均值μ,以及所有l2范数的标准差σ。[0105]2、基于均值和标准差确定用于表示训练样本难易程度的多个分区,每一分区具有对应的交叉熵损失值的权重。[0106]图2b为基于公开数据集统计的特征向量的l2范数的分布图,如图2b所示,以基于ir-resnet50为主干网络的人脸识别模型为例,在公开人脸数据集ms1m的随机6400个样本上,统计的特征向量的l2范数(图中feature norm)基本符合高斯分布。高斯分布的两个重要参数即为均值μ和标准差σ。因此,数据队列q中所有l2范数也会呈高斯分布,基于此,可以基于更新后的数据队列q中所有l2范数均值μ和标准差σ确定用于表示训练样本难易程度的多个分区,每一分区具有对应的交叉熵损失值的权重。[0107]示例性的,在本发明一具体实施例中,基于更新后的数据队列q中所有l2范数均值μ和标准差σ,将数据队列q中的所有数据划分为8个分区,分别为l4=(-∞,μ-3σ]、l3=(μ-3σ,μ-2σ]、l2=(μ-2σ,μ-σ]、l1=(μ-σ,μ]、r1=(μ,μ+σ]、r2=(μ+σ,μ+2σ]、r3=(μ+2σ,μ+3σ]和r4=(μ+3σ,∞),这些分区对应的训练样本的学习难度呈下降趋势。困难样本主要集中在l2范数最小的l4和l3两个区。在本发明实施例中,困难样本主要为只露出半边脸、大角度侧脸、暗光情形等人脸图片。而r3和r4两个区对应的样本为非常容易的样本,在本发明实施例中,主要都是光照均匀的完整正脸。位于中间分区的样本为普通样本。[0108]在确定分区后,设定各分区的权重。具体的,可以根据数据集的实际情况引入先验信息,比如,可将各分区权重依次设为{1.2,1.2,1.1,1.1,1.0,1.0,1.0,1.0},表示要增加模型对前4个分区的样本的关注,其中重点关注前2个分区。[0109]需要说明的是,上述实施例中,以8个分区作为示例对本发明实施例进行说明,在本发明其他实施例中,分区的数量可以根据数据集的实际情况设定,本发明实施例在此不做限定。[0110]3、确定训练样本的特征向量的l2范数所属的分区。[0111]确定训练样本的特征向量的l2范数落入的分区,进而可以确定该训练样本的交叉熵损失值的权重。[0112]4、将训练样本的特征向量的l2范数所属的分区对应的权重作为训练样本的交叉熵损失值的权重。[0113]示例性,对于训练样本xk,若其特征向量记为fθ(xk)的l2范数‖fθ(xk)‖2的值位于分区l3,则确定该训练样本xk的交叉熵损失值的权重为1.2。[0114]在本发明的另一实施例中,可以基于先验知识设定自适应权重函数,只需要将训练样本的特征向量的l2范数输入自适应权重函数,就能得到该训练样本对应的权重。具体过程如下:[0115]1、基于数据队列中的l2范数的均值和标准差构建所述l2范数的高斯分布函数。[0116]如前文所述,以基于ir-resnet50为主干网络的人脸识别模型为例,在公开人脸数据集ms1m的随机6400个样本上,统计的特征向量的l2范数基本符合高斯分布。因此,可以采用高斯分布函数近似表示数据队列中l2范数的分布情况,高斯分布函数如下:[0117][0118]其中,z为训练样本的特征向量的l2范数,μ为数据队列中所有l2范数的均值,σ为数据队列中所有与l2范数的标准差。[0119]2、基于高斯分布函数和所述数据队列中的l2范数的标准差构建自适应权重函数。[0120]示例性的,在本发明实施例中,自适应权重函数如下:[0121][0122]其中,z为训练样本的特征向量的l2范数,g(z)为高斯分布函数,σ为数据队列中所有l2范数的标准差,t为预设的l2范数阈值,比如令t=μ,表示将自适应调整l2范数低于μ的训练样本的损失权重,而无需关注l2范数低于μ的训练样本,进而节省计算资源,提高训练效率。[0123]3、将训练样本的特征向量的l2范数输入自适应权重函数,得到训练样本的交叉熵损失值的权重。[0124]具体的,将训练样本的特征向量的l2范数输入自适应权重函数,得到该训练样本的交叉熵损失值的权重。[0125]本发明实施例,在迭代训练时,每次迭代训练时,均对数据队列q中的数据进行更新(将该批次的数据对应的m个l2范数存入数据队列q中),然后基于更新后的数据队列q中所有l2范数的均值和标准差,以及训练样本的特征向量的l2范数确定训练样本的交叉熵损失值的权重。通过数据队列q中的l2范数的分布近似表示整个数据集中所有训练样本的特征向量的l2范数的分布,节省了计算成本,提高了训练效率,此外,动态更新数据队列q,降低近似误差,提高模型预测的准确度。[0126]s209、计算第i批次的数据中各训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值。[0127]具体的,在确定训练样本的交叉熵损失值的权重后,将该权重与对应的训练样本的交叉熵损失值相乘,得到加权后的损失值,然后计算第i批次的数据中各训练样本加权后的损失值之和,得到第一总损失值。[0128]示例性的,在本发明一具体实施例中,如前文所述,训练样本的的交叉熵损失函数值记为则加权后的损失值为然后计算第i批次的数据中各训练样本加权后的损失值之和,得到第一总损失值l1。[0129]s210、基于第一总损失值更新神经网络模型的参数。[0130]在得到第一总损失值之后,基于第一总损失值更新神经网络模型的参数。示例性的,在本发明的一些实施例中,将第一总损失值与第一预设值进行比较,在第一总损失值大于第一预设值时,更新神经网络模型的参数,并返回获取训练数据的步骤,以获取第i+1批次的数据,再次对神经网络模型进行训练,如此循环,直至第一总损失值小于或等于第一预设值时,确定神经网络模型训练完成。[0131]本发明实施例提供的神经网络模型的训练方法,基于训练样本的特征向量的l2范数挖掘训练数据中的难样本,为该难样本的交叉熵损失值配置相应的权重,让模型在训练过程中更多地关注到难样本的学习,进而提高神经网络模型在实际应用过程中的泛化性。此外,基于训练样本的特征向量的l2范数挖掘训练数据中的难样本,无需计算训练样本间的相似度和排序操作,节省了计算资源,提高了训练效率。此外,引入数据队列,通过数据队列中的l2范数的分布近似表示整个数据集中所有训练样本的特征向量的l2范数的分布,节省了计算成本,提高了训练效率,此外,在迭代训练时动态更新数据队列,降低近似误差,提高模型预测的准确度。[0132]一定意义上,噪声样本可以被认为是极度困难的样本,但噪声样本不应该被模型学习,在已知存在一定噪声的数据集上,我们依然可以采用前述难样本挖掘方法,去除噪声样本的模型训练的影响,进而提高模型的预测准确度。示例性的,对于通过设置用于表示训练样本难易程度的多个分区,根据训练样本的l2范数所属的分区来确定权重的实施例,可以将最小的分区的权重设置为0.1甚至更小。比如,设置各分区的权重为{0.1,1.2,1.1,1.1,1.0,1.0,1.0,1.0},其中0.1就是给噪声样本的权重,让模型几乎不对噪声样本进行学习,这里没有直接设置为0.0,是因为噪声样本可能起一定的正则化作用,防止模型过拟合。对于通过自适应权重函数确定权重的实施例,可以将自适应权重函数设置成三段式,如下所示:[0133][0134]其中,l2范数小于或等于t1的训练样本被认为是噪声样本,对应的权重为0.1,l2范数在t1和t2之间的训练样本被认为是难样本,l2范数大于或等于t2的样本被认为是容易样本。[0135]实施例三[0136]图3为本发明实施例三提供的一种分类预测方法,本实施例可用于分类预测,该方法采用如本发明前述任意实施例提供的神经网络模型的训练方法训练得到的神经网络模型,该方法可以由本发明实施例提供的分类预测装置来执行,该装置可采用软件和/或硬件的方式实现,并集成于本发明实施例提供的计算机设备中,如图3所示,该方法具体包括如下步骤:[0137]s301、获取待分类的样本。[0138]示例性的,在本发明一具体实施例中,待分类的样本为人脸图片。[0139]s302、将待分类的样本输入训练好的神经网络模型中进行处理,得到用于预测待分类的样本属于各类别的概率向量。[0140]示例性的,神经网络模型可以的对输入的人脸图片进行卷积、池化、特征融合等操作,提取出用于表征人脸图片的特征的特征向量,并经由全连接网络层的转换,输出用于预测人脸图片的所属各id的logits向量,logits向量经由softmax函数归一化处理,得到用于预测人脸图片属于各id的概率向量。[0141]s303、基于概率向量确定待分类的样本所属的类别。[0142]概率向量中每个位置分别对应每个类别,概率向量中最大元素值的位置对应的类别即为模型预测的该待分类的样本所属的类别。示例性的,概率向量中10000个位置分别对应10000个人的id,概率向量中最大元素值的位置对应的id作为模型预测的待分类的样本的预测id。[0143]实施例四[0144]图4为本发明实施例四提供的一种神经网络模型的训练装置的结构示意图,如图4所示,该装置包括:[0145]第一数据获取模块401,用于获取用于训练神经网络模型的第i批次的数据,所述第i批次的数据包括多个训练样本,所述训练样本标注有表示所述训练样本的类别的标签;[0146]概率值获取模块402,用于将所述第i批次的数据的多个所述训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测所述训练样本属于各类别的第一概率向量;[0147]交叉熵损失值计算模块403,用于基于所述第一概率向量和所述训练样本的标签计算所述训练样本的交叉熵损失值;[0148]l2范数计算模块404,用于计算所述训练样本的特征向量的l2范数,所述特征向量为所述神经网络模型提取的,用于映射得到所述概率向量;[0149]权重确定模块405,用于基于所述特征向量的l2范数确定所述训练样本的交叉熵损失值的权重;[0150]第一总损失值计算模块406,用于计算所述第i批次的数据中各所述训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值;[0151]参数更新模块407,用于基于所述第一总损失值更新所述神经网络模型的参数。[0152]在本发明的一些实施例中,权重确定模块405包括:[0153]l2范数存储子模块,用于将所述第i批次的数据的多个训练样本对应的l2范数存入数据队列中;[0154]权重确定子模块,用于基于所述数据队列中所有l2范数的均值和标准差,以及所述训练样本的特征向量的l2范数确定所述训练样本的交叉熵损失值的权重。[0155]在本发明的一些实施例中,所述数据队列具有m×p个存储位,m为每一批次的数据中训练样本的数量,p为大于1的整数,l2范数存储子模块包括:[0156]判断单元,用于判断所述数据队列是否存在空置的存储位;[0157]第一目标存储位确定单元,用于在数据队列存在空置的存储位时,从所述空置的存储位中确定待存储的目标存储位;[0158]第一目标存储位确定单元,用于在数据队列不存在空置的存储位时,擦除第i-p批次的数据的多个训练样本对应的l2范数,得到目标存储位;[0159]l2范数存储单元,用于将所述第i批次的数据的多个训练样本对应的l2范数存入所述目标存储位中。[0160]在本发明的一些实施例中,权重确定子模块包括:[0161]计算单元,用于计算所述数据队列中所有l2范数的均值和标准差;[0162]分区划分单元,用于基于所述均值和标准差确定用于表示训练样本难易程度的多个分区,每一分区具有对应的交叉熵损失值的权重;[0163]分区确定单元,用于确定所述训练样本的特征向量的l2范数所属的分区;[0164]权重确定单元,用于将所述训练样本的特征向量的l2范数所属的分区对应的权重作为所述训练样本的交叉熵损失值的权重。[0165]在本发明的一些实施例中,权重确定子模块包括:[0166]高斯分布函数确定单元,用于基于所述数据队列中的l2范数的均值和标准差构建所述l2范数的高斯分布函数;[0167]自适应权重函数构建单元,用于所述高斯分布函数和所述数据队列中的l2范数的标准差;[0168]权重确定单元,用于将所述训练样本的特征向量的l2范数输入所述自适应权重函数,得到所述训练样本的交叉熵损失值的权重。[0169]在本发明的一些实施例中,所述高斯分布函数如下:[0170][0171]其中,z为训练样本的特征向量的l2范数,μ为所述数据队列中l2范数的均值,σ为所述数据队列中l2范数的标准差。[0172]在本发明的一些实施例中,所述自适应权重函数如下:[0173][0174]其中,z为训练样本的特征向量的l2范数,g(z)为所述高斯分布函数,σ为所述数据队列中l2范数的标准差,t为预设的l2范数阈值。[0175]在本发明的一些实施例中,神经网络模型的训练模块还包括:[0176]第二数据获取模块,用于在获取用于训练神经网络模型的第i批次的数据之前,获取用于训练神经网络模型的多个批次的数据;[0177]初始训练模块,用于利用多个批次的数据对神经网络模型进行初始训练,直至所述神经网络模型满足预设条件。[0178]在本发明的一些实施例中,初始训练模块包括:[0179]概率向量获取子模块,用于将第j批次的数据的多个所述训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测所述训练样本属于各类别的第二概率向量;[0180]交叉熵损失值计算子模块,用于基于所述第二概率向量和所述训练样本的标签计算所述训练样本的交叉熵损失值;[0181]第二总损失值计算子模块,用于计算所述第j批次的数据中各训练样本的交叉熵损失值之和,得到第二总损失值;[0182]判断子模块,用于判断所述第二总损失是否小于或等于预设值;[0183]参数更新子模块,用于在所述第二总损失值大于所述预设值时,更新所述神经网络模型的参数,并将所述第j+1批次的数据的多个所述训练样本分别输入待训练的神经网络模型中进行处理;[0184]预设条件满足确定子模块,用于在所述第二总损失值小于或等于预设值时,确定所述神经网络模型满足预设条件。[0185]上述神经网络模型的训练装置可执行本发明任意实施例所提供的神经网络模型的训练方法,具备执行方法相应的功能模块和有益效果。[0186]实施例五[0187]图5为本发明实施例提供的一种分类预测装置的结构示意图,如图5所示,该装置包括:[0188]待分类样本获取模块501,用于获取待分类的样本。[0189]概率向量获取模块502,用于将待分类的样本输入训练好的神经网络模型中进行处理,得到用于预测待分类的样本属于各类别的概率向量。[0190]类别确定模块503,用于基于概率向量确定待分类的样本所属的类别。[0191]上述分类预测装置可执行本发明任意实施例所提供的分类预测方法,具备执行方法相应的功能模块和有益效果。[0192]实施例六[0193]本发明实施例六提供了一种计算机设备,图6为本发明实施例六提供的一种计算机设备的结构示意图,如图6所示,该计算机设备包括处理器601、存储器602、通信模块603、输入装置604和输出装置605;计算机设备中处理器601的数量可以是一个或多个,图6中以一个处理器601为例;计算机设备中的处理器601、存储器602、通信模块603、输入装置604和输出装置605可以通过总线或其他方式连接,图6中以通过总线连接为例。上述处理器601、存储器602、通信模块603、输入装置604和输出装置605可以集成在计算机设备的控制主板上。[0194]存储器602作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的神经网络模型的训练方法或分类预测方法对应的模块。处理器601通过运行存储在存储器602中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述实施例提供的神经网络模型的训练方法或分类预测方法。[0195]存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器602可进一步包括相对于处理器601远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。[0196]通信模块603,用于与外界设备(例如智能终端)建立连接,并实现与外界设备的数据交互。输入装置604可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。[0197]本实施例提供的一种计算机设备,可执行本发明上述任意实施例提供的神经网络模型的训练方法或分类预测方法,具体相应的功能和有益效果。[0198]实施例七[0199]本发明实施例七提供了一种包含计算机可执行指令的存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明上述任意实施例提供的神经网络模型的训练方法或分类预测方法。[0200]神经网络模型的训练方法包括:[0201]获取用于训练神经网络模型的第i批次的数据,所述第i批次的数据包括多个训练样本,所述训练样本标注有表示所述训练样本的类别的标签;[0202]将所述第i批次的数据的多个所述训练样本分别输入待训练的神经网络模型中进行处理,得到用于预测所述训练样本属于各类别的第一概率向量;[0203]基于所述第一概率向量和所述训练样本的标签计算所述训练样本的交叉熵损失值;[0204]计算所述训练样本的特征向量的l2范数,所述特征向量为所述神经网络模型提取的,用于映射得到所述第一概率向量;[0205]基于所述特征向量的l2范数确定所述训练样本的交叉熵损失值的权重;[0206]计算所述第i批次的数据中各所述训练样本的交叉熵损失值乘以权重后的损失值之和,得到第一总损失值;[0207]基于所述第一总损失值更新所述神经网络模型的参数。[0208]分类预测方法采用如本发明上述任意实施例提供的神经网络模型的训练方法训练得到的神经网络模型,包括:[0209]获取待分类的样本;[0210]将待分类的样本输入训练好的神经网络模型中进行处理,得到用于预测待分类的样本属于各类别的概率向量;[0211]基于概率向量确定待分类的样本所属的类别。[0212]当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明实施例所提供的神经网络模型的训练方法或分类预测方法中的相关操作。[0213]需要说明的是,对于装置、设备和存储介质实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0214]通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的神经网络模型的训练方法或分类预测方法。[0215]值得注意的是,上述装置中,所包括的各个模块、子模块、单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。[0216]应当理解的是,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行装置执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。[0217]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。[0218]注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部