作者丨DOTA、永无止境、冯迁

来源丨知乎问答

编辑丨极市平台

导读

Deep learning在训练的时候往往有很多trick,不可否认这些trick也是DL成功的关键因素之一,所谓“the devil is in the details”。除了batch大小的改变以及初始化等trick,还有哪些提升performance的利器?

问答来源:https://www.zhihu.com/question/30712664

# 回答一

作者:DOTA

京东算法工程师

来源链接:https://zhuanlan.zhihu.com/p/352971645

还是蛮多的,之前总结过一次,在这里搬运一下,DOTA:大道至简:算法工程师炼丹Trick手册

https://zhuanlan.zhihu.com/p/352971645

Focal Loss

针对类别不平衡问题,用预测概率对不同类别的loss进行加权。Focal loss对CE loss增加了一个调制系数来降低容易样本的权重值,使得训练过程更加关注困难样本。

loss = -np.log(p)
loss = (1-p)^G * loss

Dropout

随机丢弃,抑制过拟合,提高模型鲁棒性。

Normalization

Batch Normalization 于2015年由 Google 提出,开 Normalization 之先河。其规范化针对单个神经元进行,利用网络训练时一个 mini-batch 的数据来计算该神经元的均值和方差,因而称为 Batch Normalization。

x = (x - x.mean()) / x.std()

relu

用极简的方式实现非线性激活,缓解梯度消失。

x = max(x, 0)

Cyclic LR

每隔一段时间重启学习率,这样在单位时间内能收敛到多个局部最小值,可以得到很多个模型做集成。

scheduler = lambda x: ((LR_INIT-LR_MIN)/2)*(np.cos(PI*(np.mod(x-1,CYCLE)/(CYCLE)))+1)+LR_MIN

With Flooding

当training loss大于一个阈值时,进行正常的梯度下降;当training loss低于阈值时,会反过来进行梯度上升,让training loss保持在一个阈值附近,让模型持续进行"random walk",并期望模型能被优化到一个平坦的损失区域,这样发现test loss进行了double decent。

flood = (loss - b).abs() + b

Group Normalization


Face book AI research(FAIR)吴育昕-恺明联合推出重磅新作Group Normalization(GN),提出使用Group Normalization 替代深度学习里程碑式的工作Batch normalization。一句话概括,Group Normbalization(GN)是一种新的深度学习归一化方式,可以替代BN。
def GroupNorm(x, gamma, beta, G, eps=1e-5):# x: input features with shape [N,C,H,W]# gamma, beta: scale and offset, with shape [1,C,1,1]# G: number of groups for GNN, C, H, W = x.shapex = tf.reshape(x, [N, G, C // G, H, W])mean, var = tf.nn.moments(x, [2, 3, 4], keep dims=True)x = (x - mean) / tf.sqrt(var + eps)x = tf.reshape(x, [N, C, H, W])return x * gamma + beta

Label Smoothing

abel smoothing将hard label转变成soft label,使网络优化更加平滑。标签平滑是用于深度神经网络(DNN)的有效正则化工具,该工具通过在均匀分布和hard标签之间应用加权平均值来生成soft标签。它通常用于减少训练DNN的过拟合问题并进一步提高分类性能。

targets = (1 - label_smooth) * targets + label_smooth / num_classes

Wasserstein GAN

  • 彻底解决GAN训练不稳定的问题,不再需要小心平衡生成器和判别器的训练程度

  • 基本解决了Collapse mode的问题,确保了生成样本的多样性训练过程中终于有一个像交叉熵、准确率这样的数值来指示

  • 训练的进程,数值越小代表GAN训练得越好,代表生成器产生的图像质量越高

  • 不需要精心设计的网络架构,最简单的多层全连接网络就可以做到以上3点。

Skip Connection

一种网络结构,提供恒等映射的能力,保证模型不会因网络变深而退化。

F(x) = F(x) + x

参考文献

  • https://www.zhihu.com/question/427088601

  • https://arxiv.org/pdf/1701.07875.pdf

  • https://zhuanlan.zhihu.com/p/25071913

  • https://www.zhihu.com/people/yuconan/posts

# 回答二

作者:永无止境

来源链接:

https://www.zhihu.com/question/30712664/answer/1341368789

在噪声较强的时候,可以考虑采用软阈值化作为激活函数:

软阈值化几乎是降噪的必备步骤,但是阈值τ该怎么设置呢?

阈值τ不能太大,否则所有的输出都是零,就没有意义了。而且,阈值不能为负。

针对这个问题,深度残差收缩网络[1][2]提供了一个思路,设计了一个特殊的子网络来自动设置:

Zhao M, Zhong S, Fu X, Tang B, Pecht M. Deep residual shrinkage networks for fault diagnosis. IEEE Transactions on Industrial Informatics. 2019 Sep 26;16(7):4681-90.

参考:

^深度残差收缩网络:从删除冗余特征的灵活度进行探讨 https://zhuanlan.zhihu.com/p/118493090

^深度残差收缩网络:一种面向强噪声数据的深度学习方法 https://zhuanlan.zhihu.com/p/115241985

# 回答三

作者:冯迁

来源链接:https://www.zhihu.com/question/30712664/answer/1816283937

