3.3 残差网络
前面提到的卷积神经网络在2012—2014年的图片分类比赛ILSVRC中取得了最高的分类精度,加深神经网络模型的深度有利于精度的提高。然而,神经网络模型的深度越深,越容易出现误差梯度反向传播算法中梯度消失或者爆炸的情况,这就限制了神经网络模型的深度。在后来的研究中发展了一系列有利于提高网络模型训练稳定性、加深神经网络模型深度的方法,取得了更好的精度,其中残差网络模型(ResNet)就是最具代表性和被广泛应用的方法之一,ResNet在2015年的ILSVRC比赛中取得了精度上的飞跃。
3.3.1 残差网络模块
图3.10给出了残差网络基本结构示意图。通过添加捷径,将前几层的输入和网络模型处理得到的输出加起来,然后输入后面的模块。在每一层中直接接触前面很多层的信息,而不是只接触前一层的信息。ResNet在神经网络模型的层之间添加了捷径(Shortcut)来实现信息的跨层传递。捷径中使用了恒等映射,确保不会在反向传播中出现梯度消失或梯度爆炸,这样神经网络模型可以突破深度限制达到新的数量级。之前介绍的卷积神经网络模型最多只有几十层,而ResNet可以达到几千层,深度的增加使得ResNet可以达到不错的图片分类精度。另一种说法认为,在神经网络模型中添加捷径降低了模型的有效深度(Effective Depth),当神经网络模型的层数变多时,模型的有效深度并没有显著增加,模型的训练仍然稳定,但是精度却由于层数变多而得到了提升。
图3.10 残差网络ResNet基本结构示意图
3.3.2 高速路神经网络
图3.11给出了高速路网络模型(Highway Network)模块的示意图。现实生活中的高速公路可以快速从一个地点到达另一个地点,捷径将神经网络不同层之间的信息直接连接起来,使得信息可以快速跨层传递。捷径中使用了门函数进行控制,加法中考虑了对前几层的输入乘以权重系数,这里的加法是加权平均,而不是简单相加。残差网络模型与高速路网络模型[27]有异曲同工之妙,都是在神经网络模型的层与层之间添加了捷径来实现信息的跨层传递,但是高速路网络模型没有限制信息传递系数的取值为1,因此可能会带来模型训练的不稳定,而残差网络模型的捷径设计更为直接简单,可以在网络模型层数增多时,保持模型训练的稳定。
图3.11 高速路网络模型示意图
在AutoML中,考虑所有的超参数的组合,在每个超参数组合下训练神经网络模型,计算模型的表现。通过遍历所有超参数的组合,找到全局最优的网络模型,实现自动化机器学习,并且打败人类调试出的网络模型。神经网络模型很灵活,能调整的超参数很多,可变超参数越多,越有利于找到更好的最优网络模型。这里可将捷径的设计作为神经网络模型的超参数,在不同层之间都有设置捷径的可能,这样做极大地提高了神经网络模型的灵活性,实现了信息在不同层之间的灵活传递,有利于达成对不同任务具有更好适应性的神经网络模型。在神经网络模型层数不多的情况下,在捷径中传递信息可以考虑使用门函数;在神经网络模型层数较多的情况下,在捷径中使用恒等映射传递信息,以此确保模型训练的稳定性。
3.3.3 宽残差网络
神经网络模型的宽度(Width)指每层神经网络中神经元的个数,神经网络模型的深度(Depth)指神经网络的层数。一般认为,增加神经网络模型的深度有利于提高模型的表现,本节将介绍宽残差神经网络模型(Wide ResNet Network,WRN)[28]。宽残差神经网络具有残差神经网络模型的结构,通过增加残差网络模型的宽度来提高分类精度。
在论文“Wide Residual Networks”[28]中,作者对WRN进行了详细的讨论,指出相较于增加残差网络模型的深度,增加残差网络模型的宽度可以更有效地提高图片分类精度。WRN的训练速度很快,而且一个简单的16层WRN在CIFAR图片分类任务的准确率和效率上甚至超过了1000层的深度残差网络模型,50层的WRN在ImageNet图片分类任务的表现上比152层的深度残差网络更好。在图像处理任务上,使用WRN进行图像特征的提取具有明显优势。
增加神经网络模型的宽度不会增加训练难度。虽然WRN增加残差网络宽度时增加了参数数量,但是WRN没有增加网络模型的深度,所以并不会导致网络模型更难训练。模型变得更加复杂之后,需要考虑模型过拟合的问题,深度残差网络常使用批归一化法对模型进行正则化,而WRN在卷积层之间使用随机失活来避免模型过拟合。在论文[28]中,有以下结论:
(1)对于不同深度的残差网络模型而言,增加网络模型的宽度有利于提高模型预测精度。
(2)对于已经有太多参数并且出现了过拟合的残差网络而言,增加模型的宽度或者深度都没有帮助。
(3)在有同样多参数的情况下,WRN和具有同样多参数的深度残差网络表现相近或者更好。
在元学习模型中,经常需要从输入任务数据集中提取有效特征,CNN、ResNet、WRN等都是不错的选择。好的特征提取器有利于模型的训练,有利于构建更好的注意力机制来发现新任务和训练过任务之间的相似性,好的特征提取器有利于提高元学习模型的精度。