目录

  • 1 相关信息
  • 2 总结
    • 2.1 TextCNN、Fasttext等DL方案
    • 2.2 机器学习LGB方案
    • 2.3 Bert方案
  • 3 继续提分点

1 相关信息

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分析

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–2 数据分析

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–3 TextCNN Fasttext 方案

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB 方案

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案

  • 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–6 提分方案

2 总结

方案思路图

感谢2021年7月的暑假遇到三个志同道合的队友:博远、禹飞、沛恒,互相鼓励,一直出谋划策一个月,最终以0.8304的成绩获得rank 10/389的成绩。

2.1 TextCNN、Fasttext等DL方案

(1)方案
拿到赛题,第一件事,就是做数据分析。可以参考【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–2 数据分析分析
了解到数据量比较小,只有5W,首先选择了TextCNN、FastText算法模型。首先选择非词向量的即词嵌入的模型去跑通baseline,然后再选择word2vec、fasttext、glove等预训练词向量去提分。这些方案最初,都只能拿到最高0.77+的分数,通过后期的数据预处理方式改变、K折交叉验证、预训练词向量调参,伪标签等提分技巧,最终达到0.807+。具体方案参考
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–3 TextCNN Fasttext方案
(2)提分点

  • 数据预处理:词性替换、去除特殊字符、数字泛化、去除多余空格、去除换行等方式,均有提升,具体查看代码实现
  • 预训练word2vec、fasttext、glove词向量,通过对比单个word2vec选择128维度,能获得最高的准确率,尝试合并三种向量的矩阵,得到3×128的词向量矩阵,但是效果并没有单个词向量的好。
    (3)注意点
  • 同样的数据,用DPCNN、TextRNN模型,效果并不佳
  • 还有HAN、LSTMwithAttention等模型都还没有尝试
  • 尝试了GCN图卷积神经网络,由于该方案中需要使用邻接矩阵,矩阵太大,显存装不下,只使用了部分的训练数据,线上就能到达0.78+的分数,实现没有这么大的显存设备,放弃了该方案。
  • 数据增强:随机替换、随机删除做的5W数据以及互译的5W数据,加上原本的5W的数据,分别测试了两种增强方式,都没有得到提升。但是在Bert上提升了一个点。

2.2 机器学习LGB方案

队友尝试了用LGB方案,实现非常简单,交叉5折交叉验证,就能达到0.79的分数,但是我们没有在该方案上进一步改进,仅作为一个基本方案,在比赛的最后的投票融合部分,使用了该模型的预测结果。具体方案可参考
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB方案

2.3 Bert方案

(1)使用Bert的辛酸
选择Bert是最后的大杀器,我们的最高得分模型就是Bert,有一个致命的缺点就是太吃显卡,费时费钱,不像TextCNN等其他DL模型,十几分钟,半个小时就能跑完。跑通“致great -闫强”大佬开源的bert Baseline方案科大讯飞学术论文分类挑战赛 0.79+ baseline
就花了三个小时,后期我们自己的模型,少则6个小时,多则20个小时,才能出结果。多次出现跑到最后,在生成提交文件的时候出bug或者中途出Bug ,前功尽弃。因为选择的K折交叉验证取每折的平均作为预测值,一旦中断,交叉验证取平均的结果将得不到。

虽然我和其中一名队友有本地服务器,但是我的显存太小,只有8G,吃显存的Bert_large 、roberta_large根本跑不动,我和其他两名队友,就选择了恒源云的云服务器3090的GPU,虽然有活动送了100块钱的代金券,但是三天就用完了,剩下的全是自己烧钱充值,5块钱一个小时的费用,打比赛没赢到钱,反而每个人砸了不少钱。

(2)Bert真香
我尝试自己去github和kaggle上选择高分Bert baseline去跑通模型,但是准确率极低,只有0.65+。一直在分析原因,直到强哥又在直播课上开源了其他方案Bert的baseline,科大讯飞NLP文本分类赛事上分利器:Bert微调技巧大全_闫强,该方案中强哥提到了很多提分技巧,包括使用差分学习率,使用bert_base、bert_large、roberta_large预训练模型、对一篇Bert微调的论文中点进行了解析。特别是包括学习率的设置,如果设置不好,会导致灾难性遗忘,这对我是一个巨大的启发。

灾难性遗忘 Catastrophic forgetting (灾难性遗忘)通常是迁移学习中的常见诟病,这意味着在学习新知识的过程中预先训练的知识会被遗忘。 因此,论文中还研究了 BERT 是否存在灾难性遗忘问题。 我们用不同的学习率对 BERT 进行了微调,发现需要较低的学习率,例如 2e-5,才能使 BERT 克服灾难性遗忘问题。 在 4e-4 的较大学习率下,训练集无法收敛。

