13.模型集成方法
深度模型的集成多从“数据层面”和“模型层面”两方面着手
13.1 数据层面的集成方法
13.1.1 测试阶段数据扩充
训练阶段的数据扩充手段:图像多尺度,随机扣取
等都可以用到测试阶段
以随机扣取为例,对某张测试图像可得到 n 张随机扣取图像,
测试阶段只需用训练好的深度网络模型对 n 张图分别做预测,之后将预测
的各类置信度平均作为该测试图像最终预测结果即可
13.1.2 “简易集成”法(easy ensemble)
针对不平衡样本问题的一种集成学习方法
“简易集成”法对于样本较多的类采取降采样,
每次采样数依照样本数目最少的类别而定,这样每类取到的样本数可保持均等。
采样结束后,针对每次采样得到的子数据集训练模型,如此采样、训练反复进行多次。
最后对测试数据的预测则依据训练得到若干个模型的结果取平均或投票获得
13.2 模型层面的集成方法
13.2.1 单模型集成
1.多层特征融合
针对单模型的一种模型层面集成方法
深层卷积神经网络特征具有层次性
不同层特征富含的语义信息可以相互补充
多层特征融合操作时可直接将不同层网络特征级联(concatenate)
最好使用靠近目标函数的几层卷积特征,因为愈深层特征包含的高层语义性愈强、分辨能力也愈强;
2.网络“快照”集成法(snapshot ensemble)
深度神经网络模型复杂的解空间中存在非常多的局部最优解
经典的SGD方法只能让网络模型收敛到其中一个局部最优解
snapshot ensemble 通过循环调整网络学习率(cyclic learning rate schedule)使网络依次收敛到不同的局部最优解
将网络学习率 η η 设置为随模型迭代轮数 t t 改变的函数
η0 η 0 : 初始学习率,一般设为0.1,0.2
t: 模型迭代轮数,mini-batch 批处理训练次数
T:模型总的批处理训练次数
M:学习率 循环退火(cyclic annealing) 次数,对应模型将收敛的局部最优解个数
利用cos函数的循环性来循环更新网络学习率
当经过“循环余弦退火”对学习率的调整后,每个循环结束可使模型收敛到一个不同的局部最优解
每个循环结束后保存的模型,称之为模型快照
一般挑选最后m个模型“快照”用于集成
13.2.2 多模型集成
多模型生成策略
- 同一模型不同初始化:特别针对小样本学习场景
- 同一模型不同训练轮数:“轮数集成”,将最后几轮训练模型结果做集成,一方面降低随机误差;一方面避免了训练轮数过多带来的过拟合风险
不同目标函数:
分类任务为例:“交叉熵损失函数”、“合页损失函数”、“大间隔交叉熵损失函数”、“中心损失函数”作为目标函数分别训练模型;
在预测阶段,既可以直接对不同模型预测结果做“置信度级别”(score level)的平均或投票,
也可以做“特征级别”(feature level)的模型集成:将不同网络得到的深度特征抽出后级联作为最终特征,之后离线训练浅层分类器(如SVM),完成预测任务
不同网络结构:在不同网络架构上训练模型,最后将不同网络架构结果做以集成
多模型集成方法
四种最常用的多模型集成方法
假设共有N个模型待集成,对某测试样本 x x ,其预测结果为N个C维向量,(C为数据的标记空间大小):
- 直接平均
直接平均不同模型产生的类别置信度得到最后预测结果
- 加权平均
在直接平均法基础上加入权重
调整不同模型输出的重要程度
wi w i 作为第i个模型的权重,需满足:
高准确率的模型权重较高,低准确率模型可设置稍小权重
- 投票
多数表决法(majority voting)
将各自模型返回的预测置信度 si s i 转化为预测类
若某预测类别获得一半以上模型投票,则该样本预测结果为该类别;
若对该样本无任何类别获得一半以上投票,则拒绝作出预测(称为”rejection option”)
相对多数表决法(plurality voting)
选择投票数最高的类别作为最后预测
一定会返回某个类别
- 堆叠(stacking)
又称”二次集成法”,高阶的集成学习方法
样本 x x 作为学习算法或网络模型的输入,作为第 i i <script type="math/tex" id="MathJax-Element-198">i</script> 个模型的类别置信度输出,整个学习过程记作一阶学习过程(first-level learning)
Stacking 是以一阶学习过程的输出作为输入,展开二阶学习过程(second-level learning)
元学习(meta learning)
置信度可以级联作为新的特征表示。
之后基于这样的”特征表示”训练学习器将其映射到样本原本的标记空间。
此时的学习器可以为任何算法习得的模型
有较大过拟合风险
参考文献:解析卷积神经网络—深度学习实践手册