本文主要参考Ensemble Methods for Deep Learning Neural Networks一文。

1. 前言

  • 神经网络具有很高的方差,不易复现出结果,而且模型的结果对初始化参数异常敏感。
  • 使用集成模型可以有效降低神经网络的高方差(variance)。

2. 使用集成模型降低方差

  • 训练多个模型,并将预测结果结合到一起,能够降低方差。

    • 多模型集成能起到作用的前提是,每个模型有自己的特点,每个模型预测出的误差是不同的。
    • 简单的集成方式就是将预测结果取平均,该方法起作用的原因是,不同的模型通常不会在测试集上产生相同的错误。
  • 结合多个模型使得最终的预测结果添加了一个偏差(bias),而这个偏差又会与神经网络的方差(variance)相抵消,使得模型的预测对训练数据的细节、训练方案的选择和单次训练运行的偶然性不太敏感。
  • 集成模型的结果会比任意单模型的结果都要好。

3. 如何集成神经网络模型

  • The oldest and still most commonly used ensembling approach for neural networks is called a “committee of networks.”
  • 通常选择多模型的方式:多个相同配置的神经网络 + 相同的训练数据集 + 不同的参数随机初始化
  • 集成的模型数量通常比较小,原因如下:
    • 考虑计算复杂度。
    • 当模型数目达到一定程度,随着数目的增加,集成模型得到的性能回报变小。
  • 集成模型一般考虑如下三种构造方式:
    • Trainning Data: 不同单模型使用不同的训练数据
    • Ensemble Models: 选择不同的单模型
    • Combinations: 选择不同的组合方式

3.1 Varying Training Data

  • 一个比较简单的方法是k折交叉验证,能够得到全体训练集的k个子训练集,用每个子集单独去训练模型。最后将这k个模型做集成。

    • 注意,每个子训练集的大小是\((k-1)/k\)倍的全体训练集,而不是\(1/k\)倍的全体训练集。
  • 另一种方法是用重采样(resampling)的方式构建新训练集。
    • 重采样过程意味着每个训练数据集的组成是不同的,可能存在重复的例子,从而允许在数据集上训练的模型对样本的密度具有稍微不同的期望,并具有不同的泛化误差(generalization error)。
    • 这种方法也叫做bootstrap aggregation,简称为bagging,被设计用于未剪枝且具有高方差低偏置(high variance and low bias)的决策树。
  • 与上一个方法等价的采样方式为欠采样,即采样后的训练集不出现重复,且比全体数据集要少。
    • 注意,欠采样得到的新数据未经过正规化(regularization),这样可以使得模型训练的更快(过拟合的更快)。
  • Other approaches may involve selecting a random subspace of the input space to allocate to each model, such as a subset of the hyper-volume in the input space or a subset of input features.

3.2 Varying Models

  • 对相同配置的模型,使用不同的参数随机初始化训练。

    • 这种方式在一定程度上可以降低方差,但是可能不会显著地改善泛化误差。
    • 由于模型都学习了类似的映射函数,因此模型产生的错误可能仍然相关性太高。
    • 这方式实际上只是受学习算法的影响,即不同随机参数可能抵达不同的局部最优点,甚至某些参数初始化可以使得模型恰巧抵达全局最优点。
  • 另一个方法是变化模型的配置参数,如不同维度的隐状态向量,不同的神经网络层数,不同的学习率,不同的学习策略,不同的正则化方式等的。
    • 这些模型能够学习更加异构的映射函数集合,并且在预测和预测误差方面具有较低的相关性,能够互相弥补不足。
    • Differences in random initialization, random selection of minibatches, differences in hyperparameters, or different outcomes of non-deterministic implementations of neural networks are often enough to cause different members of the ensemble to make partially independent errors.
  • 在单个模型可能需要较长训练时间的时候,另一个备选方案在训练过程中定期保存最佳模型(called snapshot or checkpoint models),即不同的checkpoints点,然后对保存的模型进行集成。
    • 能够达到同一数据上训练多个模型的效果,尽管是在单个训练时间生成的。
    • 因为训练时间长,所以不适用于前面两种反复训练模型的方式。
    • 这种集成方式还有一个变体,是选定几个epoch区间,将这些区间的所有模型做集成。(Ensembles from such contiguous sequences of models are referred to as horizontal ensembles.)
    • 因为是在选取同一训练期间的不同检查点模型,所以也可以在模型的训练过程中,根据结果的反馈,不断改变优化方式,如学习率decay等策略,使得后续检查点能够得到更加有效的模型。

3.3 Varying Combinations

  • 最简单的组合方式是选择所有的模型,将预测结果区平均。

    • 稍微改进的方法是加权取平均,权重由验证集提供。这种方法有时也称为model blending。
  • 设计一个新的模型,能够自动化学习到“加权取平均”过程中,每个单模型所占的权重大小。
    • 这种学习新模型的方式,一般被称为model stacking, 或 stacked generalization。
    • model stacking是在第二层特征空间中进行学习的。
    • 采用更加复杂的stacking方式,例如boosting(一次添加一个模型以纠正先前模型的错误)。
  • 另一个结合方式是,先将具有相同结构的多个模型的权重取平均,以得到该模型结构的“最好成绩模型”。之后再对不同模型结构的“最好成绩模型”进行集成。

