深度学习刷SOTA有哪些trick？
对深度学习而言，不论是学术研究还是落地应用都需要尽可能提升模型效果，这往往需要trick进行支撑。这些trick有的是广泛适用的（如循环学习率、BN等等），有的是任务特定的（比如cv里的数据增强，nlp里的mask，推荐里的降采样）  这些trick有的能够提升网络精度，有的能够加速收敛，有的甚至比模型提升更加显著。  在同学们各自的领域中，有哪些常遇到的、易实践的、易推广的trick呢？
一句话原则： 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 Augmentation1、噪音数据删除：（最大熵删除法、cleanlab等）2、错误标注数据修改：交叉验证训练多个模型，取模型预测结果一致且prob比threshold大的数据（或者topN）。多个模型可以采用不同的seed，不同的训练集测试机，或者不同的模型结果（bert与textcnn等），找出覆盖部分模型预测与标柱数据不一致的标注错误数据进行修改。3、数据增强同义词替换(SynonymReplacement)：从句子中随机选取n个不属于停用词集的单词，并随机选择其同义词替换它们；随机插入(RandomInsertion)：随机的找出句中某个不属于停用词集的词，并求出其随机的同义词，将该同义词插入句子的一个随机位置。重复n次；随机交换(RandomSwap)：随机的选择句中两个单词并交换它们的位置。重复n次；随机删除(Random Deletion)：以的概率，随机的移除句中的每个单词；反向翻译(back translation)：将源语言翻译成中间语言，再翻译回原语言二、ModelbackboneTransformer已经随着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）等多任务学习：增加auxiliarylosslabel smoothing: 经过了噪音数据删除、数据增强等数据精度还是差强人意的话可以考虑etc···last but notleast：AI performance = data(70%) + model(20%) +othertrick(10%)，请把时间花在最能提升模型性能的事情上面，而不是追求各种花式trick叠buff，trick只是用来景上添花，而数据以及选择的模型backbone才是最核心的景色。