学习目标
- 学习集成学习方法以及交叉验证情况下的模型集成
- 学会使用深度学习模型的集成学习
模型集成
- 集成学习方法介绍
- 深度学习中的集成学习
- Dropout
- TTA
- Snapshot
一、集成学习方法介绍
集成学习(ensemble learning)通过构建并结合多个弱学习器来综合得到一个强学习器的方法。机器学习领域的集成方法有bagging、boosting、stacking。
Bagging(bootstrap aggregating,装袋)
Bagging使用装袋采样来获取数据子集训练基础学习器。通常分类任务使用投票的方式集成,而回归任务通过平均的方式集成。
1.从原始样本集中抽取训练集。每轮从原始样本集中使用有放的方法抽取n个训练样本。共进行k轮抽取,得到k个训练集
2.每次使用一个训练集得到一个模型,k个训练集共得到k个模型。
3.对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。
随机森林是一种常用的Bagging集成模型算法。
boosting(提升算法)
boosting是一族可将弱学习器提升为强学习器的算法,这类算法的步骤为:
1.先从初始训练集训练出一个基学习器;
2.再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注;
3.基于调整后的样本分布来训练下一个基学习器;
4.重复进行上述步骤,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。
常见的boosting算法有adaboost,gbdt等。
stacking
Stacking是通过一个元分类器或者元回归器来整合多个分类模型或回归模型的集成学习技术。基础模型利用整个训练集做训练,元模型将基础模型的特征作为特征进行训练。
二、深度学习中的集成学习
Dropout:在2012年的文章中《Improving neural networks by preventing co-adaptation of feature detectors》提出了在每次训练的时候,让一半的特征检测器停过工作,这样可以提高网络的泛化能力,Hinton又把它称之为dropout。具体的,在一次循环中,先随机选择神经层中的一些单元并将其临时隐藏,然后再进行该次循环中神经网络的训练和优化过程。在下一次循环中,又将隐藏另外一些神经元,如此直至训练结束。dtopout可以提高网络模型的泛化性能。
测试时增强(test time augmentation, TTA),是在测试阶段时,将输入的测试数据进行,翻转、旋转操作等数据增强,并最后对同一样本的不同数据增强的结果根据任务需求进行例如平均,求和等数据处理。
快照集成(Snapshot Ensembling),使用cos方式的学习率不断循环下降,上升的策略,可以使得模型收敛到多个全局最小值。从而可以使用这些模型进行集成学习。使用传统学习率训练的单个模型,模型精度可能会比使用cos方式训练的每个模型的精度都略高。但是cos方式的模型进行集成后,效果会优于传统方式训练的单个模型。
集成方法与深度学习相结合时,可以通过组合多个神经网络的预测来产生最终的预测结果。通常,集成不同结构的神经网络会得到一个性能不错的集成模型,因为每种模型可能在不同的训练样本上犯错,因此这样的集成方法能够最大化地提升模型的最终性能。
三、参考
[1]https://blog.csdn.net/zwqjoy/article/details/80431496
[2]https://blog.csdn.net/hjimce/article/details/50413257
[3]tt]https://blog.csdn.net/weixin_38208912/article/details/10497645
[4]https://www.cnblogs.com/makefile/p/dropout.html
[5]https://blog.csdn.net/dqcfkyqdxym3f8rb0/article/details/80240645