深度学习基础与实践
书籍作者:乔希·帕特森 |
ISBN:9787115515421 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:7695 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
本书是由两位技术出身的企业管理者编写的深度学习普及书。本书的前四章提供了足够的关于深度学习的理论知识,包括机器学习的基本概念、神经网络基础、从神经网络到深度网络的演化历程,以及主流的深度网络架构,为读者阅读本书剩余内容打下基础。后五章带领读者进行一系列深度学习的实践,包括建立深层网络、调优技术、各种数据类型的向量化和在Spark上运行深度学习工作流。
作者简介
Josh Patterson是Skymind公司副总裁,曾任Cloudera公司通用解决方案架构师、田纳西河流域管理局机器学习与分布式系统工程师。
Adam Gibson是Skymind公司CTO,在帮助公司处理和解析大量实时数据方面经验丰富
编辑推荐
本书从调优、并行、向量化、构建管道等深度学习基础知识开始,逐步深入,通过现实生活中的例子,展现深度网络架构的方法和策略。本书避免了艰深的理论讨论,而是针对实际问题提供了必要的指引。
-深入理解机器学习和深度学习基本概念
-了解从神经网络到深度网络的演化历程
-探索主流深度网络架构,包括卷积神经网络和循环神经网络
-了解如何将特定的深度网络应用于适合的问题
-全面了解通用的对神经网络和特定深度网络架构调优的基础知识
-学习针对不同类型数据的向量化技术以及如何在Spark和Hadoop平台上原生地使用DL4J
目录
版权声明 iii
O'Reilly Media, Inc.介绍 iv
前言 xv
第 1 章 机器学习回顾 1
1.1 学习的机器 1
1.1.1 机器如何学习 2
1.1.2 生物学的启发 4
1.1.3 什么是深度学习 5
1.1.4 钻进奇幻的兔子洞 5
1.2 提出问题 6
1.3 机器学习背后的数学:线性代数 7
1.3.1 标量 7
1.3.2 向量 7
1.3.3 矩阵 8
1.3.4 张量 8
1.3.5 超平面 8
1.3.6 相关数学运算 8
1.3.7 将数据转换成向量 9
1.3.8 方程组求解 10
1.4 机器学习背后的数学:统计学 12
1.4.1 概率 12
1.4.2 条件概率 14
1.4.3 后验概率 14
1.4.4 分布 15
1.4.5 样本与总体 16
1.4.6 重采样方法 16
1.4.7 选择性偏差 17
1.4.8 似然 17
1.5 机器学习如何工作 17
1.5.1 回归 17
1.5.2 分类 19
1.5.3 聚类 19
1.5.4 欠拟合与过拟合 20
1.5.5 优化 20
1.5.6 凸优化 21
1.5.7 梯度下降 22
1.5.8 SGD 24
1.5.9 拟牛顿优化方法 24
1.5.10 生成模型与判别模型 25
1.6 逻辑回归 25
1.6.1 逻辑函数 26
1.6.2 理解逻辑回归的输出 26
1.7 评估模型 27
1.8 建立对机器学习的理解 30
第 2 章 神经网络基础与深度学习 31
2.1 神经网络 31
2.1.1 生物神经元 33
2.1.2 感知器 34
2.1.3 多层前馈网络 37
2.2 训练神经网络 42
2.3 激活函数 49
2.3.1 线性函数 49
2.3.2 sigmoid函数 49
2.3.3 tanh函数 50
2.3.4 hard tanh函数 51
2.3.5 softmax函数 51
2.3.6 修正线性函数 51
2.4 损失函数 53
2.4.1 损失函数的符号 53
2.4.2 用于回归的损失函数 54
2.4.3 用于分类的损失函数 56
2.4.4 用于重建的损失函数 57
2.5 超参数 58
2.5.1 学习率 58
2.5.2 正则化 59
2.5.3 动量 59
2.5.4 稀疏 59
第 3 章 深度网络基础 60
3.1 定义深度学习 60
3.1.1 什么是深度学习 60
3.1.2 本章结构 67
3.2 深度网络的通用构建原则 67
3.2.1 参数 68
3.2.2 层 68
3.2.3 激活函数 69
3.2.4 损失函数 70
3.2.5 优化算法 71
3.2.6 超参数 73
3.2.7 小结 77
3.3 深度网络的构造块 77
3.3.1 RBM 78
3.3.2 自动编码器 82
3.3.3 变分自动编码器 83
第 4 章 深度网络的主要架构 85
4.1 UPN 85
4.1.1 DBN 86
4.1.2 GAN 88
4.2 CNN 91
4.2.1 生物学启发 92
4.2.2 思路 92
4.2.3 CNN架构概要 93
4.2.4 输入层 94
4.2.5 卷积层 95
4.2.6 池化层 101
4.2.7 全连接层 102
4.2.8 CNN的其他应用 102
4.2.9 CNN列表 103
4.2.10 小结 103
4.3 RNN 103
4.3.1 时间维度建模 104
4.3.2 三维空间输入 105
4.3.3 为什么不是马尔可夫模型 107
4.3.4 常见的RNN架构 107
4.3.5 LSTM网络 108
4.3.6 特定领域应用与混合网络 114
4.4 递归神经网络 115
4.4.1 网络架构 115
4.4.2 递归神经网络的变体 115
4.4.3 递归神经网络的应用 116
4.5 小结与讨论 116
4.5.1 深度学习会使其他算法过时吗 116
4.5.2 不同的问题有不同的最佳方法 117
4.5.3 什么时候需要深度学习 117
第 5 章 建立深度网络 118
5.1 将深度网络与适合的问题匹配 118
5.1.1 列式数据与多层感知器 119
5.1.2 图像与CNN 119
5.1.3 时间序列与RNN 120
5.1.4 使用混合网络 121
5.2 DL4J工具套件 121
5.2.1 向量化与DataVec 121
5.2.2 运行时与ND4J 121
5.3 DL4J API的基本概念 123
5.3.1 加载与保存模型 123
5.3.2 为模型获取输入 124
5.3.3 建立模型架构 124
5.3.4 训练与评估 125
5.4 使用多层感知器网络对CSV数据建模 126
5.4.1 建立输入数据 128
5.4.2 确定网络架构 128
5.4.3 训练模型 131
5.4.4 评估模型 131
5.5 利用CNN对手写图像建模 132
5.5.1 使用LeNet CNN的Java代码示例 132
5.5.2 加载及向量化输入图像 134
5.5.3 DL4J中用于LeNet的网络架构 135
5.5.4 训练CNN网络 138
5.6 基于RNN的序列数据建模 139
5.6.1 通过LSTM生成莎士比亚风格作品 139
5.6.2 基于LSTM的传感器时间序列分类 146
5.7 利用自动编码器检测异常 152
5.7.1 自动编码器示例的Java代码列表 152
5.7.2 设置输入数据 156
5.7.3 自动编码器的网络结构与训练 156
5.7.4 评估模型 157
5.8 使用变分自动编码器重建MNIST数字 158
5.8.1 重建MNIST数字的代码列表 158
5.8.2 VAE模型的检验 161
5.9 深度学习在自然语言处理中的应用 163
5.9.1 使用Word2Vec的学习词嵌入 163
5.9.2 具有段落向量的句子的分布式表示 168
5.9.3 使用段落向量进行文档分类 171
第 6 章 深度网络调优 176
6.1 深度网络调优的基本概念 176
6.1.1 建立深度网络的思路 177
6.1.2 构建思路的步骤 178
6.2 匹配输入数据与网络架构 178
6.3 模型目标与输出层的关系 180
6.3.1 回归模型的输出层 180
6.3.2 分类模型的输出层 180
6.4 处理层的数量、参数的数量和存储器 182
6.4.1 前馈多层神经网络 183
6.4.2 控制层和参数的数量 183
6.4.3 估计网络内存需求 185
6.5 权重初始化策略 187
6.6 使用激活函数 188
6.7 应用损失函数 190
6.8 理解学习率 191
6.8.1 使用参数更新比率 192
6.8.2 关于学习率的具体建议 193
6.9 稀疏性对学习的影响 195
6.10 优化方法的应用 195
6.11 使用并行化和GPU更快地进行训练 197
6.11.1 在线学习与并行迭代算法 197
6.11.2 DL4J中的SGD并行 199
6.11.3 GPU 201
6.12 控制迭代和小批量的大小 202
6.13 如何使用正则化 203
6.13.1 使用先验函数正则化 204
6.13.2 最大范数正则化 204
6.13.3 Dropout 205
6.13.4 其他正则化事项 206
6.14 处理类别不平衡 207
6.14.1 类别采样方法 208
6.14.2 加权损失函数 208
6.15 处理过拟合 209
6.16 通过调优UI来使用网络统计信息 210
6.16.1 检测不佳的权重初始化 212
6.16.2 检测非混洗数据 213
6.16.3 检测正则化的问题 214
第 7 章 调优特定的深度网络架构 217
7.1 CNN 217
7.1.1 卷积架构常见的模式 218
7.1.2 配置卷积层 220
7.1.3 配置池化层 224
7.1.4 迁移学习 225
7.2 RNN 226
7.2.1 网络输入数据和输入层 227
7.2.2 输出层与RnnOutputLayer 228
7.2.3 训练网络 228
7.2.4 调试LSTM的常见问题 230
7.2.5 填充与掩码 230
7.2.6 掩码评估与评分 231
7.2.7 循环网络架构的变体 232
7.3 受限玻尔兹曼机 232
7.3.1 隐藏层神经元与可用信息建模 233
7.3.2 使用不同的单元 234
7.3.3 用RBM正则化 234
7.4 DBN 235
7.4.1 利用动量 235
7.4.2 使用正则化 235
7.4.3 确定隐藏单元的数量 236
第 8 章 向量化 237
8.1 机器学习中的向量化方法 237
8.1.1 为什么需要将数据向量化 238
8.1.2 处理列式原始数据属性的策略 240
8.1.3 特征工程与规范化技术 241
8.2 使用DataVec进行ETL和向量化 247
8.3 将图像数据向量化 248
8.3.1 DL4J中的图像数据表示 248
8.3.2 使用DataVec将图像数据与向量规范化 250
8.4 将序列数据向量化 251
8.4.1 序列数据源的主要变体 251
8.4.2 使用DataVec将序列数据向量化 252
8.5 将文本向量化 256
8.5.1 词袋 257
8.5.2 TF-IDF 258
8.5.3 Word2Vec与VSM的比较 261
8.6 使用图形 261
第 9 章 在Spark上使用深度学习和DL4J 262
9.1 在Spark和Hadoop上使用DL4J的介绍 262
9.2 配置和调优Spark运行 266
9.2.1 在Mesos上运行Spark 267
9.2.2 在YARN中执行Spark 268
9.2.3 Spark调优简要介绍 269
9.2.4 对在Spark上运行的DL4J作业调优 273
9.3 为Spark和DL4J建立Maven项目对象模型 274
9.3.1 一个pom.xml文件依赖模板 275
9.3.2 为 CDH 5.x设置POM文件 279
9.3.3 为HDP 2.4创建POM文件 279
9.4 Spark和Hadoop故障排除 280
9.5 DL4J在Spark上的并行执行 281
9.6 Spark平台上的DL4J API最佳实践 284
9.7 多层感知器的Spark示例 285
9.7.1 建立Spark MLP网络架构 288
9.7.2 分布式训练与模型评估 289
9.7.3 构建和执行DL4J Spark作业 290
9.8 使用Spark和LSTM生成莎士比亚作品 290
9.8.1 建立LSTM网络架构 292
9.8.2 训练、跟踪进度及理解结果 293
9.9 基于park上的CNN进行MNIST建模 294
9.9.1 配置Spark作业和加载MNIST数据 296
9.9.2 建立LeNet CNN架构与训练 297
附录A 人工智能是什么 299
附录B RL4J与强化学习 307
附录C 每个人都需要了解的数字 325
附录D 神经网络和反向传播:数学方法 326
附录E 使用ND4J API 330
附录F 使用DataVec 341
附录G 从源代码构建DL4J 350
附录H 设置DL4J项目 352
附录I 为DL4J项目设置GPU 356
附录J 解决DL4J安装上的问题 359
关于作者 365
关于封面 365