第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如何与KerasTensorFlow会话 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-to-sequence模型 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