赞比较多的给了些,损失函数(focal),模型结构(identity skip),训练方面(strategy on learning rate),稳定性方面(normalization),复杂泛化性(drop out),宜优化性(relu,smooth label)等,这些都可以扩展。

focal 可以扩展到centernet loss,结构有尺度fpn,重复模块,堆叠concatenate,splite,cross fusion等,训练方面有teaching,step learning,对抗(本身是个思想),多阶段优化,progress learning,稳定性方面,batch normal,instance normal,group normal之外,还有谱范数等,复杂性还有正则l1/2等,宜优化性,可以扩展到检测的anchor等。

dl你得说优化器吧,把动量,一二阶考虑进来,梯度方向和一阶动量的折中方向,把随机考虑进来sgd

以上可能带来最多10的收益,你得搞数据啊

数据方面的处理clean,various ,distribution,aug data等更重要(逃…

“理论”在收敛速度,稳定,泛化,通用,合理等方面着手,性能在数据方面着手,也许

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计源码汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

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

  1. 改善深度学习训练的trick总结 | CSDN博文精选

    扫码参与CSDN"原力计划" 作者 | ZesenChen 来源 | CSDN博客精选 在深度学习中,同样一个模型用不同的初始化,数据处理,batch size,学习率,优化器都能 ...

  2. 值得收藏的深度学习模型训练trick

    Deep learning 在训练的时候往往有很多 trick ,不可否认这些 trick 也是 DL 成功的关键因素之一,所谓 "the devil is in the details&q ...

  3. 深度学习调参trick 调参技巧

    |公|众|号| 包包算法笔记 事情的起因其实这样,实验室老同学的论文要冲分,问我有没有啥在NN上,基本都有用的刷点方法,最好是就是短小精悍,代码量不大,不需要怎么调参. 一般通用的trick都被写进论 ...

  4. 深度学习 常用的trick

    from     torchsummary  import summary summary(pytorch_model, input_size=(channels, H, W)) 打印pytorch模 ...

  5. 训练过程acc_AI 深度学习训练tricks总结(均有实验支撑)

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』转载 作者:Jones@知乎 作者丨Jones@知乎来源丨https://zhuanlan.zhihu.com/p/261999668编辑丨极市平台 ...

  6. label smooth/mixup——深度学习中的一种防止过拟合方法

    Label Smooth 在常见的多分类问题中,先经过softmax处理后进行交叉熵计算,原理很简单可以将计算loss理解为,为了使得网络对测试集预测的概率分布和其真实分布接近,常用的做法是使用one ...

  7. 深度学习各子领域略览及术语列表

    诸神缄默不语-个人CSDN博文目录 最近更新时间:2023.3.1 最早更新时间:2023.1.5 有些内容附带了相应的超链接作为可参考资料,有些没有.很多内容可以参考我的其他博文,其中有一部分链接我 ...

  8. 深度学习 CNN trick 合集

    来自 | 知乎   作者| sticky 链接 | https://zhuanlan.zhihu.com/p/137940586 编辑 | 深度学习这件小事公众号 本文仅作学术交流,如有侵权,请联系后 ...

  9. 深度学习刷SOTA有哪些trick?

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

最新文章

  1. Gemini 3D双目结构光深度相机在Android平台上深度数据噪点非常多的问题
  2. bat修改文件内容_批量获取文件名,这几招太高效了!
  3. [转载]在中文Windows环境下,控制台窗口中也可以用特殊符号拼出漂亮的表格来。...
  4. 如何零基础或者转行数据分析师?
  5. Citrix VDI-in-a-Box 第二篇:架构篇
  6. 简单获取任意app的URL Schemes
  7. 计算多个文档之间的文本相似程度
  8. This may cause things to work incorrectly. Make sure to use the same version for both.
  9. jackson json的使用
  10. 模拟游戏--艾伦·图灵的传奇人生
  11. php怎么将农历转换成公历,php实现阳历阴历互转的方法
  12. 陈欧:创业是最美好的生活方式
  13. .Net 文件名后缀的各种文件用处解释
  14. 适用于开发者的开源分布式即时通讯系统
  15. 《Python编程-从入门到实践》
  16. 链表 java 实现
  17. win10无限蓝屏_升级 Win10 后系统蓝屏或无限重启的解决方法之一
  18. C语言:*(p++)与*p++ *(++p)与*++p ++*p与++(*p) (*p)++的区别
  19. 基于6种监督学习(逻辑回归+决策树+随机森林+SVM+朴素贝叶斯+神经网络)的毒蘑菇分类
  20. canvas中如何设置渐变色

热门文章

  1. [数分提高]2014-2015-2第4教学周第2次课
  2. 我共享的资源,有四个上了首页的排行榜。
  3. CCTextFieldTTF 与 5种常用CCMenuItem
  4. 模板元编程时的参数推导类型输出
  5. (Alex note) Create a oracle database
  6. MySQL优化篇:执行计划explain中key_len计算方式
  7. 全中国一共有多少IP地址?
  8. 某大厂程序员求助:认识一个不错的小姐姐,却得知对方竟有四个兄弟姐妹!想放弃,对方却穷追不舍,怎么办?...
  9. 百度一 29 岁程序员因使用CURL命令“篡改数据”被判有期徒刑一年九个月,并没收所有违法所得
  10. 用了 10 年 Windows 后,我最终转向 Linux