模型集成其实是在算力允许的情况下,进一步提升模型预测准确性的方法。传统的机器学习中,集成的方法有bagging、boosting和stacking。除此之外,深度学习还有自身的一些集成的方法
一、Dropout
说白了就是神经网络在进行前向传播时,让某个神经元以一定的概率停止工作。这样的操作使得模型不会依赖于部分局部特征,从而导致模型泛化性能差。
二、TTA
TTA,又名测试集数据扩增。核心就是对预测的数据进行data augmentation,从而得到多个预测结果,最后取平均。这种做法个人觉得有点像让模型去多个角度看看要预测的数据到底什么样,最终得到一个最为靠谱可信的预测。这种方法在baseline中也做了,设置的TTA为10.
三、snapchat
当我们只训练一个模型的时候也是可以进行模型集成的,比如snapchat使用的cyclical learning rate 进行训练。cyclical learning rate,顾名思义,每个周期保存一个模型。最后预测时,同时使用保存的模型进行预测从而达到集成的效果。
另外,通过这种周期性学习率的方法,可以是模型跳出局部最优解进入另一个局部最优。