对深度学习而言,不论是学术研究还是落地应用都需要尽可能提升模型效果,这往往需要trick进行支撑。这些trick有的是广泛适用的(如循环学习率、BN等等),有的是任务特定的(比如cv里的数据增强,nlp里的mask,推荐里的降采样)

这些trick有的能够提升网络精度,有的能够加速收敛,有的甚至比模型提升更加显著。

在同学们各自的领域中,有哪些常遇到的、易实践的、易推广的trick呢?

Gordon Lee(美团搜索算法实习生)回答:

抛砖引玉:

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) 效果存疑,反正我试了没啥效果,有人试过效果不错。

昆特Alex回答:

一句话原则:AI performance = data(70%) + model(CNN、RNN、Transformer、Bert、GPT 20%) + trick(loss、warmup、optimizer、attack-training etc 10%) 记住:数据决定了AI的上线,模型和trick只是去逼近这个上线,还是那句老话:garbage in, garbage out。下面具体分享在NLP领域的一些具体trick:

一、Data Augmentation

1、噪音数据删除:(最大熵删除法、cleanlab等)

2、错误标注数据修改:交叉验证训练多个模型,取模型预测结果一致且prob比threshold大的数据(或者topN)。多个模型可以采用不同的seed,不同的训练集测试机,或者不同的模型结果(bert与textcnn等),找出覆盖部分模型预测与标柱数据不一致的标注错误数据进行修改。

3、数据增强

  • 同义词替换(Synonym Replacement):从句子中随机选取n个不属于停用词集的单词,并随机选择其同义词替换它们;

  • 随机插入(Random Insertion):随机的找出句中某个不属于停用词集的词,并求出其随机的同义词,将该同义词插入句子的一个随机位置。重复n次;

  • 随机交换(Random Swap):随机的选择句中两个单词并交换它们的位置。重复n次;

  • 随机删除(Random Deletion):以 p

    p 的概率,随机的移除句中的每个单词;

  • 反向翻译(back translation):将源语言翻译成中间语言,再翻译回原语言

二、Model backbone

Transformer已经随着bert而大杀四方了,不同的预训练模型backbone有着不同的应用场景。领域数据充足且条件允许的话可以考虑用行业预料进行预训练,次之进行领域再训练,最后才考虑用公开的模型进行finetune。各个公开的backbone选择小trick如下:

  • robert_wwm_ext: 文本分类、NER等任务单句自然语言理解(NLU)任务上性能较好

  • simbert:句子相似度计算、句子对关系判断等任务上效果较好

  • GPT系列:文本翻译、文本摘要等自然语言生成(NLG)任务上性能效果较好。三、训练loss等其他trick

三、tricks

  • 样本不均衡问题:除了前面介绍的数据增强,过采样等方法外,还可以试试facalloss、loss加权等方式处理。

  • optimizer、lr、warmup、batch_size等配合的好也能能够神奇提点(比如通常batch_size较大时lr也可以同步提升)。

  • 训练trick:进行对抗训练(FGM、PGD)等

  • 多任务学习:增加auxiliary loss

  • label smoothing: 经过了噪音数据删除、数据增强等数据精度还是差强人意的话可以考虑

  • etc···

last but not least:AI performance = data(70%) + model(20%) +other trick(10%),请把时间花在最能提升模型性能的事情上面,而不是追求各种花式trick叠buff,trick只是用来景上添花,而数据以及选择的模型backbone才是最核心的景色。

回答转载自知乎,著作权归属原作者

分享

收藏

点赞

在看

