零基础入门CV赛事-Task5模型集成
这次笔记为参与天池街道字符识别赛事中组对学习的最后篇学习笔记
赛题名称
- 赛题名称:零基础入门CV之街道字符识别
- 赛题目标:通过这道赛题可以引导大家走入计算机视觉的世界,主要针对竞赛选手上手视觉赛题,提高对数据建模能力。
- 赛题任务:赛题以计算机视觉中字符识别为背景,要求选手预测街道字符编码,这是一个典型的字符识别问题。
为了简化赛题难度,赛题数据采用公开数据集SVHN,因此大家可以选择很多相应的paper作为思路参考。
Task5 模型集成
5.1 学习目标
- 学习集成学习方法以及交叉验证情况下的模型集成
- 学会使用深度学习模型的集成学习
5.2 集成学习方法
在通常的机器学习中,集成学习方法有Stacking、Bagging和Boosting,结合K折交叉验证可以在一定的程度上提高预测精度,但也只在模型选取良好的情况下有效。
在深度学习中,有Dropout(留出法)、TTA(测试数据扩增)和Snapshot(单模型集成法)。
-
Dropout
Dropout在列出的三种方法中属于设备要求较低,容易使用的一种方法,其在每个训练批次中,通过随机让一部分的节点停止工作,同时在预测的过程中让所有的节点都起作用。Dropout在CNN网络也是属于深度学习的集成学习常客,可以有效的缓解模型过拟合的情况,同时可以增加模型预测的精度。 -
TTA
TTA(测试集数据扩增)在深度学习中也是常用的集成学习方法,通常在训练时会将训练集的数据增广来提高训练准确度,而在测试集中也可以使进行据增广,对同一个样本预测三次,然后取平均,进而使模型预测的精度提高。 -
Snapshot
在上述方法中,一般对训练多个模型的预测结果进行平均,但是若往里面加入了训练一个CNN模型,这就需要考虑Snapshot,使用cyclical learning rate进行训练模型,并保存精度比较好的一些checkopint,最后将多个checkpoint进行模型集成。
5.3 心得体会
在这么多天的学习中,学习到的不仅仅是关于Pytorch和CNN的知识,还提高了自己独立解决问题和与队友沟通的能力,虽然时间短暂,组队学习的五个任务也已经完成了,但并不说明这个比赛结束,甚至关于Pytorch或者CNN的学习的结束,在此时,还是得对自己说句遗憾,因为自己在这两天学习Task5部分的时间忙于处理毕业的事,没有来得及学习,也好在之前我稍微看了关于TTA的知识,也没有落下太多,希望自己在处理完目前的事情早点回到当前的学习进度,调整参数,增加模型训练的精度。