干货!深度学习七个实用技巧

深度学习已经成为解决许多具有挑战性的现实世界问题的方法。对目标检测,语音识别和语言翻译来说,这是迄今为止表现最好的方法。许多人将深度神经网络(DNNs)视为神奇的黑盒子,我们放进去一堆数据,出来的就是我们的解决方案!事实上,事情没那么简单。
在设计和应用DNN到一个特定的问题上可能会遇到很多挑战。为了达到现实世界应用所需的性能标准,对数据准备,网络设计,训练和推断等各个阶段的正确设计和执行至关重要。在这里,我将与大家分享7个实用技巧,让您的深度神经网络发挥最大作用。

1 - 数据,数据,数据

这不是一个大秘密。一直工作得很好的深度学习机器需要燃料 - 大量的燃料; 燃料是数据。我们拥有的标记数据越多,模型的表现就越好。更多的数据导致更好的性能,已经由谷歌大规模的探索3亿图像的数据集印证!
在实际应用中部署Deep Learning模型时,您应该不断地为其提供更多的数据和微调以继续提高其性能。喂饱怪兽:如果你想提高你的模型的性能,那就获得更多的数据!


不断增加的数据产生更好的性能

2 - 你应该使用哪个优化器?

多年来,已经开发了许多梯度下降优化算法,各有其优缺点。一些最流行的包括:
· 随机梯度下降(SGD)+动量方法
· Adam
· RMSprop
· Adadelta
RMSprop,Adadelta和Adam被认为是自适应优化算法,因为它们会自动更新学习速率。使用SGD时,您必须手动选择学习率和动量参数,通常会随着时间的推移而降低学习率。
在实践中,自适应优化器倾向于比SGD更快地收敛,然而,他们的最终表现通常稍差。SGD通常会达到更好的最小值,从而获得更好的最终准确性,但这可能需要比某些优化程序长得多的时间。它也更依赖于强大的初始化和学习速率衰减时间表,这在实践中可能非常困难。
因此,如果你需要一些快速的结果,或者只是想测试一个新的技术,选择自适应优化器。我发现Adam很容易使用,因为它对你选择完美的学习率并不是很敏感。如果您想获得绝对最佳的最终表现,请使用SGD + Momentum,并使用学习率,衰减和动量值来最大化表现。
两全其美的方法有木有!
它最近的研究显示,你可以做到两全其美:高速训练顶尖的性能通过切换从Adam到SGD!这个想法是,训练的早期阶段实际上是SGD对参数调整和初始化非常敏感的时候。因此,我们可以通过使用Adam来启动我们的训练,这将使您节省相当长的时间,而不必担心初始化和参数调整。那么,一旦Adam运转起来,我们可以切换到SGD +动量优化,以达到最佳性能!


Adam vs SGD表现。由于鲁棒性和自适应学习速度,Adam在一开始表现更好,而SGD最终达到更好的全局最小值。

3 - 如何处理不平衡的数据

在很多情况下,您将处理不平衡的 数据,特别是在现实世界的应用程序中。举一个简单而实际的例子:为了安全起见,您正在训练您的深度网络以预测视频流中是否有人持有致命武器。但是在你的训练数据中,你只有50个拿着武器的人的视频和1000个没有武器的人的视频!如果你只是用这些数据来训练你的网络,那么你的模型肯定会非常偏向于预测没有人有武器!
有几件事你可以做到这一点:
· 在损失函数中使用类权重:本质上,代表性不足的类在损失函数中获得更高的权重,因此对该特定类的任何错误分类将导致损失函数中的非常高的误差。
· 过度抽样:重复一些包含代表性不足的训练样例,有助于平衡分配。如果可用的数据很小,这最好。
· 欠采样:您可以简单地跳过一些包含过度表示类的训练示例。如果可用数据非常大,这最好。
· 数据增加为少数类:您可以综合创建更多的代表性不足的训练示例!例如,在前面检测致命武器的例子中,你可以改变属于具有致命武器的类别的视频的一些颜色和光照。

4 - 迁移学习

正如我们在第一个提示中所看到的,深层网络需要大量的数据。不幸的是,对于许多新的应用程序来说,这些数据可能很难并且花费很高。如果我们希望我们的模型表现良好,我们可能需要数十或数十万个新的训练样例进行训练。如果数据集不易获取,则必须全部收集并手动标记。
这就是迁移学习的起点。通过迁移学习,我们不需要太多的数据!这个想法是从一个以前在数百万图像上训练过的网络开始的,比如在ImageNet上预训练的ResNet。然后,我们将通过仅重新训练最后几个层并使其他层独立来微调ResNet模型。那样的话,我们正在将ResNet从数百万图像中学到的信息(图像特征)进行微调,以便我们可以将它应用于不同的任务。这是可能的,因为跨域的图像的特征信息通常非常相似,但是这些特征的分析可以根据应用而不同。


