本书涵盖了经典和现代的深度学习模型。章节分为三类:第1部分为神经网络的基础。许多传统的机器学习模型可以理解为神经网络的特殊情况。前两章的重点是理解传统机器学习和神经网络之间的关系。支持向量机、线性/逻辑回归、奇异值分解、矩阵分解和推荐系统都是神经网络的特例。本书将这些方法与特征工程方法如word2vec一起进行了研究。第2部分是神经网络的基本原理。训练和正则化的详细讨论在第3章和第4章提供。第5章和第6章介绍了径向基函数(RBF)网络和受限的玻尔兹曼机。第3部分是神经网络的高级主题:第7章和第8章讨论了循环神经网络和卷积神经网络。第9章和第10章介绍了几个高级主题,如深度强化学习、神经图像机、Kohonen自组织映射和生成对抗网络。这本书是为研究生、研究人员和实践者编写的。大量的练习和一个解决方案手册,以帮助在课堂教学。在可能的情况下,突出显示以应用程序为中心的视图,以便提供对每一类技术的实际用途的理解。
任何能通过图灵测试的人工智能都知道不应该通过这个测试。
Ian McDonald
神经网络是通过以类似人类神经元的方式处理学习模型中的计算单元来模拟人类神经系统以完成机器学习任务。神经网络的宏伟愿景是通过构建一些模拟人类神经系统计算架构的机器来创造人工智能,由于当今快的计算机的计算能力也无法企及人脑计算能力,所以这显然不是一项简单的任务。神经网络在20世纪五六十年代计算机出现后不久得到了迅速发展,Rosenblatt 的感知机算法被视作神经网络的基石,这引起了人们对人工智能前景的早期关注和兴奋。然而在这种早期的兴奋过后,神经网络对数据的渴求和计算过于密集的特性成为其大展宏图的障碍,它度过了一段令人失望的时期。终,在世纪之交,海量的可用数据以及不断增长的计算能力使得神经网络重振雄风,并在人们视线中以新的名称深度学习出现。虽然人工智能匹敌人类智能的那一天离我们还很遥远,但在图像识别、自动驾驶和博弈等特定领域,人工智能已经比肩甚至超过了人类智能。我们也很难预测人工智能将来的上限是什么。例如,二十多年前,很少有计算机视觉专家会想到会有自动化系统能够比人类更准确地执行图像分类这种直观的任务。
理论上,神经网络能够通过足够的训练数据学习任何数学函数,现在已知一些变体(如循环神经网络)是图灵完备的。图灵完备是指在给定足够的训练数据的情况下,神经网络可以拟合任何学习算法。其不足之处在于,即使是对于简单的任务,往往也需要大量的训练数据,这导致相应的训练时间也增加了(如果我们首先假设有足够的训练数据)。例如,图像识别对人类来说是一项简单的任务,但即使在高性能系统中,其训练时间也可能长达几周。此外,还有与神经网络训练的稳定性相关的实际问题,这些问题甚至在如今都还没有解决。然而,考虑到计算机的计算速度会随着时间的推移而迅速提高,而且从根本上来说,更强大的计算范式(如量子计算)也即将出现,计算问题终可能不会像想象的那样难以解决。
虽然神经网络的生物学类比是令人惊奇的,并且引发了与科幻小说的比较,但相比之下对神经网络的数学理解则更平凡。神经网络的抽象化可以被视为一种模块化的方法,使基于输入和输出之间依赖关系的计算图上的连续优化的学习算法成为可能。平心而论,这和控制理论中的传统工作没有太大区别事实上,控制理论中的一些用于优化的方法与神经网络中基本的算法惊人地相似(历史上也是如此)。然而,近年来大量的可用数据以及计算能力的提升,使得能够对这些计算图进行比以前有着更深的架构的实验。由此带来的成功改变了人们对深度学习潜力的广泛认识。
本书的章节结构如下:
1. 神经网络的基础知识:第1章讨论神经网络设计的基础知识。许多传统的机器学习模型可以理解为神经网络学习的特殊情况。理解传统机器学习和神经网络之间的关系是理解后者的步。第2章用神经网络对各种机器学习模型进行了模拟,旨在让分析者了解神经网络是如何挑战传统机器学习算法的极限的。
2. 神经网络的基本原理:第3章和第4章提供对训练挑战的更详细的叙述。第5章和第6章介绍径向基函数(RBF)网络和受限玻尔兹曼机。
3. 神经网络的进阶主题:深度学习近的很多成功是各种领域的特定架构的结果,例如循环神经网络和卷积神经网络。第7章和第8章分别讨论循环神经网络和卷积神经网络。第9章和第10章讨论一些进阶主题,如深度强化学习、神经图灵机和生成对抗网络。
我们所关注的内容中包含一些被遗忘的架构,如径向基函数网络和Kohonen自组织映射,因为它们在许多应用中具有潜力。本书是为研究生、研究人员和从业者写的。许多练习和解决方案手册都有助于课堂教学。在可能的情况下,本书突出以应用程序为中心的视角,以便让读者对该技术有所了解。
在本书中,向量或多维数据点都通过在字母上方加一条横线来表示,如X或y。向量点积用居中的点表示,比如X·Y。矩阵用不带横线的斜体大写字母表示,比如R。在本书中,对应整个训练数据集的nd矩阵代表n个d维数据,该矩阵用D表示。因此,D中的各个数据点是d维行向量。另外,每个分量代表一个数据点的向量通常是n维列向量,例如具有n个数据点作为类变量的n维列向量y。观测值yi与预测值yi的区别在于变量顶部的扬抑符。
Charu C. Aggarwal
美国纽约州约克敦海茨
译者序
前言
致谢
作者简介
第1章神经网络概论111简介1
1.2神经网络的基本架构3
1.2.1单层计算网络:感知机3
1.2.2多层神经网络13
1.2.3多层网络即计算图15
1.3利用反向传播训练神经网络16
1.4神经网络训练中的实际问题19
1.4.1过拟合问题19
1.4.2梯度消失与梯度爆炸问题22
1.4.3收敛问题22
1.4.4局部和伪22
1.4.5计算上的挑战23
1.5复合函数的能力之谜23
1.5.1非线性激活函数的重要性25
1.5.2利用深度以减少参数26
1.5.3非常规网络架构27
1.6常见网络架构28
1.6.1浅层模型模拟基础机器学习方法28
1.6.2径向基函数网络29
1.6.3受限玻尔兹曼机29
1.6.4循环神经网络30
1.6.5卷积神经网络31
1.6.6层次特征工程与预训练模型32
1.7高级主题34
1.7.1强化学习34
1.7.2分离数据存储和计算34
1.7.3生成对抗网络35
1.8两个基准35
1.8.1MNIST手写数字数据库35
1.8.2ImageNet数据库36
1.9总结37
1.10参考资料说明37
1.101视频讲座38
1.102软件资源39
1.11练习39
第2章基于浅层神经网络的机器学习41
2.1简介41
2.2二分类模型的神经架构42
2.2.1复习感知机42
2.2.2小二乘回归44
2.2.3逻辑回归47
2.2.4支持向量机49
2.3多分类模型的神经架构50
2.3.1多分类感知机51
2.3.2WestonWatkins支持向量机52
2.3.3多重逻辑回归(softmax分类器)53
2.3.4应用于多分类的分层softmax54
2.4反向传播可以用于特征选择和神经网络的可解释性54
2.5使用自编码器进行矩阵分解55
2.5.1自编码器的基本原则55
2.5.2非线性激活函数59
2.5.3深度自编码器60
2.5.4应用于离群点检测62
2.5.5当隐藏层比输入层维数高时63
2.5.6其他应用63
2.5.7推荐系统:行索引到行值的预测65
2.5.8讨论67
2.6word2vec:简单神经架构的应用67
2.6.1连续词袋的神经嵌入68
2.6.2skipgram模型的神经嵌入70
2.6.3word2vec(SGNS)是逻辑矩阵分解74
2.6.4原始skipgram模型是多项式矩阵分解76
2.7图嵌入的简单神经架构76
2.7.1处理任意数量的边78
2.7.2多项式模型78
2.7.3与DeepWalk和node2vec的联系78
2.8总结78
2.9参考资料说明79
2.10练习80
第3章深度神经网络的训练823.1简介82
3.2反向传播的详细讨论83
3.2.1计算图抽象中的反向传播83
3.2.2前来拯救的动态规划87
3.2.3使用激活后变量的反向传播88
3.2.4使用激活前变量的反向传播89
3.2.5不同激活函数的更新示例91
3.2.6以向量为中心的反向传播的解耦视图92
3.2.7多输出节点及隐藏节点下的损失函数94
3.2.8小批量随机梯度下降95
3.2.9用于解决共享权重的反向传播技巧96
3.2.10检查梯度计算的正确性97
3.3设置和初始化问题98
3.3.1调整超参数98
3.3.2特征预处理99
3.3.3初始化100
3.4梯度消失和梯度爆炸问题101
3.4.1对梯度比例影响的几何理解102
3.4.2部分解决:激活函数的选择103
3.4.3死亡神经元和脑损伤104
3.5梯度下降策略105
3.5.1学习率衰减105
3.5.2基于动量的学习106
3.5.3参数特异的学习率108
3.5.4悬崖和高阶不稳定性111
3.5.5梯度截断112
3.5.6二阶导数112
3.5.7Polyak平均118
3.5.8局部极小值和伪极小值119
3.6批归一化120
3.7加速与压缩的实用技巧123
3.7.1GPU加速123
3.7.2并行和分布式实现125
3.7.3模型压缩的算法技巧126
3.8总结128
3.9参考资料说明128
3.10练习130
第4章让深度学习器学会泛化132
4.1简介132
4.2偏差方差权衡135
4.3模型调优和评估中的泛化问题138
4.3.1用留出法和交叉验证法进行评估139
4.3.2大规模训练中的问题140
4.3.3如何检测需要收集更多的数据141
4.4基于惩罚的正则化141
4.4.1与注入噪声的联系142
4.4.2L1正则化143
4.4.3选择L1正则化还是L2正则化143
4.4.4对隐藏单元进行惩罚:学习稀疏表示144
4.5集成方法145
4.5.1装袋和下采样145
4.5.2参数模型选择和平均146
4.5.3随机连接删除146
4.5.4Dropout147
4.5.5数据扰动集成149
4.6早停149
4.7无监督预训练150
4.7.1无监督预训练的变体153
4.7.2如何进行监督预训练154
4.8继续学习与课程学习154
4.8.1继续学习155
4.8.2课程学习156
4.9共享参数156
4.10无监督应用中的正则化157
4.101基于值的惩罚:稀疏自编码器157
4.102噪声注入:去噪自编码器157
4.103基于梯度的惩罚:收缩自编码器158
4.104隐藏层概率结构:变分自编码器161
4.11总结166
4.12参考资料说明166
4.13练习168
第5章径向基函数网络169
5.1简介169
5.2RBF网络的训练171
5.2.1训练隐藏层171