《神经网络:行业诀窍》评述

深度学习神经网络的配置和训练具有挑战性。

数百篇研究论文、源代码以及学者和实践者的脑海中,散布着数十年的技巧和窍门。

神经网络:技艺诀窍》一书最初于1998年出版,并于2012年深度学习复兴前夕更新,将这些零散的技巧和窍门汇集在一本书中。它包含所有深度学习神经网络实践者都必须阅读的建议。

在这篇文章中,你将了解到《神经网络:技艺诀窍》一书,该书提供了神经网络学者和实践者关于如何最大限度地发挥模型性能的建议。

阅读本文后,你将了解:

  • 该书的写作动机。
  • 第一版和第二版的章节和主题细分。
  • 每个神经网络实践者必读章节的列表和摘要。

用我的新书《更好的深度学习》来启动你的项目,书中包含分步教程和所有示例的 Python 源代码文件

让我们开始吧。

Neural Networks - Tricks of the Trade

神经网络 – 技艺诀窍

概述

《神经网络:技艺诀窍》是关于如何从神经网络模型中获得更好性能的技术论文集。

第一版于1998年出版,包含五个部分和17章。第二版于2012年,也就是新深度学习复兴的前夕出版,增加了三个部分和13个新章节。

如果你是深度学习实践者,那么这是一本必读的书。

我拥有并参考了这两版。

动机

这本书的动机是整理实践中用于从神经网络模型中获得最佳性能的经验和理论基础的技巧、诀窍和最佳实践。

作者担心,许多有用的技巧和诀窍是该领域的默会知识,困在人们的脑海中、代码库中,或者会议论文的末尾,初学者应该了解它们。

我们相信,研究人员和实践者通过经验和口耳相传,掌握了帮助他们成功地将神经网络应用于现实世界难题的技术和启发式方法。[...]它们通常隐藏在人们的头脑中,或者空间受限的会议论文的背面。

这本书是继1996年NIPS会议上同名研讨会成功之后,尝试将这些技巧整合在一起的努力。

这本书是1996年NIPS研讨会“技艺诀窍”的延伸,该研讨会的目标是开始收集和记录这些技巧的过程。研讨会产生的兴趣促使我们扩大了收集范围,并将其汇编成这本书。

——第1页,《神经网络:技艺诀窍》,第二版,2012年。

第一版细分

该书的第一版由Genevieve Orr和Klaus-Robert Muller共同编辑,包含五个部分和17章,于20年前的1998年出版。

每个部分都包含一个有用的前言,总结了即将到来的章节内容,每个章节由该领域的一位或多位学者撰写。

第一版的细分如下:

第一部分:加速学习

  • 第1章:高效反向传播

第二部分:提高泛化能力的正则化技术

  • 第2章:提前停止——但何时?
  • 第3章:估算权重衰减参数的简单技巧
  • 第4章:在MacKay贝叶斯神经网络框架中控制超参数搜索
  • 第5章:神经网络建模中的自适应正则化
  • 第6章:大规模集成平均

第三部分:改进网络模型和算法技巧

  • 第7章:平方单元增强、彻底扩展的多层感知机
  • 第8章:多任务学习的十二个技巧
  • 第9章:解决神经网络学习的病态问题
  • 第10章:集中神经网络梯度因子
  • 第11章:避免反向传播导数中的舍入误差

第四部分:神经网络训练中的表示和结合先验知识

  • 第12章:模式识别中的变换不变性——切线距离和切线传播
  • 第13章:结合神经网络和上下文驱动搜索实现Newton上的在线手写识别
  • 第14章:神经网络分类和先验类别概率
  • 第15章:将分治法应用于大规模模式识别任务

第五部分:时间序列的技巧

  • 第16章:用神经网络预测经济:挑战与解决方案综述
  • 第17章:如何训练神经网络

这本书很贵,如果你能买到一本便宜的二手第一版,我强烈推荐。

想要通过深度学习获得更好的结果吗?

立即参加我为期7天的免费电子邮件速成课程(附示例代码)。

点击注册,同时获得该课程的免费PDF电子书版本。

第二版的补充内容

该书的第二版于2012年发布,似乎正值“深度学习”大规模推广的开端。因此,该书捕捉了当时的新技术,例如逐层预训练和受限玻尔兹曼机。

