【导读】一份深度学习精髓宝典。
作者 | Jeff Macaluso
编译 | Xiaowen
当我第一次在研究生院学习神经网络的时候,我问我的教授是否有选择架构和超参数的经验法则。我期望他的回答是“嗯,有点,但不是真的”……毕竟,神经网络比其他机器学习算法有更多的选择!当我阅读 Ian Goodfellow, Yoshua Bengio, 和 Aaaron Courville的深度学习书时,我一直在思考这个问题,并决定在这本书中列出一份规则清单。事实证明,它们有很多……主要是因为它们可以完成很多类型的神经网络和任务。
https://jeffmacaluso.github.io/post/DeepLearningRulesOfThumb/
有趣的是,许多这些经验法则并没有得到很好的确立-深度学习仍然是一个相对较新的活跃研究领域,所以下面列出的很多规则只是研究人员最近发现的。除此之外,这本书中还有很多领域,作者要么说(用更多的学术术语)“我们不知道这是为什么,但我们可以看到这是真的”或者“我们知道这不是最好的方法,但这是一个活跃的研究领域,我们目前还不知道更好的方法“。
下面是我在阅读深度学习过程中所做的更实际的笔记。
TL:DR
如果可能的话,使用迁移学习。如果没有,并且要处理一个已经被广泛研究过的问题,那么从复制架构开始。
网络体系结构最终应该通过实验来决定,并由验证误差来决定。更深(更多层more layers)、更薄(smaller layers)的网络更难优化,但往往会产生更好的泛化误差。
总是要early stopping
两种早期停止方法
在整个数据集上使用新的参数重新训练模型,在早期停止点达到与前一个模型相同的训练步骤时停止。
保持在早期停止时获得的参数,继续使用所有数据进行训练,当平均训练误差降到前一个早期停止点的训练误差以下时停止训练。
使用Dropout可能是个好主意
输入层用0.8的概率,隐藏层用0.5。
Dropout可能需要更大的网络,需要与更多的迭代训练。
ReLUs是理想的激活函数。当然它们还是存在缺陷,因此使用leaky或noisy ReLUs 可以获得性能增益,而代价是需要调整更多的参数。
要获得可接受的性能,每个类别至少需要5,000次观察。
如果你的观察量少于10万,使用k折交叉验证代替训练/验证/测试分割。
使用GPU内存所能处理的批处理大小
尝试不同的批次大小,每次增加2倍,从32开始(或者在大网络里先用16开始),增加到256。
具有动量和衰减学习率的随机梯度下降是一种较好的优化算法。
……
……
…………还有很多很多……还有19页PDF…………翻译不完了……这段话老板千万别看见……
查看完整内容:
请关注专知公众号(扫一扫最下面专知二维码,或者点击上方蓝色专知)
后台回复“TLDR” 就可以获取花书深度学习笔记的下载链接~
专知2019年1月将开设一门《深度学习:算法到实战》讲述相关深度学习基础与前沿技术及实战,欢迎报名!
专知开课啦!《深度学习: 算法到实战》, 中科院博士为你讲授!
-END-
专 · 知
请加专知小助手微信(扫一扫如下二维码添加),咨询《深度学习:算法到实战》参团限时优惠报名~
欢迎微信扫一扫加入专知人工智能知识星球群,获取专业知识教程视频资料和与专家交流咨询!
请PC登录www.zhuanzhi.ai或者点击阅读原文,注册登录专知,获取更多AI知识资料!
点击“阅读原文”,了解报名专知《深度学习:算法到实战》课程