点击上方“计算机视觉工坊”,选择“星标”

干货第一时间送达

历届kaggle竞赛冠军的做法,或简单或复杂,其最后一步必然是集成学习,尽管现有的模型已经很强大了,但是集成学习往往能够起到锦上添花的作用。一般而言,深度学习的集成有两大层面:数据层面模型层面。下面详细介绍这些方法。

01数据层面

(1)数据扩充法

数据扩充法在训练和测试阶段均适用,可以增强模型的鲁棒性。

常见的数据扩充方法有:

  • 图像多尺度(multi-scale):将图像resize到不同尺寸,分别输入网络,对结果进行平均或者加权。

  • 随机扣取(random crop):对测试图片随机扣取n张图像,在测试阶段用训练好的深度网络模型对n张扣取出来的图分别做预测,之后将预测的各类置信度平均作为测试图像最终的测试结果。

(2)简单集成法

“简单集成法”是Liu等人提出针对不平衡样本问题的一种简单集成学习解决方案,好处在于模型集成的同时还能缓解数据不平衡带来的问题。

简单集成法,简单说三点:

  1. 对于样本较多的类采取降采样(undersampling),每次采样数依据样本数量最少的类别而定,这样每类取到的样本数可保持均等;

  2. 采样结束后,针对每次采样得到的子数据集训练模型,如此采样、训练重复进行多次。

  3. 最后依据训练得到若干个模型的结果取平均/投票。

02模型层面

2.1 单模型集成

(1)同一模型不同初始化

同一模型不同初始化方法,非常适用于小样本学习场景,会大幅度缓解模型的随机性,提升最终任务的预测结果。

对于同一个模型来说,不同的参数初始化方式通过随机梯度下降方法得到的训练结果也会不同。具体的做法如下:

  • 初始:首先对同一模型进行不同初始化;

  • 集成:将得到的网络模型结果进行集成;

(2)同一模型不同训练轮数

同一模型不同训练轮数方法,可以有效降低训练轮数过多带来的过拟合风险。

若网络超参数设置得当,深度模型随着网络训练的进行会逐步趋于收敛,但不同训练轮数的结果仍有不同。无法确定到底哪一轮得到的模型最适用于测试数据,我们将最后几轮训练结果做集成。

(3)不同损失函数

损失函数是整个网络训练的 “指挥棒”,选择不同目标函数势必让网络学到不同的特征表示。

具体的做法如下,以分类任务为例:可将包括交叉熵损失、合页损失、大间隔交叉熵损失、中心损失等作为损失函数分别训练模型。而在测试阶段,有两种做法:

  • 置信度融合:直接对不同模型预测结果做平均/投票

  • 特征融合:将不同网络得到的深度特征抽出后级联(concatenate)作为最终特征,然后训练浅层分类器(如支持向量机)完成预测工作;

(4)多层特征融合法

由于深度卷积神经网络特征具有层次性的特点,不同层特征富含的语义信息可以相互补充,因而在目标检测、图像语义分割、细粒度图像检索这些领域常见多层特征融合策略的使用。

一般地,多层特征融合操作可直接将不同层的网络特征进行级联(concatenate),而对于特征融合应该选取哪些网络层,选取的经验是:最好使用靠近目标函数的几层卷积特征,因为愈深层特征包含的高层语义愈强,分辨能力也愈强。相反,网络较浅层的特征更为普适,用于特征融合反而起不到作用。

(5)网络快照法

我们知道深度神经网络模型复杂的解空间中存在非常多的局部最优解,而传统的Min-batch SGD往往只能收敛到其中一个局部最优解,如下所示:

图1 SGD:传统SGD方法只能收敛到一个局部最优解

相反的,网络快照法通过循环调整学习率,使得网络依次收敛到不同的局部最优解,利用这些最优解对模型进行集成,示意图如下所示:

图2 快照法:通过循环调整学习率,使得网络依次收敛到不同的局部最优解

具体的做法如下,将网络学习率设置为随模型迭代轮数t改变的函数:

其中:

  • 为初始学习率,一般设置为 0.1 或 0.2;

  • t为模型迭代轮数;

  • T为模型总的批处理训练次数;

  • M为“循环退火”次数,对应于模型将收敛到的局部最优解的个数;

注:退火原先是材料加工的一个特有名词,指将金属加热到某个再结晶温度并维持一段时间,再将其缓慢冷却的过程。这里退火指网络模型学习率从初始学习率逐渐减缓到0的过程。

学习率从0.1*1 随着t增长逐渐减缓到0,之后将学习率重新放大,从而跳出该局部最优解,如此往复,分别得到不同权重参数的同一模型。测试阶段,一般我们挑选最后个模型“快照”用于集成,这些模型“快照”可以采用“直接平均法”。

2.2 多模型集成

我们可以使用不同架构的网络训练模型,根据这些模型结果做集成。假设共有N个模型待集成,对于某测试样本x,其预测结果为N个维向量:S1,S2,...,Sn(C为数据的标记空间大小)。我们介绍常见的四种方法:

(1)直接平均法

直接平均不同模型产生的类别置信度得到最终预测结果。

公式:

(2)加权平均法

在直接平均法的基础上加入权重来调节不同模型输出间的重要程度。

公式:

其中,Wi 对应第 i 个模型的权重,且必须满足:

实际使用中,权重 w_i 的取值可以根据不同模型在验证集上各自单独的准确率而定。简单说:准确率高点的权重高点,准确率低点权重就小点。

(3)投票法

投票法,少数服从多数,投票数最多的类别作为最终预测结果。

投票法前,我们先将模型各自预测的置信度基于阈值转换为相应的类别,那么对于某次预测,就有以下两种情况:

  • 某个类别获得一半以上模型投票,则将样本标记为该类别;

  • 没有任何类别获得一半以上投票,则拒绝预测;

但是这样有个问题,就是模型拒绝预测时候怎么办?一般我们采用相对多数投票法,很简单,少数服从多数,即投票数最多的类别即作为最终预测结果。

(4)堆叠法

堆叠法,一阶段,原始模型进行训练和预测,预测结果作为二阶段的输入,非常容易过拟合。

堆叠法分两步:

  1. 原始模型训练、预测:样本x作为模型的输入,Si为第i个模型的类别置信度输出;

  2. 预测结果作为二阶段输入:讲这些输出置信度进行级联,作为新的特征,基于这些特征训练一个新的分类器进行训练;

注意此时的学习器可以为任何学习算法模型,如支持向量机、随机森林等。不过在此需要指出的是,堆叠法真的非常非常容易过拟合!

03总结

集成的汇总如下:

留大家一个作业,回顾我们的课程,然后用思维导图或者表格整理出这些方法的优缺点。下面,我有一个之前自己学习笔记整理的(不完全):

还有,请大家思考,我们实战中怎么用模型集成来提升最终预测准确率?下期我们用实战来讲模型集成到底怎么用?

参考

更详细的请大家参阅魏秀参博士的《魏秀参——解析深度学习:卷积神经网络原理与视觉实践 - 第13章 - 模型集成方法》。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

觉得有用,麻烦给个赞和在看~  

