本发明涉及计算机技术领域,特别是涉及一种领域自适应方法及装置。
背景技术:
基于机器学习的算法,通常是利用一个或多个特定领域(即,源领域)的训练样本进行学习,得到模型。然后,利用学习到的模型对目标领域中的测试样本进行测试,得到测试结果。通常情况下,不同领域的样本的分布不一,有着各自的特点。如果不进行领域自适应,直接将在源领域的样本集上训练得到的模型应用到目标领域的测试样本中,测试效果较差。例如,如图1所示,源领域的训练样本是网络卖家的图片,其背景一致,且物体正面居中;如图2所示,目标领域的测试样本是买家实拍的图片,特点是背景杂乱、图像质量低。如果不进行领域自适应,利用网络卖家提供的图片训练得到的图片分类模型,对买家实拍的图片进行分类时效果较差。
领域自适应算法的核心在于衡量和减小不同领域之间样本的分布差异。利用源领域的样本集和目标领域的样本集,经过自适应算法,提升训练得到的模型在目标领域样本集中的测试效果。领域自适应算法的典型应用包括文本识别、图片分类和语音识别等。现有技术中,基于深度神经网络的领域自适应方法,通常采取源领域的样本特征分布和目标领域的样本特征分布进行对齐的方式。典型的方法包括,在求得源领域和目标领域的样本特征后,分别计算两个领域的样本集特征的均值和协方差,然后将源领域的特征进行“白化”和“重新着色”,使得其均值和协方差分布分别与目标领域的样本集的均值和协方差一致,从而达到领域自适应的效果。但是,这类方法只对模型输出的特征进行领域自适应的调整,并没有在提取特征环节中考虑不同领域样本差异的问题,因此领域自适应的效果较差。
技术实现要素:
本发明实施例中提供了一种领域自适应方法及装置,以解决现有技术中领域自适应效果较差的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面,本发明提供一种领域自适应方法,应用于包含批规范化bn层的神经网络中,所述方法包括:
对于所述神经网络中的每一个bn层,利用源领域的训练样本集合训练得到所述bn层的第一输出模型,所述第一输出模型包含所述bn层输入的样本特征的第一统计信息;
对于所述神经网络中的每一个bn层,获取所述bn层输入的来自目标领域的样本特征的第二统计信息;
对于所述神经网络中的每一个bn层,利用所述bn层的第二统计信息代替所述bn层的第一输出模型中的第一统计信息,得到所述bn层对应、且能自适应所述目标领域的第二输出模型。
可选地,所述第一统计信息包括输入到所述bn层的训练样本的样本特征的均值和方差;所述第二统计信息包括输入到所述bn层的测试样本的样本特征的均值和方差。
可选地,所述对于所述神经网络中的每一个bn层,利用所述bn层的第二统计信息代替所述bn层的第一输出模型中的第一统计信息,得到所述bn层对应、且能自适应所述目标领域的第二输出模型,包括:
对于所述神经网络中的每一个bn层,利用输入所述bn层的测试样本的样本特征的均值代替所述bn层的第一输出模型中的均值;利用所述bn层的测试样本的样本特征的方差代替所述bn层的第一输出模型中的方差,得到所述bn层对应的第二输出模型。
可选地,当所述训练样本分别来自至少两个源领域时,所述利用源领域的训练样本集合训练得到所述bn层的第一输出模型,包括:
按照分批统计方式,计算全部训练样本输入到所述bn层的样本特征的均值和方差,其中每一批中的训练样本来自同一个源领域;
利用分批统计方式计算得到的所述样本特征的均值和方差,训练得到所述第一输出模型。
可选地,所述对于所述神经网络中的每一个bn层,获取所述bn层输入的来自目标领域的样本特征的第二统计信息,包括:
对于每一个bn层,利用分批统计方式计算全部测试样本输入到所述bn层的样本特征的均值和方差,得到所述第二统计信息。
第二方面,提供一种领域自适应装置,应用于包含批规范化bn层的神经网络中,所述装置包括:
训练模块,用于对于所述神经网络中的每一个bn层,利用源领域的训练样本集合训练得到所述bn层的第一输出模型,所述第一输出模型包含所述bn层输入的样本特征的第一统计信息;
统计信息获取模块,用于对于所述神经网络中的每一个bn层,获取所述bn层输入的来自目标领域的样本特征的第二统计信息;
输出模型获取模块,用于对于所述神经网络中的每一个bn层,利用所述bn层的第二统计信息代替所述bn层的第一输出模型中的第一统计信息,得到所述bn层对应、且能自适应所述目标领域的第二输出模型。
可选地,所述第一统计信息包括输入到所述bn层的训练样本的样本特征的均值和方差;所述第二统计信息包括输入到所述bn层的测试样本的样本特征的均值和方差。
可选地,所述输出模型获取模块包括:
第一替换子模块,用于对于所述神经网络中的每一个bn层,利用输入所述bn层的测试样本的样本特征的均值代替所述bn层的第一输出模型中的均值;
第二替换子模块,用于对于所述神经网络中的每一个bn层,利用所述bn层的测试样本的样本特征的方差代替所述bn层的第一输出模型中的方差,得到所述bn层对应的第二输出模型。
可选地,当所述训练样本来自至少两个源领域时,所述训练模块包括:
分批统计子模块,用于按照分批统计方式,计算输入到所述bn层的样本特征的均值和方差,其中每一批中的训练样本来自同一个源领域;
训练子模块,用于利用所述分批统计子模块得到的所述样本特征的均值和方差,训练得到所述第一输出模型。
可选地,所述统计信息获取模块,具体用于:
对于每一个bn层,利用分批统计方式计算全部测试样本输入到所述bn层的样本特征的均值和方差,得到所述第二统计信息。
由以上技术方案可见,本发明实施例提供的领域自适应方法,在利用源领域的训练样本完成神经网络的训练过程之后,在原网络的bn(batchnormalization,批规范化)层重新统计目标领域的各维特征的第二统计信息,并利用目标领域的各位特征的第二统计信息分别代替训练得到的对应bn层的第一输出模型中的第一统计信息。从而,减小源领域样本和目标领域样本在每一层输出后的分布差异,得到适应目标领域的神经网络的模型。该方法在神经网络的每一层都加入了领域自适应的调整,而且,在浅层的调整经过复杂的神经网络后,能够让最后的特征经过更复杂的转换,从而得到最优的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种源领域训练样本图片的示意图;
图2为一种目标领域测试样本图片的示意图;
图3为本发明实施例一种领域自适应方法的流程示意图;
图4为本发明实施例一种领域自适应装置的框图;
图5为本发明实施例一种训练模块的框图;
图6为本发明实施例一种输出模型获取模块的框图。
具体实施方式
在详细介绍本发明提供的领域自适应方法之前,首先相关术语进行解释说明:
神经网络:由众多神经元分层连接而成,通常的神经网络包括全连接,池化以及非线性变换等操作对输入信号进行特征提取。神经网络能够学习和存储大量的输入-输出模式映射关系,学习规则(即,训练过程)是通过反向传播算法,即给定样本的标签,计算标签与网络输出之间的误差,并将此误差逐层回传到之前的层中。通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。
批规范化:在神经网络中,为了解决深度神经网络中的梯度弥散问题,bn在不同神经元分层的激活函数之前对输入信号进行分批的规范化,使得每一层输入信号的均值和方差分别一致,从而解决训练过程中内部协方差偏移问题,进而加快训练的速度。
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
以上是本发明的核心思想,为了使本技术领域的人员更好地理解本发明方案,下面结合附图对本发明作进一步的详细说明。
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
参见图3,为本发明实施例提供的一种领域自适应方法的流程示意图,该方法应用于任何采用bn层的神经网络中,对于神经网络中的每一个bn层,执行以下步骤:
s110,利用源领域的训练样本集合训练得到所述bn层的第一输出模型。所述第一输出模型包含所述bn层输入的样本特征的第一统计信息。
神经网络学习过程本质是学习数据分布,一旦训练数据与测试数据的分布不同,那么网络的泛化能力也大大降低;另外一方面,对于神经网络(属于深度网络)的训练是一个复杂的过程,只要网络的前面几层发生微小的改变,后面几层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会大大降低网络的训练速度。
bn层是在网络的每一层输入的时候插入的一个数据预处理操作,来解决在训练过程中,中间层数据分布发生改变的情况。具体的,首先对某一层网的输入数据x做归一化处理,归一化公式如公式1所示:
公式1中,xj是一个样本的神经元j的样本特征,e[xj]是输入到神经元j的训练样本的样本特征xj的平均值;var[xj]是输入到神经元j的训练样本的样本特征xj的方差;
如果对于某一网络层a的输出数据要送入下一网络层b,首先,bn层对网络层a输出的数据利用公式1进行归一化处理,这样会影响网络层a所学到的特征分布。例如,网络中间某一层学习到特征数据本身分布在s型激活函数的两侧,如果强制把它归一化处理,标准差限制在1,把数据变换成分布在s型激活函数的中间部分,这样相当于网络层a所学习到的特征分布被破坏,因此,对归一化后的数据再进行变换重构,引入可学习参数γ和β。
利用公式2得到变换后的bn层的输出信号:
通过公式2能够恢复出原始网络所学到的特征分布。
公式2中,γj和βj是要通过训练过程学习的参数,
其中,公式1和公式2构成了bn层的第一输出模型,网络一旦训练完毕,第一输出模型中的均值e[xj]和方差var[xj]就固定不变了。
本实施例中,bn层统计的样本特征的第一统计信息即上述的均值和方差。
整个训练过程使用标准的反向传播算法进行优化,在迭代多轮之后得到优化后的模型参数。
s120,获取所述bn层输入的来自目标领域的样本特征的第二统计信息。
本实施例中,训练过程完成后,对测试样本进行测试之前,针对每一个bn层,获取输入的目标领域的样本特征的第二统计信息,例如,第二统计信息可以是样本特征的均值和方差。
s130,利用所述bn层的第二统计信息代替所述bn层的第一输出模型中的第一统计信息,得到所述bn层对应、且能自适应所述目标领域的第二输出模型。
在进行测试之前,对于目标领域的样本集,首先固定训练得到的模型参数,然后,在线更新每个bn层的第一统计信息。针对神经网络中的每一个bn层,利用步骤s120中获得的目标领域的样本特征的第二统计信息,代替第一输出模型中的第一统计信息,得到第二输出模型,该第二输出模型能够自适应不同的领域。例如,在车型识别、车辆检测等任务中,通过互联网图片训练得到的模型迁移到实际道路场景中,取得了很好的效果。
本实施例中,bn层统计的样本特征的统计信息就是样本特征的均值和方差,因此,该步骤中利用第二统计信息替换第一统计信息具体是,将公式1中训练样本的e[xj]替换为该bn层输入的目标领域的样本特征的均值,以及,将公式1中训练样本的var[xj]替换为该bn层输入的目标领域的样本特征的方差,最终得到该bn层的第二输出模型。
经过整个神经网络的结构,最终对于每一个目标领域的样本,能够得到最终的结果输出。
本实施例提供的领域自适应方法,在利用源领域的训练样本完成神经网络的训练过程之后,在原网络的bn层重新统计目标领域的各维特征的第二统计信息,并利用目标领域的各位特征的第二统计信息分别代替训练得到的对应bn层的第一输出模型中的第一统计信息。从而,减小源领域样本和目标领域样本在每一层输出后的分布差异,得到适应目标领域的神经网络的模型。该方法在神经网络的每一层都加入了领域自适应的调整,而且,在浅层的调整经过复杂的神经网络后,能够让最后的特征经过更复杂的转换,从而得到最优的效果。
此外,该方法不需要额外的调整或在网络中加入额外的优化项,因此能够大大提高训练和测试的效率,提高运算速度。
此外,由于该方法利用bn层的统计特性进行领域自适应,很容易拓展到半监督和多源领域自适应问题中。具体的,对于多源领域自适应问题,在计算训练样本的均值和方差时,不同源领域的训练样本分别进行计算。训练过程可以采取分批的随机梯度下降的方法,因此,保证每一批中的k个训练样本来自同一个领域即可。对于半监督领域自适应问题,可以像正常训练神经网络一样使用目标领域中提供的标注数据进行微调。
对于测试样本数量较大的应用场景,统计测试样本的均值和方差需要分批次进行,分批次统计样本均值和方差有很多种方法,本实施例中,采取如下方法进行统计,首先,固定训练得到的输出模型中的可学习参数γj和βj,然后,在线更新每个bn层统计得到的该bn层的输入特征(即,第j维输入特征)的均值
公式3中,
公式4中,
公式5中,v′j是当前输入网络的k个测试样本后更新得到的样本特征的方差;vj是更新前样本特征的方差,nj是更新前的样本数,初始时样本数nj为0;d利用公式3计算得到;k是当前输入网络的测试样本的个数。
n′j=nj+k(公式6)
公式6中,n′j是更新后样本的个数,nj是更新前的样本数,初始时样本数nj为0;k是当前输入网络的测试样本的个数。
通过公式3~公式6计算得到目标领域中样本集在各个bn层的统计信息后,对于每个目标领域的样本,对于一个bn层的输出如下公式所示:
公式7中,xj是目标领域样本对于神经元j的输入特征,
公式8中,γj和βj是训练得到的数值;yj是测试样本对于神经元j的输出;
经过整个神经网络的结构,最终对于每一个目标领域的样本,能够得到最终的结果输出。例如,在图片分类的任务中,测试图片经过神经网络的结构,最终得到该测试图片的分类结果。
通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。
与本发明提供的领域自适应方法实施例相对应,本发明还提供了领域自适应装置实施例。
参见图4,为本发明实施例提供的一种领域自适应装置的结构示意图,该装置应用于任何采用bn层的神经网络中。如图4所示,该装置包括:训练模块110、统计信息获取模块120和输出模型获取模块130。
训练模块110,用于对于所述神经网络中的每一个bn层,利用源领域的训练样本集合训练得到所述bn层的第一输出模型,所述第一输出模型包含所述bn层输入的样本特征的第一统计信息。
整个训练过程使用标准的反向传播算法进行优化,在迭代多轮之后得到优化后的模型参数。最终得到的第一输出模型即上述的公式1和公式2。
本实施例中,bn层统计的样本特征的第一统计信息即样本特征的均值和方差。
在本发明的一些实施例中,训练样本可能来自多个源领域,在计算训练样本的均值和方差时,不同源领域的训练样本分别进行计算。训练过程可以采取分批的随机梯度下降的方法,因此,保证每一批中的k个训练样本来自同一个领域即可。具体地,请参见图5,为本发明实施例一种训练模块的框图,如图5所示,训练模块110可以包括分批统计子模块111和训练子模块112。
分批统计子模块111,用于按照分批统计方式,计算输入到所述bn层的样本特征的均值和方差,其中每一批中的训练样本来自同一个源领域。
训练子模块112,用于利用所述分批统计子模块得到的所述样本特征的均值和方差,训练得到所述第一输出模型。
统计信息获取模块120,用于对于所述神经网络中的每一个bn层,获取所述bn层输入的来自目标领域的样本特征的第二统计信息。
本实施例中,训练过程完成后,对测试样本进行测试之前,针对每一个bn层,获取输入的目标领域的样本特征的第二统计信息,例如,第二统计信息可以是样本特征的均值和方差。
对于测试样本数量较大的应用场景,统计测试样本的均值和方差需要分批次进行,可以参见公式3~公式6所示的分批统计方式进行统计。
输出模型获取模块130,用于对于所述神经网络中的每一个bn层,利用所述bn层的第二统计信息代替所述bn层的第一输出模型中的第一统计信息,得到所述bn层对应、且能自适应所述目标领域的第二输出模型。
在进行测试之前,对于目标领域的样本集,首先固定训练得到的模型参数,然后,在线更新每个bn层的第一统计信息。针对神经网络中的每一个bn层,利用统计信息获取模块120获得的目标领域的样本特征的第二统计信息,代替第一输出模型中的第一统计信息,得到第二输出模型;该第二输出模型能够自适应不同的领域。例如,在车型识别、车辆检测等任务中,通过互联网图片训练得到的模型迁移到实际道路场景中,取得了很好的效果。
本实施例中,bn层统计的样本特征的统计信息就是样本特征的均值和方差,请参见图6,为本发明实施例一种输出模型获取模块的框图,该输出模型获取模块130包括第一替换子模块131和第二替换子模块132。
第一替换子模块131,用于对于所述神经网络中的每一个bn层,利用输入所述bn层的测试样本的样本特征的均值代替所述bn层的第一输出模型中的均值。
将公式1中训练样本的e[xj]替换为该bn层输入的目标领域的样本特征的均值。
第二替换子模块132,用于对于所述神经网络中的每一个bn层,利用所述bn层的测试样本的样本特征的方差代替所述bn层的第一输出模型中的方差,得到所述bn层对应的第二输出模型。
将公式1中训练样本的var[xj]替换为该bn层输入的目标领域的样本特征的方差,最终得到该bn层的第二输出模型。
经过整个神经网络的结构,最终对于每一个目标领域的样本,能够得到最终的结果输出。例如,在图片分类的任务中,测试图片经过神经网络的结构,最终得到该测试图片的分类结果。
本实施例提供的领域自适应装置,在利用源领域的训练样本完成神经网络的训练过程之后,在原网络的bn层重新统计目标领域的各维特征的第二统计信息,并利用目标领域的各位特征的第二统计信息分别代替训练得到的对应bn层的第一输出模型中的第一统计信息。从而,减小源领域样本和目标领域样本在每一层输出后的分布差异,得到适应目标领域的神经网络的模型。该装置在神经网络的每一层都加入了领域自适应的调整,而且,在浅层的调整经过复杂的神经网络后,能够让最后的特征经过更复杂的转换,从而得到最优的效果。
此外,该领域自适应装置不需要额外的调整或在网络中加入额外的优化项,因此能够大大提高训练和测试的效率,提高运算速度。
此外,由于该方法利用bn层的统计特性进行领域自适应,很容易拓展到半监督和多源领域自适应问题中。具体的,对于多源领域自适应问题,在计算训练样本的均值和方差时,不同源领域的训练样本分别进行计算。训练过程可以采取分批的随机梯度下降的方法,因此,保证每一批中的k个训练样本来自同一个领域即可。对于半监督领域自适应问题,可以像正常训练神经网络一样使用目标领域中提供的标注数据进行微调。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。