【干货】30+深度学习最佳实践经验:从数据、算法、训练到网络结构

【导读】Nishant Gaurav分享了他的一些深度学习最佳实践经验,如何准备数据集,如何设置和调整学习率,以及如何训练模型,和针对不同场景和问题设置不同的网络结构等等,这些都是在深度学习实践中非常重要的经验,这篇文章带你了解其中的部分细节,希望大家关注和收藏。后续专知小组准备开设专栏手把手指导大家搭建深度学习模型以及框架实践,敬请关注。

编译 | 专知

参与 | Yukun, Huaiwen

数据集篇(Data Set)



1. 物尽其用,哪怕再小的数据集都包含知识,见https://youtu.be/Th_ckFbc6bI?t=3503

2. 某些比赛的排行榜并不能真实反应模型的性能,见https://youtu.be/sHcLkfRrgoQ?t=2739

3. 深入理解数据集。如果你不能保证你能很好的处理异常值,那就把它删了。 见https://youtu.be/sHcLkfRrgoQ?t=2898

4. 跟进训练步骤:仔细分析不正确的分类样例,你会发现你的训练步骤中出现的问题,比如数据集的裁剪导致图像大部分被错误分类。见:https://youtu.be/IPBSB1HLNLo?t=1674

5. 数据增广:我们可以使用数据增广来扩大数据集,但是增广的多了也不是好事,需要有个度,见https://youtu.be/9C06ZPF8Uuc?t=1408

6. 测试时间增广(TTA):增加准确度https://youtu.be/JNxcznsrRb8?t=3669

7. 数据集里的缺失值有时候非常影响结果,所以思考如何处理它们总是很重要。

学习率篇(Learning Rate)



1. 使用学习率查找器来找学习率,选择能令损失函数陡峭收敛的学习率,而不是能使收敛概率最大的学习率见https://youtu.be/JNxcznsrRb8?t=1320

2. 在某些数据集(如imagenet)上使用预训练模型时,如果将该模型用于任何新数据集,则需要使用不同的学习率。初始层需要较小的学习率,而较深层需要相对较大的学习率。当新数据集与原始数据集相似时(例如,猫vs狗类似于imagenet),权重的比率可以适当调高. 见https://youtu.be/9C06ZPF8Uuc?t=5858

3. 余弦退火(Cosine annealing),现在Pytorch中默认支持见https://youtu.be/JNxcznsrRb8?t=2291

4. SGD重启

5. 为了解决梯度爆炸,可以用单位矩阵来初始化,这样也允许采用更高的学习率。见

https://youtu.be/sHcLkfRrgoQ?t=7780

训练篇(Training)



1. 让你使用很深的网络的预训练模型,如Resnet50的pre-train, 而你的数据集和Resnet50的数据集很相似,那么你可以考虑将部分预训练参数冻结起来,不再更新,PyTorch里的bn_freeze能提供很好的帮助,见https://youtu.be/9C06ZPF8Uuc?t=1109

2. 如果你的数据集和Pre-trainmodel的数据集不相似时,可以先冻结全部参数,然后从较小尺寸,比如64x64开始慢慢解冻和训练,然后扩大到更大的尺度比如128x128和256x256,见https://youtu.be/9C06ZPF8Uuc?t=5898

3. Kaiming He初始化,何凯明提出的一种初始化方法,Pytorch默认实现了这个功能。https://youtu.be/J99NV9Cr75I?t=2844

4. Adam Optimizer有一个更好的版本叫做AdamW

激活函数篇(Activation functions)



1. 理论上softmax和logoftmax是相互缩放的版本,根据经验来看logoftmax更好。

2. 多标签分类应该用sigmoid而不是softmax。

3. 当你知道输出的最小值和最大值时,应用sigmoid可以降低神经网络参数,并且训练速度更快,见https://youtu.be/J99NV9Cr75I?t=4101,就像你知道输出是概率然后使用softmax一样,见https://youtu.be/9C06ZPF8Uuc?t=4498。

4. 在隐层之间的权重矩阵激活函数建议使用tanh, 见https://youtu.be/sHcLkfRrgoQ?t=6237。

网络结构篇(Architectures)



1. 对于NLP任务,必须在Adam Optimizer中使用稍微不同的beta参数。见1. https://youtu.be/gbceqO8PpBg?t=7175。

