深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks
本文主要参考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
- Varying Training Data
深度学习的集成方法——Ensemble Methods for Deep Learning Neural Networks的更多相关文章
- (转) 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 ...
- 吴恩达《深度学习》-第二门课 (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) 创建新应用的过程中, ...
- 深度学习笔记 (一) 卷积神经网络基础 (Foundation of Convolutional Neural Networks)
一.卷积 卷积神经网络(Convolutional Neural Networks)是一种在空间上共享参数的神经网络.使用数层卷积,而不是数层的矩阵相乘.在图像的处理过程中,每一张图片都可以看成一张“ ...
- 论文学习-深度学习目标检测2014至201901综述-Deep Learning for Generic Object Detection A Survey
目录 写在前面 目标检测任务与挑战 目标检测方法汇总 基础子问题 基于DCNN的特征表示 主干网络(network backbone) Methods For Improving Object Rep ...
- 深度学习论文翻译解析(五):Siamese Neural Networks for One-shot Image Recognition
论文标题:Siamese Neural Networks for One-shot Image Recognition 论文作者: Gregory Koch Richard Zemel Rusla ...
- TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)
1. 概述 原文地址: TensorFlow and deep learning,without a PhD Learn TensorFlow and deep learning, without a ...
- 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 ...
- [1天搞懂深度学习] 读书笔记 lecture I:Introduction of deep learning
- 通常机器学习,目的是,找到一个函数,针对任何输入:语音,图片,文字,都能够自动输出正确的结果. - 而我们可以弄一个函数集合,这个集合针对同一个猫的图片的输入,可能有多种输出,比如猫,狗,猴子等, ...
- 【机器学习实战】第7章 集成方法 ensemble method
第7章 集成方法 ensemble method 集成方法: ensemble method(元算法: meta algorithm) 概述 概念:是对其他算法进行组合的一种形式. 通俗来说: 当做重 ...
随机推荐
- js的mime类型有哪些?
js中的mime类型 常见类型 扩展名 类型/子类型 txt text/plain doc application/msword exe application/octet-stream pdf ap ...
- iOS - 自动化编译打包(Jenkins)
从xcodebuild到shenzhen,再到Jenkins,完美演绎自动化操作. Features xcodebuild自动构建命令 简介 构建 生成ipa文件 利用 shenzhen 进行打包 J ...
- RabbitMQ服务端配置详解(转自:http://www.cnblogs.com/zhen-rh/p/6884297.html)
RabbitMQ支持三种配置方式: 1) 读取环境变量中配置, 这包括shell中环境变量和rabbitmq-env.conf/rabbitmq-env-conf.bat文件中配置的环境变量 可配置如 ...
- 8.22js前端!
2018-8-22 19:15:19 前端还有一部分就学完了预计这一星期赶一下就可以结束 然后愉快地进行Django框架!!!! 今天中午和呆呆一块吃的大盘鸡,下午和老表我们三个去了日月湖狼了一下午! ...
- 伪随机数生成算法-梅森旋转(Mersenne Twister/MT)
今天主要是来研究梅森旋转算法,它是用来产生伪随机数的,实际上产生伪随机数的方法有很多种,比如线性同余法, 平方取中法等等.但是这些方法产生的随机数质量往往不是很高,而今天介绍的梅森旋转算法可以产生高质 ...
- Java-01-问题解答
问题一:Java类文件是否只能有一个公有类? 1测试代码: //信1603 李敦岳 20163520 //测试Java是否只能有一个公有类 //2017.10.2 public class Test ...
- ELk之使用kibana展示访问IP地图
参考文档:http://blog.51cto.com/ls40905250/1915280 https://blog.csdn.net/zsjwish/article/details/79792212 ...
- webpack初入门
首先利用npm install webpack -g,这里我试过用cnpm安装不成功,不知道是什么回事, webpack 用来压缩打包网站的一些插件和依赖包而存在的, webpack 文件名 打包 ...
- 网站搜索引擎优化(SEO)的18条守则
1.永远不要放过网页的title,这个地方应该是你每次优化的重点. 2.请不要在title,deion,keyword里写太多东西,越是贪婪,得到的就越少. 3.网页的头部和底部是很重要的,对于搜索引 ...
- 洛谷P3209平面图判定 [HNOI2010] 2-sat
正解:2-sat(并茶几/强连通分量 解题报告: 传送门w 难受死了,连WA5次,正确率又-=INF了QAQ 然后先说下这题怎么做再来吐槽自己QAQ 首先这题其实和NOIp2010的关押罪犯挺像的,然 ...