## 比赛
微信大数据挑战赛(小样本多模态分类任务)
rank :12 (Student Rank : 8, Score : 0.727216)
### 赛题描述和页面
[2022微信大数据挑战赛赛题介绍和描述](https://algo.weixin.qq.com/problem-description)
## 思路
利用开源Bert和开源Visual模型权重来初始化文本和图片, 再送入自己的model中对文本进行交互, 主要构建了两个模型.
(1) 单流(Single_Stream)
文本过Bert(roberta-wwm-ext)的embedding, 图片过Vit(Clip-Vit-B/16)做成embedding, 拼接在一起后送入Bert的12层Transformer块.
裸模型未预训练成绩: 0.67 - 0.68, 预训练任务: ITM, MFM, MLM, 预训练后(Trick)成绩: 0.720
(2) 双流(Double_stream)
文本过Bert(roberta-wwm-ext)的12层Transformer块, 图片过Vit(Clip-Vit-B/16)做成(Batch_size, Max_frame, Vision_dim), 送入3层Transformer-Attention块中(图片做Q, 文本做K, V)
裸模型未预训练成绩: 0.700, 预训练任务: ITM, ITA, MLM, 预训练后(Trick)成绩: 0.715
模型融合后达到了最高分
Trick: EMA, SWA, FGM, PGD
## 经验与总结
(1)经验:
多模态任务最好采用经过了大规模多模态数据预训练的模型权重(特指Clip), (2022年7月Clip开源中文语料库预训练权重).
多做多模态信息的交互任务, 比如单流中预训练的ITM, 双流中的Cross_attention
(2)赛后学习(大佬发言)
(1) 在限制Inference时间的比赛中都要尝试利用大模型(Bert-large, Clip-large)来对预训练数据打伪标, 一是为了能更好地发挥经过预训练的大模型的性能, 二是更加充分的利用预训练数据.
伪标流程: 1. 利用Large模型在训练集上训练好高分model, 并对无标注数据进行伪标标注
2. 两种思路: 在进行预训练的时候多一个对标签的任务, 平衡loss, 相当于多任务学习.
在训练时先对伪标数据进行训练, 再用训练集进行修正.
(2) 在小样本的情况下, 多分类任务中出现的小类, 会由于F1_marco而导致对小类错分极为敏感, 故可观察模型在验证集中, 对小类分类的正确率, 强行提高小类的预测概率.
(3) 其他大佬(Galaxy)的总结
1. 关于比赛后处理方案?
- 陪跑:我们的后处理的思路是把少类别的概率强行放大,这样初赛复赛都有比较稳定的提升(3k)左右.具体做法是 1/value_count,每个类别得到一个放大的概率值,大类是1,小类>1, 具体的值设置是通过初赛的线下五折调出来的参数。
2. mixup 是否有效?
- 辉:初赛尝试了mixup,复赛并没有用上,模型抖的厉害。
- 陪跑:我这里尝试了很多次mixup,但是没啥用。
3. 伪标签是否有效?
- 陪跑:有效果,但取决于生成的标签的精度。在损失函数上的选择,可以考虑使用kd loss,也可以使用交叉熵。
- 郭大:这题的关键其实还是伪标签,提升是2个百分点,0.720--0.741.伪标签不是为了利用数据,而是为了利用大模型(估计是为了使用clip large)。在训练伪标签上,是否使用soft label或者使用hard label,区别并不大。如果soft 和hard 分别都用,融合还能提升分数。本赛题受限于规则上进行限时,所以需要伪标签,不限时的话,都不需要伪标签(猜测是直接用多个large融合)。
- chizhu:伪标签在我们这里提升是2个百。0.689--0.710,限于挥霍的stacking细节,可能也影响了模型效果。具体使用了8帧的单折。我们采用了两阶段训练小模型,先用100万无标签数据训练第一阶段,然后第二阶段用9万真实标签修正,(可不可以描述的更细致一点呢?)。
- 挥霍的人生:受限于我们组的打伪标签的base模型精度太低问题,导致我们后期运用伪标签提升未达到预期(主要是上班太忙,没时间做题才是真相)。
- UA:伪标签在本题中可以理解为蒸馏的思路,伪标签可以套娃,训练出好的模型,再去标注,再训练,再标注,形成一个循环过程。评估的标注是测试集上无法再次上分为止。当出现大量的unlabel数据的时候,就可以考虑使用伪标签,例如本赛题,特征均出现对齐的情况,唯一的区别是缺失label。如果使用kl loss做软标签,就可以看做是知识蒸馏。
- Lawliet:我们一开始用的swin-base上分,后来看到大家都在传clip,就产生了敏锐的洞察力。
- 虚着点和气:关于chizhu描述先用100万无标签数据训练第一阶段,然后第二阶段用9万真实标签修正这部分,完全可以边打标,边修正。
4. 本赛题限时的原因?
- starry:以我的理解,主办方限时更多的是考虑限制大量的模型融合,而更希望更少量的模型的精度提升,能更好的做工业化应用参考,由于这个场景下内容理解可以离线做,并不需要做到高度实时,所以和视频推荐场景中的召回和精排仍然是有区别的。
5. 特征提取的backbone用谁好?
- 各队伍都使用各种类型的视频特征预训练模型作为提取的主要方法,例如swin, tiny, clip, vit等,但从本赛题来看,最有效的方法仍然是clip。具体可以参考的代码地址如下:
- [openai/CLIP](https://github.com/openai/CLIP)
- 具体采用的预训练模型文件之一参考如下:
```shell
{"ViT-B/32": "https://openaipublic.azureedge.net/clip/models/40d365715913c9da98579312b702a82c18be219cc2a73407c4526f58eba950af/ViT-B-32.pt"}
- Lawliet, 陪跑:几乎所有的论文都是用clip的,这一点可以作为选择backbone有更好效果的一种指导方向。
- 高等数学:初赛我们就在使用clip,由于初赛已经明确了视频特征提取结果,因此是在文本上用clip提取的文本信息。(这一点的使用方法没有理解到)。
- lawliet: 2022年7月29日clip开始上线了中文clip模型。
6. 伪标签使用后是否会导致训练结果leak?
- UA:伪标签确实会存在leak,这时候验证集可能存在无法作为线上预期分数的参考的问题。
- Tibur:为了评估自己的模型效果,当出现leak的时候,可以通过提交线上来查看是否自己的整体流程是有效的。
7. clip的学习率要设置成多少?
- 陪跑:bert的1/10作为参考,例如bert的学习率为1e-4,那么clip的学习率就是1e-5. 在这里需要配置分层学习率。
8. clip是否要冻结不参与微调训练?
- Tibur: 需要冻结,这里应该是指只需要做推理得到特征。
- 两面包夹芝士: 可以一起参与训练,提升是0.7个百分点。在学习率设置上是5e-6.具体的学习率设置如下参考:
```shell
-- other_learning_rate 5e-4
-- bert_learning_rate 5e-5
-- clip_learning_rate 5e-6
```
9. 哪些预训练任务是有效的?
- Tibur: ita, itm 在我这边是最有效的。这是通过初赛消融得到的结论,复赛没时间。我的双流就是图片过backbone, 文本过bert,然后两个做cross_attentiony以后直接输出.
- 陪跑:我这边clip模型最重要,双流里,算text vision的相似度可以明显上分。我们的双流就是UniVL(3个transformer 编码器) + LOUPE.在双流里用UniVL,具体操作上使用clip替代了itm任务.在双流里,是文本过tfs,图片embedding过tfs,合并起来继续tfs.相当于是三个独立的tfs.这样的模型比单流要慢一点。我使用ALBEF的模型,如果用中间分层的话会出现过拟合,而且会预训练的时候没法在微调上产生效果,暂时未�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 2022微信大数据挑战赛rank12源码+学习说明.zip
资源推荐
资源详情
资源评论
收起资源包目录
2022微信大数据挑战赛rank12源码+学习说明.zip (49个子文件)
code_20105
opensource_models
requirements.txt 215B
src
data_split.py 1KB
double_stream
swin.py 26KB
evaluate.py 1KB
util.py 4KB
main.py 14KB
pretrain.py 8KB
pretrain_ALBEF.py 14KB
model.py 13KB
extract_feature.py 5KB
swa.py 2KB
Dockerfile 0B
category_id_map.py 2KB
data_helper.py 12KB
tokenization_bert.py 25KB
VIT.py 19KB
config.py 6KB
single_and_double
evaluate.py 1KB
util.py 4KB
inference.py 8KB
category_id_map.py 2KB
data_helper.py 11KB
model_double.py 13KB
VIT.py 19KB
model_single.py 9KB
config.py 4KB
single_stream
swin.py 26KB
evaluate.py 1KB
masklm.py 4KB
util.py 4KB
main.py 9KB
pretrain.py 6KB
pretrain_ALBEF.py 9KB
model.py 7KB
extract_feature.py 6KB
swa.py 2KB
Dockerfile 674B
category_id_map.py 2KB
data_helper.py 11KB
VIT.py 19KB
config.py 5KB
data_plus.py 4KB
Summarize.jpg 4.89MB
inference.sh 47B
Dockerfile 123B
init.sh 135B
requirements.txt 2KB
train.sh 206B
README.md 18KB
共 49 条
- 1
资源评论
土豆片片
- 粉丝: 1540
- 资源: 5641
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python皮肤电信号的情绪识别算法源码+模型+PPT+详细文档+全部数据资料.zip
- 基于Python皮肤电信号的情绪识别算法源码+模型+PPT+详细文档+全部数据资料.zip
- 区块链毕业设计 基于区块链的慈善募捐平台的智能合约源码+详细文档+全部资料(高分项目).zip
- 区块链毕业设计 基于区块链的慈善募捐平台的智能合约源码+详细文档+全部资料(高分项目).zip
- 区块链毕业设计 基于区块链的慈善募捐平台的智能合约源码+详细文档+全部资料(高分项目).zip
- 免费听歌软件,支持无损音乐下载,支持收藏音乐同步
- 锐起RDV-5.0 build 6503
- ngrok-stable-windows-amd64.zip
- 狗脸检测数据集VOC+YOLO格式6154张1类别.7z
- 使用C++制作一个头像框
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功