深度学习有哪些trick?提升performance的利器有哪些?

导读
deep learning在训练的时候往往有很多trick,不可否认这些trick也是dl成功的关键因素之一,所谓“the devil is in the details”。除了batch大小的改变以及初始化等trick,还有哪些提升performance的利器?
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 gn n, c, h, w = x.shape x = 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等更重要(逃…
“理论”在收敛速度,稳定,泛化,通用,合理等方面着手,性能在数据方面着手,也许


电动车电池产业格局生变,特斯拉在华建厂更是加剧
Vitis HLS工具简介及设计流程
嵌入式系统学什么
回顾电机行业的里程碑事件
电力运维云平台
深度学习有哪些trick?提升performance的利器有哪些?
行业分享:光伏行业如何利用视觉检测系统降本增效?
台积电继续斥巨资采购芯片加工设备
高能效智能电表电源方案
华为进军全球PC市场,惠普联想地位不保?
安森美半导体推出基于FNB81060T3智能功率模块的家电运动控制解决方案
臭氧检测仪的工作原理及使用方法
镜子也能当显示屏吗,这款智能魔镜它做到了
电子产品整机结构设计的内容/遵循原则/顺序及要求
民爆光电正式登陆创业板上市
Verizon计划在2020年部署全国性的低频5G网络
安科瑞电气智能仪表在新能源储能行业方案
扫地机器人的工作原理详解
空气开关的接线和安装步骤
基于MK7A23P混合脉宽音量调节警报器设计