实战深度学习算法:零起点通关神经网络模型(基于Python和NumPy实现)
  • 推荐1
  • 收藏6
  • 浏览2.8K

实战深度学习算法:零起点通关神经网络模型(基于Python和NumPy实现)

徐彬 (作者)  孙学瑛 (责任编辑)

  • 书  号:978-7-121-37171-4
  • 出版日期:2019-09-01
  • 页  数:224
  • 开  本:16(170*240)
  • 出版状态:上市销售
  • 维护人:孙学瑛
深度学习是机器学习的重要分支。本书系统地介绍了如何用 Python 和 NumPy 一步步地实现深度学习的基础模型,无须借助 TensorFlow、PyTorch 等深度学习框架,帮助读者更好地理解底层算法的脉络,进而进行模型的定制、优化和改进。全书由简到难地讲述感知机模型、多分类神经网络、深层全连接网络、卷积神经网络、批量规范化方法、循环神经网络、长短时记忆网络、双向结构的 BiGRU 模型等神经网络模型的必要算法推导、实现及其实例,读者可直接动手调试和观察整个训练过程,进一步理解模型及其算法原理。

本书适合没有深度学习基础,希望进入此领域的在校学生、研究者阅读,也适合有一定基础但不满足于“调包”和“调参”的工程师学习,还可供想要深入了解底层算法的研究人员参考阅读。
深度学习经典入门教程!不借助框架,用Python从头创建深度学习模型,带你闯关的算法书。
徐彬,重庆大学计算机科学系学士、BI挪威商学院硕士。曾任中国工商银行软件工程师、平安银行应用架构专家、银行间市场清算所创新衍生品及利率产品项目群负责人。 研究方向包括信贷及清算风险管控、复杂项目群管理,机器学习在特定场景的应用。

  以深度学习为代表的人工智能技术深刻地影响着我们的生活方式,从图像识别、语音识别、机器翻译到智能医诊、自动驾驶、智能风控……在多个应用领域不断地刷新纪录。
  深度学习近年来之所以能取得颠覆性突破,一方面,归功于“数字化”对社会的渗透使得大量数据得以积累;另一方面,受益于单位成本下硬件算力的提升,推动了复杂模型的商用;然而最根本的,还是来自深度学习背后基础算法的巧思妙想与厚积薄发。
  只有深入了解深度学习的算法原理,才能更灵活、高效地运用于实践当中。现有的深度学习框架将算法使用简化为“调包”和“调参”,降低了使用成本,然而却没有降低学习成本。对于算法,最有效的学习方式是理解原理并动手实践。从原始论文可以查阅算法的详解和推导,却不容易复现结果。主流的深度学习框架多采用计算图模型,不容易调试或观察,对希望深入了解算法的初学者并不友好。致力于用深度学习方法创造社会价值的从业者,也需要看清底层算法的脉络,来做模型的定制、优化和改进。
  内容组织逻辑
  本书的特点是“原理 +实践”。按照“带着问题看算法”的逻辑来组织内容,所描述的每一种深度学习算法都围绕一个实际的目标问题展开,提供了基础算法的必要推导和实例,方便直观理解。
  1.提出问题。
  2.以问题为动机,引出模型。
  3.介绍模型原理、必要推导和实例。
  4.实现模型算法。
  5.解决问题与验证。
  第 1章至第 3章,从感知机模型开始,步步渐进,介绍多分类神经网络、深层全连接神经网络;第 4章至第 6章,描述卷积神经网络( CNN)的核心算法、学习策略优化方法,以及深度学习的批量规范化方法;第 7章至第 9章,系统介绍了序列模型,基础的循环神经网络( Vanilla RNN)、长短时记忆网络( LSTM)和双向结构的 BiGRU模型,以及序列模型适用的正则化方法。每章均以真实数据集作为目标问题,引出算法原理,不借助深度学习框架给予实现,最后完成数据集的验证。
  阅读和使用
  对于初学者,在阅读本书前,不需要具备机器学习基础,可以通过案例和模型概述等章节入门深度学习的概念;如果会使用 Python语言简单编程,还可以结合书中的案例,动手了解各种模型所能解决的问题。
  对于已有深度学习框架使用经验、希望了解底层算法的读者,可以查阅重要算法的原理、前向计算和反向传播的推导步骤,并在各章节的算法实现部分了解全部算法的实现过程。
  附录部分包含了书中讨论的深度学习算法所涉及的数学基础,方便初学者速查和理解其直观意义。如需概念的严格定义和展开论证,可参考相关教材和专著。
  通过阅读本书,希望读者可以:
  ?理解深度学习主要的核心模型。
  ?灵活复现重要论文、验证新方法。
  ?自由替换模型中的底层算法,取得一手实验结果。
  ?针对自己工作的特定场景,对算法做定制和优化,实现工程应用。
  致谢
  感谢为此书提供支持和做出过贡献的每个人。感谢家人的支持,他们是我动力的源泉。重庆大学郭平教授拨冗审阅了部分内容,提出了宝贵意见,对本书质量的提高有很大帮助,在此向他表示衷心的感谢。感谢一起工作过的同事和旅途巧遇的伙伴给予的启发,打开了前沿技术新世界的大门。电子工业出版社的孙学瑛女士在本书写作和出版过程中给予了很多帮助,在此特向她致谢。
  徐彬
  2019年 7月