一个基本的迁移学习通道

5 - 快速简单的数据增强,以提高性能

我们现在说过几次:更多的数据=更好的表现。除了迁移学习之外,另一种快速而简单的方法来提高模型的性能,即数据增强。数据增强涉及通过在使用原始类别标签的同时通过改变数据集中的一些原始图像来生成合成训练示例。例如,图像数据增强的常见方式包括:
· 水平和垂直旋转或翻转图像
· 改变图像的亮度和颜色
· 随机模糊图像
· 随机从图像裁剪补丁
基本上,你可以进行任何改变,改变图像的外观,但不是整体的内容,即你可以制作一个蓝色的狗的照片,但你仍然应该能够清楚地看到,照片上是一个狗。


数据裂变!

6 - 训练模型的合奏!

在机器学习中,集合训练多个模型,然后将它们组合在一起以获得更高的性能。因此,这个想法是在相同的数据集上训练同一个任务上的多个深度网络模型。模型的结果然后可以通过投票方案来进行组合,即具有最高票数的胜出。
为了确保所有模型不同,可以使用随机权重初始化和随机数据增强。众所周知,由于使用了多个模型,因此集合通常比单个模型精确得多,因此从不同角度接近任务。在现实世界的应用中,尤其是挑战或竞争中,几乎所有顶级模型都使用合奏。


合奏模型

7 - 加快修剪

我们知道模型精度随深度而增加,但速度又如何呢?更多的图层意味着更多的参数,更多的参数意味着更多的计算,更多的内存消耗和更慢的速度。理想情况下,我们希望在提高速度的同时保持高精度。我们可以通过修剪来做到这一点。


深度神经网络修剪的步骤
这个想法是,在网络中的许多参数中,有些是多余的,对输出没有太大贡献。如果您可以根据对网络的贡献排列网络中的神经元,则可以从网络中移除低排名的神经元,从而形成更小,更快的网络。可以根据神经元权重的L1 / L2均值,平均激活,一些验证集上神经元不为零的次数以及其他创造性方法来进行排序。获得更快/更小的网络对于在移动设备上运行深度学习网络非常重要。
修剪网络的最基本的方法是简单地放弃某些卷积滤波器。在近期的一篇文章中,这样做是相当成功的。这项工作中的神经元排名相当简单:它是每个滤波器权重的L1范数。在每个修剪迭代中,他们对所有的过滤器进行排序,在全部层中修剪m个排名最低的过滤器,重新训练和重复!
在删除层的时候,具有剩余快捷连接的网络(例如ResNets)与没有使用任何快捷连接的网络(如VGG或AlexNet)相比,保留更加良好的精度并且稳健得多。这个有趣的发现具有重要的实际意义,因为它告诉我们在修剪网络进行部署和应用时,网络设计是至关重要的(使用ResNets!)。所以使用最新最好的方法总是很好的!

想要获取更多人工智能方面的资料
可以加V、、信:hcgx0904(备注“人工智能”)
点击:《深度学习&计算机视觉精讲》,开始学习吧!!!

原文地址:https://blog.51cto.com/14352303/2412565

时间: 2024-11-05 15:58:58

干货!深度学习七个实用技巧的相关文章

深度学习网络调参技巧

转自https://zhuanlan.zhihu.com/p/24720954?utm_source=zhihu&utm_medium=social 之前曾经写过一篇文章,讲了一些深度学习训练的技巧,其中包含了部分调参心得:深度学习训练心得.不过由于一般深度学习实验,相比普通机器学习任务,时间较长,因此调参技巧就显得尤为重要.同时个人实践中,又有一些新的调参心得,因此这里单独写一篇文章,谈一下自己对深度学习调参的理解,大家如果有其他技巧,也欢迎多多交流. 好的实验环境是成功的一半 由于深度学习实

深度学习-网络调参技巧

最近在做深度学习实验,跑一次实验轻则以小时计.重则以天计,实在没有那么多的时间可以等待,因此想想用尽可能少的实验次数,得到尽可能好的实验效果.这样的话,问题就可以归结为如何设计合适的网络结构.如何设计合适的训练策略,主要就是: 层数.每一层卷积核个数.卷积权重初始化方式.dropout ratio.BN.全连接层神经元个数.Relu等网络结构参数应该如何选? 学习率.decay等solver参数又该如何设置? 在参考炼丹实验室的基础上,并结合自己的体会,谈谈对调参的理解,大家如果有其他技巧,也欢

