比赛总结

虽然今天比赛还没有结束,但是我的比赛已经结束了,我很后悔没有尝试预训练。后面如果在论文实现过程中,发现新的想法一定要仔细斟酌,如果自己不能确定,可以寻求帮助,一定引起重视,多想永远不会错,但是一定考虑时间成本,做好选择。

下面给出比赛收获和总结,引以为戒,也引以为傲。

获得的收获:

  1. 完整的构建模型训练过程,包括数据预处理,数据加载,优化器设置,学习率递减(模型学习率,训练epoch学习率),基于transformers的预训练模型加载,基于多任务的loss优化(gradNorm, dtp),基于单独分类任务的loss优化(对于不同分类设置不同的权值,然后发现权值差距越大越有利于加速收敛,这个是通过数据分析发现的,然后进行的一个尝试),基于tensorboardx的可视化,构建完整的文件日志,可视化,模型保存,测试结果的项目架构。
  2. 深层次的模型预处理往往依赖于结果的反馈
  3. 多个不同任务的数据加载,往往需要更加对输入按照原始分布进行平衡
  4. 训练epoch的学习率的设置能够帮助模型更快速的收敛,这个是因为模型本身就会收敛,减小的学习率能够逐步接近最优结果。
  5. 预训练模型的学习率设置往往是因为浅层的预训练模型包含大量的预训练知识,所以对于fine-tune过程,因为数据集较小,往往更应该利用预训练模型原先的参数,深层次的预训练模型更接近下游任务,所以这个应该增加预训练的学习率,本次比赛没有尝试,但是就今天的结果来看,其实无所谓。
  6. 基于多任务的优化主要考虑一个是优化的速度,保证不同任务能够达到同一个速度,一个是量级的考虑,也就是不同任务前进的数据量往往是相同的。实际效果往往是保证速度的那个优化效果很烂。
  7. 基于单独分类的loss优化,这个是类似之前的focal loss优化,但是具体采用这个方式还是因为前面数据分析看出数据结果更多的对于在同一个结果那发生错误,其实这里就引出了数据的问题。存在两个可能:一个是数据存在大量噪音,另一个就是模型的不够,无法分清每样数据之前的差别。
  8. 基于tensorboardx的可视化系统其实已经可以看出模型的最优效果了,哎只是当时只是怀疑,我应该更加果断一点,然后尝试预训练方式,当时时间明明是够的。其实还是想到了没时间去尝试,当时不坚定,手上还会有别的方式和方向去尝试,直到所有的方式都失败了,才醒悟啊。后面如果在想法一闪而过的时候一定不能放弃尝试,考虑时间成本,然后不断分开尝试,花费时间长的方式应该提早尝试。
  9. 数据增强不一定能够提高模型的性能,往往数据增强的效果会是模型的泛化效能大大降低,使得,需要使用正则化的方法来抑制过拟合。
  10. 优化的设置包括权值设置,往往只是加速的模型的收敛过程,或者说寻找到最优点的速度和路径,但是基本不太会改变最后的模型效果。
  11. 基于bert做分类任务,如果无法改变后面微调的模型,往往不会有很好的效果,效果不会有单独bert的cls或者pool的效果更好。
  12. 模型方面:这个比赛本身限制了多个预训练模型,所以只能采用一个预训练模型,这里做过很多尝试,包括看文本蕴含任务,情感分析任务的常规方法但是其实效果真的还不如单独的bert的效果来的好,这里其实走上了另外一个方向也就是预训练模型的两种使用,一个是feature-based,另一个就是直接进行分类,我当时还在犹豫该如何决策,虽然都做了尝试,但是发现这个本身的分类任务,做feature-based的方向效果真心不如直接分类来的好。
  13. 数据预处理中,尽量数据保存一份,但是尽可能多的使用索引,保证代码的处理速度。

 

性能提升的点:

  1. baseline采用bert模型,这里采用哈工大实现的roberta-wwm-large模型,效果总体提升2个点左右。
  2. 一开始代码里面采用均匀分布,完全不考虑batch_size送入训练但是太大,预训练模型的batch_size考虑小一点,在预训练模型使用中,其实单任务还是多任务同时不改变模型性能,其实结果的上限还是模型的拟合能力,这里实现过单独任务的bert,但是发现效果一般。还有就是batch_size的积累更新问题,发现积累更新能够实现更好的梯度更新,帮助实现更快的拟合。
  3. 平衡数据输入:baseline里面采用的将按照分布采集后多出来的采集数据全都放在了tnews上面。可能改变了实际输入的部分,我对分布计算的后面小数部分进行了排列,大的进一,小的删除方式,获得更平衡的数据,tnews数据上效果提升1.5个点,总体上也就0.5左右
  4. 去除baseline中的attention层,直接采用一个全连接层,效果提升一些。
  5. 根据数据集的混淆矩阵分析,发现情感分析数据集中多数据类别都存在很多数据分错给了happnies和sadness类别,于是就尝试采用权重去更新优化的方法,但是发现模型的性能给定了,其实这种优化只是加速找到模型的最优点而已,然而发现原先的baseline中给的权重是按照类别的个数来给的,实际效果还不如去除权重,这里原因其实就是错误的类别还不如不给,权重应该根据实际的难易程度。效果提升较为明显,主要体现在:稳定给出当前最优结果,泛化效果好,效果提升0.3个点左右
  6. 尝试了数据增强的方式,但是一直过拟合,效果并没有什么体现。
  7. 尝试了对抗扰动训练方式,但是对embedding增加扰动并没有很好的改善,效果,一个可能的原因应该是增加的扰动应该添加到tokens层面

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值