概述
我们如何将模型由“具有不错的性能”上升到“性能卓越且能够赢得机器学习竞赛”?那么更好的模型设计、超参优化和模型集成将会是最好的选择。
高级架构模式
批标准化
批标准化的工作原理是,训练过程中在内部保存已读取每批数据均值和方差的指数移动平均值。批标准化的主要效果是,它有助于梯度传播(这一点和残差连接很像),因此允许更深的网络。对于有些特别深的网络,只有包含多个BatchNormalization 层时才能进行训练。例如,BatchNormalization 广泛用于Keras 内置的许多高级卷积神经网络架构,比如ResNet50、Inception V3 和Xception。
深度可分离卷积
深度可分离卷积(depthwise separable convolution)层(SeparableConv2D)可以代替代Conv2D,并可以让模型更加轻量。这个层对输入的每个通道分别执行空间卷积,然后通过逐点卷积(1×1 卷积)将输出通
道混合。这相当于将空间特征学习和通道特征学习分开,如果输入中的空间位置高度相关,但不同的通道之间相对独立,那么这么做是很有意义的。它能用更少的数据学到更好的表示,从而得到性能更好的模型。
残差连接
加残差连接(residual connection),它最早出现于ResNet 系列网络(由微软的何恺明等人开发)。b 残差连接是将前面的输出张量与后面的输出张量相加,从而将前面的表示重新注入下游数据流中(见图7-5),这有助于防止信息处理流程中的信息损失。
超参优化
什么是超参数?模型应该多少层,每层应该包含都少单元和过滤器,激活函数选什么,这些就是超参数,不能通过反向传播训练。
曾经人们手动设计特征,然后输入到浅层机器学习模型中,这肯定不是最优的。现在,深度学习能够自动完成分层特征工
程的任务,这些特征都是利用反馈信号学到的,而不是手动调节的,事情本来就应该如此。同样,你也不应该手动设计模
型架构而是应该按照某种原则对其进行最优化
一般超参优化过程
(1) 选择一组超参数(自动选择)。
(2) 构建相应的模型。
(3) 将模型在训练数据上拟合,并衡量其在验证数据上的最终性能。
(4) 选择要尝试的下一组超参数(自动选择)。
(5) 重复上述过程。
(6) 最后,衡量模型在测试数据上的性能。
在超参调节的过程中,最主要有两大问题:
- 计算反馈信号(这组超参数在这个任务上是否得到了一个高性能的模型)的计算代价可能非常高,它需要在数据集上创建一个新模型并从头开始训练。
- 超参数空间通常由许多离散的决定组成,因而既不是连续的,也不是可微的。因此,通常不能在超参数空间中做梯度下降。
值得注意的一点是,大规模参数优化时可能会验证集过拟合。
推荐一个比随机搜索更好的工具Hyperopt,将它和Keras模型结合得到Hyperas,移步这里查看Hyperas如何在keras中自动选择超参数。
模型集成
或许一个盲人探究大象,终究只是盲人摸象,但是一堆盲人探究大象,那么就可能一窥大象真容了呢。所以使用模型集成的方法一定优于单个模型,对于分类器集成最简单的方法就是将它们的预测结果取平均值作为预测结果。或者进行加权平均,性能越好的模型权重越大,或者在以验证集准确最高为目标进行巡优。模型集成的核心不在于选了多少优质的分类器,而在于分类器的多样性。