当时专注于ReLU、带有CNN的ImageNet以及大规模LSTM的使用还为时过早。

尽管如此,第二版增加了三个新部分和13个新章节。

第二版新增内容的细分如下:

第六部分:深度神经网络中的大学习

  • 第18章:随机梯度下降的技巧
  • 第19章:基于梯度的深度架构训练的实用建议
  • 第20章:使用无Hessian优化训练深度循环网络
  • 第21章:高效实现神经网络

第七部分:更好的表示:不变、解耦和可重用

  • 第22章:使用K-Means学习特征表示
  • 第23章:用于数字识别的深度大型多层感知器
  • 第24章:训练受限玻尔兹曼机的实用指南
  • 第25章:深度玻尔兹曼机和中心化技巧
  • 第26章:通过半监督嵌入进行深度学习

第八部分:识别用于预测和控制的动态系统

  • 第27章:应用回声状态网络的实用指南
  • 第28章:使用循环神经网络进行预测:12个技巧
  • 第29章:用循环神经网络解决部分可观察的强化学习问题
  • 第30章:设置神经强化控制器:10个步骤和一些技巧

必读章节

整本书都值得一读,但如果你想寻找可以立即使用的快速而有用的技巧,我不建议你阅读所有内容。

这是因为许多章节侧重于作者的个人项目,或高度专业化的方法。相反,我建议阅读四个特定章节,其中两章来自第一版,两章来自第二版。

仅凭这四章就值得购买第二版,我强烈建议您为自己、您的团队或您的办公室购买一本。

幸运的是,这些章节的预印本PDF可在网上免费获取。

推荐章节有:

让我们依次仔细研究这些章节。

高效反向传播

本章重点提供非常具体的技巧,以最大限度地利用随机梯度下降优化算法和反向传播权重更新算法。

反向传播的许多不良行为可以通过一些技巧来避免,这些技巧很少在严肃的技术出版物中披露。本文提供了其中一些技巧,并解释了它们为何有效。

——第9页,《神经网络:技艺诀窍》,第一版,1998年。

本章接下来提供了关于算法配置、输入数据准备等方面的密集且有理论支持的技巧列表。

本章内容非常密集,难以总结,尽管在末尾的“讨论与结论”部分提供了很好的建议列表,摘录如下:

——打乱样本
——通过减去均值来中心化输入变量
——将输入变量标准化为标准差为1
——如果可能,对输入变量进行去相关
——选择一个带有图1.4所示S形函数的网络
——将目标值设置在S形函数的范围内,通常为+1和-1
——按照1.16的规定将权重初始化为随机值

训练网络的优选方法应按以下方式选择:
——如果训练集很大(超过几百个样本)且冗余,并且任务是分类,则使用经过仔细调整的随机梯度,或者使用随机对角Levenberg Marquardt方法。
——如果训练集不太大,或者任务是回归,则使用共轭梯度。

——第47-48页,《神经网络:技艺诀窍》,第一版,1998年。

自本书出版以来的二十年间,应用神经网络领域取得了长足的进步(例如,关于S形激活函数的评论已不再相关),但基本原理并未改变。

本章是所有深度学习实践者的必读内容。

提前停止——但何时?

本章介绍了简单而强大的正则化方法,称为提前停止,当模型在保留验证数据集上的性能开始下降时,它将停止神经网络的训练。

验证可用于检测神经网络在监督训练期间何时开始过拟合;然后,在收敛之前停止训练以避免过拟合(“提前停止”)

——第55页,《神经网络:技艺诀窍》,第一版,1998年。

提前停止的挑战在于选择和配置用于停止训练过程的触发器,而提前停止的系统配置是本章的重点。

一般的提前停止标准描述如下:

  • GL:一旦泛化损失超过指定阈值,立即停止。
  • PQ:一旦泛化损失与进展的商超过阈值,立即停止。
  • UP:当泛化误差以条带形式增加时停止。

提供了三条建议,例如“诀窍”:

1. 使用快速停止标准,除非网络性能的小幅改进(例如4%)值得大幅增加训练时间(例如4倍)。
2. 为了最大化找到“好”解决方案的概率(而不是最大化解决方案的平均质量),使用GL标准。
3. 为了最大化解决方案的平均质量,如果网络过拟合很少,则使用PQ标准;否则使用UP标准。