目录

第1章基础分类模型 1
1.1深度学习简介 ............................ 2
1.2目标问题:空间中的二分类 .................... 2
1.3感知机模型 ............................. 3
1.3.1感知机函数 ......................... 3
1.3.2损失函数 .......................... 4
1.3.3感知机学习算法 ....................... 6
1.4算法实现 .............................. 8
1.4.1环境搭建 .......................... 8
1.4.2数据准备 .......................... 9
1.4.3实现感知机算法 ....................... 11
1.5小结 ................................. 13参考文献 ................................. 13
第 2章第一个神经网络 14
2.1目标问题:MNIST手写数字识别 ................. 15
2.1.1数据集 ............................ 15
2.1.2图像数据和图向量 ..................... 16
2.2挑战:从二分类到多分类 ..................... 16
2.3 Softmax方法 ............................ 19
2.4正确分类的独热编码 ........................ 20
2.5损失函数——交叉熵 ........................ 21
2.6信息熵和交叉熵 ........................... 21
2.6.1信息熵 ............................ 21
2.6.2交叉熵 ............................ 22
2.7第一个神经网络的学习算法 .................... 23
2.8反向传播 .............................. 26
2.9抽象泄漏 .............................. 27
2.10算法实现 .............................. 28
2.10.1数据准备 .......................... 28
2.10.2实现第一个神经网络 .................... 33
2.10.3实现 MINIST手写数字识别 ................ 36
2.11小结 ................................. 37参考文献 ................................. 38
第 3章多层全连接神经网络 39
3.1第一个挑战:异或问题 ....................... 40
3.2更深的神经网络——隐藏层 .................... 40
3.3第二个挑战:参数拟合的两面性 .................. 42
3.4过拟合与正则化 ........................... 44
3.4.1欠拟合与过拟合 ....................... 44
3.4.2正则化 ............................ 44
3.4.3正则化的效果 ........................ 44
3.5第三个挑战:非线性可分问题 ................... 45
3.6激活函数 .............................. 45
3.7算法和结构 ............................. 47
3.8算法实现 .............................. 50
3.8.1数据准备 .......................... 50
3.8.2实现多层全连接神经网络 ................. 50
3.8.3在数据集上验证模型 .................... 53
3.9小结 ................................. 54参考文献 ................................. 54
第 4章卷积神经网络(CNN) 55
4.1挑战:参数量和训练成本 ..................... 56
4.2卷积神经网络的结构 ........................ 56
4.2.1卷积层 ............................ 57
4.2.2池化层 ............................ 62
4.2.3全连接层和 Softmax处理 ................. 63
4.3卷积神经网络学习算法 ....................... 63
4.3.1全连接层 .......................... 63
4.3.2池化层反向传播 ....................... 64
4.3.3卷积层反向传播 ....................... 65
4.4算法实现 .............................. 68
4.4.1数据准备 .......................... 68
4.4.2卷积神经网络模型的原始实现 ............... 69
4.5小结 ................................. 76参考文献 ................................. 78
第 5章卷积神经网络——算法提速和优化 79
5.1第一个挑战:卷积神经网络的运算效率 .............. 80
5.2提速改进 .............................. 80
5.2.1边缘填充提速 ........................ 82
5.2.2池化层提速 ......................... 83
5.2.3卷积层处理 ......................... 85
5.3反向传播算法实现 ......................... 88
5.3.1池化层反向传播 ....................... 88
5.3.2卷积层反向传播 ....................... 89
5.4第二个挑战:梯度下降的幅度和方向 ............... 91
5.5递减学习率参数 ........................... 92
5.6学习策略的优化方法 ........................ 92
5.6.1动量方法 .......................... 93
5.6.2 NAG方法 .......................... 93
5.6.3 Adagrad方法 ........................ 94
5.6.4 RMSprop方法 ....................... 95
5.6.5 AdaDelta方法 ....................... 96
5.6.6 Adam方法 ......................... 97
5.6.7各种优化方法的比较 .................... 98
目录
5.7总体模型结构 ............................ 100
5.8使用 CNN实现 MNIST手写数字识别验证 ........... 101
5.9小结 ................................. 102参考文献 ................................. 103
第 6章批量规范化(Batch Normalization) 104
6.1挑战:深度神经网络不易训练 ................... 105
6.2批量规范化方法的初衷 ....................... 105
6.2.1数据集偏移 ......................... 106
6.2.2输入分布偏移 ........................ 106
6.2.3内部偏移 .......................... 107
6.3批量规范化的算法 ......................... 107
6.3.1训练时的前向计算 ..................... 107
6.3.2规范化与标准化变量 .................... 108
6.3.3推理预测时的前向计算 ................... 109
6.3.4全连接层和卷积层的批量规范化处理 ........... 110
6.4批量规范化的效果 ......................... 111
6.4.1梯度传递问题 ........................ 111
6.4.2饱和非线性激活问题 .................... 112
6.4.3正则化效果 ......................... 113
6.5批量规范化为何有效 ........................ 113
6.6批量规范化的反向传播算法 .................... 114
6.7算法实现 .............................. 115
6.7.1训练时的前向传播 ..................... 116
6.7.2反向传播 .......................... 117
6.7.3推理预测 .......................... 118
6.8调整学习率和总体结构 ....................... 119
6.8.1模型结构 .......................... 119
6.8.2卷积层批量规范化的实现 ................. 120
6.8.3引入批量规范化后的递减学习率 .............. 121
6.9在 MNIST数据集上验证结果 ................... 122
6.10小结 ................................. 123
参考文献 ................................. 123
第 7章循环神经网络(Vanilla RNN) 125
7.1第一个挑战:序列特征的捕捉 ................... 126
7.2循环神经网络的结构 ........................ 126
7.2.1单层 RNN.......................... 126
7.2.2双向 RNN.......................... 128
7.2.3多层 RNN.......................... 129
7.3 RNN前向传播算法 ......................... 130
7.4 RNN反向传播算法 ......................... 131
7.4.1误差的反向传播 ....................... 131
7.4.2激活函数的导函数和参数梯度 ............... 132
7.5第二个挑战:循环神经网络的梯度传递问题 ........... 133
7.6梯度裁剪 .............................. 134
7.7算法实现 .............................. 135
7.8目标问题:序列数据分析 ..................... 139
7.8.1数据准备 .......................... 139
7.8.2模型搭建 .......................... 144
7.8.3验证结果 .......................... 145
7.9小结 ................................. 147参考文献 ................................. 147
第 8章长短时记忆网络(LSTM)——指数分析 149
8.1目标问题:投资市场的指数分析 .................. 150
8.2挑战:梯度弥散问题 ........................ 150
8.3长短时记忆网络的结构 ....................... 150
8.4 LSTM前向传播算法 ........................ 152
8.5 LSTM反向传播算法 ........................ 153
8.5.1误差反向传播 ........................ 154
8.5.2激活函数的导函数和参数梯度 ............... 155
8.6算法实现 .............................. 156
8.6.1实现 LSTM单时间步的前向计算 ............. 156
8.6.2实现 LSTM多层多时间步的前向计算 .......... 157
8.6.3实现 LSTM单时间步的反向传播 ............. 159
8.6.4实现 LSTM多层多时间步的反向传播 .......... 160
8.7实现沪深 300指数分析 ....................... 161
8.7.1数据准备 .......................... 162
8.7.2模型构建 .......................... 166
8.7.3分析结果 .......................... 167
8.8小结 ................................. 168参考文献 ................................. 169
第 9章双向门控循环单元(BiGRU)——情感分析 170
9.1目标问题:情感分析 ........................ 171
9.2第一个挑战:模型的运算效率 ................... 172
9.3 GRU模型的结构 .......................... 172
9.4 GRU前向传播算法 ......................... 173
9.5 GRU前向传播表达式的其他写法 ................. 174
9.6 GRU反向传播算法 ......................... 175
9.7 GRU算法实现 ........................... 177
9.7.1单时间步的前向计算 .................... 177
9.7.2实现单时间步的反向传播 ................. 178
9.8用 GRU模型进行情感分析 .................... 179
9.8.1数据预处理 ......................... 180
9.8.2构建情感分析模型 ..................... 181
9.9首次验证 .............................. 182
9.10第二个挑战:序列模型的过拟合 .................. 183
9.11 Dropout正则化 ........................... 183
9.11.1 Dropout前向传播算法 ................... 183
9.11.2 Dropout反向传播算法 ................... 184
9.11.3 Dropout Rate的选择 ................... 185
9.12再次验证:GRU+Dropout..................... 186
9.13第三个挑战:捕捉逆序信息 .................... 187
9.14双向门控循环单元(BiGRU) ................... 187
9.15第三次验证:BiGRU+Dropout .................. 188
9.16小结 ................................. 189
参考文献 ................................. 189
附录 A向量和矩阵运算 191
附录 B导数和微分 194
附录 C向量和矩阵导数 195
附录 D概率论和数理统计 201
索引 205

