社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

深度学习刷 SOTA 有哪些 trick?

AI有道 • 2 年前 • 374 次点击  
来源丨知乎
编辑丨极市平台
本文仅作为学术分享,侵删

对深度学习而言,不论是学术研究还是落地应用都需要尽可能提升模型效果,这往往需要trick进行支撑。这些trick有的是广泛适用的(如循环学习率、BN等等),有的是任务特定的(比如cv里的数据增强,nlp里的mask,推荐里的降采样)这些trick有的能够提升网络精度,有的能够加速收敛,有的甚至比模型提升更加显著。在同学们各自的领域中,有哪些常遇到的、易实践的、易推广的trick呢?

作者:昆特Alex
https://www.zhihu.com/question/540433389/answer/2576569581
来源:知乎

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

一、Data Augmentation


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

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

3、数据增强

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

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

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

  • 随机删除(Random Deletion):以 p的概率,随机的移除句中的每个单词;

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


二、Model backbone

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

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

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

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


三、训练loss等其他trick 

  • 样本不均衡问题:除了前面介绍的数据增强,过采样等方法外,还可以试试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才是最核心的景色。

作者:Gordon Lee
https://www.zhihu.com/question/540433389/answer/2549775065
来源:知乎

抛砖引玉(卑微求一个秋招内推求私信):

1. R-Drop:两次前向+KL loss约束

2. MLM: 在领域语料上用ml进一步预训练 (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增大bs,虽然我感觉有时候有点鸡肋

16. PolyLoss: -logpt + eps * (1-pt) 效果存疑,反正我试了没啥效果,有人试过效果不错

作者:Gordon Lee
https://www.zhihu.com/question/540433389/answer/2549775065
来源:知乎

抛砖引玉(卑微求一个秋招内推求私信):

1. R-Drop:两次前向+KL loss约束

2. MLM: 在领域语料上用 ml进一步预训练 (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增大bs,虽然我感觉有时候有点鸡肋

16. PolyLoss: -logpt + eps * (1-pt) 效果存疑,反正我试了没啥效果,有人试过效果不错



推荐阅读

(点击标题可跳转阅读)

《机器学习 100 天》视频讲解

公众号历史文章精选

我的深度学习入门路线


重磅

AI有道年度技术文章电子版PDF来啦!



扫描下方二维码,添加 AI有道小助手微信,可申请入群,并获得2020完整技术文章合集PDF(一定要备注:入群 + 地点 + 学校/公司。例如:入群+上海+复旦。 


长按扫码,申请入群

(添加人数较多,请耐心等待)



感谢你的分享,点赞,在看三   

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/138898
 
374 次点击