2022微信大数据挑战赛复盘,rank60+菜鸟
Posted 名字不如叫摸鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022微信大数据挑战赛复盘,rank60+菜鸟相关的知识,希望对你有一定的参考价值。
2022微信大数据挑战赛复盘,rank60+菜鸟
说明
之前比赛结束一直想着要写个复盘总结一下来着,一直摸,一摸鱼就是半年。。。。。以下总结主要用于个人日后复习,如题本人rank60+的菜鸟一个,对赛题感兴趣的朋友,推荐去学习前top30的开源以及决赛答辩PPT。
初赛
模型选择
根据郭大的周星星,选取visual bert作为baseline
trick
- EMA
- SWA
- PGD
- multi-drop
- K折
- class balance weights
implement details
- visual bert中将video embeddings与text embeddings拼接前,需对由backbone生成的video embeddings进行一次线性变换;
- 预测是用EMA的模型预测,不知道为什么,群里很多新手犯了这个错误;
- PGD略优于FGM;
- R-Drop性能优于multi-drop,但训练耗时太长了,后续没采用。还一个问题是,当所有random seed固定时,R-Drop不就没用了吗?那模型怎么复现?(当时使用R-Drop时取消了固定)。我不太确定是不是我理解有问题,欢迎大佬们指教;
- 初赛没有推理时间限制,于是跑了个10折,然后进行融模,每一折可以取不同seed,效果会更好;
- 赛题数据中,数据分布是极端不平衡的,最多的有13w+,最少的只有19。尝试过多种imbalance loss and sample,但效果都不理想,不如直接交叉熵。直接按数量取倒数的话,类之间权重差距过大也会导致性能下降。于是我们尝试用指数函数对权重因子进行缩放,大概有一个多点的收益。其中决赛答辩中的一位大佬也采用的类似的想法,但做法优雅的多,建议取学习一下;
- 文本数据需要仔细处理,不要乱洗数据
复赛
模型选择
在初赛的模型上修修改改,没有尝试对不同模型进行融模
trick
- Aux Loss
- 分层学习率
implement details
- 复赛中提供了视频帧而不是预先提取好的特征,群里大佬们采用的是two-stage方式,先将视频分类的backbone预训练好,再后续多模态任务中freeze。但我走的是end-to-end,直接带着backbone一起练。但这需要一个额外的分支对backbone的输出特征直接进行分类,添加一个额外的视频损失的监督信号,不然text embeddings在visual bert中的贡献会显著压倒video embeddings;
- 带预训练权重的backbone、bert和随机初始化的一些MLP初始学习率应该分别设置;
一些遗憾的地方
- 如何利用好大规模的无标签数据是一个很重要的问题,群里大多采用bert的预训练利用unlabeled数据。但我们采用的是半监督策略,因为我方向是目标检测,之前有接触过一些半监督目标检测,如soft-teacher,就钻牛角尖了,但遗憾的是不work,性能只有极小极小的上升,大概0.1k?可能是我半监督代码写错了,又或者是没有使用大模型(swim-tiny+bert-base);
- 如上,我队友后面去做了bert的预训练,mlm之类的,没做出来,问我,我也不会。一个目标检测,一个图像生成,就没一个NLP的;
- backbone选错了,用的是在ImageNet上标准预训练的SwinV2。用基于CLIP的ViT的话,效果明显好于前者;
- 模型加速,一直纠结于TensorRT,直接带歪队友,double牛角尖,做到最后TensorRT都没整明白。直接用ViT half计算不香吗?shift
- 伪标甜蜜的忘做了,shift,应该在最后对测试集打个伪标再拼到训练集上面过一遍,复赛的时候在考驾照,怕是人晒麻了,做的麻瓜一样。
以上是关于2022微信大数据挑战赛复盘,rank60+菜鸟的主要内容,如果未能解决你的问题,请参考以下文章