——第60页,《神经网络:技艺诀窍》,第一版,1998年。

这些规则在大量的训练运行和测试问题中进行了实证分析。研究的核心发现是,对提前停止标准保持更长的耐心会导致更好的保留性能,但代价是额外的计算复杂性。

我的结论是,较慢的停止标准允许泛化能力的小幅改进(这里:平均约4%),但代价是大大增加训练时间(这里:平均约长4倍)。

——第55页,《神经网络:技艺诀窍》,第一版,1998年。

随机梯度下降技巧

本章重点详细回顾随机梯度下降优化算法以及帮助充分利用它的技巧。

本章提供了背景材料,解释了为什么当训练集很大时SGD是一个很好的学习算法,并提供了有用的建议。

——第421页,《神经网络:技艺诀窍》,第二版,2012年。

第1章:高效反向传播有很多重叠,尽管本章在过程中用框框出了技巧,但章末并未总结有用的技巧列表。

然而,它是所有神经网络实践者的必读内容。

以下是我自己总结的本章中框出的技巧,大部分直接引用自第二版:

  • 当训练时间是瓶颈时,使用随机梯度下降(批处理量=1)。
  • 随机打乱训练样本。
  • 使用预处理技术。
  • 同时监控训练成本和验证误差。
  • 使用有限差分检查梯度。
  • 用少量训练集样本试验学习率。
  • 利用训练样本的稀疏性。
  • 使用衰减学习率。
  • 尝试平均随机梯度(即该算法的一个特定变体)。

这些技巧有些没有上下文就显得言简意赅;我建议阅读本章。

基于梯度的深度架构训练的实用建议

本章重点介绍神经网络和早期深度学习模型的有效训练。

它将第1章和第29章的经典建议结合起来,但增加了对(当时)近期深度学习发展的评论,如贪婪逐层预训练、现代硬件(如GPU)、现代高效代码库(如BLAS),以及来自真实项目调整模型训练的建议,例如训练超参数的顺序。

本章旨在作为实用指南,为一些最常用的超参数提供建议,特别是在基于反向传播梯度和基于梯度的优化学习算法背景下。

——第437页,《神经网络:技艺诀窍》,第二版,2012年。

它也很长,分为六个主要部分:

  • 深度学习创新。包括贪婪逐层预训练、去噪自编码器和在线学习。
  • 梯度。包括小批量梯度下降和自动微分。
  • 超参数。包括学习率、小批量大小、epochs、动量、节点、权重正则化、活动正则化、超参数搜索和建议。
  • 调试和分析。包括监控损失以防过拟合、可视化和统计。
  • 其他建议。包括GPU硬件和高效线性代数库(如BLAS)的使用。
  • 未解决问题。包括训练深度模型的难度和自适应学习率。

内容太多,我无法总结;本章充满了配置和调整神经网络模型的有用建议。

毫无疑问,这是必读内容,并为后来在2016年出版的《深度学习》一书中的建议埋下了种子,Yoshua Bengio是该书的三位作者之一。

本章以积极乐观的基调结束。

此处总结的实践,加上可用计算能力的增加,现在允许研究人员以远远超出本书第一版时期所能达到的规模训练神经网络,帮助我们更接近人工智能。

——第473页,《神经网络:技艺诀窍》,第二版,2012年。

进一步阅读

在亚马逊购买此书

其他图书页面

推荐章节的预印本

总结

在这篇文章中,您了解了《神经网络:技艺诀窍》一书,该书提供了神经网络学者和实践者关于如何最大限度地发挥模型性能的建议。

你是否阅读过这本书的部分或全部内容?你觉得怎么样?
在下面的评论中告诉我。

今天就开发更好的深度学习模型!

Better Deep Learning

更快地训练,减少过拟合,以及集成方法

...只需几行python代码

在我的新电子书中探索如何实现
更好的深度学习

它提供关于以下主题的自学教程
权重衰减批量归一化dropout模型堆叠等等...

为你的项目带来更好的深度学习!

跳过学术理论。只看结果。

查看内容

暂无评论。

发表评论

Machine Learning Mastery 是 Guiding Tech Media 的一部分,Guiding Tech Media 是一家领先的数字媒体出版商,专注于帮助人们了解技术。访问我们的公司网站以了解更多关于我们的使命和团队的信息。