常见深度学习模型集成方法相关推荐

  1. 【深度学习】解析深度学习的集成方法

    [深度学习]解析深度学习的集成方法 文章目录 1 前言 2 使用集成模型降低方差 3 如何集成神经网络模型3.1 Varying Training Data3.2 Varying Combinatio ...

  2. 深度学习模型压缩方法(3)-----模型剪枝(Pruning)

    link 前言 上一章,将基于核的稀疏化方法的模型压缩方法进行了介绍,提出了几篇值得大家去学习的论文,本章,将继续对深度学习模型压缩方法进行介绍,主要介绍的方向为基于模型裁剪的方法,由于本人主要研究的 ...

  3. 深度学习模型压缩方法综述(二)

    深度学习模型压缩方法综述(一) 深度学习模型压缩方法综述(二) 深度学习模型压缩方法综述(三) 前言 上一章,将基于核的稀疏化方法的模型压缩方法进行了介绍,提出了几篇值得大家去学习的论文,本章,将继续 ...

  4. 5个实用提速深度学习模型的方法

    您是否通过深度学习模型获得了良好的准确性,却发现推理时间不足以部署到生产环境中?您是否对如何优化模型的推理速度迷失了方向?那么这篇文章是给你的.众所周知,数据科学项目有一个奇特的特性,即项目者需要不断 ...

  5. 深度学习模型压缩方法(1)-----综述

    展开 1.研究背景 对模型预测精度无明显影响 压缩模型的参数数量.深度来降低模型空间复杂度 全连接层参数多,模型大小由全连接层主导 不显著提高训练时间复杂度,降低预测时间复杂度(计算量) 卷积层计算量 ...

  6. 深度学习模型不确定性方法对比

    ©PaperWeekly 原创 · 作者|崔克楠 学校|上海交通大学博士生 研究方向|异构信息网络.推荐系统 本文以 NeurIPS 2019 的 Can You Trust Your Model's ...

  7. 28.深度学习模型压缩方法-2

    28.1 典型剪枝方法对比 剪枝方法 修剪对象 修剪方式 效果 Deep Compression 权重 随机修剪 50倍压缩 Structured Pruning 权重 组稀疏+排他性稀疏 性能提升 ...

  8. 【深度学习】——常见深度学习模型总结、anchor-free和anchor-based

    目录 1.faster rcnn: 2.SSD: 3.YOLOv1: 小结: 拓展:anchor-based和anchor-free anchor 1.faster rcnn: FasterRcnn ...

  9. 29.深度学习模型压缩方法-3

    29.1 后端压缩 (1)低秩近似 在卷积神经网络中,卷积运算都是以矩阵相乘的方式进行 对于复杂网络,权重矩阵往往非常大,非常消耗存储和计算资源 低秩近似就是用若干个低秩矩阵组合重构大的权重矩阵,以此 ...

最新文章

  1. uniapp与帝国cms7.5开发实战之动态爆料订阅号app开发实战记录
  2. 全球及中国综艺节目产业营销策略分析及创新格局规划建议报告2021-2027年
  3. 15条走红网络的手机摄影技巧
  4. Oracle exp/imp导出导入工具的使用
  5. 用python计算两个二维list依据第二维的前一个数据相加
  6. 如何实现点击微信内置浏览器返回按钮,返回指定页面,或者原地刷新
  7. 系统相机裁剪比例_从单反到手机,三种黄金比例构图方法,让你的照片与众不同...
  8. Spring Boot学习总结(26)—— Spring Boot 容器启动详解
  9. 文本序号添加/移除工具
  10. [转载] Python中自定义异常与抛出异常
  11. VM中的Linux安装jdk和tomcat
  12. C语言volatile的本质(三十四)
  13. 高等数学(第七版)同济大学 习题4-3 个人解答
  14. mac 安装 JDK
  15. 用命令行方式写Android应用
  16. 珍藏版 | 20道XGBoost面试题
  17. 有人在远程使用计算机是什么意思,如何远程控制计算机,计算机远程控制有什么用途...
  18. 网贷逾期和信用卡逾期是一样的吗?
  19. Android Espresso(四)——RecyclerView
  20. ANN(人工神经网络)基础知识

热门文章

  1. 树莓派3SD卡格式化-Windows下利用SDFormatter格式化SD卡
  2. 改变html的默认.html和.cgi 文件路径
  3. 安卓手机管理器_MiXplorer,简洁又多功能的安卓文件管理器
  4. 32位操作系统是什么意思?
  5. implements和extends的区别
  6. 球面距离计算方式(杭州到各城市的球面距离计算球面距离)
  7. 实验三 Android生命周期
  8. linux基础-cat mv
  9. 织梦(DedeCMS)通用免登陆发布插件
  10. wow(1) : UI插件_EUI[1]_配置分享