读者评论

  • 这本书上的代码和其提供GitHub上的代码又是不一样的。你这个根本不匹配 对应。

    不是和青木川发表于 2020/4/1 16:09:15
    • 你好,书中源码和github源码的差异在这里做一下说明:
      1、首先书中源码以及配套源码的实现逻辑,都与书中对算法的讨论和推导一致。
      2、过长的源码和注释换行可能会影响阅读体验,所以成书的时候对长变量做了缩短处理;部分过长的注释,也拆分为多行。
      3、书中的源码,尽可能只保留和算法逻辑对应核心函数、或核心算法片段。不过多讨论类、对象、方法的封装逻辑。目的是保持书籍的内容精炼且不偏离算法的本质。
      书中所有实例的结果指标都是真实日志,你可以在自己的环境复现出来;此外,对框架OOP工程封装感兴趣的同行,可以通过阅读源码+观察执行过程理解封装逻辑,同样欢迎交流指正。

      徐彬发表于 2020/4/15 12:02:11
  • 请问电子版什么时候上市?

    -NOVA-发表于 2019/10/29 21:06:42
    • 目前不清楚具体日期。

      孙学瑛发表于 2019/11/6 8:43:20
  • 公式(7.7)是不是错了?

    橘朵发表于 2019/10/18 13:41:36
    • 你好,沿时间步反向传播的误差的确应该是$\delta h_{t+1}$,感谢你指出错误。
      这边会更新至勘误表 https://github.com/AskyJx/xDeepLearningBook

      徐彬发表于 2019/10/19 16:59:52
  • 后续会有上电子版的计划吗?

    -NOVA-发表于 2019/10/15 21:05:40
    • 一般会有

      孙学瑛发表于 2019/10/16 13:28:40
    • @孙学瑛 非常期待电子版出来,家里纸质书太多了,还是电子书方便。

      -NOVA-发表于 2019/10/16 20:35:10
  • 例子里没有相应的数据,chapter2_nn_mnist.py # 训练数据
    path_minst_unpack = ‘d:\0tmp\04_dataset\MNIST\MNIST_data_unpack’

    李洪烈发表于 2019/10/14 16:05:41
    • 你好,MINIST数据集可以从http://yann.lecun.com/exdb/mnist/下载到本地解压缩,修改path_minst_unpack指向本地路径即可运行。

      第二章有上述步骤的简要介绍,前言部分给出的源码说明,也可以找到书中各章所需的全部数据下载链接。https://github.com/AskyJx/xDeepLearningBook

      徐彬发表于 2019/10/19 17:06:57

