一种损失函数中margin参数值的更新方法和系统与流程

文档序号:20756894发布日期:2020-05-15 17:29阅读:1891来源:国知局
一种损失函数中margin参数值的更新方法和系统与流程

本发明涉及深度学习技术领域,特别是指一种损失函数中margin参数值的更新方法和系统。



背景技术:

在深度学习中,最重要的几个要素是:数据,算力,网络结构,损失函数。损失函数loss对神经网络最直观的影响就是,通过计算损失函数loss反传梯度来实现对模型参数的更新,不同的损失函数loss可以使模型更加侧重于学习到数据某一方面的特征,并在之后能够更好地提取到这一独有的特征,因此损失函数loss对于网络优化有导向性的作用。损失函数通常是计算预测的结果和真实结果之间的差异,引导网络做出更准确的预测。对于不同的深度学习任务,使用一个恰当的损失函数是很有必要的。

损失函数分为两大类,基于度量学习的和基于分类的。

度量学习主要有triplet_loss,分类学习主要有softmax_loss。

softmax_loss计算公式如下:

其中:h表示训练中一个batch里样本的数量,n表示整个训练数据中的类别数量,表示第i个样本的特征,表示将预测为类时,所对应的权重向量的转置。表示将预测为类时,所对应的偏置向量。表示将预测为j类时,所对应的权重向量的转置,表示将预测为j类时所对应的偏置向量。

在softmax_loss的基础上,不断的提出了l-softmax_loss,large-marginsoftmax,a-softmax_loss,am-softmax,arcface等损失函数。这一类损失函数的思想是:让特征更注重角度信息,让分类更加严格。例如一个2分类问题,属于类别1,那么原来的softmax_loss希望:,也就是属于类别1的概率大于类别2的概率,这个式子和下式是等效的:

其中:表示将分为第一类时所对应的权重向量,表示之间的夹角。表示将分类第二类时所对应的权重向量,表示之间的夹角。

若将权重和特征归一化后,则模型更注重角度信息。如果给角度信息中再加上一个margin参数,则分类条件更加严格,类间距离更大。增加margin的形式有如下三种:cos(m*θ),cos(θ)–m,cos(θ+m)。

arcface损失函数是目前最常用也是最有效的深度学习分类损失函数之一,在最大的公开人脸识别比赛megaface中取得了最好的成绩。arcface的主要思想是:1、将权重归一化||||=1,采用s=64作为特征归一化参数替代||||,将特征映射到半径为s的超球面上,这样可以让特征学习到更可分的角度特征。2、arcface即additiveangularmarginloss,相较于传统的softmax_loss,其在角度判别界限中加入了margin,使得分类界限更加严格,类间距离更加分散,类内距离更加集中。

arcface的计算方法如下:

其中,h表示训练中一个batch里样本的数量,n表示整个训练数据中的类别数量,表示将第i个样本预测为类,表示将第i个样本预测为类时,其所对应的特征和权重之间的夹角。为第i个样本预测为j类时,其所对应的特征和权重之间的夹角。一般来说s取值64,m取值0.5。

在损失函数arcface的使用过程中,超参数m(即margin)的改变对模型的最终表现有很大的影响,但是增加了网络的收敛难度和优化难度。



技术实现要素:

本发明提出一种损失函数中margin参数值的更新方法和系统,没有引入更多的需要学习的参数,网络更容易收敛,得到的模型准确率更好。

本发明的技术方案是这样实现的:

一种损失函数中margin参数值的更新方法,具体包括以下步骤:

步骤1,设定深度学习对应的神经网络、图像数据集、训练数据和损失函数,将图像数据集输入神经网络得到预训练模型;

步骤2,根据预训练模型的训练次数,分阶段调整损失函数中margin参数值,并根据margin参数值调整修改预训练模型的参数。

作为本发明的一个优选实施例,步骤1设定深度学习对应的神经网络、图像数据集、训练数据和损失函数,将图像数据集输入神经网络得到预训练模型;具体指的是

设定深度学习对应的神经网络为resnet50,图像数据集为imagenet,训练数据为ms1m,损失函数为cosface、sphereface或arcface,将图像数据集imagenet输入神经网络resnet50得到预训练模型。

作为本发明的一个优选实施例,步骤2中根据预训练模型的训练次数,分阶段调整损失函数中margin参数值,具体指的是

在训练的初始阶段,margin参数值线性地逐渐增加到0.7;

第35至50个epoch中,margin参数值保持为0.7;

第50个epoch后,margin参数值降至0.6;

第60个epoch后,margin参数值降至0.5;

第70个epoch开始,使用余弦的方式更新margin参数值。

作为本发明的一个优选实施例,margin参数值的调整函数为

t为训练次数。

一种损失函数中margin参数值的更新系统,包括

参数设定模块,设定深度学习对应的神经网络、图像数据集、训练数据和损失函数;