最详尽的PS色相调整最实用技巧介绍

这张图里的数字是经过我改过的,主要就是为了方便大家理解.是为了和色相调节相匹配.这里的数值相当于色相的数值.-180--0--180.和这张图的角度相对应.这张图可以看成每两个颜色之间相差60度.QANDA.REN计算机学习 干货:PS色相调整最实用技巧介绍 首先,做一个试验,新建一个图层,Ctrl+J复制图层,一般复制一下图层会比较安全,最好养成习惯.绘制三种颜色的矩形框.分别填充红色(R=255    G=0     B=0).绿色(R=0    G=255     B=0).蓝色(R=0

一天搞懂深度学习--李宏毅教程分享

原标题:[286页干货]一天搞懂深度学习(台湾资料科学年会课程) 本文是2016 台湾资料科学年会前导课程"一天搞懂深度学习"的全部讲义PPT(共268页),由台湾大学电机工程学助理教授李宏毅主讲.作者在文中分四个部分对神经网络的原理.目前存在形态以及未来的发展进行了介绍.深度学习的每一个核心概念在文中都有相关案例进行呈现,通俗易懂.一天的时间搞懂深度学习?其实并不是没有可能. 深度学习 ( Deep Learning ) 是机器学习 ( Machine Learning ) 中近年来

用深度学习(CNN RNN Attention)解决大规模文本分类问题 - 综述和实践

转自https://zhuanlan.zhihu.com/p/25928551 近来在同时做一个应用深度学习解决淘宝商品的类目预测问题的项目,恰好硕士毕业时论文题目便是文本分类问题,趁此机会总结下文本分类领域特别是应用深度学习解决文本分类的相关的思路.做法和部分实践的经验. 业务问题描述: 淘宝商品的一个典型的例子见下图,图中商品的标题是"夏装雪纺条纹短袖t恤女春半袖衣服夏天中长款大码胖mm显瘦上衣夏".淘宝网后台是通过树形的多层的类目体系管理商品的,覆盖叶子类目数量达上万个,商品量也

《CSS动画实用技巧》课程笔记

概述 这是我学习CSS动画实用技巧的课程笔记 常用动画属性--transition .change img{ display:block; width:300px; height:284px; opacity:0; -webkit-transform:translate(-100px,-100px); -webkit-transition:opacity 1s ease-in-out 0.5s,-webkit-transform 1s ease-in-out; transition: opaci

推荐系统遇上深度学习(十)--GBDT+LR融合方案实战

推荐系统遇上深度学习(十)--GBDT+LR融合方案实战 0.8012018.05.19 16:17:18字数 2068阅读 22568 推荐系统遇上深度学习系列:推荐系统遇上深度学习(一)--FM模型理论和实践:https://www.jianshu.com/p/152ae633fb00推荐系统遇上深度学习(二)--FFM模型理论和实践:https://www.jianshu.com/p/781cde3d5f3d推荐系统遇上深度学习(三)--DeepFM模型理论和实践:https://www.

7个在深度学习实用技巧

你可能不知道的7个深度学习实用技巧 原创 2018-02-09 专知内容组 专知 [导读]前几天,深度学习工程师George Seif发表了一篇博文,总结了7个深度学习的技巧,主要从提高深度学习模型的准确性和速度两个角度来分析这些小技巧.在使用深度学习的时候,我们不能仅仅把它看成一个黑盒子,因为网络设计.训练过程.数据处理等很多步骤都需要精心的设计.作者分别介绍了7个非常实用小技巧:数据量.优化器选择.处理不平衡数据.迁移学习.数据增强.多个模型集成.加快剪枝.相信掌握了这7个技巧,能让你在实际

提升深度学习模型的表现,你需要这20个技巧

提升深度学习模型的表现,你需要这20个技巧 标签: 深度学习 2016-09-24 21:28 6650人阅读 评论(0) 收藏 举报  分类: 深度学习(4)  选自machielearningmastery 机器之心编译 作者:Jason Brownlee 参与:杜夏德.陈晨.吴攀.Terrence.李亚洲 本文原文的作者 Jason Brownlee 是一位职业软件开发者,没有博士学位的他通过「从应用中学习」的方法自学了机器学习,他表示对帮助职业开发者应用机器学习来解决复杂问题很有热情,也