内容简介:点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Jonathan Balaban编译:ronghuaiyang
点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”
作者:Jonathan Balaban
编译:ronghuaiyang
前戏
很多人说深度学习是玄学,有很多说不清道不明的东西在里面,实际上,还是有一些规律可言的,虽然不是什么放之四海而皆准的真理,但也是长期总结的一些经验教训,可以试一试,看是不是有用。
下面是我与同事和学生关于如何优化深度模型的对话、消息和讨论的摘要。如果你发现你有很有效的技巧,请分享它们!!
首先,为什么要调试模型?
卷积神经网络(CNN)等深度学习模型具有大量的参数,我们把这些叫做超参数,因为它们并没有在模型中进行优化。你可以为这些超参数搜索最优值,但是你需要大量的硬件和时间。那么,一个真正的数据科学家会满足于瞎猜这些基本参数吗?
改进模型的最佳方法之一是基于在那些对你的领域进行了深入研究的专家做的设计和结构的基础上构建你的模型。 这些专家通常能调用非常多的硬件资源。含蓄一点说,他们经常对生成的建模体系结构和基本原理进行开源。
深度学习技巧
这里有一些方法,可以使用预训练模型来减少你的拟合时间和提高你的准确性:
-
研究理想的预训练结构:了解迁移学习的好处,或浏览一些强大的CNN架构。考虑那些看起来不太合适,但是共享特征的领域。
-
使用较小的学习率: 因为预训练的权重通常比随机初始化的权重要好!你在这里的选择取决于学习环境和预训练的进展情况,在不同的epochs上检测误差,了解你离收敛有多近。
-
使用dropout: 与Ridge和LASSO正则化回归模型一样,没有一个最优的α适合所有的模型,它是一个超级参数,取决于你的具体问题,必须进行测试。从更大的变化开始,就和上面的学习率一样。
-
限制权值大小: 我们可以限制某些层的权值的最大范数(绝对值),以泛化我们的模型。
-
不要动第一层: 神经网络的第一个隐藏层倾向于捕捉通用的和可解释的特征,如形状、曲线或交互,这些特征通常与领域相关。我们通常最好是别动这些,重点优化其他的层。这可能意味着添加隐藏层,所以先着急。
-
修改输出层: 用一个新的激活函数和适合你的领域的输出大小替换模型默认值。然而,不要把自己局限于最明显的解决方案上。虽然MNIST可能看起来想要10个输出 类,但是一些数字有共同的变化,12-16个类可能会更好地解决这些变化,并提高模型性能!正如上面的提示一样,越接近输出,深度学习模型应该越来越多地进行修改
和定制。
Keras技巧
下面是如何在Minist数据集上用Keras来调整dropout并限制权重的大小:
Dropout的最佳实践:
-
使用20-50%的小的dropout比例,建议输入为20%。过低,效果不明显,过高,导致欠拟合。
-
在输入层和隐藏层上使用drop,这已经被证明可以提高深度学习的表现。
-
使用带衰减的大的学习率,大的动量。
-
限制你的权重!一个大的学习率会导致梯度爆炸。对网络权值施加约束—例如最大范数正则化(size为5)—已被证明可以改善结果。
-
使用更大的网络。当在更大的网络上使用dropout时,你可能会获得更好的性能,从而给模型提供更多学习独立表示的机会。
下面是使用MNIST在Keras中修改最后一层的例子,有14个分类:
如何冻结前五层的权重:
或者,我们可以将该层的学习率设置为零,或者使用每个参数的自适应学习算法,比如 Adadelta或Adam 。这有点复杂,这在Caffe等其他平台上可以更好地实现。
在Jupyter里可视化你的TensorBoard图
对你的模型有一个直观的认识是很重要的。如果你使用Keras,会给你提供高级的抽象,但是不允许你深入到模型的各个部分进行更深入的分析。幸运的是,下面的代码让我们可以直接用 Python 可视化我们的模型:
使用Keras可视化你的模型
绘制模型图保存成png文件:
This will plot a graph of the model and save it as a png file:
plot可以接收两个可选参数:
-
show_shapes
(默认是False) 控制了是否在图中显示输出的形状。 -
show_layer_names
(默认是True) 控制了是否在图中显示层的名字。
你也可以直接获取pydot.Graph对象,自己渲染,比如在ipython notebook中显示:
希望这些可以对你的深度学习项目有所帮助。
英文原文:
https://towardsdatascience.com/deep-learning-tips-and-tricks-1ef708ec5f53
往期精彩回顾
2、 一步一步动画图解LSTM和GRU,没有数学,包你看的明白!
3、 论文看吐了没有?做研究的同学瞧一瞧看一看啦,教你读论文:为什么读以及如何读
4、 动画图解RNN; LSTM 和 GRU,没有比这个更直观的了!
本文可以任意转载,转载时请注明作者及原文地址 。
请长按或扫描二维码关注本公众号
来,给我好看吧 !
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 揭秘:人工智能深度神经网络的4种精简调试方法
- iOS常用调试方法:断点调试
- 断点调试和日志调试之间的平衡点:函数计算调试之 Python 篇
- .NET高级调试系列-Windbg调试入门篇
- VisualStudio 通过外部调试方法快速调试库代码
- GDB 调试 Mysql 实战(二)GDB 调试打印
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python编程无师自通
[美] 科里·奥尔索夫(Cory Althoff) / 宋秉金 / 人民邮电出版社 / 2019-1-1 / 59
畅销Python编程类入门书,美国亚马逊Kindle编程类排行榜榜一。 作者从文科毕业,通过自学编程转行为专业程序员,在硅谷工作多年后成功技术创业。本书不仅教读者如何使用Python语言编程,还会介绍其他书中所忽略的、编程初学者应该了解并掌握的其他所有知识点。 本书作者是一名自学成才的程序员,经过一年的自学,掌握了编程技能并在eBay找到了一份软件工程师的工作。本书是作者结合个人经验写......一起来看看 《Python编程无师自通》 这本书的介绍吧!