相关图书

DeepSeek应用大全:从入门到精通的全方位案例解析

李艮基 肖灵儿 曹方咏峥 (作者)

本书以国产自研的强大AI模型DeepSeek为核心,系统呈现了DeepSeek从基础操作到各领域应用的32个实战案例,旨在帮助读者快速掌握DeepSeek的用法...

 

AI魔法绘画:用Stable Diffusion挑战无限可能

陈然 (作者)

本书以实际操作为导向,详细讲解基于Stable Diffusion进行AI绘画的完整学习路线,包括绘画技巧、图片生成、提示词编写、ControlNet插件、模型...

 

一本书读懂ChatGPT

魏进锋 等 编著 (作者)

本书以通俗易懂的语言对ChatGPT进行全面讲解。 本书分为10章。 第1章对ChatGPT及ChatGPT的创造者OpenAI进行初步讲解。 第2章讲解...

 

可解释人工智能导论

杨强 范力欣 朱军 陈一昕 张拳石 朱松纯 陶大程 崔鹏 周少华 刘琦 黄萱菁 张永锋 (作者)

本书全面介绍可解释人工智能的基础知识、理论方法和行业应用。全书分为三部分,共11 章。第一部分为第1 章,揭示基于数据驱动的人工智能系统决策机制,提出一种基于人...

 

隐私计算

陈凯 杨强 (作者)

在大数据和人工智能时代,如何在享受新技术带来的便利性的同时保护自己的隐私,是一个重要的问题。本书系统讲解了隐私计算的基础技术和实践案例,全书共有11 章,按层次...

 

知识图谱与认知智能:基本原理、关键技术、应用场景与解决方案

吴睿 (作者)

认知的高度决定了你创造价值的高度,包括你对世界的认知及世界对你的认知。知识图谱与认知智能技术的发展,既孕育了圈层变更的机会,也带来了人、机器、企业如何协同与博弈...