深度学习刷SOTA有哪些trick?相关推荐

  1. 深度学习刷新SOTA的tricks大盘点

    源自知乎整理 回答一:李国趸 回答二:昆特Alex 一.Data Augmentation 二.Model backbone 三.tricks 回答三:战斗系牧师 首先是数据增广的tricks: 0. ...

  2. 如何步入深度学习刷榜第一重境界

    实际上笔者也没多少刷榜经验,毕竟不擅长,之前老大也没有任务指派,今年10月份得闲了个把月,没那么多事就参加了一个场景分类的比赛,链接如下,https://challenger.ai/competiti ...

  3. 2021 CV NLP CTR 多模态深度学习 超越SOTA新模型整理

    1 自监督 1.1 MAE 模型简介: Masked Autoencoders Are Scalable Vision Learners 恺明提出一种用于计算机视觉的可扩展自监督学习方案Masked ...

  4. 深度学习常见名词概念:Sota、Benchmark、Baseline、端到端模型、迁移学习等的定义

    深度学习:Sota的定义 Sota The end to end(非端到端模型) End to end(端到端模型) Benchmark.Baseline 并发.并行.串行 迁移学习 微调 进程.线程 ...

  5. 【技术综述】深度学习新手如何开始合适的“调参”任务

    言有三 毕业于中国科学院,计算机视觉方向从业者,有三工作室等创始人 作者 | 言有三 编辑 | 言有三 深度学习工程师被称为"炼丹工程师",自然是因为在日常工作中需要各种各样的调参 ...

  6. 3D重建传统算法对比深度学习,SFU谭平:更需要的是二者的融合

    点击我爱计算机视觉标星,更快获取CVML新技术 机器之心原创 作者:一鸣 近年来,深度学习在计算机视觉的重要领域--三维重建中取得了一系列成果.然而,最近有论文指出,深度学习的 3D 重建表现甚至不如 ...

  7. 化学人学python有前途吗-Java之父点赞的开源Java深度学习框架,你不学下吗?

    深度学习领域中有很多面向Python开发者的资源与教程,比如使用NumPy进行数据分析.使用MatPlotlib进行可视化等:深度学习框架方面,TensorFlow.PyTorch.MXNet等常用框 ...

  8. 点云深度学习:多一维看世界【VALSE Webinar】Panel实录

    编者按:随着深度学习技术的进展,如何通过深度学习对三维数据进行学习并提高几何处理方法的智能性成为近期研究工作的热点.三维技术的发展和应用正在受到学术界和工业界越来越多的关注.VALSE Webinar ...

  9. Java开发者动手学习深度学习开篇

    什么是机器学习,什么是深度学习? 机器学习是一个通过利用统计学知识,将数据输入到计算机中进行训练并完成特定目标任务的过程.这种归纳学习的方法可以让计算机学习一些特征并进行一系列复杂的任务,比如识别照片 ...

最新文章

  1. 汪劲:生命系统中的非平衡物理学
  2. python slenium 中CSS定位
  3. C++继承和派生简明教程
  4. 【mathematical statistics】3 interval estimate
  5. Docker Flie
  6. os如何读取图片_CV:基于face库利用cv2调用摄像头根据人脸图片实现找人
  7. html JS实现下拉菜单,vue.js怎么实现下拉框
  8. 为Ubuntu安装中文语言包
  9. windows10 右下角任务栏 隐藏图标
  10. kirin710f是什么处理器_华为kirin710f处理器相当于骁龙几
  11. win7音量图标不见了 点显示它图标和通知 提示但前未处于活动
  12. 关闭防火墙之后docker要重启,不要问,问就是坑
  13. Linux命令——ln命令
  14. net::ERR_CONNECTION_REFUSED解决办法
  15. 基于预训练模型 ERNIE 实现语义匹配
  16. 上海大学计算机学院团委,【CES·活动】上海大学计算机学院首届“校友杯”羽毛球赛圆满落幕...
  17. 计算机所有服务都无法启动,依赖服务或组无法启动,详细教您这样解决依赖服务或组无法启动...
  18. 非法出售公民信息入罪标准确定 保护信息安全互金行业仍需砥砺前行
  19. Oracle11gR2安装
  20. 服务器渲染技术-Thymeleaf

热门文章

  1. 《Java黑皮书基础篇第10版》 第10章【习题】
  2. SpringBoot笔记(一)核心内容
  3. SIGINT、SIGKILL、SIGTERM 信号区别
  4. hudson.security.AccessDeniedException2: anonymous is missing the Overall/Read permission
  5. 美联储的传统的货币政策工具
  6. Allocation of 179437568 exceeds 10% of free system memory.
  7. Palm Web OS 简介
  8. 小福利,巧用excel的if函数制作乘法口诀表以及if函数嵌套使用
  9. 飞机大战游戏---Pygame
  10. 林铭:10.20今日黄金走势分析操作布局美元止损下跌支撑金价