极市导读
盘点了一些在深度学习中常用的、好用的提升模型效果的trick,建议收藏! >>加入极市CV技术交流群,走在计算机视觉的最前沿
# 回答一
作者:战斗系牧师
来源链接:https://www.zhihu.com/question/540433389/answer/2551517886
首先是数据增广的tricks:
然后是使用在模型训练的技巧!
训练过程中的优化器调节方法
测试常用技能
总结
# 回答二
作者:李国趸
浙江大学硕士生
来源链接:https://www.zhihu.com/question/540433389/answer/2549775065
抛砖引玉:
-
R-Drop:两次前向+KL loss约束
-
MLM: 在领域语料上用mlm进一步预训练 (Post-training)
-
EFL: 少样本下,把分类问题转为匹配问题,把输入构造为NSP任务形式.
-
混合精度fp16: 加快训练速度,提高训练精度
-
多卡ddp训练的时候,用到梯度累积时,可以使用no_sync减少不必要的梯度同步,加快速度
-
对于验证集或者测试集特别大的情况,可以尝试多卡inference,需要用的就是dist.all_gather,对于非张量的话也可以用all_gather_object
-
PET: 少样本下,把分类转为mask位置预测,并构造verbalizer,参考EACL2021. PET
-
ArcFaceLoss:双塔句子匹配的loss把NT-Xent loss改成arccos的形式,参考ACL2022. ArcCSE
-
数据增强在zero shot x-lingual transfer:code switch,machine translation..记得最后加一致性loss,参考consistency regularization for cross lingual finetuning
-
SimCSE:继续在领域语料上做simcse的预训练
-
Focal loss: 不平衡的处理
-
双塔迟交互:maxsim操作:query和doc的每个token表征算相似度,取最大相似度再求和。速度和精度都有一个很好的平衡,参考colbert
-
持续学习减轻遗忘:EWC方法+一个很强的预训练模型效果很不错。就是加一个正则让重要参数遗忘不太多,重要性用fisher信息度量。
-
对抗训练:FGM,PGD,能提点,就是训练慢,
-
memory bank增大bsz,虽然我感觉有时候有点鸡肋
-
PolyLoss: -logpt + eps * (1-pt) 效果存疑,反正我试了没啥效果,有人试过效果不错
# 回答三
作者:OpenMMLab
来源链接:https://www.zhihu.com/question/540433389/answer/2629056736
对于图像分类任务,让我们以 Swin-Transformer 中使用到的 trick 为例,简单梳理一下目前深度学习中常用的一些 trick:
1. Stochastic Depth
这一方法最早在 Deep Networks with Stochastic Depth 一文中被提出,原文中被称为 stochastic depth。在 EfficientNet 的实现中被 Google 称为 drop connect。因为和 DropConnect 撞名,在 timm 的实现中又被改名为 drop path(但是这个名字也和 DropPath 撞名了,尴尬)。因此大家听到这几个名词的时候最好注意区分一下到底是哪个。
stochastic depth 类似于 dropout,但又有所不同。简单来说 dropout 在训练时随机地抛弃了一部分激活值,而 stochastic depth 则直接抛弃了一部分样本,即将这些样本的值设为零。因此这一方法一般只能放在残差结构中,将网络输出中的一部分样本直接抛弃,再与 shortcut 相加,从而实现部分样本 “跳过” 这一残差结构的效果。
通过跳过部分残差结构,实际上起到了多种深度网络组合的效果,类似集成学习,从而提高网络的性能。
2. Mixup & CutMix
二者都是图像混合增强手段,即在训练时,我们将两个样本按照某种方式进行混合,并相应地混合它们的标签。其中 Mixup 和 CutMix 的区别就在于按照什么方式对图像进行混合。
这种图像混合增强的目的是使图像经过神经网络映射后嵌入的低维流形变得平滑,从而提高网络的泛化能力。关于图像混合增强手段的详细介绍参见 https://zhuanlan.zhihu.com/p/436238223
3.RandAugment
这是一种组合数据增强手段,相比传统数据增强的随机裁剪、随机翻转,这种方法设置了一个包含各种数据增强变换的集合,并对每个样本随机应用其中若干个增强,大大扩展了增强后的图像空间。
关于 RandAugment 的详细介绍参见 https://zhuanlan.zhihu.com/p/436238223
4. RandomErasing
这一方法出自 Random Erasing Data Augmentation,其核心思想十分简单,随机选择并填充图像中的一块区域。它模拟了实际任务中需要识别的目标可能被物体遮挡的情况,从而提高模型的泛化能力。
5. CosineAnnealingLR
Cosine 学习率衰减,在近期的图像分类任务中是最主流的学习率衰减方法。大家都知道衰减学习率可能让网络在前期以较高的学习率帮助网络找到最优解,在后期以较低的学习率使网络最终收敛于最优解。虽然现在的优化器,如 Adam 拥有参数自适应学习率的能力,但通过衰减学习率限制优化器的优化步幅往往仍然是必要的。
而 cosine 学习率衰减提供了一种平滑的学习率衰减曲线,其公式如下:

6. Weight decay
Weight decay 是一种正则化方法,它通过将网络参数的 L2 范数加入 loss 的一部分,限制了网络中部分参数的范围。过大的个别参数可能会导致网络仅依赖这些参数,从而使网络 “变窄”,影响其泛化能力。

公众号后台回复“数据集”获取200+数据集资源汇总
技术干货:损失函数技术总结及Pytorch使用示例|深度学习有哪些trick?|目标检测正负样本区分策略和平衡策略总结
实操教程:GPU多卡并行训练总结(以pytorch为例)|CUDA WarpReduce 学习笔记|卷积神经网络压缩方法总结
# 极市原创作者激励计划 #
极市平台深耕CV开发者领域近5年,拥有一大批优质CV开发者受众,覆盖微信、知乎、B站、微博等多个渠道。通过极市平台,您的文章的观点和看法能分享至更多CV开发者,既能体现文章的价值,又能让文章在视觉圈内得到更大程度上的推广,并且极市还将给予优质的作者可观的稿酬!
我们欢迎领域内的各位来进行投稿或者是宣传自己/团队的工作,让知识成为最为流通的干货!
对于优质内容开发者,极市可推荐至国内优秀出版社合作出书,同时为开发者引荐行业大牛,组织个人分享交流会,推荐名企就业机会等。
“
点击阅读原文进入CV社区
收获更多技术干货