尝试修改学习率后,模型直接提升几个点,上了0.70+,但是还是低。最终选择在强哥的第二个bert的baseline上进行迭代。
首先跑通bert_base,使用差分学习率,5折交叉2epoch,训练参数调参就能达到0.795+。

(3)继续提分

  • 队友尝试修改模型结构,在bert后面使用一层LSTM,能够提升千分点。
  • 用相同的代码,使用不同的预训练模型bert_large,roberta_large,相继获得0.7991,0.80+的结果。
  • 选择TextCNN、Fasttext、ML -LGB 、bert_base、bert_large、roberta_large的投票模型融合提高一个点。0.81+
  • 数据增强:两种方式,第一种是随机删除、随机替换方式增强5W的训练集、第二种是互译的方式,再做5W的数据。总共15W的数据,再去训练模型。单个模型能提升一个点,bert突破0.81+。
  • 利用投票的原理,选择多个模型都投票的数据去做伪标签,得到top 6000的高质量伪标签,加入训练集,重新训练所有模型,所有模型都得到了一个点的提升,又继续投票融合,线上突破0.82
  • 此时已经黔驴技穷了,只能继续反复迭代伪标签,用最高的模型又重新做伪标签得到top8000的伪标签数据,再重新训练模型,TextCNN、Fasttext单个模型都突破0.80+,bert_base、bert_large方案都突破0.81+,roberta_large模型最佳达到0.8246,再去投票融合,最终达到最高成绩,0.8304。

(4)Bert 注意点

  • Bert的数据预处理,通过对比实验,只选择小写处理和词性替换,更多更细的预处理将会是适得其反的,反而会降低模型的准确率,因为预训练的模型,当初训练时就是预训练的没有经过太细致预处理的数据。可参考【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert方案
  • Bert训练太慢了,最后选择了混合精度训练,加快近两倍的训练速度。但是在比赛最后几天才使用的。模型精度没有太大影响。省了不少时间。可参考【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–6 提分方案
  • 差分学习率搭配AdamW优化器使用很有必要,能够提高模型精度
  • 伪标签的加入,不是随便加入的,越高质量的伪标签,越能得到更好的效果。伪标签加入到训练数据后,不是继续训练,而是从零训练,这样伪标签才能发挥作用。可参考【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–6 提分方案
  • 尝试自己使用ITPT方式预训练自己的数据集,最大设置了60epoch,效果并不佳,有两方面的原因,数据集太小,训练集加上测试集只有6W的样本文本,二可能是我们做的方式不对。最终该方案放弃。
  • 尝试过将bert_base、bert_large、roberta_large三个模型使用Stacking集成,非正规的Stacking效果有0.8228,并没有投票融合效果好,为什么说非正规,是因为我将三个模型验证集的数据是vstack,而不是hstack。说都了都是泪,因为三个模型训练的时候,把验证集顺序shuffle了,不能去hstack每个样本。如果正确使用,估计能提高更多分数。

3 继续提分点

(1)TextCNN、Fasttext等模型

  • 理论上合并word2vec+fasttext+glove三个词向量的矩阵,能提高模型精度,但是本人只尝试过各128维度,并没有提升,就没有过多时间去调参。可以各取100维度,合并成300维的词向量嵌入矩阵。
  • 对抗训练:队友使用PGD对抗训练的方法得到提升,但是我测试的时候未得到提升,这是不应该的。还有FGM对抗训练,在我的实验测试并没有得到提升。我也没有进一步去分析原因。

(2)Bert模型

  • 调参:bert模型没有经过太多的调参
  • 加深训练:选择的5折,2epoch,训练完模型,都没有过拟合,但是训练时间都是十几个小时。如果有更多的时间会选择去加大epoch
  • 其他集成方法,Stacking、Bagging等方案,由于我的代码有误,在准备三个Bert模型stacking数据的时候,被shuffle了,只能去vstack三个模型的数据去做非正规的stacking,的确有提升,但是并不如投票融合的话。
  • 改进Bert结构:在其他比赛中,有些大佬,使用拼接Bert输出层的bert模型,效果显著。CCF BDCI 2019 互联网新闻情感分析 复赛top1

