目 录
译者序
原书序
原书前言
第1 章 深度学习的构建模块 // 1
1.1 深度神经网络的架构 // 1
1.1.1 神经元 // 1
1.1.2 深度学习中的代价函数和成本函数 // 4
1.1.3 前向传播过程 // 5
1.1.4 反向传播函数 // 5
1.1.5 随机和小批量梯度下降 // 6
1.2 深度学习的优化算法 // 6
1.2.1 采用具有动量的梯度下降 // 6
1.2.2 RMSProp 算法 // 7
1.2.3 Adam 优化器 // 7
1.3 深度学习平台架构 // 7
1.3.1 什么是TensorFlow ? // 7
1.3.2 什么是Keras ? // 8
1.3.3 TensorFlow 的热门替代品 // 8
1.3.4 TensorFlow 和Keras 对GPU的要求 // 8
1.3.5 安装Nvidia CUDA Toolkit 和cuDNN // 9
1.3.6 安装Python // 10
1.3.7 安装TensorFlow 和Keras // 11
1.4 深度学习数据集的构建 // 12
1.4.1 深度学习中的偏差和方差误差 // 13
1.4.2 train、val 和test 数据集 // 13
1.4.3 深度神经网络中的偏差和方差管理 // 14
1.4.4 K-Fold 交叉验证 // 14
1.5 小结 // 15
第2 章 用深度学习解决回归问题 // 16
2.1 回归分析和深度神经网络 // 16
2.1.1 使用神经网络进行回归的好处 // 16
2.1.2 使用神经网络进行回归时需要注意的问题 // 17
2.2 使用深度神经网络进行回归 // 17
2.2.1 如何规划机器学习问题 // 17
2.2.2 定义示例问题 // 17
2.2.3 加载数据集 // 18
2.2.4 定义成本函数 // 19
2.3 在Keras 中建立MLP // 19
2.3.1 输入层的构形 // 20
2.3.2 隐藏层的构形 // 20
2.3.3 输出层的构形 // 20
2.3.4 神经网络的架构 // 20
2.3.5 训练Keras 模型 // 21
2.3.6 评测模型的性能 // 22
2.4 在Keras 中建立深度神经网络 // 22
2.4.1 评测深度神经网络的性能 // 24
2.4.2 模型超参数的调优 // 25
2.5 保存并加载经过训练的Keras模型 // 25
2.6 小结 // 25
第3 章 用TensorBoard 监控网络训练 // 27
3.1 TensorBoard 的概述 // 27
3.2 设置TensorBoard // 27
3.2.1 安装TensorBoard // 28
3.2.2 TensorBoard 如何与Keras /TensorFlow 会话 // 28
3.2.3 运行TensorBoard // 28
3.3 将Keras 连接到TensorBoard // 29
3.3.1 Keras 回调简介 // 29
3.3.2 创建TensorBoard 回调函数 // 29
3.4 使用TensorBoard // 31
3.4.1 网络训练的可视化 // 31
3.4.2 网络结构的可视化 // 32
3.4.3 网络破碎的可视化 // 32
3.5 小结 // 33
第4 章 用深度学习解决二元分类问题 // 34
4.1 二元分类和深度神经网络 // 34
4.1.1 深度神经网络的优点 // 34
4.1.2 深度神经网络的缺点 // 35
4.2 案例研究—癫痫发作识别 // 35
4.2.1 定义数据集 // 35
4.2.2 加载数据 // 35
4.2.3 模型的输入和输出 // 36
4.2.4 成本函数 // 36
4.2.5 性能评估所采用的度量指标 // 37
4.3 在Keras 中构建二元分类器 // 37
4.3.1 输入层 // 38
4.3.2 隐藏层 // 38
4.3.3 输出层 // 39
4.3.4 网络层的合并 // 39
4.3.5 训练模型 // 40
4.4 使用Keras 中的检查点回调函数 // 40
4.5 在自定义回调函数中测量ROC AUC // 41
4.6 精度、召回率和f1 积分的测量 // 42
4.7 小结 // 43
第5 章 用Keras 解决多元分类问题 //44
5.1 多元分类和深度神经网络 // 44
5.1.1 优势 // 44
5.1.2 缺点 // 45
5.2 案例研究—手写数字的分类 // 45
5.2.1 问题定义 // 45
5.2.2 模型的输入和输出 // 45
5.2.3 成本函数 // 46
5.2.4 度量 // 46
5.3 在Keras 中构建多元分类器 // 47
5.3.1 加载MNIST // 47
5.3.2 输入层 // 47
5.3.3 隐藏层 // 47
5.3.4 输出层 // 48
5.3.5 网络的总体结构 // 49
5.3.6 训练 // 49
5.3.7 多类模型中scikit-learn 度量指标的应用 // 50
5.4 通过Dropout 进行方差控制 // 51
5.5 采用正则化进行方差控制 // 54
5.6 小结 // 55
第6 章 超参数的优化 // 56
6.1 网络体系结构应该被视为超参数吗? // 56
6.1.1 站在巨人的肩膀上 // 56
6.1.2 添加至过度拟合,然后进行正则化 // 57
6.1.3 实用建议 // 57
6.2 应该优化哪些超参数? // 57
6.3 超参数优化策略 // 58
6.3.1 常用的策略 // 58
6.3.2 通过scikit-learn 使用随机搜索 // 59
6.3.3 Hyperband // 60
6.4 小结 // 62
第7 章 从头开始训练CNN // 63
7.1 卷积的引入 // 63
7.1.1 卷积层的工作原理 // 64
7.1.2 卷积层的好处 // 65
7.1.3 汇集层 // 66
7.1.4 批量正则化 // 67
7.2 在Keras 中训练卷积神经网络 // 67
7.2.1 输入 // 67
7.2.2 输出 // 67
7.2.3 成本函数和度量指标 // 67
7.2.4 卷积层 // 68
7.2.5 全相连层 // 68
7.2.6 Keras 中的多GPU 模型 // 69
7.2.7 训练 // 69
7.3 使用数据扩增 // 70
7.3.1 Keras 中的图像数据扩增器(ImageDataGenerator 类) // 71
7.3.2 具有数据扩增的训练 // 72
7.4 小结 // 72
第8 章 使用预训练CNN 进行
迁移学习 // 73
8.1 迁移学习概述 // 73
8.2 何时使用迁移学习 // 74
8.2.1 有限的数据 // 74
8.2.2 公共问题域 // 74
8.3 源/ 目标量和相似度的影响 // 75
8.3.1 更多的数据总是有益的 // 75
8.3.2 源/ 目标域的相似度 // 75
8.4 在Keras 中进行迁移学习 // 75
8.4.1 目标域概述 // 76
8.4.2 源域概述 // 76
8.4.3 源网络体系结构 // 76
8.4.4 网络体系结构的迁移 // 77
8.4.5 数据准备 // 77
8.4.6 数据输入 // 78
8.4.7 训练(特征提取) // 78
8.4.8 训练(调优) // 80
8.5 小结 // 81
第9 章 从头开始训练RNN // 82
9.1 递归神经网络概述 // 82
9.1.1 如何让神经元进行递归? // 83
9.1.2 长短时间记忆网络 // 84
9.1.3 在时间上的反向传播 // 86
9.2 重温时间序列问题 // 86
9.2.1 存量和流量 // 87
9.2.2 ARIMA 和ARIMAX 预测 // 87
9.3 使用LSTM 网络进行时间序列预测 // 88
9.3.1 数据准备 // 89
9.3.2 网络输出 // 92
9.3.3 网络体系结构 // 93
9.3.4 stateful 与stateless LSTM网络 // 93
9.3.5 训练 // 93
9.3.6 测量性能 // 94
9.4 小结 // 96
第10 章 从头开始训练具有单词嵌入的LSTM 网络 // 97
10.1 自然语言处理简介 // 97
10.1.1 语义分析 // 98
10.1.2 文档分类 // 98
10.2 文本的矢量化 // 99
10.2.1 NLP 术语 // 99
10.2.2 Bag of Word 模型 // 99
10.2.3 词干化、词形归并和停止词 // 100
10.2.4 计数和TF-IDF 矢量化 // 100
10.3 单词嵌入 // 101
10.3.1 一个简单的例子 // 102
10.3.2 通过预测进行的单词嵌入学习 // 102
10.3.3 通过计数进行的单词嵌入学习 // 104
10.3.4 从单词到文档 // 104
10.4 Keras 嵌入层 // 105
10.5 用于自然语言处理的1D CNN // 105
10.6 文档分类的案例研究 // 106
10.6.1 使用Keras 嵌入层和LSTM网络进行情感分析 // 106
10.6.2 使用和不使用GloVe 的文档分类 // 110
10.7 小结 // 117
第11 章 训练sequence-tosequence模型 // 118
11.1 sequence-to-sequence 模型 // 118
11.1.1 sequence-to-sequence 模型的应用 // 118
11.1.2 sequence-to-sequence 模型的体系结构 // 119
11.1.3 字符与单词 // 120
11.1.4 Teacher forcing // 120
11.1.5 Attention // 121
11.1.6 翻译的度量 // 121
11.2 机器翻译 // 121
11.2.1 了解数据集 // 122
11.2.2 加载数据 // 122
11.2.3 one hot 编码 // 124
11.2.4 训练网络体系结构 // 125
11.2.5 网络体系结构(用于推理) // 126
11.2.6 体系结构的合并 // 127
11.2.7 训练 // 128
11.2.8 推理 // 129
11.3 小结 // 133
第12 章 使用深度强化学习 // 134
12.1 强化学习概述 // 134
12.1.1 Markov 决策过程 // 135
12.1.2 Q-learning // 136
12.1.3 无限的状态空间 // 136
12.1.4 Deep Q 网络 // 137
12.1.5 守成与探索 // 138
12.1.6 DeepMind // 138
12.2 Keras 的强化学习平台架构 // 139
12.2.1 安装Keras-RL // 139
12.2.2 安装OpenAI gym // 139
12.2.3 使用OpenAI gym // 139
12.3 在Keras 中构建一个强化学习智能体 // 140
12.3.1 CartPole // 140
12.3.2 月球着陆器 // 143
12.4 小结 // 145
第13 章 生成对抗网络 // 146
13.1 GAN 的概述 // 146
13.2 深度卷积GAN 的体系结构 // 147
13.2.1 对抗训练体系结构 // 147
13.2.2 生成器的体系结构 // 148
13.2.3 鉴别器的体系结构 // 149
13.2.4 堆训练 // 149
13.3 GAN 如何失效 // 151
13.3.1 稳定性 // 151
13.3.2 模式塌缩 // 151
13.4 GAN 的安全选择 // 151
13.5 使用Keras GAN 进行的MNIST图像生成 // 152
13.5.1 加载数据集 // 152
13.5.2 构建生成器 // 153
13.5.3 构建鉴别器 // 153
13.5.4 堆叠模型的构建 // 154
13.5.5 训练循环 // 155
13.5.6 模型评估 // 157
13.6 使用Keras GAN 进行CIFAR-10图像的生成 // 160
13.6.1 加载CIFAR-10 // 160
13.6.2 构建生成器 // 160
13.6.3 构建鉴别器 // 161
13.6.4 训练循环 // 161
13.6.5 模型评估 // 161
13.7 小结 // 162