2. 对于NLP任务,我们在某些LSTM模型中使用了不同的dropout。这些dropout必须具有一定的比例。见https://youtu.be/gbceqO8PpBg?t=7206。

3. 对于NLP任务,我们也可以使用梯度阶段。见https://youtu.be/gbceqO8PpBg?t=7316。

4. 所有的NLP模型都需要正则化,见https://youtu.be/gbceqO8PpBg?t=7262。

5. 对于梯度爆炸,可以使用GRU 替代原本的RNN cell。

6. 在情绪分析中,迁移学习的表现优于状态分析模型。https://youtu.be/gbceqO8PpBg?t=77387.

7. Stride 2卷积与Max Pool具有相同的效果。

8. Batch normalization使我们能够设计更具弹性的深层网络,并且学习率可以提高。它类似于dropout,用法上也和dropout一样,只在训练环境下使用。见https://youtu.be/H3g26EVADgY?t=5732

9. 在relU之后做Batch normalization效果最好。

10. Adaptive Average pooling和Adaptive Max Pooling的连接起来效果会更好。见https://youtu.be/H3g26EVADgY?t=7611。

原文链接:

http://forums.fast.ai/t/30-best-practices/12344

更多教程资料请访问:人工智能知识资料全集

-END-

专 · 知

原文发布于微信公众号 - 专知(Quan_Zhuanzhi)

原文发表时间:2018-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

Google AI提新型神经网络,对神经元进行高精度自动重建

7 月 16 日, Google AI 发布了一篇博客称,Google Research 部门和 Max Planck 研究所合作提出了一种新型的递归神经网络,...

993
来自专栏新智元

【干货】ImageNet 历届冠军最新评析:哪个深度学习模型最适合你?

【新智元导读】ImageNet 图像分类竞赛极大地推动了深度学习在计算机视觉领域的应用,《深度神经网络模型分析在实践中的应用》这篇论文从精确度、内存占用、参数、...

5255
来自专栏机器之心

当前训练神经网络最快的方式:AdamW优化算法+超级收敛

Adam 优化器之旅可以说是过山车(roller-coaster)式的。该优化器于 2014 年推出,本质上是一个出于直觉的简单想法:既然我们明确地知道某些参数...

1402
来自专栏AI科技评论

直播 | 如何让对抗网络GAN生成更高质量的文本?LeakGAN现身说法:“对抗中,你可能需要一个间谍!”(今晚8点直播)

AI科技评论按:自生成式对抗性网络 GANs 出现以来,它和它的变体已经无数次在图像生成任务中证明了自己的有效性,也不断地吸引着越来越多的研究人员加入到提高GA...

4309
来自专栏机器之心

教程 | 通过可视化隐藏表示,更好地理解神经网络

将神经网络可视化是非常有趣的。对于监督学习而言,神经网络的训练过程可以看做是学习如何将一组输入数据点转换为可由线性分类器进行分类的表示。本文我想利用这些(隐藏)...

761
来自专栏加米谷大数据

大数据系统架构实践线下活动精彩回顾

2018年3月22日晚,加米谷大数据第三期大数据系统架构实践线下实战分享会结束啦!

3679
来自专栏AI研习社

CVPR 2017精彩论文解读:综合使用多形态核磁共振数据的3D生物医学图像分割方法 | 分享总结

论文的故事还在继续 相对于 CVPR 2017收录的共783篇论文,即便雷锋网(公众号:雷锋网) AI 科技评论近期挑选报道的获奖论文、业界大公司论文等等是...

4237
来自专栏专知

【NLP】十分钟快览自然语言处理学习总结

摘要:近来自然语言处理行业发展朝气蓬勃,市场应用广泛。笔者学习以来写了不少文章,文章深度层次不一,今天因为某种需要,将文章全部看了一遍做个整理,也可以称之为概述...

4587
来自专栏量子位

以为GAN只能“炮制假图”?它还有这7种另类用途

最近,AI方案设计师Alexandor Honchar在Medium网站上分享一篇文章。他认为生成对抗网络(GAN)目前在生成图像取得了巨大进展,生成的图像几乎...

1232
来自专栏新智元

【榜单】GitHub 最受欢迎深度学习应用项目 Top 16(持续更新)

【新智元导读】新智元不久前盘点了2016年 Top50 的深度学习库,本文则根据 GitHub里星标(Star)数多少,整理了排名前16的深度学习应用项目,从风...

5069

扫码关注云+社区

领取腾讯云代金券