(12)发明专利申请
(10)申请公布号 CN 112416293 A(43)申请公布日 2021.02.26
(21)申请号 202011330421.2(22)申请日 2020.11.24
(71)申请人 深圳市人工智能与机器人研究院
地址 518129 广东省深圳市龙岗区坂田街
道雅宝路1号星河WORLDG2-14、15层
申请人 中文大学(深圳)(72)发明人 赵帅 周立广 蔡登 林天麟
徐扬生 (74)专利代理机构 深圳市君胜知识产权代理事
务所(普通合伙) 44268
代理人 徐凯凯(51)Int.Cl.
G06F 7/483(2006.01)G06N 3/04(2006.01)G06N 3/08(2006.01)
权利要求书2页 说明书12页 附图3页
()发明名称
一种神经网络增强方法、系统及其应用(57)摘要
本发明公开了一种神经网络增强方法、系统及其应用,方法包括步骤:将给定的神经网络模型划分成若干个子神经网络;对每个子神经网络进行初始化处理;应用不同的数据增强方法对每个子神经网络进行训练,使每个子神经网络学到关于相同数据的不同知识;在训练过程中,计算每个子神经网络的输出的交叉熵损失函数,以及每个子神经网络的输出之间的协同训练损失函数,将交叉熵损失函数以及协同训练损失函数结合作为优化目标函数;根据优化目标函数更新每个子神经网络的权重参数,达到预设训练次数后结束训练,得到训练好的子神经网络。本发明在不显著增加甚至减少网络参数量或者浮点运算数的情况下,可实现比单个神经网络模型更好的图像分类表现和性能。
CN 112416293 ACN 112416293 A
权 利 要 求 书
1/2页
1.一种神经网络增强方法,其特征在于,包括步骤:将给定的神经网络模型划分成若干个子神经网络,每个子神经网络中均包括部分所述神经网络模型的参数量;
对每个子神经网络进行初始化处理,使每个子神经网络的初始化参数各不相同;应用不同的数据增强方法对每个子神经网络进行训练,使每个子神经网络学到关于相同数据的不同知识;
将每个子神经网络在训练过程中的输出分别与真实标签计算交叉熵损失函数,同时计算每个子神经网络的输出之间的协同训练损失函数,将计算得到的交叉熵损失函数以及协同训练损失函数按一定比例结合作为优化目标函数;
根据所述优化目标函数更新每个子神经网络的权重参数,达到预设训练次数后结束训练,得到训练好的子神经网络。
2.根据权利要求1所述的神经网络增强方法,其特征在于,所述将给定的神经网络模型划分成若干个子神经网络的步骤包括:
根据所述神经网络模型的参数量或者浮点运算数对所述神经网络模型进行划分,得到若干个子神经网络。
3.根据权利要求2所述的神经网络增强方法,其特征在于,所述参数量的计算公示为:
所述浮点运算数的计算公式为:其中,K×K为卷积核大小,Cin为输入的特征
图的通道数目,Cout为输出的特征图的通道数目,d为卷积组数,H×W是输出特征图的宽高乘积。
4.根据权利要求1所述的神经网络增强方法,其特征在于,所述应用不同的数据增强方法对每个子神经网络进行训练,使每个子神经网络学到关于相同数据的不同知识的步骤包括:
将多种不同的数据转换方法组合作为数据增强方法;采用数据增强方法对训练图片进行转换,采用转换的训练图片对每个子神经网络进行训练,使得每个子神经网络学到关于相同数据的不同知识。
5.根据权利要求4所述的神经网络增强方法,其特征在于,所述将每个子神经网络在训练过程中的输出分别与真实标签计算交叉熵损失函数的步骤包括:
对于训练图片,所述子神经网络{M1,M2,...,MS}对应的输出概率分布为{p1,p2,...,pS},计算每个子神经网络的输出的交叉熵损失函数为:
其中,
代表交叉熵损失函数,p是某个子
神经网络对于图片属于哪个类别给出的预测概率,y是图片所属真实类别的标签,N代表图片的数目,C代表总的物体类别。
6.根据权利要求5所述的神经网络增强方法,其特征在于,所述计算每个子神经网络的输出之间的协同训练损失函数的步骤包括:
在每个子神经网络之间引入协同训练损失函数使得各个子神经网络的输出一致,所述
2
CN 112416293 A
权 利 要 求 书
2/2页
协同训练损失函数为:
其中,
代表协同训练损失函
数,pi是子神经网络Mi的预测概率,H(p)=-plog(p)是概率分布p的香农熵,S代表分割神经网络模型M后得到的子神经网络的数目。
7.根据权利要求6所述的神经网络增强方法,其特征在于,将计算得到的交叉熵损失函数以及协同训练损失函数按一定比例结合作为优化目标函数的步骤包括:
将每个子神经网络的交叉熵损失函数和子神经网络输出之间的协同训练损失函数进行有机结合,得到的优化目标函数为:
此处,
系统总的优化目标函数,
代表小网络的分类交叉熵损失函数,
是训练
代表协同训练损失
函数,S表示神经网络的数目,pi是小的神经网络Mi的预测概率,y是图片所属真实类别的标签,λcot是协同训练损失函数的权重因子。
8.一种神经网络增强系统,其特征在于,采用权利要求1-7任一所述的神经网络增强方法制得。
9.一种神经网络增强系统的应用,将权利要求8所述神经网络增强系统用于图像分类。10.根据权利要求9所述神经网络增强系统的应用,其特征在于,包括步骤:将待分类图像输入到训练好的子神经网络,输出综合预测图像分类结果为:
其中,pavg是多个子神经网络的综合预测图像分类结果,S表示子神经网络
的数目,pi是子神经网络Mi的预测概率。
3
CN 112416293 A
说 明 书
一种神经网络增强方法、系统及其应用
1/12页
技术领域
[0001]本发明涉及神经网络领域,特别涉及一种神经网络增强方法、系统及其应用。背景技术
[0002]图像分类是计算机视觉中最基本的问题之一,其目的是给图像分配一个类别标签,这个标签代表着图像中显著物体的类别,如人、马、树、道路等。实际生活中,图像分类可以广泛地应用到智能家居、交通系统、机器人、军事、工业化生产线等场景。在科学研究领域,图像分类的研究又是其他计算机视觉问题,如目标检测、语义划分、行人重识别等的基础,图像分类的研究能为这些领域带来新的启发和思路。近年来,随着卷积神经网络的高速发展,基于神经网络的深度学习方法成为了图像分类领域的研究主流。自这股深度学习的浪潮兴起以来,如何设计一个好的神经网络模型来达到更好的图像分类效果又一直是研究的重点和热点。
[0003]在深度学习的发展早期,神经网络模型设计往往是依据专家只是手动设计的,利用残差短接结构和增加网络深度的方法可提高网络模型的表现,现在这些方法在网络设计中已经非常普遍。近年来,自动化机器学习的呼声越来越高,人们希望机器能够自动的对于某些任务学习到一个最好的模型等;现有研究提出利用强化学习的方法来学习一个神经网络模型,并在一些任务和数据集上取得了不错的效果。时至今日,依靠专家知识手动设计网络和自动学习网络这两种方法,相辅相成,共同促进,都是神经网络设计不可或缺的手段。[0004]无论采用何种方法设计网络,增加网络的深度、宽度和输入图像分辨率来获得更好的实际表现都已是共识。现有研究提出增加神经网络的宽度来在网络深度不变的情况下获得更好的表现;还提出综合地从网络宽度、网络深度和输入图像分辨率三个维度来增加网络的性能,以获得比单纯地增加其中某一维度更好的效果。[0005]增加神经网络的宽度以获取更好的表现,这种方法在当网络本身的宽度比较小的时候,能够起到立竿见影的效果。然而,神经网络模型的表现并不是随着神经网络的宽度增长而线性增长的。当神经网路的宽度增长到达某个程度之后,再继续增长神经网络的宽度所获得的收益非常小;而与此相对的,增加神经网络宽度所带来的额外计算资源开销却常常令人难以承受。如图1和图2所示,w是网络的宽度系数,横轴是计算开销,这里用神经网络的参数量和浮点运算数来表示,数值越大代表神经网络在实际应用中需要的计算资源越多;纵轴是网络在不同数据集上的分类精度,越高越好。在初期阶段,增加网络宽度能够为两个模型在相应数据集上带来一定的提升;然而随着网络宽度的增长,增加不到0.5%的精度却需要成倍的增加网络的参数数量或者是浮点运算数(floating point operations,FLOPs)。这说明单纯的增加网络的宽度并不是一种高效的神经网络增强方法;单纯地增加网络的深度或者分辨率也存在类似的现象。[0006]因此,现有技术还有待于改进和发展。
4
CN 112416293 A
说 明 书
2/12页
发明内容
[0007]本发明要解决的技术问题在于,针对现有技术的不足,提供一种神经网络增强方法、系统及其应用,旨在解决现有技术单纯增加网络宽度达到一定程度的宽度后,所得到的模型表现增益有限的问题。
[0008]为了解决上述技术问题,本发明所采用的技术方案如下:[0009]一种神经网络增强方法,其中,包括步骤:
[0010]将给定的神经网络模型划分成若干个子神经网络,每个子神经网络中均包括部分所述神经网络模型的参数量;
[0011]对每个子神经网络进行初始化处理,使每个子神经网络的初始化参数各不相同;[0012]应用不同的数据增强方法对每个子神经网络进行训练,使每个子神经网络学到关于相同数据的不同知识;
[0013]将每个子神经网络在训练过程中的输出分别与真实标签计算交叉熵损失函数,同时计算每个子神经网络的输出之间的协同训练损失函数,将计算得到的交叉熵损失函数以及协同训练损失函数按一定比例结合作为优化目标函数;
[0014]根据所述优化目标函数更新每个子神经网络的权重参数,达到预设训练次数后结束训练,得到训练好的子神经网络。[0015]所述的神经网络增强方法,其中,所述将给定的神经网络模型划分成若干个子神经网络的步骤包括:
[0016]根据所述神经网络模型的参数量或者浮点运算数对所述神经网络模型进行划分,得到若干个子神经网络。
[0017]所述的神经网络增强方法,其中,所述参数量的计算公示为:
所述浮点运算数的计算公式为:其中,K×K为卷积核大小,Cin为输入的特
征图的通道数目,Cout为输出的特征图的通道数目,d为卷积组数,H×W是输出特征图的宽高乘积。
[0018]所述的神经网络增强方法,其中,所述应用不同的数据增强方法对每个子神经网络进行训练,使每个子神经网络学到关于相同数据的不同知识的步骤包括:[0019]将多种不同的数据转换方法组合作为数据增强方法;[0020]采用数据增强方法对训练图片进行转换,采用转换的训练图片对每个子神经网络进行训练,使得每个子神经网络学到关于相同数据的不同知识。[0021]所述的神经网络增强方法,其中,所述将每个子神经网络在训练过程中的输出分别与真实标签计算交叉熵损失函数的步骤包括:[0022]对于训练图片,所述子神经网络{M1,M2,…,MS}对应的输出概率分布为{p1,p2,…,pS},计算每个子神经网络的输出的交叉熵损失函数为:
其中,
代表交叉熵损失函数,p是某个子
神经网络对于图片属于哪个类别给出的预测概率,y是图片所属真实类别的标签,N代表图
5
CN 112416293 A
说 明 书
3/12页
片的数目,C代表总的物体类别。
[0023]所述的神经网络增强方法,其中,所述计算每个子神经网络的输出之间的协同训练损失函数的步骤包括:
[0024]在每个子神经网络之间引入协同训练损失函数使得各个子神经网络的输出一致,所述协同训练损失函数为:
[0025]
其中,代表协同训练损
失函数,pi是子神经网络Mi的预测概率,H(p)=-plog(p)是概率分布p的香农熵,S代表分割神经网络模型M后得到的子神经网络的数目。[0026]所述的神经网络增强方法,其中,将计算得到的交叉熵损失函数以及协同训练损失函数按一定比例结合作为优化目标函数的步骤包括:
[0027]将每个子神经网络的交叉熵损失函数和子神经网络输出之间的协同训练损失函数进行有机结合,得到的优化目标函数为:
[0028]此处,是训练系统总的优化目标函数,代表小网络的分类交叉熵损失函
数,代表协同训练损失函数,S表示神经网络的数目,pi是小的神经网络Mi的预测概率,
y是图片所属真实类别的标签,λcot是协同训练损失函数的权重因子。[0029]一种神经网络增强系统,其中,采用本发明所述的神经网络增强方法制得。[0030]一种神经网络增强系统的应用,将本发明所述神经网络增强系统用于图像分类。[0031]所述神经网络增强系统的应用,其中,包括步骤:[0032]将待分类图像输入到训练好的子神经网络,输出综合预测图像分类结果为:
其中,pavg是多个子神经网络的综合预测图像分类结果,S表示子神经网
络的数目,pi是子神经网络Mi的预测概率。[0033]有益效果:本发明提出了一种基于网络划分和协同训练的神经网络增强方法,给定一个完整的神经网络模型,将所述神经网络模型划分成几个子神经网络并通过子神经网络之间的协同训练,以在不显著增加甚至减少网络参数量或者浮点运算数的情况下,实现比单个神经网络模型更好的表现和性能。相对于单纯地增加网络的宽度、深度或者输入图像分辨率,本发明从网络设计的角度,提出通过增加网络数目和协同训练的方法来更加有效地增强神经网络的分辨率性能,为神经网络模型架构设计提供了一种全新的思路。附图说明
[0034]图1为现有技术中以参数量为计算开销时,神经网络宽度与网络表现关系图。[0035]图2为现有技术中以浮点运算数为计算开销时,神经网络宽度与网络表现关系图。[0036]图3为本发明一种神经网络增强方法较佳实施例的流程图。[0037]图4为本发明一种神经网络增强系统的整体框架图。[0038]图5为子神经网络数量为2时,使用相同数据增强方法和不同数据增强方法训练得到的子神经网络的可视化结果图。
6
CN 112416293 A[0039]
说 明 书
4/12页
图6为子神经网络数量为4时,使用相同数据增强方法和不同数据增强方法训练得
到的子神经网络的可视化结果图。
具体实施方式
[0040]本发明提供一种神经网络增强方法、系统及其应用,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。[0041]本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。[0042]本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
[0043]下面结合附图,通过对实施例的描述,对发明内容作进一步说明。[0044]本发明提供了一种神经网络增强方法,如图3所示,其包括步骤:[0045]S10、将给定的神经网络模型划分成若干个子神经网络,每个子神经网络中均包括部分所述神经网络模型的参数量;[0046]S20、对每个子神经网络进行初始化处理,使每个子神经网络的初始化参数各不相同;
[0047]S30、应用不同的数据增强方法对每个子神经网络进行训练,使每个子神经网络学到关于相同数据的不同知识;[0048]S40、将每个子神经网络在训练过程中的输出分别与真实标签计算交叉熵损失函数,同时计算每个子神经网络的输出之间的协同训练损失函数,将计算得到的交叉熵损失函数以及协同训练损失函数按一定比例结合作为优化目标函数;[0049]S50、根据所述优化目标函数更新每个子神经网络的权重参数,达到预设训练次数后结束训练,得到训练好的子神经网络。[0050]在本实施例中,对于一个完整的神经网络模型,依据其参数量或者浮点运算数将其划分为多个小的子神经网络,这些子神经网络均具有原来神经网络模型的一部分参数量,所有子神经网络的总参数量和原来神经网络模型的参数量相差无几。对于每一个小的子神经网络,如图4所示,在训练时应用不同的数据增强方法,即不同的数据转换方法,以使得不同的子神经网络学习到关于相同数据的不同知识,以此来在最后多个子神经网络协同进行分类时,多个子神经网络间学到的知识可以互补,从而达到比原来的神经网络模型更好的表现。在训练时,本实施例的优化目标函数由两部分组成,一部分是每个子神经网络的
7
CN 112416293 A
说 明 书
一部分是多个子神经网络间的协同训练损失函数
5/12页
输出的分类损失函数值得注意
的是,在实际训练整个系统的时候,协同训练损失函数的权重在训练的早期是随着训练步数线性增长的,直到到达某个固定的训练步数之后,例如本实施例在实际中使用的预设步数为40,协同训练损失函数的权重才会固定不变。这样做是因为在训练的早期,子神经网络在训练数据集上的精度比较低,其输出的概率分布比较混乱,并不蕴含很多有意义的知识,因此在训练的早期对于协同训练损失函数赋予一个较低的权重,并在网络精度上升的同时逐渐增加其权重。训练结束后在将子神经网络用于实际的图像分类应用时,子神经网络给出的分类结果是他们综合的平均分类结果pavg。
[0051]本实施例通过将完整的神经网络模型划分成若干个子神经网络,并通过子神经网络之间的协同训练,以在不显著增加甚至减少网络参数量或者浮点运算数的情况下,实现比单个完整的神经网络模型更好的表现和性能。相对于单纯地增加网络的宽度、深度或者输入图像分辨率,本实施例从网络设计的角度,提出通过增加网络数目和协同训练的方法来更加有效地增强神经网络的分辨率等性能,为神经网络模型架构设计提供了一种全新的思路。
[0052]在所述步骤S10中,假定给定的完整的神经网络模型为M,本实施例将依据网络的参数量或者浮点运算数将所述神经网络模型划分成S个子神经网络{M1,M2,…,MS}。作为举例,将M划分成两个子神经网络{M1,M2},那么这两个子神经网络的参数量或者浮点运算数将会是所述神经网络模型的参数量或浮点运算数的一半。因此,要明白如何划分网络,先要明白如何计算一个网络的参数量和浮点运算数。[0053]在计算机视觉领域,通常一个神经网络模型是由多层的卷积层堆叠而成,其不失一般性,本实施例只讨论如何计算某层卷积层的参数量或者浮点运算数。根据著名的深度神经网络架构PyTorch中对于卷积的定义,一个卷积层,其卷积核的大小为K×K,输入和输出的特征图的通道数目分别是Cin和Cout,卷积组数是d,这意味着每会与对应的
通道的输入特征图将
个卷积核进行卷积。这种情况下,一层卷积神经网络的参数量(#Params)和
浮点运算数(FLOPs)计算公式为:
[00]
#Params:FLOPs:
此处,H×W是输出特征图的宽高乘积,即其尺寸大小;-1项的出现是因为
个数相加只需要
次浮点操作。本发明在此处忽略了卷积
[0055][0056]
层中的偏置项,一般而言,偏置项在带有批次归一化层(batch normalization)的网络中都不存在。对于其他卷积运算,例如深度分离卷积(depthwise convolution),d=Cin。[0057]一般而言,在一个神经网络中,Cout=t1×Cin,此处t1是一个常数。因此,假如根据浮点运算数将卷积层Li划分为S个小卷积层,只需要将Cin除以
即可:
8
CN 112416293 A
说 明 书
6/12页
[0058]例如,将残差神经网络(ResNet)中的中的一个模块:依据浮点运算数
划分为4个小模块,那么每个小模块为:这里1×1是单个卷积核大小,是卷
积层输出特征图的通道数。
[0059]实际中,一个神经网络模型的特征图的输出通道总存在一个最大公约数(greatest common divisor,GCD)。一般而言,只需要找到这个最大公约数,并将这个最大公约数除以念并且
即可完成网络的分割。对于一些特殊的网络,它们有着卷积组(group)的概
固定时,即Cin=t2×d,t2是一个常数,上面划分卷积层的式子就变为了
这意味着只需要将卷积组d除以划分因子S即可。对于一些有着宽度
因子(widen factor)或者增加因子(growth rate)概念的网络,这个时候网络的分割变得更加简单,只需要将宽度因子或者增加因子除以
即可。如果神经网络中有丢失
(dropout)层,那么丢失层中特征图内元素的丢失概率,会被除以S。[0060]通常而言,对于一个大的神经网络模型M的分割并不是完美的;即,分割后得到的子神经网络Mi的参数量或者是浮点运算数并不严格是M参数量的1/S。一方面,一个整数。这种情况下,本发明将
并不总是
的值取整到其邻近的一个整数。另一方面,对于一
个神经网络模型中第一层和最后一层的分割并不是完美的,因为第一层的输入特征图的通道数目是固定的,这个输入通道数目是图像的RGB颜色通道数目;最后一层的输出通道数目是固定的,这个输出通道数目是待分类物体的类别数目。相似的,对于神经网络中归一化层的参数划分也不是完美的。[0061]在所述步骤S20中,本实施例在初始化每个划分后得到的子神经网络的时候,使每个子神经网络的初始化参数各不相同。这是因为学习到多个相同的子神经网络是没有意义的,本实施例通过在初始化过程中使每个子神经网络的初始化参数不同,从而使每个子神经网络能够学到关于数据的不同知识,以在最终结合起来对图像行进分类时,得到更好的图形分类效果。
[0062]在所述步骤S30中,处于和步骤S20相同的目的,为了使每个子神经网络学到关于数据的不同知识,本实施例在对数据进行数据增强时,对于不同的子神经网络,采用了不同的数据增强方法,即对同一份数据应用不同的数据转换方法得到不同的数据增强效果。在实际中,这是通过数据增强方法中存在的随机性来实现的,除了常规的随机截取和随机水平翻转,本实施例进一步引入了自动数据增强(AutoAugment)方法。自动数据增强方法中,有14种不同的数据转换方法,包括图像对比度调整,图像旋转,像素值翻转,图像颜色随机
9
CN 112416293 A
说 明 书
7/12页
抖动,图像锐化,亮度调整,色彩调整,水平方向图像剪切,竖直方向图像剪切,图像黑化,图像白化,图像对混合,图像区域随机裁取,图像直方图均衡。这14种不同的数据转换方法又可以有选择地组合成几十种不同的新数据转换方法。训练中,在对数据进行数据增强时,随机地从这几十种数据转换方法中选择一种来进行数据转换。除了自动增强方法外,本实施例还引入了数据混合方法(mixup)和随机擦除方法(random erasing),这两种数据转换方法中都包含着随机性。这些数据增强方法中所蕴含的随机性,使得每进行一次数据增强,得到的数据都不相同,因此可以通过在一次训练中多次应用这些数据增强方法来供给各个子神经网络不同的训练数据。通过在这些源于相同数据的不同数据上训练,使得子神经网络可以学到关于相同数据的不同知识,从而在最终对一张图片进行分类的时候,结合各自学到的不同知识,得到比一个大的完整神经网络模型更好的分类效果。[0063]在所述步骤S40中,对于训练图片,子神经网络{M1,M2,…,MS}对应的输出概率分布为{p1,p2,…,pS},本实施例首先计算各个子神经网络的输出的分类交叉熵(cross entropy)损失函数:
[00]
[0065]此处,代表交叉熵损失函数,p是某个神经网络对于图片属于哪个类别给出的
预测概率,y是图片所属真实类别的标签,N代表图片的数目,C代表总的物体类别。
[0066]除了分别计算每个子神经网络的分类损失函数值之外,本实施例还要求每个子神经网络在同一份数据的不同变体上训练时,却有着一致的输出,即,对于图片的分类类别一致,这就是协同训练假设(co-training assumption):M1(D1(x))=M2(D2(x))=…=MS(DS(x)),此处,{M1,M2,…,MS}是不同的子神经网络,Mi(·)代表网络的输出,Di(x)代表对输入的训练图片x应用数据转换方法Di。一方面,不同的子神经网络应该对于来自同样数据的经过不同数据转换方法得到的变体给出相同的预测;另一方面,子神经网络的输出也包含着关于物体结构的固有信息,如对于吉娃娃图片给出较高分类概率的网络,往往也会对柴犬的图片给出较高的分类概率,这是因为它们同属于狗类。因此,本发明在多个子神经网络之间引入了协同训练损失函数,即,JS散度(Jensen–Shannon divergence)来使得各个网络的输出一致:
[0067]
[0068]此处,代表协同训练损失函数,pi是子神经网络Mi的预测概率,H(p)=-plog
(p)是概率分布p的香农熵(Shannon entropy),S代表分割神经网络模型M后得到的子神经
网络的数目。
[0069]在本实施例中,整个系统的优化目标函数为每个子神经网络的分类交叉熵损失函数和子神经网络输出间的协同训练损失函数的有机结合:
10
CN 112416293 A
说 明 书
8/12页
[0070]
[0071]此处,是训练系统总的优化目标函数,代表子神经网络的分类交叉熵损
失函数,代表协同训练损失函数,S表示神经网络的数目,pi是子神经网络Mi的预测概
率,y是图片所属真实类别的标签,λ其值是通过cot=0.5是协同训练损失函数的权重因子,
交叉验证(cross validation)的方式在实验中选择出来的。λcot=0.5也是一个在学习不同的子神经网络和使得子神经网络的输出具有一致性之间的平衡点。[0072]在一些实施方式中,根据所述优化目标函数更新每个子神经网络的权重参数,达到预设训练次数后结束训练,得到训练好的子神经网络。[0073]在一些实施方式中,还提供一种神经网络增强系统,其采用上述神经网络增强方法制得。本实施例通过将完整的神经网络模型划分成若干个子神经网络,并通过子神经网络之间的协同训练,以在不显著增加甚至减少网络参数量或者浮点运算数的情况下,实现比单个完整的神经网络模型更好的表现和性能。相对于单纯地增加网络的宽度、深度或者输入图像分辨率,本实施例从网络设计的角度,提出通过增加网络数目和协同训练的方法来更加有效地增强神经网络的分辨率等性能,为神经网络模型架构设计提供了一种全新的思路。
[0074]在一些实施方式中,还提供一种神经网络系统的应用,将所述神经网络系统用于图像分类,其具体包括步骤:
[0075]将待分类图像输入到训练好的子神经网络,输出综合预测图像分类结果为:
其中,pavg是多个子神经网络的综合预测图像分类结果,S表示子神经网
络的数目,pi是子神经网络Mi的预测概率。
[0076]如图4所示为本发明一种神经网络系统的整体框架图,对于一个完整的神经网络模型,依据其参数量或者浮点运算数将其划分为多个小的子神经网络,这些子神经网络均具有原来神经网络模型的一部分参数量,所有子神经网络的总参数量和原来神经网络模型的参数量相差无几。对于每一个小的子神经网络,如图4所示,在训练时应用不同的数据增强方法,即不同的数据转换方法,以使得不同的子神经网络学习到关于相同数据的不同知识,以此来在最后多个子神经网络协同进行分类时,多个子神经网络间学到的知识可以互补,从而达到比原来的神经网络模型更好的表现。在训练时,本实施例的优化目标函数由两部分组成,一部分是每个子神经网络的输出的分类损失函数间的协同训练损失函数
一部分是多个子神经网络
值得注意的是,在实际训练整个系统的时候,协同训练损失函
数的权重在训练的早期是随着训练步数线性增长的,直到到达某个固定的训练步数之后,例如本实施例在实际中使用的预设步数为40,协同训练损失函数的权重才会固定不变。这样做是因为在训练的早期,子神经网络在训练数据集上的精度比较低,其输出的概率分布比较混乱,并不蕴含很多有意义的知识,因此在训练的早期对于协同训练损失函数赋予一个较低的权重,并在网络精度上升的同时逐渐增加其权重。训练结束后在将子神经网络用于实际的图像分类应用时,子神经网络给出的分类结果是他们综合的平均分类结果pavg。
11
CN 112416293 A[0077]
说 明 书
9/12页
图5和图6展示了采用本发明协同训练算法中利用不同数据增强方法所训练出来
的子神经网络模型,和仅仅使用相同的数据增强方法所训练出来的子神经网络的可视化结果对比。具体地,对于训练好的子神经网络{M1,M2,…,MS}中最后一层全连接层的参数θ本i,发明将其拼接起来,得到矩阵[θθ…;θ每个子神经网络的最后一层参数都当作一个1;2;S],样本,然后对它们用主成分分析(Principal Components Analysis,PCA)的方法将其从高维空间,降到2维空间并可视化出来。[0078]如图5和图6所示,使用了不同数据增强方法协同训练的子神经网络,相对于只是结果相同数据增强方法协同训练的子神经网络,在整个假设空间(hypothesis space,指所有网络可能学到的映射构成的空间)分布得更加离散,彼此之间的距离更远,这表示使用不同的数据增强方法学得的子神经网络之前权重的差异更大,而神经网络学到的知识直观上就是神经网络的权重,因此,可以说应用不同的数据增强方法的确是可以帮助不同的子神经网络学习到关于相同数据的不同知识的。在最终对一张图像进行类别判断时,不同小的子神经网络就可以结合各自不同的知识,综合得出比单个大的神经网络模型更好的分类结果。这在一定程度上解释了为什么本发明所提出的基于网络分割和协同训练的神经网络增强方法在实际应用中卓有成效的原因。
[0079]为体现本发明的技术效果和优越性,下面将本发明提出的方法应用到实际例子当中,同时与基准方法进行对比。
[0080]本发明在三个公开数据集CIFAR-100、CIFAR-10和ImageNet上做了测试。CIFAR-100和CIFAR-10数据集包含50 000训练彩色图片和10 000测试图片,分别来自10和100个不同的物体类别,它们的大小都是32×32像素。ImageNet数据集包含约128万张训练图像和50 000张测试图像,这些图像来自1000个不同的类别,图像的大小不定。
[0081]本发明在7个流行的神经网络模型架构上测试了所提出的方法,包括残差神经网络(ResNet)、收缩激活残差神经网络(SE-ResNet)、EfficientNet、宽残差神经网络(WRN)、Shake-Shake、金字塔神经网络(PyramidNet)和ResNeXt。这些都是当前非常流行的神经网络架构,在这些流行的网络架构上的实验能够更好地验证本发明提出的方法的有效性。[0082]本发明所使用的评判指标是Top-1分类误差(Top-1 Error)和Top-1分类精度(Top-1 Accuracy),误差越小或者精度越高,说明模型的性能越好。同时,我们展示了不同模型的参数量(#params),以百万(Million)为单位;不同的模型的浮点运算数(FLOPs,floating point operations),以十亿为单位(GFLOPs)。模型的参数量或者浮点运算数越多,模型越复杂,同时在实际运用中,就会需要更多的计算资源。
[0083]本发明首先在CIFAR-100测试集上测试了所提出方法的性能,结果如表1所示。[0084]表1
[0085]
12
CN 112416293 A[0086]
说 明 书
10/12页
表1中,本发明展示了将不同的网络划分多个小的神经网络并加以协同训练的结
果。其中,原始结果是对应论文中报告的结果,复现结果是本发明根据这些论文复现的结果,复现结果远好于原始结果是因为在复现过程中本发明应用上了一些最新的训练技术,如自动数据增强、数据混合和随机擦除等数据增强技术,每种网络后面接的数字字母表示网络的深度和宽度,SplitNet是本发明的英文名,S是将一个大的神经网络划分后,所得到的小神经网络的数目。表中结果越小好,数字的右下角括号中的内容使用本发明所提出方法所获得的相对提升。从表1中可以看出,应用本发明所提出的基于网络分割和协同训练的神经网络增强方法,可以有效地使得不同的网络都获得显著的性能提升,而且只有少量的额外计算开销,甚至没有额外开销或总开销减少。[0087]如表1所示,可以得出结论,增加神经网络数量比单纯增加网络的宽度或深度更有效。在表1中,ResNet-110(S=2)>ResNet-1,SE-ResNet-110(S=2)>SE-ResNet-1,EfficientNet-B0(S=4)>EfficientNet-B3,WRN-28-10(S=4)>WRN-40-10,此处>表示前者的性能表现更好,前者均使用了本发明所提出的方法。可以看到,前者在具有更少的参数量和浮点运算数的同时实现了更好的性能,这证明,相较于单纯地增加网络的宽度或深度,增加网络的数目是一个更有效地增强神经网络性能的方法。[0088]如表1所示,也可以看出,在一般情况下,将本发明应用于更深或者更宽的网络,能够获得更多得性能提升。例如,ResNet-110(+0.)vs.ResNet-1(+1.26),SE-ResNet-110(+0.)vs.SE-ResNet-1(+1.06),WRN-28-10(+1.24)vs.WRN-40-10(+1.60),EfficientNet-B0(+0.65)vs.EfficientNet-B3(+1.48),括号中是利用本发明算法在这些不同的神经网络上带来的性能提升,后者要比前者更宽或者更深。这说明在实际中通过增加神经网络宽度或者深度来追求更好的性能的时候,可以结合增加本发明所提出的增加网络数量和协同训练的方法,以更加有效地增强网络的性能。[00]更进一步,本发明在CIFAR-10测试集上测试了所提出方法的性能结果如表2所示。[0090]表2
13
CN 112416293 A
说 明 书
11/12页
[0091]
表2中,列出了使用一些其他方法在CIFAR-10测试集上取得的误差和在此基础上,
利用本发明所提出的方法取得的误差,误差越小,说明方法的效果越好。上半部分是原始结果,下半部分是本发明所复现的结果和应用本发明的效果。一般情况下,网络在整个数据集上的训练迭代次数都为300,表2中额外展示了训练次数为1800,即epoch=1800时,不同方法的效果。从表2中可以看出,本发明所提出的方法在CIFAR-10数据集上仍然能够获得稳定的提升。此外,值得注意的是,随着训练步数的增长,常规的方法会出现过拟合(overfitting)的情况,如WRN-28-10网络训练次数为1800时效果并不好于其训练次数为300时的效果,而使用了本发明所提出的方法,网络在测试集上的泛化误差则随着训练次数的增加而减少,即性能随着训练次数的增而增加,这说明本发明所提出的方法可以在一定程度上缓解过拟合的问题。这种现象的出现,一部分是因为不同的小网络可以学到不同的知识,同时互相之间又在相互学习,可以一定程度上避免某个小网络过拟合的情况发生。[0093]为了进一步验证本发明所提出的算法的在大数据集上的普适性,本发明进一步在ImageNet数据集上测试了本发明所提出方法的效果,结果如表3所示。[0094]表3
[0092]
14
CN 112416293 A
说 明 书
12/12页
[0095]
表3中,本发明还进一步展示了训练时所用到的图像大小(crop)、训练批次大小
(Batch)、在整个数据机上训练的步数(epochs)。一般而言,这个三个数值越大都会有助于模型取得较好的效果。从表3可以看到,即使是在大规模的数据集上,本发明所提出的方法仍然可以有效地提高模型的分类精度,这验证了本发明所提出方法的普适性和可拓展性。[0097]综上所述,本发明提出了一种基于网络分割和协同训练的神经网络增强方法,通过分割完整的神经网络模型并将得到的多个小的子神经网络协同训练,得到比原来大的神经网络模型更好的性能表现。在这个过程中,只有少量的额计算开销产生,在一些情况下,本发明提出的方法能在计算开销不变甚至减少的情况下实现更好的性能表现。本发明所提出的方法,简单且易于实现,不需要设计新的网络模块。本发明通过大量的实验证明,相比于单纯地增加网络的宽度、深度或者是输入图像的分辨率,在网络参数量基本不变的情况下,增加网络的数目是一个更加有效的增强网络性能的方法,这为神经网络模型的设计提供了一种全新的思路。
[0098]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
[0096]
15
CN 112416293 A
说 明 书 附 图
1/3页
图1
图2
16
CN 112416293 A
说 明 书 附 图
2/3页
图3
图4
17
CN 112416293 A
说 明 书 附 图
3/3页
图5
图6
18
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务