作者:Gordon Lee
https://www.zhihu.com/question/540433389/answer/2549775065
1.R-Drop:两次前向+KL loss约束
2. MLM: 在领域语料上用mlm进一步预训练 (Post-training)
3. EFL: 少样本下,把分类问题转为匹配问题,把输入构造为NSP任务形式.
4. 混合精度fp16: 加快训练速度,提高训练精度
5. 多卡ddp训练的时候,用到梯度累积时,可以使用no_sync减少不必要的梯度同步,加快速度
6. 对于验证集或者测试集特别大的情况,可以尝试多卡inference,需要用的就是dist.all_gather,对于非张量的话也可以用all_gather_object
7. PET: 少样本下,把分类转为mask位置预测,并构造verbalizer,参考EACL2021. PET
8. ArcFaceLoss:双塔句子匹配的loss把NT-Xent loss改成arccos的形式,参考ACL2022. ArcCSE
9. 数据增强在zero shot x-lingual transfer:code switch,machine translation..记得最后加一致性loss,参考consistency regularization for cross lingual finetuning
10. SimCSE:继续在领域语料上做simcse的预训练
11. Focal loss: 不平衡的处理
12. 双塔迟交互:maxsim操作:query和doc的每个token表征算相似度,取最大相似度再求和。速度和精度都有一个很好的平衡,参考colbert
13. 持续学习减轻遗忘:EWC方法+一个很强的预训练模型效果很不错。就是加一个正则让重要参数遗忘不太多,重要性用fisher信息度量。
14. 对抗训练:FGM,PGD,能提点,就是训练慢,
15. memory bank增大bsz,虽然我感觉有时候有点鸡肋
16. PolyLoss: -logpt + eps * (1-pt) 效果存疑,反正我试了没啥效果,有人试过效果不错
数据也是有章法的,不是什么数据都标,基本上的步骤流程都是分析模型bad case的规律,然后找类似的数据来标注。这个过程的最终结果是选了对于当前模型状态来说,最有价值的一批数据来进行标注,本质上其实就是进行人肉的主动学习
标签:loss,训练,参考,SOTA,lingual,trick,深度,语料 From: https://www.cnblogs.com/dwletsgo/p/17588461.html