4. 总结

  • 以上内容,是我阅读这篇文章得到的总结,感兴趣的读者可以继续阅读原文,原文覆盖了更多的知识点,并提供了许多参考依据,具有权威性。
  • 原文章将深度学习的集成方式总结为如下几点(本人总结了其中大部分方法):
    • Varying Training Data

      • k-fold Cross-Validation Ensemble
      • Bootstrap Aggregation (bagging) Ensemble
      • Random Training Subset Ensemble
    • Varying Models
      • Multiple Training Run Ensemble
      • Hyperparameter Tuning Ensemble
      • Snapshot Ensemble
      • Horizontal Epochs Ensemble
      • Vertical Representational Ensemble
    • Varying Combinations
      • Model Averaging Ensemble
      • Weighted Average Ensemble
      • Stacked Generalization (stacking) Ensemble
      • Boosting Ensemble
      • Model Weight Averaging Ensemble

深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks的更多相关文章

  1. (转) Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance

    Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance 2018-1 ...

  2. 吴恩达《深度学习》-第二门课 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)-第一周:深度学习的实践层面 (Practical aspects of Deep Learning) -课程笔记

    第一周:深度学习的实践层面 (Practical aspects of Deep Learning) 1.1 训练,验证,测试集(Train / Dev / Test sets) 创建新应用的过程中, ...

  3. 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)

    一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...

  4. 论文学习-深度学习目标检测2014至201901综述-Deep Learning for Generic Object Detection A Survey

    目录 写在前面 目标检测任务与挑战 目标检测方法汇总 基础子问题 基于DCNN的特征表示 主干网络(network backbone) Methods For Improving Object Rep ...

  5. 深度学习论文翻译解析(五):Siamese Neural Networks for One-shot Image Recognition

    论文标题:Siamese Neural Networks for One-shot Image Recognition 论文作者: Gregory Koch   Richard Zemel Rusla ...

  6. TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)

    1. 概述 原文地址: TensorFlow and deep learning,without a PhD Learn TensorFlow and deep learning, without a ...

  7. Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization(第一周)深度学习的实践层面 (Practical aspects of Deep Learning)

    1. Setting up your Machine Learning Application 1.1 训练,验证,测试集(Train / Dev / Test sets) 1.2 Bias/Vari ...

  8. [1天搞懂深度学习] 读书笔记 lecture I:Introduction of deep learning

    - 通常机器学习,目的是,找到一个函数,针对任何输入:语音,图片,文字,都能够自动输出正确的结果. - 而我们可以弄一个函数集合,这个集合针对同一个猫的图片的输入,可能有多种输出,比如猫,狗,猴子等, ...

  9. 【机器学习实战】第7章 集成方法 ensemble method

    第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...

随机推荐

  1. js的mime类型有哪些?

    js中的mime类型 常见类型 扩展名 类型/子类型 txt text/plain doc application/msword exe application/octet-stream pdf ap ...

  2. iOS - 自动化编译打包(Jenkins)

    从xcodebuild到shenzhen,再到Jenkins,完美演绎自动化操作. Features xcodebuild自动构建命令 简介 构建 生成ipa文件 利用 shenzhen 进行打包 J ...

  3. RabbitMQ服务端配置详解(转自:http://www.cnblogs.com/zhen-rh/p/6884297.html)

    RabbitMQ支持三种配置方式: 1) 读取环境变量中配置, 这包括shell中环境变量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量 可配置如 ...

  4. 8.22js前端!

    2018-8-22 19:15:19 前端还有一部分就学完了预计这一星期赶一下就可以结束 然后愉快地进行Django框架!!!! 今天中午和呆呆一块吃的大盘鸡,下午和老表我们三个去了日月湖狼了一下午! ...

  5. 伪随机数生成算法-梅森旋转(Mersenne Twister/MT)

    今天主要是来研究梅森旋转算法,它是用来产生伪随机数的,实际上产生伪随机数的方法有很多种,比如线性同余法, 平方取中法等等.但是这些方法产生的随机数质量往往不是很高,而今天介绍的梅森旋转算法可以产生高质 ...

  6. Java-01-问题解答

    问题一:Java类文件是否只能有一个公有类? 1测试代码: //信1603 李敦岳 20163520 //测试Java是否只能有一个公有类 //2017.10.2 public class Test ...

  7. ELk之使用kibana展示访问IP地图

    参考文档:http://blog.51cto.com/ls40905250/1915280 https://blog.csdn.net/zsjwish/article/details/79792212 ...

  8. webpack初入门

    首先利用npm install webpack -g,这里我试过用cnpm安装不成功,不知道是什么回事, webpack 用来压缩打包网站的一些插件和依赖包而存在的, webpack  文件名  打包 ...

  9. 网站搜索引擎优化(SEO)的18条守则

    1.永远不要放过网页的title,这个地方应该是你每次优化的重点. 2.请不要在title,deion,keyword里写太多东西,越是贪婪,得到的就越少. 3.网页的头部和底部是很重要的,对于搜索引 ...

  10. 洛谷P3209平面图判定 [HNOI2010] 2-sat

    正解:2-sat(并茶几/强连通分量 解题报告: 传送门w 难受死了,连WA5次,正确率又-=INF了QAQ 然后先说下这题怎么做再来吐槽自己QAQ 首先这题其实和NOIp2010的关押罪犯挺像的,然 ...