为啥没有人把 boosting 的思路应用在深度学习上

原则上,boosting的思想是通过弱分类器(如CART)的前向分步训练实现整体模型的优化,从而得到较高的分类准确率,这种思路之所以有效的原因是单个弱分类器对数据集总会处于underfitting的状态,而典型的深度学习模型(如CNN, RNN)显然不在弱分类器这个范畴;另外在实际场景中,目前用于深度学习模型训练的数据库都有一个特点:样本量大(一般为模型参数量的10倍以上),并且容许一定程度的误标注。在这种情况下,由于boosting对于误标注样本十分敏感,这也是它不能用于深度学习上的一个原因。
■网友
先回答大问题,其实是有的,有人把Boosting 用于深度学习中。
放一篇文章,2016的 NIPS,Incremental Boosting Convolutional Neural Network for Facial Action Unit Recognition。
还看到过其他的一些文章,也在用Boosting的方法做。

再回到具体的小问题中,你说的那种做法,可以认为是当前网络的加宽和加深一层。 如果原网络已经是很优化的结构,那应该提升不大,如果网络的结构还比较浅,那这样是可以提高效果的,但是能否到100%,还有一个问题就是这100万样本里面的误差是多大,100万样本的分类样本准确率可以定义为模型学到的准确率的最大值,是有这个极限在的。

个人看法,欢迎指正。

■网友
(1) Bagging算法的训练集是随机的,各训练集是独立的;而Boosting算法训练集的选择不是独立的,每一次选择的训练集都依赖于上一次学习的结果;Bagging算法的每个预测函数都没有权重;而Boosting算法根据每一次训练的训练误差得到该次预测函数的权重。
(2) Boosting的是通过弱分类器的前向分步训练实现整体模型的优化,从而得到较高的分类准确率,这种思路之所以有效的原因是单个弱分类器对数据集总会处于欠拟合的状态,而典型的深度学习模型不属于弱分类器这个范畴。
(3)从计算优化的角度来看,AdaBoosting和梯度提升树(Gradient Boosting Decison Tree,GBDT)与深度学习中使用的基于梯度的优化方法是一致的,使用Boosting会导致算法的重复优化而得不到预期的效果。
(4)Bagging算法的各个分类器可以并行执行;而Boosting算法只能顺序执行,因此对于深度神经网络这样极为耗时的学习方法,Bagging算法可通过并行训练节省大量时间开销。
(5)Boosting算法对于样本的异常值十分敏感,因为Boosting算法中每个分类器的输入都依赖于前一个分类器的分类结果,会导致误差呈指数级累积。而用于深度学习模型训练的样本数量很大并且容许一定程度的错误标注,会严重影响模型的性能。

■网友
残差网络可以看成boosting方法吗?

■网友
在你这100万样本中,可以接近100%,其实就是过拟合了,但是如果另外再拿100万不同的数据来,正确率依然只有90%多
■网友
【为啥没有人把 boosting 的思路应用在深度学习上】 ResNet可以看做是以最好的特征长什么样为目标的boosting,但是最终没有使用的原因还是强学习模型容易过拟合。


    推荐阅读