评论

收藏

[其他] 搜索推荐炼丹笔记:单网络内部集成学习

网络安全 网络安全 发布于:2021-07-13 23:05 | 阅读数:447 | 评论:0

Intra-Ensemble in Neural Networks

背景
提高模型效果一直是机器学习(包括深度学习)中的关键问题。然而,独立神经网络在层数较多的情况下,往往会受到边缘效应的影响。同时,集成是进一步提高模型效果的有效技术。

  • 训练多个独立的深度神经网络需要花费大量的资源
在本文工作中,我们提出了内部集成,一个端到端的策略与随机训练操作,在一个神经网络训练多个子网络同时。额外的参数大小是边际的,因为大多数参数是相互共享的。同时,随机训练增加了权值共享子网络的多样性,显著提高了集成效果。

相关知识
集成学习

  • Boostrap aggregating/bagging: 使用不同的数据训练多个不同的模型,减少全局的方差;
  • BoostingL 迭代地训练多个弱分类器, 来得到最终的泛化性更好的模型;
  • StackingL 基于许多弱模型的结果训练额外的一个模型应用到dnn中。
网络结构搜索
Neural architecture search,NAS在设计更小更精确的网络结构方面有了很大的改进。在仔细设计搜索空间和搜索算法的情况下,

  • 搜索结构可以在准确度和延迟之间获得很好的折衷
One-shot模型训练一个笨重的网络,每个层有不同的可选操作,使用其相应的子网络来近似估计独立模型。这项工作启发我们在保持其子网精度的同时,利用One-shot模型的多样性和灵活性。DARTS、ProxylessNas和FBNet提出了可微策略,在没有任何控制器或超网络的情况下实现对网络体系结构的有效搜索。
参数共享
在训练成本最小化的思想指导下,参数共享在减小模型尺寸的同时,成功地提高了模型性能

在一个网络中训练子网络
集成学习
通过在一个神经网络中训练多个子网络,同时共享大部分权值,可以巧妙地利用参数冗余
我们先定义宽度比的列表W和通过或跳过不同层的可转换深度的列表D。
这边我们设计一种端到端策略,将单个神经网络M训练成一组具有不同宽度和深度的子网络。
宽度Width
对于任何的宽度比,是每层使用的channed的比例,例如,给定一个有n个channel的层,如果,对应的第i层的子网络使用0.8n的原始网络的channel,带有不同宽度的原始的训练或者增量的训练对于每个子网络将会打来非常大效果的下降。
为了解决这个问题,此处借用了可切换批处理规范化(S-BN)思想。利用S-BN算法,我们可以在保持很好的效果的同时,在不同宽度上训练一个神经网络,只需稍微增加参数大小即可。
DSC0000.jpg

深度Depth
DSC0001.jpg

虽然子网络是使用不同的宽度和深度训练的,但绝大多数网络参数是相互共享的。不同宽度的层采用独立的批量归一化方法来积累各自的特征统计信息,保证了训练和推理的稳定性。由于在一个神经网络中有多个子网络可用,可以应用内部集成来进一步增强网络的效果。
使用shuffled的数据加速训练
以前的工作是每批用相同的数据为每个子网训练整个网络。这种原始的训练是低效和浪费的,因为子网络彼此共享大部分权重。shuffle数据是处理上述问题的一个特殊技巧。我们对不同的子网使用不同的数据加载器。每个数据加载器的shuffle方式不同,以确保不同的排列。对于混合数据,具有共享权重的子网络能够在每一批中学习更多的信息。

一个网络内的内部集成
原始训练的子网络通常会收敛到相似的结果,因为它们彼此共享很大一部分参数。同时,集成需要一套多样化的模式来实施。因此,提高子网间的多样性是关键。本文使用下面的几种策略来提升集成效果。
子网络的随机训练
为了降低子网之间的同质性,我们将问题分为广度和深度两个方面。不同的宽度为子网络提供不同的过滤器,而不同的深度允许子网络通过不同的块或层。
本文提出三种随机训练操作,如图3所示,以增加子网在宽度上的多样性,并在深度上进行一种操作。
我们的操作主要是在通道索引上实现的。假设我们有一个总共有c个信道的层l,在这个层中有一个子网包含n个(0<n≤c)滤波器。操作说明如下:
DSC0002.jpg

1. Random cut(RC)
DSC0003.jpg

2. Random offset(RO)
DSC0004.jpg

3. Shuffle channel(SC)
对channel进行Shuffle,随机选择chnnel的indexes并且对子网络层的顺序进行shuffle,因为shuffle过了,所以不同的子网络会使用不同的顺序的不同channel进行训练,这么做可以是diversity得到进一步加强。
4. Depth operation
在深度方面,我们采用两种技术实现子网的多样化,random skip(RS)和shuffle layer(SL)。通过RS,每个子网随机跳过整个网络的一层或几层。此操作为子网络提供不同的深度。SL是指在每个子网络中,我们部分的shuffle每个阶段中的层顺序。在我们的实验中,当子网络在我们的模型中有不同的深度时,我们总是结合RS确保多样性。
5. Similarity
DSC0005.jpg

子网络的效果和相似度的trade-off。
在我们的实践中,我们发现Random cut的效果是最好的。

组合策略
DSC0006.jpg



实验结果
效果
DSC0007.jpg


DSC0008.jpg


  • 在引入少量额外参数的情况下,所有模型的精度都有很大的提高

DSC0009.jpg




  • Averaging和Stacking的效果都不错,Stacking略有优势。
解耦实验
DSC00010.jpg




  • 随着参数size逐渐增大,测试准确率在较高水平上趋于饱和,很难再进一步提高。然而,对于多个独立训练的小网络,集成很容易获得更好的结果,这对于堆叠更多层或拓宽信道几乎是不可能的。
  • 我们可以使用intra-ensemble的方式获得和几个单独网络类似的效果但是却只需要极少的参数。

小结
本文引入了内部集成策略,它将多个不同的子网络组合在一个神经网络中以提高最终性能。随机训练操作保证了训练的高精度和多样性。在加入边缘参数的情况下,与神经结构搜索方法相比,集成方法在分类任务上取得了有竞争力的结果。大量的实验表明,我们的方法对各种体系结构和数据集都是有效的。此外,随着多核计算能力的日益普及,模型并行将变得更加容易。此外,还可以探索更多的技术来提高训练效率,比如shuffle数据。在这种情况下,我们的IENET可以在有限的资源获得更好的效果。





关注下面的标签,发现更多相似文章