4.5.2 149 453 从零开始实现 45.4 简洁实现 4.5.5 小结 154 4.5.6 练习 4.6 暂退法(Dropout) 14 4.6.1 重新审视过拟合 154 4.6.2 扰动的稳健性 4.63 实践中的暂退法 4.6.4 从零开始实现 156 46.5 简洁实现. 159 4.6.6 小结 6 46.7 练习 4.7 前向传播、反向传播和计算图 161 47.1 前向传播 4.7.2 前向传播计算图 162 4.7.3 162 47.4 训练神经络 47.5 小结 4.7.6 珠习 164 4.8 数值稳定性和模型初始化 48.1 梯度消失和梯度爆 4.8.2 167 4.8.3 小结 4.8.4 练习 4.9 169 49.1 分布伯移的米型 169 4.9.2 分布偏移示例 4.9.3 分布偏移纠正 173 4.9.4 学习问颗的分类法 4.9.5机器学习中的公平、责任和透明度 49.6 小结 4.9.7 178 4.10实战Kaggle比赛:预测房价 4.10.1 下载和缓存数据集 180 4.10.3访问和读取数据集 4.10.4 数据预处理……… 4.10.5 183 4.10.6K折交叉验证。 4.10.7模型选择 185 4.10.8 提交你的Kagglef预测.··,·············…············
4.5.2 ⾼维线性回归 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 4.5.3 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 4.5.4 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.5.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 4.5.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 4.6 暂退法(Dropout) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 4.6.1 重新审视过拟合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 4.6.2 扰动的稳健性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 4.6.3 实践中的暂退法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 4.6.4 从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 4.6.5 简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 4.6.6 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 4.6.7 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 4.7 前向传播、反向传播和计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 4.7.1 前向传播 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 4.7.2 前向传播计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 4.7.3 反向传播 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 4.7.4 训练神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 4.7.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 4.7.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.8 数值稳定性和模型初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.8.1 梯度消失和梯度爆炸 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.8.2 参数初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4.8.3 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 4.8.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 4.9 环境和分布偏移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 4.9.1 分布偏移的类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 4.9.2 分布偏移⽰例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 4.9.3 分布偏移纠正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 4.9.4 学习问题的分类法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 4.9.5 机器学习中的公平、责任和透明度 . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 4.9.6 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 4.9.7 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 4.10 实战Kaggle⽐赛:预测房价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 4.10.1 下载和缓存数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 4.10.2 Kaggle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 4.10.3 访问和读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 4.10.4 数据预处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 4.10.5 训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 4.10.6 K折交叉验证 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 4.10.7 模型选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 4.10.8 提交你的Kaggle预测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 v
4.10.9小结 188 4.10.10练习 5深度学习计算 189 5.1层和块 5.1 自定义块 17 5.1.2 192 513 在前向传播函数中执行代码 193 51.4 效率 194 5.1.5 小 195 5.1.6 练 5.2 参数管理 95 5.2.1 参数访问 5.2.2 19g 5.2.3 参数绑定 5.2 小结 201 5.25 练习 201 5.3 延后初始化 5.3.1 实例化网络 2 5.3.2 小结 202 523 练习 5.4 自定义 203 5.4.1 不带参数的层 03 542 带参数的层 30 5.4.3 小结 205 练习 2 5.5 卖写文件 305 55.1 加载和保存张量 552 加载和保存模型参数 5.5.3 小结 5.5.4 练习 5.6 GPU 28 5.6.1 3 5.6.2 张最与GPU 5.6.3 神经网络与GPU 213 5.6.4 小结 2 565 练习 6卷积神经网络 215 6.1从全连接层到卷积 216 不变性 216 6.1.2 217
4.10.9 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 4.10.10 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 5 深度学习计算 189 5.1 层和块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 5.1.1 ⾃定义块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 5.1.2 顺序块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 5.1.3 在前向传播函数中执⾏代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 5.1.4 效率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 5.1.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.1.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.2 参数管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.2.1 参数访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 5.2.2 参数初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.2.3 参数绑定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 5.2.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 5.2.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 5.3 延后初始化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 5.3.1 实例化⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 5.3.2 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 5.3.3 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.4 ⾃定义层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.4.1 不带参数的层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.4.2 带参数的层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 5.4.3 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 5.4.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 5.5 读写⽂件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 5.5.1 加载和保存张量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 5.5.2 加载和保存模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 5.5.3 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.5.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.6 GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.6.1 计算设备 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 5.6.2 张量与GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 5.6.3 神经⽹络与GPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 5.6.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 5.6.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 6 卷积神经⽹络 215 6.1 从全连接层到卷积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.1.1 不变性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 6.1.2 多层感知机的限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 vi
6.1.3 卷积 218 6.1 “沃尔多在哪里”回顾 6.15 小结 4…。。。。……4+。。。。。………+4。…4.4··。。4……4。·。。 9 6.1.6 练习 220 6.2 图像卷积 62.1 互相关运算 m 6.2.2 2 6.2.3 图像中目标的边缘检测 62. 学习卷积核 224 6.2.5 互相关和卷积 2 6.2.6 特征映射和感受野 225 6.2.7 小结 225 6.2.8 练习 6.3 填充和步幅 2 6.31 填充 6.3.2 步 228 6.3.3 小结 6.3.4 练习 6.4 多输入多输出通道 6.4.1 6.4.2 多输出场道 6.43 1×1卷积层 6.4.4 小结 233 6A5 练习 233 6.5 汇聚层 234 6.5.1 最大汇聚层和平均汇聚层···。······················· 6.5.2 填充和步幅。···· 6.5.3 多个通道 237 6.5.4 小 2 6.5.5 练习 6.6 卷积神经网络(LeNet). 66 LeNet 6.6.2 244 6.6.3 小结 6.6.4 练习 7现代卷积神经网络 7.1深度卷积神经网络(AlexNet) 246 7.11 学习表征·…· 246 7.1.2 AlexNet. 7.1.3 读取数据 7.1.4 252
6.1.3 卷积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 6.1.4 “沃尔多在哪⾥”回顾 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 6.1.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 6.1.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 6.2 图像卷积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 6.2.1 互相关运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 6.2.2 卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 6.2.3 图像中⽬标的边缘检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 6.2.4 学习卷积核 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 6.2.5 互相关和卷积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 6.2.6 特征映射和感受野 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 6.2.7 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 6.2.8 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 6.3 填充和步幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 6.3.1 填充 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 6.3.2 步幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 6.3.3 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 6.3.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 6.4 多输⼊多输出通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 6.4.1 多输⼊通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 6.4.2 多输出通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 6.4.3 1 × 1 卷积层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 6.4.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 6.4.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 6.5 汇聚层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 6.5.1 最⼤汇聚层和平均汇聚层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 6.5.2 填充和步幅 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 6.5.3 多个通道 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 6.5.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 6.5.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 6.6 卷积神经⽹络(LeNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 6.6.1 LeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 6.6.2 模型训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 6.6.3 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 6.6.4 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 7 现代卷积神经⽹络 245 7.1 深度卷积神经⽹络(AlexNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 7.1.1 学习表征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 7.1.2 AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 7.1.3 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 7.1.4 训练AlexNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 vii
7.1.5 小结 252 7.1.6练习 252 7.21 VGG块 7.2.2 VGG国络 254 7.2.3 训练模型 72.4 7.2.5 练习 257 7.3 网络中的网络NiN) 73.1 NiN块 7.3.2 NiN模型 259 723 训练模型 7.34 小结 260 7.3.5 练习 260 7.4 含并行连结的网络(GoogLeNet) 7.4.1 Inception块 261 7.4.2 GoogLeNet模型 7.43 训练模型 6 7.4.4 小结 74.5 266 7.5 批量规范化 7.5.1 训练深层网络 75.2 批量规范化层 7.5.3 从客买.。. 26g 7.5.4 使用批量规范化层的LeNet 2 75.5 简明实现 271 7.5.6 272 757 小结 75.8 练习 7.6 我差网路(ResNet) 273 761 函数类 274 76.2 残差块 275 7.6.3 2 7.6.4 训练模型 7.6.5 小结 7.6.6 练习 281 7.7 稠密连接网络(DenseNet), 从ResNet到DenseNet 稠密块体 7.7.3 283 7.7.4 284 7.7.5 训练模型 285
7.1.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 7.1.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 7.2 使⽤块的⽹络(VGG) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 7.2.1 VGG块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 7.2.2 VGG⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 7.2.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 7.2.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 7.2.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 7.3 ⽹络中的⽹络(NiN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 7.3.1 NiN块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 7.3.2 NiN模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 7.3.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 7.3.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 7.3.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 7.4 含并⾏连结的⽹络(GoogLeNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 7.4.1 Inception块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 7.4.2 GoogLeNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 7.4.3 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 7.4.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 7.4.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 7.5 批量规范化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 7.5.1 训练深层⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 7.5.2 批量规范化层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 7.5.3 从零实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 7.5.4 使⽤批量规范化层的 LeNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 7.5.5 简明实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 7.5.6 争议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 7.5.7 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 7.5.8 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 7.6 残差⽹络(ResNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 7.6.1 函数类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 7.6.2 残差块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 7.6.3 ResNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 7.6.4 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 7.6.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 7.6.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 7.7 稠密连接⽹络(DenseNet) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 7.7.1 从ResNet到DenseNet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 7.7.2 稠密块体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 7.7.3 过渡层 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 7.7.4 DenseNet模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 7.7.5 训练模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 viii
7.7.6 小结 285 7.7.7 练 285 8循环神经网络 287 序列模 8.1.1 统计江具…………… 288 8.12 训练 8.1.3 293 2 8.1.5 练 8.2 文本须处理 82.1 296 读取数据集 2 8.2.2 词元化… 297 8.2.3 词表 82.4 整合所有功能 208 8.2.5 小结 300 8.2.6 练习 301 8.3 语言模型和数据集 301 8.3.1 学习语言模型 83.2 马尔可夫模型与n元语法 0 8.33 自然语言统计 303 8.3.4 读取长序列数 306 8.3.5 小结 。。 3 8.3.6 练习 8.4 循环神经 8.4.1 310 8.4.2 有隐状态的循环神经网路 84.3 基于循环神经网络的字符级语 言模型 8.4.4 N&度(Perplexity 3 8.4.5 小结 31 84.6 练习 315 8.5 循环神经网络的从零开始实现···。·。。。························ 315 851 独热编码, 85.2 初始化模型参数 6 8.5.3 6 8.5.4 流 梯度裁剪 8.5.6 8.5.7 小结 。 323 8.5.8练习 8.6 循环神经网络的简洁实现 8.6.1 空
7.7.6 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 7.7.7 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 8 循环神经⽹络 287 8.1 序列模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 8.1.1 统计⼯具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288 8.1.2 训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 8.1.3 预测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 8.1.4 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 8.1.5 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 8.2 ⽂本预处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 8.2.1 读取数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 8.2.2 词元化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 8.2.3 词表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 8.2.4 整合所有功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 8.2.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 8.2.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.3 语⾔模型和数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.3.1 学习语⾔模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 8.3.2 ⻢尔可夫模型与n元语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 8.3.3 ⾃然语⾔统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 8.3.4 读取⻓序列数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 8.3.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 8.3.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 8.4 循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 8.4.1 ⽆隐状态的神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 8.4.2 有隐状态的循环神经⽹络 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311 8.4.3 基于循环神经⽹络的字符级语⾔模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 313 8.4.4 困惑度(Perplexity) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313 8.4.5 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 8.4.6 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 8.5 循环神经⽹络的从零开始实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 8.5.1 独热编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 8.5.2 初始化模型参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 8.5.3 循环神经⽹络模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316 8.5.4 预测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 8.5.5 梯度裁剪 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 8.5.6 训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319 8.5.7 ⼩结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 8.5.8 练习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 8.6 循环神经⽹络的简洁实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 8.6.1 定义模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 ix