【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--1 赛后总结与分析相关推荐

  1. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案

    目录 1 相关信息 2 引言 3 实现 3.1 数据预处理 3.2 Bert 4 提分点技巧讲解 5 未来展望 1 相关信息 [NLP]讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分 ...

  2. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–4 机器学习LGB 方案

    1 相关信息 [NLP]讯飞英文学术论文分类挑战赛Top10开源多方案–1 赛后总结与分析 [NLP]讯飞英文学术论文分类挑战赛Top10开源多方案–2 数据分析 [NLP]讯飞英文学术论文分类挑战赛 ...

  3. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--6 提分方案

    目录 1 相关信息 2 引言 3 提分技巧及实现 3.1 数据增强 3.2 投票融合 3.2 伪标签 4 加快训练 4.1 混合精度训练 4.2 加速训练的其他技巧 4.2.1 有用到的加速策略 4. ...

  4. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--2 数据分析

    目录 相关信息 1 赛题 2 数据分析 2.1 加载数据 2.2 查看缺失值 2.3 标签分布 2.4 文本长度 2.5 标题摘要合并后字符长度 3 总结 相关信息 [NLP]讯飞英文学术论文分类挑战 ...

  5. 有哪些可助力英文学术论文写作的在线网站、工具或软件?

    说到英文学术论文写作,相信小伙伴们都有同样的困惑:不是难以下手就是好不容易憋出了万字长文,回过头来一看语法漏洞百出,真的很让人头疼!即使是科研大神也会有这样的烦恼.读了万卷文献,依旧Chinglish ...

  6. 英文学术论文写作——模式识别方向(笔记)

    文章目录 文章结构 英文写作tips Latex小技巧 英文学术论文写作经验几乎为0,在老师和师兄们的帮助下,学习到了如何撰写文章.仅限于模式识别方向的. 文章结构 文章除去abstract,ackn ...

  7. 讯飞-糖尿病遗传风险检测挑战赛

    讯飞-糖尿病遗传风险检测挑战赛 前言 相关库 一.比赛报名 1.1 赛事任务 1.2 读取数据 训练数据集 测试数据集 1.3 数据集基本信息 数据集维度 数据表基本信息 二.比赛数据分析 2.1 缺 ...

  8. 给出广义随机petri网在可靠性方面应用的英文学术论文

    在可靠性方面应用广义随机Petri网的英文学术论文有很多.您可以在Google Scholar或者IEEE Xplore等学术搜索引擎上搜索关于"generalized Stochastic ...

  9. 英文学术论文review的回复

    因为之前投稿的文章有了review,所以记录一下回复review的细节. 英文学术论文投稿后,期刊编辑人员会对文章进行审核(论文格式,论文领域等),再将文章送至领域专家进行专业性审核.审核结束后,期刊 ...

最新文章

  1. 《HTML5移动应用开发入门经典》—— 2.4 HTML5中的HTML语法变化
  2. Android利用ViewPager实现滑动广告板
  3. python基础:zip和dict详解
  4. 如何对数据库中的表以及表中的字段进行重命名
  5. php多表递归查询,使用公用表表达式的递归查询
  6. idea多行编辑_开发神器idea被玩残了,你们功不可没啊!
  7. 过半中国人是工具类 App 活跃用户,为什么变现却这么难?
  8. Linux的IO机制
  9. python转义字符_python转义字符
  10. 毕设题目:Matlab通信
  11. VS2017 CUDA编程学习1:CUDA编程两变量加法运算
  12. 腾讯云linux远程桌面连接不上去,腾讯云服务器无法远程桌面连接的解决办法
  13. supermap制作专题图并发布
  14. r语言 新增一列数字类型_R语言实战(2)——创建数据集【学习分享】
  15. python研究生导师_导师想要什么样的心理学研究生?
  16. Excel导入数据(图片处理)
  17. YOLO系列文章汇总
  18. 厚积薄发打卡Day55 :[狂神]Redis详细教程(上)<从Nosql 概述到WSL安装Redis踩坑记录>
  19. TextMeshPro创建中文字体库
  20. 打击预防电信诈骗宣传推广PPT模板

热门文章

  1. 虚拟内购服务器,苹果APP内购客户付款成功,没收到相应虚拟产品的解决办法
  2. 使用CYUSB3014实现SPIFlash读写擦除控制
  3. Olny Flashlight
  4. PMP第12章采购管理
  5. python封装举例_卷1:第14章 Python打包工具
  6. ubuntu批量压缩文件夹
  7. 从“游击队”到“正规军”:虾神成长史
  8. 【JDBC】连接MySQL数据库实现增删改查
  9. 聚观早报 | 羊了个羊幕后推手月流水曾破亿;雷军卸任小米董事长
  10. sb 讲解 (!(~+[])+{})[--[~+][+[]]*[~+[]] + ~~!+[]]+({}+[])[[~!+[]]*~+[]]