一、概述
因为大多深度学习模型是基于随机梯度下降来更新权重参数的,使得训练出来的模型方差偏高,所以不能完全复现某次训练最好的结果。
集成学习通过创建并学习多个模型,然后根据多个模型的输出结果,采用一定的决策方式得到最终的目标。它的好处是可以降低模型方差,准确率一般比使用单个模型要高。
二、集成方式
典型的神经网络架构通常包含输入、模型和输出。因此,可以从这三个角度进行集成。
1、从输入考虑
即利用不同数据集,单个模型进行学习。如k折交叉验证,将一个大的数据集平均分成k份,每次训练从中取k-1份作为训练集,剩下1份作为验证集,重复k次,每次取的都不一样。
2、从模型考虑
即利用同一个数据集,多个不同模型进行学习。这里可以改变模型的层数,每层的神经元数量,亦或者采用不同的方式初始化不同模型的参数等。
3、从输出考虑
即对多个输出结果,采用一定的策略进行综合考虑。常用的策略有简单平均、投票、加权等。
三、典型集成学习算法
1、Bagging
1.1 算法思想
Bagging算法从大小为N的数据集中随机等概率、有放回地取出M个大小为K的子集,结合分类、回归等算法,在这M个子集上进行训练得到M个候选值,最后通过平均、投票等方法得到Bagging算法的决策结果。
1.2 特性分析
1)Bagging有利于降低模型方差
2)其性能与模型的稳定性有关,当模型不稳定时,输出误差得到改善,整体偏低;如果稳定,则模型的误差主要由映射错误导致。
3)由于是随机等概率取样本,所以Bagging算法对所有的样本具有一致性。
2、Boosting
Boosting可理解为“提升”,即将弱学习器提升为强学习器。它是一种指导算法思想,由其衍生出了很多具体的提升算法,比较经典的是AdaBoost。在实际中,训练一个弱学习器往往比强学习器容易的多,AdaBoost要做的就是就联合多个弱学习器,将整体的学习效果提升为可匹配强学习器的输出。其算法流程为:AdaBoost会重复调用弱学习器,数据样本会被分配一个值,代表每次加入训练的概率;第一次选取训练子集时各样本的概率是相同的,如果在该轮训练中没学习到,则该样本的选取概率增加,加大其在下一轮训练中被选取的概率;经过N次迭代训练后,得到N个学习器,每个弱学习器依据其学习效果,有不同的权值,最后的强学习器由多个弱学习器加权得到。
本文探讨了深度学习中集成学习的重要性,特别是通过Bagging(自助采样法)和Boosting(弱学习器增强)降低模型方差的方法。介绍了如何从输入、模型和输出三个角度进行集成,以及典型算法如Bagging的随机子集训练和Boosting的弱学习器迭代提升过程。
3782

被折叠的 条评论
为什么被折叠?