预训练模块,将图像数据集输入神经网络得到预训练模型;

参数调整模块,根据预训练模型的训练次数,分阶段调整损失函数中margin参数值,并根据margin参数值调整修改预训练模型的参数。

作为本发明的一个优选实施例,所述参数设定模块通过人机交互设备获取外界输入的设定指令,设定深度学习对应的神经网络为resnet50,图像数据集为imagenet,训练数据为ms1m,损失函数为cosface、sphereface或arcface。

作为本发明的一个优选实施例,分阶段调整损失函数中margin参数值具体指的是

在训练的初始阶段,margin参数值线性地逐渐增加到0.7;

第35至50个epoch中,margin参数值保持为0.7;

第50个epoch后,margin参数值降至0.6;

第60个epoch后,margin参数值降至0.5;

第70个epoch开始,使用余弦的方式更新margin参数值。

本发明的有益效果在于:没有引入更多的需要学习的参数,网络更容易收敛,得到的模型准确率更好。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种损失函数中margin参数值的更新方法一个实施例的流程图;

图2为margin参数值的取值曲线图;

图3为本发明一种损失函数中margin参数值的更新系统一个实施例的原理框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在深度学习中常遇到训练样本不均衡的情况,而且有些类别容易区分有些类别不易区分,训练过程中网络应该先学会那些容易区分的类别,然后再学习不易区分的类别。

随着神经网络的不断学习,网络会更加智能,对类别的区分能力更加强大,此时可以完成更严格的分类任务。然而在训练过程中,常会加载一个在imagenet上训练得到的预训练模型,在另外一个训练任务中,训练数据和imagenet的分布情况不会相同,因此需要一个逐渐增大的margin去打乱预训练模型中的参数。

基于这些想法,本发明设计了一种更新margin的策略——warmupmargin。

如图1和图2所示,本发明提出了一种损失函数中margin参数值的更新方法,具体包括以下步骤:

步骤1,设定深度学习对应的神经网络、图像数据集、训练数据和损失函数,将图像数据集输入神经网络得到预训练模型;

具体的,设定深度学习对应的神经网络为resnet50,图像数据集为imagenet,训练数据为ms1m,损失函数为cosface、sphereface或arcface,将图像数据集imagenet输入神经网络resnet50得到预训练模型。

步骤2,根据预训练模型的训练次数,分阶段调整损失函数中margin参数值,并根据margin参数值调整修改预训练模型的参数。

步骤2中根据预训练模型的训练次数,分阶段调整损失函数中margin参数值,具体指的是

在训练的初始阶段,margin参数值线性地逐渐增加到0.7;

第35至50个epoch中,margin参数值保持为0.7;

第50个epoch后,margin参数值降至0.6;

第60个epoch后,margin参数值降至0.5;

第70个epoch开始,使用余弦的方式更新margin参数值。因为在多个epoch后,参数已经更新的相对较好了,令margin以余弦的形式小幅度的上下波动,有助于模型进一步微调、优化。

margin参数值的调整函数为

t为训练次数。图2中,纵坐标为epoch数,横坐标为margin。

因为cosface、sphereface、arcface中均有使用到margin,因此可以设计类似上述的更新arcface中margin的策略,更新cosface和sphereface中的margin。网络均使用resnet50,最终测试并比较模型在公开数据集lfw、cfp-fp、agedb-30上的准确率(%)。测试结果如下:

由测试结果可知,使用了warmupmargin策略,模型中准确率有了一定的提升,证明该策略是有效的。

如图3所示,本发明还提出了一种损失函数中margin参数值的更新系统,包括

参数设定模块,设定深度学习对应的神经网络、图像数据集、训练数据和损失函数;参数设定模块通过人机交互设备获取外界输入的设定指令,设定深度学习对应的神经网络为resnet50,图像数据集为imagenet,训练数据为ms1m,损失函数为cosface、sphereface或arcface。具体的,人机交互设备为键盘或触摸显示屏等。

预训练模块,将图像数据集输入神经网络得到预训练模型;

参数调整模块,根据预训练模型的训练次数,分阶段调整损失函数中margin参数值,并根据margin参数值调整修改预训练模型的参数。

分阶段调整损失函数中margin参数值具体指的是

在训练的初始阶段,margin参数值线性地逐渐增加到0.7;

第35至50个epoch中,margin参数值保持为0.7;

第50个epoch后,margin参数值降至0.6;

第60个epoch后,margin参数值降至0.5;

第70个epoch开始,使用余弦的方式更新margin参数值。因为在多个epoch后,参数已经更新的相对较好了,令margin以余弦的形式小幅度的上下波动,有助于模型进一步微调、优化。

本发明的有益效果在于:没有引入更多的需要学习的参数,网络更容易收敛,得到的模型准确率更好。本发明可应用于人脸识别领域,通过更新margin参数值,使得人脸识别模型进一步调整优化,提高了人脸识别的精确度。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1