本发明涉及深度学习技术领域,特别是指一种损失函数中margin参数值的更新方法和系统。
背景技术:
在深度学习中,最重要的几个要素是:数据,算力,网络结构,损失函数。损失函数loss对神经网络最直观的影响就是,通过计算损失函数loss反传梯度来实现对模型参数的更新,不同的损失函数loss可以使模型更加侧重于学习到数据某一方面的特征,并在之后能够更好地提取到这一独有的特征,因此损失函数loss对于网络优化有导向性的作用。损失函数通常是计算预测的结果和真实结果之间的差异,引导网络做出更准确的预测。对于不同的深度学习任务,使用一个恰当的损失函数是很有必要的。
损失函数分为两大类,基于度量学习的和基于分类的。
度量学习主要有triplet_loss,分类学习主要有softmax_loss。
softmax_loss计算公式如下:
其中:h表示训练中一个batch里样本的数量,n表示整个训练数据中的类别数量,
在softmax_loss的基础上,不断的提出了l-softmax_loss,large-marginsoftmax,a-softmax_loss,am-softmax,arcface等损失函数。这一类损失函数的思想是:让特征更注重角度信息,让分类更加严格。例如一个2分类问题,
其中:
若将权重和特征归一化后,则模型更注重角度信息。如果给角度信息中再加上一个margin参数,则分类条件更加严格,类间距离更大。增加margin的形式有如下三种:cos(m*θ),cos(θ)–m,cos(θ+m)。
arcface损失函数是目前最常用也是最有效的深度学习分类损失函数之一,在最大的公开人脸识别比赛megaface中取得了最好的成绩。arcface的主要思想是:1、将权重归一化||
arcface的计算方法如下:
其中,h表示训练中一个batch里样本的数量,n表示整个训练数据中的类别数量,
在损失函数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参数值,使得人脸识别模型进一步调整优化,提高了人脸识别的精确度。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。