总结深度学习技巧_第1页
总结深度学习技巧_第2页
总结深度学习技巧_第3页
总结深度学习技巧_第4页
总结深度学习技巧_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

深度神经网络剪枝策略

这个想法是,网络中的许多参数是多余的,对输出没有太大贡献。如果可以根据贡献值对网络中的神经元进行排名,那么就可以从网络中移除低排名的神经元,从而形成更小更快的网络。可以根据神经元权重的L1/L2均值(平均激活)、一些验证集上神经元不为零的次数以及其他方法来进行排序。获得更快/更小的网络对于在移动设备上运行深度学习网络非常重要。

修剪网络的最基本的方法是简单地放弃某些卷积滤波器。最近文章表明,这样做是相当成功的。这项工作中的神经元排名相当简单:每个滤波器的权重按照L1规范排名。在每个修剪迭代中,对所有的过滤器进行排序,在所有层中修剪m个排名最低的过滤器,重新训练和重复!

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

数据裂变!

总结深度学习技巧第3篇多年来,已经开发了许多梯度下降优化算法,他们各有其优缺点。一些最流行的方法如下:

·StochasticGradientDescent(SGD)withmomentum

·Adam

·RMSprop

·Adadelta

RMSprop,Adadelta和Adam被认为是自适应优化算法,因为它们会自动更新学习率。使用SGD时,您必须手动选择学习率和动量参数,通常会随着时间的推移而降低学习率。

在实践中,自适应优化器倾向于比SGD更快地收敛,然而,他们的最终表现通常稍差。SGD通常会达到更好的minimum,从而获得更好的最终准确性。但这可能需要比某些优化程序长得多的时间。它的性能也更依赖于强大的初始化和学习率衰减时间表,这在实践中可能非常困难。

因此,如果你需要一个优化器来快速得到结果,或者测试一个新的技术。我发现Adam

很实用,因为它对学习率并不是很敏感。如果您想要获得绝对最佳的表现,请使用SGD+Momentum,并调整学习率,衰减和动量值来使性能最优化。

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

一个基本的迁移学习通道

总结深度学习技巧第5篇“欠拟合”常常在模型学习能力较弱,而数据复杂度较高的情况出现,此时模型由于学习能力不足,无法学习到数据集中的“一般规律”,因而导致泛化能力弱。与之相反,“过拟合”常常出现在模型学习

能力过强的情况,此时的模型学习能力太强,以至于将训练集单个样本自身的特点都能捕捉到,并将其认为是“一般规律”,同样这种情况也会导致模型泛化能力下降。过拟合与欠拟合的区别在于,欠拟合在训练集和测试集上的性能都较差,而过拟合往往能完美学习训练集数据的性质,而在测试集上的性能较差。

下图(a)与图(b)分别展示了对二维数据进行拟合时过拟合与欠拟合的情况。其中蓝色虚线代表数据的真实分布,橙色圆点为训练数据,黑色实线代表模型的拟合结果。图(a)使用简单的线性模型拟合,由于模型过于简单,没有能力捕捉模型的真实分布,产生了欠拟合。图(b)使用了高次多项式模型进行拟合,由于模型过于复杂,因此对每个测试数据都能精确预测,但模型拟合的结果没有抓住数据分布的本质特征,出现了过拟合。

总结深度学习技巧第6篇前面已经说过:更多的数据=更好的表现。除了迁移学习之外,另一种快速而简单提高模型的性能的方法是数据增强。数据增强是使用原始类别标签的同时,改变数据集的原始图像以合成一些新的训练示例。例如,用于图像数据增强的常见方式包括:

·水平和/或垂直旋转翻转图像

·改变图像的亮度和颜色

·随机模糊图像

·随机从图像裁剪块

基本上,你可以进行任何改变,改变图像的外观但不改变整体内容。

10.通过集成提升模型!

在机器学习中,集成训练多个模型,然后将它们组合在一起以获得更高的性能。这个想法是在相同的数据集上对同一任务训练多个深度网络模型。然后,模型的结果可以通过投票进行组合,即具有最高票数的类胜出。

为了确保所有模型不同,可以使用随机权重初始化和随机数据增强。众所周知,由于使用了多个模型,因此集成通常比单个模型更精确,从而从不同角度完成任务。在实际应用中,尤其是竞赛中,几乎所有顶级模型都使用集合方式。

集成模型

总结深度学习技巧第7篇了解模型的外观通常是很重要的。如果使用的是Keras工具,搭建出来的模型会很抽象,并且不允许深入分析模型的各个部分。幸运的是,下面的代码可以直接用Python直观地看到构建的模型(代码太长,见原文):

以下代码将绘制模型的图形并将其保存为png文件:

plot有两个参数可供选择:

以上即为个人的全部建模经验,读者如果有不同意见或有其它优方法的话可以留言探讨。

以上为译文,由阿里云云栖社区组织翻译。

译文链接文章原标题《DeepLearningTipsandTricks》

译者:海棠,审校:Uncle_LLD。文章为简译,更为详细的内容,请查看原文。

更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区-知乎

总结深度学习技巧第8篇这不是什么大秘密,深度学习机需要大量的“燃料”,那“燃料”就是数据。拥有的标签数据越多,模型的表现就越好。更多数据产生能更好性能的想法,已经由谷歌的大规模数据集(有3亿图像)证明!为了感受数据带给深度学习模型的性能提升,在部署DeepLearning模型时,你应该不断地为其提供更多的数据和微调以继续提高其性能。Feedthebeast:如果你想提高你的模型的性能,就要提供更多的数据!

上图显示数据量的增加会得到更好的性能

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

合奏模型

总结深度学习技巧第10篇正如我们所看到的,深层网络需要大量的数据。遗憾的是,对于许多新的应用程序来说,这些数据可能很难得到并且开销很大。如果我们希望模型表现良好,可能需要数万或数十万个新的训练样例来进行训练。如果数据集不易获取,则必须全部手动收集并标记。

这就是迁移学习的起点。通过迁移学习,我们不需要太多的数据!这个想法是从一个在数百万图像上训练过的网络开始的,比如在ImageNet上预训练的ResNet。然后,我们将“重新调整ResNet模型,只重新训练最后几层。

我们将ResNet从数百万图像中学到的信息(图像特征)进行微调,以便将其应用于不同的任务。因为跨域的图像的特征信息经常是非常相似的所以这个方法是可行的,但是这些特征的分析根据应用而不同。

一个基本的迁移学习示例

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

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

总结深度学习技巧第12篇在很多情况下,都要处理不平衡的数据,特别是实际应用程序中。一个简单而实际的例子如下:训练您的深度网络以预测视频流中是否有人持有致命武器。但是在你的训练数据中,你只有50个拿着武器的人的视频和1000个没有武器的人的视频!如果你只是用这些数据来训练你的网络,那么你的模型肯定会非常偏向于预测没有人有武器!

你可以做用以下的方法来解决它:

·在损失函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论