deep learning
2020-03-01 239浏览
- 1.深度学习 2017 年 9 月 4 日
- 2.ii
- 3.目录 致谢 xvi 网站 xxii 数学符号 xxiii 第一章 引言 1 1.1 本书面向的读者 . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2 深度学习的历史趋势 . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.1 神经网络的众多名称和命运变迁 . . . . . . . . . . . 12 1.2.2 与日俱增的数据量 . . . . . . . . . . . . . . . . . . . 17 1.2.3 与日俱增的模型规模 . . . . . . . . . . . . . . . . . . 19 1.2.4 与日俱增的精度、复杂度和对现实世界的冲击 . . . . 22 第一部分 应用数学与机器学习基础 25 第二章 线性代数 27 2.1 标量、向量、矩阵和张量 . . . . . . . . . . . . . . . . . . . . 27 2.2 矩阵和向量相乘 . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3 单位矩阵和逆矩阵 . . . . . . . . . . . . . . . . . . . . . . . . 31 2.4 线性相关和生成子空间 . . . . . . . . . . . . . . . . . . . . . . 32 2.5 范数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.6 特殊类型的矩阵和向量 . . . . . . . . . . . . . . . . . . . . . . 36 2.7 特征分解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 iii
- 4.目录 iv 2.8 奇异值分解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.9 Moore-Penrose 伪逆 . . . . . . . . . . . . . . . . . . . . . . . 40 2.10 迹运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.11 行列式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 2.12 实例:主成分分析 . . . . . . . . . . . . . . . . . . . . . . . . 42 第三章 概率与信息论 47 3.1 为什么要使用概率? . . . . . . . . . . . . . . . . . . . . . . . 47 3.2 随机变量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.3 概率分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.3.1 离散型变量和概率质量函数 . . . . . . . . . . . . . . 50 3.3.2 连续型变量和概率密度函数 . . . . . . . . . . . . . . 51 3.4 边缘概率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.5 条件概率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.6 条件概率的链式法则 . . . . . . . . . . . . . . . . . . . . . . . 53 3.7 独立性和条件独立性 . . . . . . . . . . . . . . . . . . . . . . . 53 3.8 期望、方差和协方差 . . . . . . . . . . . . . . . . . . . . . . . 54 3.9 常用概率分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.9.1 Bernoulli 分布 . . . . . . . . . . . . . . . . . . . . . 56 3.9.2 Multinoulli 分布 . . . . . . . . . . . . . . . . . . . . 56 3.9.3 高斯分布 . . . . . . . . . . . . . . . . . . . . . . . . 57 3.9.4 指数分布和 Laplace 分布 . . . . . . . . . . . . . . . 58 3.9.5 Dirac 分布和经验分布 . . . . . . . . . . . . . . . . . 59 3.9.6 分布的混合 . . . . . . . . . . . . . . . . . . . . . . . 59 3.10 常用函数的有用性质 . . . . . . . . . . . . . . . . . . . . . . . 61 3.11 贝叶斯规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.12 连续型变量的技术细节 . . . . . . . . . . . . . . . . . . . . . . 64 3.13 信息论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 3.14 结构化概率模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 69 第四章 数值计算 72 4.1 上溢和下溢 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.2 病态条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
- 5.目录 v 4.3 基于梯度的优化方法 . . . . . . . . . . . . . . . . . . . . . . . 74 4.3.1 第五章 梯度之上:Jacobian 和 Hessian 矩阵 . . . . . . . . . 77 4.4 约束优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.5 实例:线性最小二乘 . . . . . . . . . . . . . . . . . . . . . . . 85 机器学习基础 5.1 5.2 5.3 学习算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5.1.1 任务 T 5.1.2 性能度量 P . . . . . . . . . . . . . . . . . . . . . . . 91 5.1.3 经验 E . . . . . . . . . . . . . . . . . . . . . . . . . 92 5.1.4 示例:线性回归 . . . . . . . . . . . . . . . . . . . . 94 5.5 5.6 5.2.1 没有免费午餐定理 . . . . . . . . . . . . . . . . . . . 102 5.2.2 正则化 . . . . . . . . . . . . . . . . . . . . . . . . . . 104 超参数和验证集 . . . . . . . . . . . . . . . . . . . . . . . . . . 105 5.8 交叉验证 . . . . . . . . . . . . . . . . . . . . . . . . 106 估计、偏差和方差 . . . . . . . . . . . . . . . . . . . . . . . . 108 5.4.1 点估计 . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.4.2 偏差 . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 5.4.3 方差和标准差 . . . . . . . . . . . . . . . . . . . . . . 111 5.4.4 权衡偏差和方差以最小化均方误差 . . . . . . . . . . 113 5.4.5 一致性 . . . . . . . . . . . . . . . . . . . . . . . . . . 114 最大似然估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.5.1 条件对数似然和均方误差 . . . . . . . . . . . . . . . 116 5.5.2 最大似然的性质 . . . . . . . . . . . . . . . . . . . . 117 贝叶斯统计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.6.1 5.7 . . . . . . . . . . . . . . . . . . . . . . . . . 88 容量、过拟合和欠拟合 . . . . . . . . . . . . . . . . . . . . . . 97 5.3.1 5.4 87 最大后验 (MAP) 估计 . . . . . . . . . . . . . . . . . 121 监督学习算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.7.1 概率监督学习 . . . . . . . . . . . . . . . . . . . . . . 122 5.7.2 支持向量机 . . . . . . . . . . . . . . . . . . . . . . . 123 5.7.3 其他简单的监督学习算法 . . . . . . . . . . . . . . . 125 无监督学习算法 . . . . . . . . . . . . . . . . . . . . . . . . . . 128 5.8.1 主成分分析 . . . . . . . . . . . . . . . . . . . . . . . 128
- 6.目录 vi 5.8.2 5.9 k-均值聚类 . . . . . . . . . . . . . . . . . . . . . . . 131 随机梯度下降 . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 5.10 构建机器学习算法 . . . . . . . . . . . . . . . . . . . . . . . . 133 5.11 促使深度学习发展的挑战 . . . . . . . . . . . . . . . . . . . . 134 5.11.1 维数灾难 . . . . . . . . . . . . . . . . . . . . . . . . 135 5.11.2 局部不变性和平滑正则化 . . . . . . . . . . . . . . . 135 5.11.3 流形学习 . . . . . . . . . . . . . . . . . . . . . . . . 139 第二部分 深度网络:现代实践 143 第六章 深度前馈网络 145 6.1 实例:学习 XOR . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.2 基于梯度的学习 . . . . . . . . . . . . . . . . . . . . . . . . . . 152 6.2.1 代价函数 . . . . . . . . . . . . . . . . . . . . . . . . 153 6.2.1.1 使用最大似然学习条件分布 . . . . . . . . . . . . . 154 6.2.1.2 学习条件统计量 . . . . . . . . . . . . . . . . . . . . 155 6.2.2 输出单元 . . . . . . . . . . . . . . . . . . . . . . . . 156 6.2.2.1 用于高斯输出分布的线性单元 . . . . . . . . . . . . 156 6.2.2.2 用于 Bernoulli 输出分布的 sigmoid 单元 . . . . . . 157 6.2.2.3 用于 Multinoulli 输出分布的 softmax 单元 . . . . . 159 6.2.2.4 其他的输出类型 . . . . . . . . . . . . . . . . . . . . 162 6.3 6.4 6.5 隐藏单元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 6.3.1 整流线性单元及其扩展 . . . . . . . . . . . . . . . . . 166 6.3.2 logistic sigmoid 与双曲正切函数 . . . . . . . . . . . 168 6.3.3 其他隐藏单元 . . . . . . . . . . . . . . . . . . . . . . 169 架构设计 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 6.4.1 万能近似性质和深度 . . . . . . . . . . . . . . . . . . 171 6.4.2 其他架构上的考虑 . . . . . . . . . . . . . . . . . . . 174 反向传播和其他的微分算法 . . . . . . . . . . . . . . . . . . . 175 6.5.1 计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . 176 6.5.2 微积分中的链式法则 . . . . . . . . . . . . . . . . . . 178 6.5.3 递归地使用链式法则来实现反向传播 . . . . . . . . . 179
- 7.目录 vii 6.6 第七章 6.5.4 全连接 MLP 中的反向传播计算 . . . . . . . . . . . . 181 6.5.5 符号到符号的导数 . . . . . . . . . . . . . . . . . . . 182 6.5.6 一般化的反向传播 . . . . . . . . . . . . . . . . . . . 185 6.5.7 实例:用于 MLP 训练的反向传播 . . . . . . . . . . 188 6.5.8 复杂化 . . . . . . . . . . . . . . . . . . . . . . . . . . 190 6.5.9 深度学习界以外的微分 . . . . . . . . . . . . . . . . . 191 6.5.10 高阶微分 . . . . . . . . . . . . . . . . . . . . . . . . 193 历史小记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 深度学习中的正则化 7.1 197 参数范数惩罚 . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 7.1.1 L2 参数正则化 . . . . . . . . . . . . . . . . . . . . . 199 7.1.2 L1 参数正则化 . . . . . . . . . . . . . . . . . . . . . 202 7.2 作为约束的范数惩罚 . . . . . . . . . . . . . . . . . . . . . . . 204 7.3 正则化和欠约束问题 . . . . . . . . . . . . . . . . . . . . . . . 206 7.4 数据集增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.5 噪声鲁棒性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 7.5.1 向输出目标注入噪声 . . . . . . . . . . . . . . . . . . 209 7.6 半监督学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.7 多任务学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 7.8 提前终止 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 7.9 参数绑定和参数共享 . . . . . . . . . . . . . . . . . . . . . . . 217 7.9.1 卷积神经网络 . . . . . . . . . . . . . . . . . . . . . . 218 7.10 稀疏表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 7.11 Bagging 和其他集成方法 . . . . . . . . . . . . . . . . . . . . . 220 7.12 Dropout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 7.13 对抗训练 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 7.14 切面距离、正切传播和流形正切分类器 . . . . . . . . . . . . . 232 第八章 深度模型中的优化 8.1 235 学习和纯优化有什么不同 . . . . . . . . . . . . . . . . . . . . 235 8.1.1 经验风险最小化 . . . . . . . . . . . . . . . . . . . . 236 8.1.2 代理损失函数和提前终止 . . . . . . . . . . . . . . . 237
- 8.目录 viii 8.1.3 8.2 8.3 批量算法和小批量算法 . . . . . . . . . . . . . . . . . 237 神经网络优化中的挑战 . . . . . . . . . . . . . . . . . . . . . . 241 8.2.1 病态 . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 8.2.2 局部极小值 . . . . . . . . . . . . . . . . . . . . . . . 243 8.2.3 高原、鞍点和其他平坦区域 . . . . . . . . . . . . . . 244 8.2.4 悬崖和梯度爆炸 . . . . . . . . . . . . . . . . . . . . 246 8.2.5 长期依赖 . . . . . . . . . . . . . . . . . . . . . . . . 247 8.2.6 非精确梯度 . . . . . . . . . . . . . . . . . . . . . . . 248 8.2.7 局部和全局结构间的弱对应 . . . . . . . . . . . . . . 248 8.2.8 优化的理论限制 . . . . . . . . . . . . . . . . . . . . 250 基本算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 8.3.1 随机梯度下降 . . . . . . . . . . . . . . . . . . . . . . 251 8.3.2 动量 . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 8.3.3 Nesterov 动量 . . . . . . . . . . . . . . . . . . . . . 256 8.4 参数初始化策略 . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.5 自适应学习率算法 . . . . . . . . . . . . . . . . . . . . . . . . 261 8.6 8.7 8.5.1 AdaGrad . . . . . . . . . . . . . . . . . . . . . . . . 261 8.5.2 RMSProp . . . . . . . . . . . . . . . . . . . . . . . . 262 8.5.3 Adam . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.5.4 选择正确的优化算法 . . . . . . . . . . . . . . . . . . 263 二阶近似方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 8.6.1 牛顿法 . . . . . . . . . . . . . . . . . . . . . . . . . . 266 8.6.2 共轭梯度 . . . . . . . . . . . . . . . . . . . . . . . . 267 8.6.3 BFGS . . . . . . . . . . . . . . . . . . . . . . . . . . 270 优化策略和元算法 . . . . . . . . . . . . . . . . . . . . . . . . 271 8.7.1 批标准化 . . . . . . . . . . . . . . . . . . . . . . . . 271 8.7.2 坐标下降 . . . . . . . . . . . . . . . . . . . . . . . . 274 8.7.3 Polyak 平均 . . . . . . . . . . . . . . . . . . . . . . . 274 8.7.4 监督预训练 . . . . . . . . . . . . . . . . . . . . . . . 275 8.7.5 设计有助于优化的模型 . . . . . . . . . . . . . . . . . 277 8.7.6 延拓法和课程学习 . . . . . . . . . . . . . . . . . . . 278
- 9.目录 第九章 ix 卷积网络 281 9.1 卷积运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 9.2 动机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 9.3 池化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290 9.4 卷积与池化作为一种无限强的先验 . . . . . . . . . . . . . . . 295 9.5 基本卷积函数的变体 . . . . . . . . . . . . . . . . . . . . . . . 296 9.6 结构化输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 9.7 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 9.8 高效的卷积算法 . . . . . . . . . . . . . . . . . . . . . . . . . . 309 9.9 随机或无监督的特征 . . . . . . . . . . . . . . . . . . . . . . . 310 9.10 卷积网络的神经科学基础 . . . . . . . . . . . . . . . . . . . . 311 9.11 卷积网络与深度学习的历史 . . . . . . . . . . . . . . . . . . . 317 第十章 序列建模:循环和递归网络 319 10.1 展开计算图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 10.2 循环神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.2.1 导师驱动过程和输出循环网络 . . . . . . . . . . . . . 326 10.2.2 计算循环神经网络的梯度 . . . . . . . . . . . . . . . 328 10.2.3 作为有向图模型的循环网络 . . . . . . . . . . . . . . 330 10.2.4 基于上下文的 RNN 序列建模 . . . . . . . . . . . . . 334 10.3 双向 RNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 10.4 基于编码-解码的序列到序列架构 . . . . . . . . . . . . . . . . 338 10.5 深度循环网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 10.6 递归神经网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 10.7 长期依赖的挑战 . . . . . . . . . . . . . . . . . . . . . . . . . . 343 10.8 回声状态网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 10.9 渗漏单元和其他多时间尺度的策略 . . . . . . . . . . . . . . . 347 10.9.1 时间维度的跳跃连接 . . . . . . . . . . . . . . . . . . 347 10.9.2 渗漏单元和一系列不同时间尺度 . . . . . . . . . . . 348 10.9.3 删除连接 . . . . . . . . . . . . . . . . . . . . . . . . 348 10.10 长短期记忆和其他门控 RNN . . . . . . . . . . . . . . . . . . 349 10.10.1 LSTM . . . . . . . . . . . . . . . . . . . . . . . . . . 349 10.10.2 其他门控 RNN . . . . . . . . . . . . . . . . . . . . . 351
- 10.目录 x 10.11 优化长期依赖 . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 10.11.1 截断梯度 . . . . . . . . . . . . . . . . . . . . . . . . 353 10.11.2 引导信息流的正则化 . . . . . . . . . . . . . . . . . . 355 10.12 外显记忆 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355 第十一章 实践方法论 359 11.1 性能度量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 11.2 默认的基准模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 362 11.3 决定是否收集更多数据 . . . . . . . . . . . . . . . . . . . . . . 363 11.4 选择超参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364 11.4.1 手动调整超参数 . . . . . . . . . . . . . . . . . . . . 364 11.4.2 自动超参数优化算法 . . . . . . . . . . . . . . . . . . 367 11.4.3 网格搜索 . . . . . . . . . . . . . . . . . . . . . . . . 368 11.4.4 随机搜索 . . . . . . . . . . . . . . . . . . . . . . . . 369 11.4.5 基于模型的超参数优化 . . . . . . . . . . . . . . . . . 370 11.5 调试策略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 11.6 示例:多位数字识别 . . . . . . . . . . . . . . . . . . . . . . . 374 第十二章 应用 377 12.1 大规模深度学习 . . . . . . . . . . . . . . . . . . . . . . . . . . 377 12.1.1 快速的 CPU 实现 . . . . . . . . . . . . . . . . . . . 378 12.1.2 GPU 实现 . . . . . . . . . . . . . . . . . . . . . . . . 378 12.1.3 大规模的分布式实现 . . . . . . . . . . . . . . . . . . 380 12.1.4 模型压缩 . . . . . . . . . . . . . . . . . . . . . . . . 381 12.1.5 动态结构 . . . . . . . . . . . . . . . . . . . . . . . . 382 12.1.6 深度网络的专用硬件实现 . . . . . . . . . . . . . . . 384 12.2 计算机视觉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 12.2.1 预处理 . . . . . . . . . . . . . . . . . . . . . . . . . . 385 12.2.1.1 对比度归一化 . . . . . . . . . . . . . . . . . . . . . 386 12.2.2 数据集增强 . . . . . . . . . . . . . . . . . . . . . . . 389 12.3 语音识别 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 12.4 自然语言处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 12.4.1 n-gram . . . . . . . . . . . . . . . . . . . . . . . . . 392
- 11.目录 xi 12.4.2 神经语言模型 . . . . . . . . . . . . . . . . . . . . . . 394 12.4.3 高维输出 . . . . . . . . . . . . . . . . . . . . . . . . 396 12.4.3.1 使用短列表 . . . . . . . . . . . . . . . . . . . . . . 396 12.4.3.2 分层 Softmax . . . . . . . . . . . . . . . . . . . . . 397 12.4.3.3 重要采样 . . . . . . . . . . . . . . . . . . . . . . . . 399 12.4.3.4 噪声对比估计和排名损失 . . . . . . . . . . . . . . . 401 12.4.4 结合 n-gram 和神经语言模型 . . . . . . . . . . . . . 401 12.4.5 神经机器翻译 . . . . . . . . . . . . . . . . . . . . . . 402 12.4.5.1 使用注意力机制并对齐数据片段 . . . . . . . . . . . 403 12.4.6 历史展望 . . . . . . . . . . . . . . . . . . . . . . . . 406 12.5 其他应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 12.5.1 推荐系统 . . . . . . . . . . . . . . . . . . . . . . . . 407 12.5.1.1 探索与利用 . . . . . . . . . . . . . . . . . . . . . . 409 12.5.2 知识表示、推理和回答 . . . . . . . . . . . . . . . . . 410 12.5.2.1 知识、联系和回答 . . . . . . . . . . . . . . . . . . . 410 第三部分 深度学习研究 414 第十三章 线性因子模型 417 13.1 概率 PCA 和因子分析 . . . . . . . . . . . . . . . . . . . . . . 418 13.2 独立成分分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 13.3 慢特征分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 13.4 稀疏编码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 13.5 PCA 的流形解释 . . . . . . . . . . . . . . . . . . . . . . . . . 426 第十四章 自编码器 429 14.1 欠完备自编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . 430 14.2 正则自编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 14.2.1 稀疏自编码器 . . . . . . . . . . . . . . . . . . . . . . 431 14.2.2 去噪自编码器 . . . . . . . . . . . . . . . . . . . . . . 433 14.2.3 惩罚导数作为正则 . . . . . . . . . . . . . . . . . . . 434 14.3 表示能力、层的大小和深度 . . . . . . . . . . . . . . . . . . . 434 14.4 随机编码器和解码器 . . . . . . . . . . . . . . . . . . . . . . . 435
- 12.目录 xii 14.5 去噪自编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 14.5.1 得分估计 . . . . . . . . . . . . . . . . . . . . . . . . 437 14.5.2 历史展望 . . . . . . . . . . . . . . . . . . . . . . . . 440 14.6 使用自编码器学习流形 . . . . . . . . . . . . . . . . . . . . . . 440 14.7 收缩自编码器 . . . . . . . . . . . . . . . . . . . . . . . . . . . 445 14.8 预测稀疏分解 . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 14.9 自编码器的应用 . . . . . . . . . . . . . . . . . . . . . . . . . . 448 第十五章 表示学习 449 15.1 贪心逐层无监督预训练 . . . . . . . . . . . . . . . . . . . . . . 450 15.1.1 何时以及为何无监督预训练有效? . . . . . . . . . . 452 15.2 迁移学习和领域自适应 . . . . . . . . . . . . . . . . . . . . . . 457 15.3 半监督解释因果关系 . . . . . . . . . . . . . . . . . . . . . . . 461 15.4 分布式表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 15.5 得益于深度的指数增益 . . . . . . . . . . . . . . . . . . . . . . 471 15.6 提供发现潜在原因的线索 . . . . . . . . . . . . . . . . . . . . 472 第十六章 深度学习中的结构化概率模型 475 16.1 非结构化建模的挑战 . . . . . . . . . . . . . . . . . . . . . . . 476 16.2 使用图描述模型结构 . . . . . . . . . . . . . . . . . . . . . . . 479 16.2.1 有向模型 . . . . . . . . . . . . . . . . . . . . . . . . 480 16.2.2 无向模型 . . . . . . . . . . . . . . . . . . . . . . . . 482 16.2.3 配分函数 . . . . . . . . . . . . . . . . . . . . . . . . 484 16.2.4 基于能量的模型 . . . . . . . . . . . . . . . . . . . . 485 16.2.5 分离和 d-分离 . . . . . . . . . . . . . . . . . . . . . 487 16.2.6 在有向模型和无向模型中转换 . . . . . . . . . . . . . 490 16.2.7 因子图 . . . . . . . . . . . . . . . . . . . . . . . . . . 493 16.3 从图模型中采样 . . . . . . . . . . . . . . . . . . . . . . . . . . 494 16.4 结构化建模的优势 . . . . . . . . . . . . . . . . . . . . . . . . 495 16.5 学习依赖关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 16.6 推断和近似推断 . . . . . . . . . . . . . . . . . . . . . . . . . . 497 16.7 结构化概率模型的深度学习方法 . . . . . . . . . . . . . . . . . 498 16.7.1 实例:受限玻尔兹曼机 . . . . . . . . . . . . . . . . . 499
- 13.目录 xiii 第十七章 蒙特卡罗方法 502 17.1 采样和蒙特卡罗方法 . . . . . . . . . . . . . . . . . . . . . . . 502 17.1.1 为什么需要采样? . . . . . . . . . . . . . . . . . . . 502 17.1.2 蒙特卡罗采样的基础 . . . . . . . . . . . . . . . . . . 503 17.2 重要采样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 17.3 马尔可夫链蒙特卡罗方法 . . . . . . . . . . . . . . . . . . . . 506 17.4 Gibbs 采样 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510 17.5 不同的峰值之间的混合挑战 . . . . . . . . . . . . . . . . . . . 511 17.5.1 不同峰值之间通过回火来混合 . . . . . . . . . . . . . 513 17.5.2 深度也许会有助于混合 . . . . . . . . . . . . . . . . . 514 第十八章 直面配分函数 516 18.1 对数似然梯度 . . . . . . . . . . . . . . . . . . . . . . . . . . . 516 18.2 随机最大似然和对比散度 . . . . . . . . . . . . . . . . . . . . 518 18.3 伪似然 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524 18.4 得分匹配和比率匹配 . . . . . . . . . . . . . . . . . . . . . . . 526 18.5 去噪得分匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 18.6 噪声对比估计 . . . . . . . . . . . . . . . . . . . . . . . . . . . 529 18.7 估计配分函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 18.7.1 退火重要采样 . . . . . . . . . . . . . . . . . . . . . . 533 18.7.2 桥式采样 . . . . . . . . . . . . . . . . . . . . . . . . 536 第十九章 近似推断 538 19.1 把推断视作优化问题 . . . . . . . . . . . . . . . . . . . . . . . 539 19.2 期望最大化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541 19.3 最大后验推断和稀疏编码 . . . . . . . . . . . . . . . . . . . . 542 19.4 变分推断和变分学习 . . . . . . . . . . . . . . . . . . . . . . . 544 19.4.1 离散型潜变量 . . . . . . . . . . . . . . . . . . . . . . 545 19.4.2 变分法 . . . . . . . . . . . . . . . . . . . . . . . . . . 551 19.4.3 连续型潜变量 . . . . . . . . . . . . . . . . . . . . . . 554 19.4.4 学习和推断之间的相互作用 . . . . . . . . . . . . . . 556 19.5 学成近似推断 . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 19.5.1 醒眠算法 . . . . . . . . . . . . . . . . . . . . . . . . 557
- 14.目录 xiv 19.5.2 第二十章 深度生成模型 学成推断的其他形式 . . . . . . . . . . . . . . . . . . 557 559 20.1 玻尔兹曼机 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559 20.2 受限玻尔兹曼机 . . . . . . . . . . . . . . . . . . . . . . . . . . 561 20.2.1 条件分布 . . . . . . . . . . . . . . . . . . . . . . . . 562 20.2.2 训练受限玻尔兹曼机 . . . . . . . . . . . . . . . . . . 563 20.3 深度信念网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 20.4 深度玻尔兹曼机 . . . . . . . . . . . . . . . . . . . . . . . . . . 566 20.4.1 有趣的性质 . . . . . . . . . . . . . . . . . . . . . . . 568 20.4.2 DBM 均匀场推断 . . . . . . . . . . . . . . . . . . . 569 20.4.3 DBM 的参数学习 . . . . . . . . . . . . . . . . . . . 571 20.4.4 逐层预训练 . . . . . . . . . . . . . . . . . . . . . . . 572 20.4.5 联合训练深度玻尔兹曼机 . . . . . . . . . . . . . . . 574 20.5 实值数据上的玻尔兹曼机 . . . . . . . . . . . . . . . . . . . . 578 20.5.1 Gaussian-Bernoulli RBM . . . . . . . . . . . . . . . 578 20.5.2 条件协方差的无向模型 . . . . . . . . . . . . . . . . . 579 20.6 卷积玻尔兹曼机 . . . . . . . . . . . . . . . . . . . . . . . . . . 583 20.7 用于结构化或序列输出的玻尔兹曼机 . . . . . . . . . . . . . . 585 20.8 其他玻尔兹曼机 . . . . . . . . . . . . . . . . . . . . . . . . . . 586 20.9 通过随机操作的反向传播 . . . . . . . . . . . . . . . . . . . . 587 20.9.1 通过离散随机操作的反向传播 . . . . . . . . . . . . . 588 20.10 有向生成网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 591 20.10.1 sigmoid 信念网络 . . . . . . . . . . . . . . . . . . . . 591 20.10.2 可微生成器网络 . . . . . . . . . . . . . . . . . . . . 592 20.10.3 变分自编码器 . . . . . . . . . . . . . . . . . . . . . . 594 20.10.4 生成式对抗网络 . . . . . . . . . . . . . . . . . . . . 597 20.10.5 生成矩匹配网络 . . . . . . . . . . . . . . . . . . . . 600 20.10.6 卷积生成网络 . . . . . . . . . . . . . . . . . . . . . . 601 20.10.7 自回归网络 . . . . . . . . . . . . . . . . . . . . . . . 602 20.10.8 线性自回归网络 . . . . . . . . . . . . . . . . . . . . 602 20.10.9 神经自回归网络 . . . . . . . . . . . . . . . . . . . . 603 20.10.10 NADE . . . . . . . . . . . . . . . . . . . . . . . . . . 604
- 15.目录 xv 20.11 从自编码器采样 . . . . . . . . . . . . . . . . . . . . . . . . . . 606 20.11.1 与任意去噪自编码器相关的马尔可夫链 . . . . . . . . 607 20.11.2 夹合与条件采样 . . . . . . . . . . . . . . . . . . . . 607 20.11.3 回退训练过程 . . . . . . . . . . . . . . . . . . . . . . 608 20.12 生成随机网络 . . . . . . . . . . . . . . . . . . . . . . . . . . . 609 20.12.1 判别性 GSN . . . . . . . . . . . . . . . . . . . . . . . 610 20.13 其他生成方案 . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 20.14 评估生成模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 611 20.15 结论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 参考文献 615 术语 679
- 16.中文版致谢 首先,我们要感谢原作者在本书翻译时给予我们的大力帮助。特别是,原作者 和我们分享了书中的原图和参考文献库,这极大节省了我们的时间和精力。 本书涉及的内容博大且思想深刻,如果没有众多同学和网友的帮助,我们不可 能顺利完成翻译。 我们才疏学浅而受此重任,深知自身水平难以将本书翻译得很准确。因此我们完 成草稿后,将书稿公开于 Github,及早接受网友的批评和建议。以下网友为本书的翻 译草稿提供了很多及时的反馈和宝贵的修改意见:@tttwwy @tankeco @fairmiracle @GageGao @huangpingchun @MaHongP @acgtyrant @yanhuibin315 @Buttonwood @titicacafz @weijy026a @RuiZhang1993 @zymiboxpay @xingkongliang @oisc @tielei @yuduowu @Qingmu @HC-2016 @xiaomingabc @bengordai @Bojian @JoyFYan @minoriwww @khty2000 @gump88 @zdx3578 @PassStory @imwebson @wlbksy @roachsinai @Elvinczp @endymecy @9578577 @linzhp @cnscottzheng @germanyzhu @zhangyafeikimi @showgood163 @kangqf @NeutronT @badpoem @kkpoker @Seaball @wheaio @angrymidiao @ZhiweiYang @corenel @zhaoyu611 @SiriusXDJ @dfcv24 @EmisXXY @FlyingFire @vsooda @friskit-china @poerin @ninesunqian @JiaqiYao @Sofring @wenlei @wizyoung @imageslr @indam @XuLYC @zhouqingping @freedomRen @runPenguin @piantou 在此期间,我们四位译者再次进行了校对并且相互之间也校对了一遍。然而仅 仅通过我们的校对,实在难以发现翻译中存在的问题。因此,我们邀请一些同学和 网友帮助我们校对。经过他们的校对,本书的翻译质量得到了极大的提升。在此我 们一一列出,以表示我们由衷的感谢! • 第一章(引言) :刘畅、许丁杰、潘雨粟和 NeutronT 对本章进行了阅读,并对 xvi
- 17.目录 xvii 很多语句提出了不少修改建议。林中鹏进行了校对,他提出了很多独到的修改 建议。 • 第二章(线性代数):许丁杰和骆徐圣阅读本章,并修改语句。李若愚进行了校 对,提出了很多细心的建议。 • 第三章(概率与信息论) :许丁杰阅读本章,并修改语句。李培炎和何翊卓进行 了校对,并修改了很多中文用词,使翻译更加准确。 • 第四章(数值计算):张亚霏阅读本章,并对其他章节也有提出了一些修改建 议。张源源进行了校对,并指出了原文可能存在的问题,非常仔细。 • 第五章(机器学习基础) :郭浩和黄平春阅读本章,并修改语句。李东和林中鹏 进行了校对。本章篇幅较长,能够有现在的翻译质量离不开这四位的贡献。 • 第六章(深度前馈网络):周卫林、林中鹏和张远航阅读本章,并提出修改意 见。 • 第七章(深度学习中的正则化) :周柏村进行了非常细心的校对,指出了大量问 题,令翻译更加准确。 • 第八章(深度模型中的优化) :房晓宇和吴翔阅读本章。黄平春进行了校对,他 提出的很多建议让行文更加流畅易懂。 • 第九章(卷积网络):赵雨和潘雨粟阅读本章,并润色语句。丁志铭进行了非常 仔细的校对,并指出很多翻译问题。 • 第十章(序列建模:循环和递归网络):刘畅阅读本章。赵雨提供了详细的校对 建议,尹瑞清根据他的翻译版本,给我们的版本提出了很多建议。虽然仍存在 一些分歧,但我们两个版本的整合,让翻译质量提升很多。 • 第十二章(应用):潘雨粟进行了校对,在他的校对之前,本章阅读起来比较困 难。他提供的修改建议,不仅提高了行文流畅度,还提升了译文的准确度。 • 第十三章(线性因子模型) :贺天行阅读本章,修改语句。杨志伟校对本章,润 色大量语句。 • 第十四章(自编码器):李雨慧和黄平春进行了校对。李雨慧提升了语言的流畅 度,黄平春纠正了不少错误,提高了准确性。
- 18.目录 xviii • 第十五章(表示学习):cnscottzheng 阅读本章,并修改语句。 • 第十七章(蒙特卡罗方法):张远航提供了非常细致的校对,后续还校对了一 遍,使译文质量大大提升。 • 第十八章(直面配分函数):吴家楠进行了校对,提升了译文准确性和可读性。 • 第十九章(近似推断):黄浩军、张远航和张源源进行了校对。这章虽篇幅不 大,但内容有深度,译文在三位的帮助下提高了准确度。 所有校对的修改建议都保存在 Github 上,再次感谢以上同学和网友的付出。经 过这五个多月的修改,草稿慢慢变成了初稿。尽管还有很多问题,但大部分内容是 可读的,并且是准确的。当然目前的翻译仍存在一些没有及时发现的问题,因此翻 译也将持续更新,不断修改。我们非常希望读者能到 Github 提建议,并且非常欢 迎,无论多么小的修改建议,都是非常宝贵的。 此外,我们还要感谢魏太云学长,他帮助我们与出版社沟通交流,并给予了我 们很多排版上的指导。 最后,感谢我们的导师张志华教授,没有老师的支持,我们难以完成翻译。
- 19.原书致谢 如果没有他人的贡献,这本书将不可能完成。我们感谢为本书提出建议和帮 助组织内容结构的人:Guillaume Alain, Kyunghyun Cho, Çağlar Gülçehre, David Krueger, Hugo Larochelle, Razvan Pascanu and Thomas Rohée 。 我们感谢为本书内容提供反馈的人。其中一些人对许多章都给出了建议:Martín Abadi, Guillaume Alain, Ion Androutsopoulos, Fred Bertsch, Olexa Bilaniuk, Ufuk Can Biçici, Matko Bošnjak, John Boersma, Greg Brockman, Alexandre de Brébisson, Pierre Luc Carrier, Sarath Chandar, Pawel Chilinski, Mark Daoust, Oleg Dashevskii, Laurent Dinh, Stephan Dreseitl, Jim Fan, Miao Fan, Meire Fortunato, Frédéric Francis, Nando de Freitas, Çağlar Gülçehre, Jurgen Van Gael, Javier Alonso García, Jonathan Hunt, Gopi Jeyaram, Chingiz Kabytayev, Lukasz Kaiser, Varun Kanade, Asifullah Khan, Akiel Khan, John King, Diederik P. Kingma, Yann LeCun, Rudolf Mathey, Matías Mattamala, Abhinav Maurya, Kevin Murphy, Oleg Mürk, Roman Novak, Augustus Q. Odena, Simon Pavlik, Karl Pichotta, Eddie Pierce, Kari Pulli, Roussel Rahman, Tapani Raiko, Anurag Ranjan, Johannes Roith, Mihaela Rosca, Halis Sak, César Salgado, Grigory Sapunov, Yoshinori Sasaki, Mike Schuster, Julian Serban, Nir Shabat, Ken Shirriff, Andre Simpelo, Scott Stanley, David Sussillo, Ilya Sutskever, Carles Gelada Sáez, Graham Taylor, Valentin Tolmer, Massimiliano Tomassoli, An Tran, Shubhendu Trivedi, Alexey Umnov, Vincent Vanhoucke, Marco Visentini-Scarzanella, Martin Vita, David Warde-Farley, Dustin Webb, Kelvin Xu, Wei Xue, Ke Yang, Li Yao, Zygmunt Zając and Ozan Çağlayan. 我们也要感谢对单个章节提供有效反馈的人: • 数学符号:Zhang Yuanhang. xix
- 20.目录 xx • 第一章(引言):Yusuf Akgul, Sebastien Bratieres, Samira Ebrahimi, Charlie Gorichanaz, Brendan Loudermilk, Eric Morris, Cosmin Pârvulescu and Alfredo Solano. • 第二章(线性代数):Amjad Almahairi, Nikola Banić, Kevin Bennett, Philippe Castonguay, Oscar Chang, Eric Fosler-Lussier, Andrey Khalyavin, Sergey Oreshkov, István Petrás, Dennis Prangle, Thomas Rohée, Gitanjali Gulve Sehgal, Colby Toland, Alessandro Vitale and Bob Welland. • 第三章(概率与信息论):John Philip Anderson, Kai Arulkumaran, Vincent Dumoulin, Rui Fa, Stephan Gouws, Artem Oboturov, Antti Rasmus, Alexey Surkov and Volker Tresp. • 第四章(数值计算):Tran Lam AnIan Fischer and Hu Yuhuang. • 第五章(机器学习基础):Dzmitry Bahdanau, Justin Domingue, Nikhil Garg, Makoto Otsuka, Bob Pepin, Philip Popien, Emmanuel Rayner, Peter Shepard, Kee-Bong Song, Zheng Sun and Andy Wu. • 第六章(深度前馈网络) :Uriel Berdugo, Fabrizio Bottarel, Elizabeth Burl, Ishan Durugkar, Jeff Hlywa, Jong Wook Kim, David Krueger and Aditya Kumar Praharaj. • 第七章(深度学习中的正则化):Morten Kolbæk, Kshitij Lauria, Inkyu Lee, Sunil Mohan, Hai Phong Phan and Joshua Salisbury. • 第八章(深度模型中的优化):Marcel Ackermann, Peter Armitage, Rowel Atienza, Andrew Brock, Tegan Maharaj, James Martens, Kashif Rasul, Klaus Strobl and Nicholas Turner. • 第九章(卷积网络) :Martín Arjovsky, Eugene Brevdo, Konstantin Divilov, Eric Jensen, Mehdi Mirza, Alex Paino, Marjorie Sayer, Ryan Stout and Wentao Wu. • 第十章(序列建模:循环和递归网络) :Gökçen Eraslan, Steven Hickson, Razvan Pascanu, Lorenzo von Ritter, Rui Rodrigues, Dmitriy Serdyuk, Dongyu Shi and Kaiyu Yang. • 第十一章(实践方法论):Daniel Beckstein.
- 21.目录 xxi • 第十二章(应用):George Dahl, Vladimir Nekrasov and Ribana Roscher. • 第十三章(线性因子模型):Jayanth Koushik. • 第十五章(表示学习):Kunal Ghosh. • 第十六章(深度学习中的结构化概率模型):Minh Lê and Anton Varfolom. • 第十八章(直面配分函数):Sam Bowman. • 第十九章(近似推断):Yujia Bao. • 第二十章(深度生成模型):Nicolas Chapados, Daniel Galvez, Wenming Ma, Fady Medhat, Shakir Mohamed and Grégoire Montavon. • 参考文献:Lukas Michelbacher and Leslie N. Smith. 我们还要感谢那些允许我们从他们的出版物中复制图片、数据的人。我们在图 片标题的文字中注明了他们的贡献。 我们还要感谢 Lu Wang 为我们写了 pdf2htmlEX,我们用它来制作这本书的网 页版本,Lu Wang 还帮助我们改进了生成的 HTML 的质量。 我们还要感谢 Ian 的妻子 Daniela Flori Goodfellow,在 Ian 的写作过程中的耐 心支持和检查。 我们还要感谢 Google Brain 团队提供了学术环境,从而使得 Ian 能够花费大 量时间写作此书并接受同行的反馈和指导。我们特别感谢 Ian 的前任经理 Greg Corrado 和他的现任经理 Samy Bengio 对这个项目的支持。最后我们还要感谢 Geoffrey Hinton 在写作困难时的鼓励。
- 22.网站 www.deeplearningbook.org 这本书伴随有上述网站。网站提供了各种补充材料,包括练习、讲义幻灯片、错 误更正以及其他应该对读者和讲师有用的资源。 xxii
- 23.数学符号 本节简要介绍本书所使用的数学符号。我们在第二章至第四章中描述大多数数 学概念,如果你不熟悉任何相应的数学概念,可以参考对应的章节。 数和数组 a 标量 (整数或实数) a 向量 A 矩阵 A 张量 In n 行 n 列的单位矩阵 I 维度蕴含于上下文的单位矩阵 e(i) 标准基向量 [0, . . . , 0, 1, 0, . . . , 0],其中索引 i 处值 为1 diag(a) 对角方阵,其中对角元素由 a 给定 a 标量随机变量 a 向量随机变量 A 矩阵随机变量 xxiii
- 24.目录 xxiv 集合和图 A 集合 R 实数集 {0, 1} {0, 1, . . . , n} 包含 0 和 1 的集合 包含 0 和 n 之间所有整数的集合 [a, b] 包含 a 和 b 的实数区间 (a, b] 不包含 a 但包含 b 的实数区间 A\B 差集,即其元素包含于 A 但不包含于 B G 图 P aG (xi ) 图 G 中 xi 的父节点 索引 ai 向量 a 的第 i 个元素,其中索引从 1 开始 a−i 除了第 i 个元素,a 的所有元素 Ai,j 矩阵 A 的 i, j 元素 Ai,: 矩阵 A 的第 i 行A:,i矩阵 A 的第 i 列 Ai,j,k 3 维张量 A 的 (i, j, k) 元素A:,:,i3 维张量的 2 维切片 ai 随机向量 a 的第 i 个元素
- 25.目录 xxv 线性代数中的操作 ⊤ A 矩阵 A 的转置 A+ A 的Moore-Penrose 伪逆 A⊙B A 和 B 的逐元素乘积(Hadamard 乘积) det(A) A 的行列式 微积分 dy dx ∂y ∂x y 关于 x 的偏导 ∇x y y 关于 x 的梯度 ∇X y y 关于 X 的矩阵导数 ∇X y y 关于 X 求导后的张量 ∂f ∂x ∇2x f (x) or H(f )(x) ∫ f (x)dx ∫ f (x)dx S y 关于 x 的导数 f : Rn → Rm 的Jacobian矩阵 J ∈ Rm×n f 在点 x 处的Hessian矩阵 x 整个域上的定积分 集合 S 上关于 x 的定积分
- 26.目录 xxvi 概率和信息论 a⊥b a⊥b c a 和 b 相互独立的随机变量 给定 c 后条件独立 P (a) 离散变量上的概率分布 p(a) 连续变量(或变量类型未指定时)上的概率分布 a∼P Ex∼P [f (x)] or Ef (x) Var(f (x)) Cov(f (x), g(x)) H(x) 具有分布 P 的随机变量 a f (x) 关于 P (x) 的期望 f (x) 在分布 P (x) 下的方差 f (x) 和 g(x) 在分布 P (x) 下的协方差 随机变量 x 的香农熵 DKL (P ∥Q) P 和 Q 的KL 散度 N (x; µ, Σ) 均值为 µ 协方差为 Σ,x 上的高斯分布
- 27.目录 xxvii 函数 f :A→B f ◦g f (x; θ) 定义域为 A 值域为 B 的函数 f f 和 g 的组合 由 θ 参数化,关于 x 的函数(有时为简化表示,我 们忽略 θ 记为 f (x) ) log x x 的自然对数 σ(x) Logistic sigmoid, ζ(x) Softplus, log(1 + exp(x)) x p x 的 Lp 范数 x x 的 L2 范数 x+ x 的正数部分, 即 max(0, x) 1condition 1 1 + exp(−x) 如果条件为真则为 1,否则为 0 有时候我们使用函数 f ,它的参数是一个标量,但应用到一个向量、矩阵或张 量:f (x), f (X), or f (X) 。这表示逐元素地将 f 应用于数组。例如,C = σ(X),则 对于所有合法的 i、j 和 k,Ci,j,k = σ(Xi,j,k )。 数据集和分布 pdata 数据生成分布 p̂train 由训练集定义的经验分布 X 训练样本的集合 x(i) 数据集的第 i 个样本(输入) y (i) or y(i) 监督学习中与 x(i) 关联的目标 X m × n 的矩阵,其中行 Xi,: 为输入样本 x(i)
- 28.xxviii 目录
- 29.第一章 引言 远在古希腊时期,发明家就梦想着创造能自主思考的机器。神话人物皮格马利 翁 (Pygmalion)、代达罗斯 (Daedalus) 和赫淮斯托斯 (Hephaestus) 可以被看作传说 中的发明家,而加拉蒂亚 (Galatea)、塔洛斯 (Talos) 和潘多拉 (Pandora) 则可以被 视为人造生命 (Ovid and Martin, 2004; Sparkes, 1996; Tandy, 1997)。 当人类第一次构思可编程计算机时,就已经在思考计算机能否变得智能(尽管 这距造出第一台计算机还有一百多年)(Lovelace, 1842)。如今,人工智能(artificial intelligence, AI)已经成为一个具有众多实际应用和活跃研究课题的领域,并且正在 蓬勃发展。我们期望通过智能软件自动地处理常规劳动、理解语音或图像、帮助医 学诊断和支持基础科学研究。 在人工智能的早期,那些对人类智力来说非常困难、但对计算机来说相对简单 的问题得到迅速解决,比如,那些可以通过一系列形式化的数学规则来描述的问题。 人工智能的真正挑战在于解决那些对人来说很容易执行、但很难形式化描述的任务, 如识别人们所说的话或图像中的脸。对于这些问题,我们人类往往可以凭借直觉轻 易地解决。 针对这些比较直观的问题,本书讨论一种解决方案。该方案可以让计算机从经 验中学习,并根据层次化的概念体系来理解世界,而每个概念则通过与某些相对简 单的概念之间的关系来定义。让计算机从经验获取知识,可以避免由人类来给计算 机形式化地指定它需要的所有知识。层次化的概念让计算机构建较简单的概念来学 习复杂概念。如果绘制出这些概念如何建立在彼此之上的图,我们将得到一张 ‘‘深’’ (层次很多)的图。基于这个原因,我们称这种方法为 AI 深度学习(deep learning)。 AI 许多早期的成功发生在相对朴素且形式化的环境中,而且不要求计算机具 备很多关于世界的知识。例如,IBM 的深蓝(Deep Blue)国际象棋系统在 1997 年 1
- 30.第一章 2 引言 击败了世界冠军Garry Kasparov(Hsu, 2002)。显然国际象棋是一个非常简单的领域, 因为它仅含有 64 个位置并只能以严格限制的方式移动 32 个棋子。设计一种成功的 国际象棋策略是巨大的成就,但向计算机描述棋子及其允许的走法并不是挑战的困 难所在。国际象棋完全可以由一个非常简短的、完全形式化的规则列表来描述,并 可以容易地由程序员事先准备好。 讽刺的是,抽象和形式化的任务对人类而言是最困难的脑力任务之一,但对计 算机而言却属于最容易的。计算机早就能够打败人类最好的象棋选手,但直到最近 计算机才在识别对象或语音任务中达到人类平均水平。一个人的日常生活需要关于 世界的巨量知识。很多这方面的知识是主观的、直观的,因此很难通过形式化的方 式表达清楚。计算机需要获取同样的知识才能表现出智能。人工智能的一个关键挑 战就是如何将这些非形式化的知识传达给计算机。 一些人工智能项目力求将关于世界的知识用形式化的语言进行硬编码 (hardcode)。计算机可以使用逻辑推理规则来自动地理解这些形式化语言中的声明。这 就是众所周知的人工智能的 知识库(knowledge base)方法。然而,这些项目最终 都没有取得重大的成功。其中最著名的项目是 Cyc (Lenat and Guha, 1989)。Cyc 包括一个推断引擎和一个使用 CycL 语言描述的声明数据库。这些声明是由人类 监督者输入的。这是一个笨拙的过程。人们设法设计出足够复杂的形式化规则来 精确地描述世界。例如,Cyc 不能理解一个关于名为 Fred 的人在早上剃须的故 事 (Linde, 1992)。它的推理引擎检测到故事中的不一致性:它知道人体的构成不 包含电气零件,但由于 Fred 正拿着一个电动剃须刀,它认为实体 ‘‘正在剃须的 Fred” (“FredWhileShaving”) 含有电气部件。因此它产生了这样的疑问——Fred 在 刮胡子的时候是否仍然是一个人。 依靠硬编码的知识体系面对的困难表明,AI 系统需要具备自己获取知识的能力, 即从原始数据中提取模式的能力。这种能力被称为 机器学习(machine learning)。 引入机器学习使计算机能够解决涉及现实世界知识的问题,并能作出看似主观的决 策。比如,一个被称为 逻辑回归(logistic regression)的简单机器学习算法可以决定 是否建议剖腹产 (Mor-Yosef et al., 1990)。而同样是简单机器学习算法的 朴素贝叶 斯(naive Bayes)则可以区分垃圾电子邮件和合法电子邮件。 这些简单的机器学习算法的性能在很大程度上依赖于给定数据的 表示(representation)。例如,当逻辑回归被用于判断产妇是否适合剖腹产时,AI 系统不会直接 检查患者。相反,医生需要告诉系统几条相关的信息,诸如是否存在子宫疤痕。表 示患者的每条信息被称为一个特征。逻辑回归学习病人的这些特征如何与各种结果
- 31.3 相关联。然而,它丝毫不能影响该特征定义的方式。如果将病人的 MRI 扫描作为逻 辑回归的输入,而不是医生正式的报告,它将无法作出有用的预测。MRI 扫描的单 一像素与分娩过程中并发症之间的相关性微乎其微。 在整个计算机科学乃至日常生活中,对表示的依赖都是一个普遍现象。在计算 机科学中,如果数据集合被精巧地结构化并被智能地索引,那么诸如搜索之类的操 作的处理速度就可以成指数级地加快。人们可以很容易地在阿拉伯数字的表示下进 行算术运算,但在罗马数字的表示下运算会比较耗时。因此,毫不奇怪,表示的选择 会对机器学习算法的性能产生巨大的影响。图 1.1 展示了一个简单的可视化例子。 Polar coordinates µ y Cartesian coordinates x r 图 1.1: 不同表示的例子:假设我们想在散点图中画一条线来分隔两类数据。在左图,我们使用笛 卡尔坐标表示数据,这个任务是不可能的。右图中,我们用极坐标表示数据,可以用垂直线简单地 解决这个任务。 (与 David Warde-Farley 合作画出此图。 ) 许多人工智能任务都可以通过以下方式解决:先提取一个合适的特征集,然后 将这些特征提供给简单的机器学习算法。例如,对于通过声音鉴别说话者的任务来 说,一个有用的特征是对其声道大小的估计。这个特征为判断说话者是男性、女性 还是儿童提供了有力线索。 然而,对于许多任务来说,我们很难知道应该提取哪些特征。例如,假设我们想 编写一个程序来检测照片中的车。我们知道,汽车有轮子,所以我们可能会想用车 轮的存在与否作为特征。不幸的是,我们难以准确地根据像素值来描述车轮看上去 像什么。虽然车轮具有简单的几何形状,但它的图像可能会因场景而异,如落在车 轮上的阴影、太阳照亮的车轮的金属零件、汽车的挡泥板或者遮挡的车轮一部分的 前景物体等等。
- 32.第一章 4 引言 解决这个问题的途径之一是使用机器学习来发掘表示本身,而不仅仅把表示映 射到输出。这种方法我们称之为 表示学习(representation learning)。学习到的表 示往往比手动设计的表示表现得更好。并且它们只需最少的人工干预,就能让AI系 统迅速适应新的任务。表示学习算法只需几分钟就可以为简单的任务发现一个很好 的特征集,对于复杂任务则需要几小时到几个月。手动为一个复杂的任务设计特征 需要耗费大量的人工时间和精力;甚至需要花费整个社群研究人员几十年的时间。 表示学习算法的典型例子是 自编码器(autoencoder)。自编码器由一个 编码器 (encoder)函数和一个 解码器(decoder)函数组合而成。编码器函数将输入数据转 换为一种不同的表示,而解码器函数则将这个新的表示转换到原来的形式。我们期 望当输入数据经过编码器和解码器之后尽可能多地保留信息,同时希望新的表示有 各种好的特性,这也是自编码器的训练目标。为了实现不同的特性,我们可以设计 不同形式的自编码器。 当设计特征或设计用于学习特征的算法时,我们的目标通常是分离出能解释观 察数据的 变差因素(factors of variation)。在此背景下,‘‘因素’’ 这个词仅指代影响 的不同来源;因素通常不是乘性组合。这些因素通常是不能被直接观察到的量。相 反,它们可能是现实世界中观察不到的物体或者不可观测的力,但会影响可观测的 量。为了对观察到的数据提供有用的简化解释或推断其原因,它们还可能以概念的 形式存在于人类的思维中。它们可以被看作数据的概念或者抽象,帮助我们了解这 些数据的丰富多样性。当分析语音记录时,变差因素包括说话者的年龄、性别、他们 的口音和他们正在说的词语。当分析汽车的图像时,变差因素包括汽车的位置、它 的颜色、太阳的角度和亮度。 在许多现实的人工智能应用中,困难主要源于多个变差因素同时影响着我们能 够观察到的每一个数据。比如,在一张包含红色汽车的图片中,其单个像素在夜间 可能会非常接近黑色。汽车轮廓的形状取决于视角。大多数应用需要我们理清变差 因素并忽略我们不关心的因素。 显然,从原始数据中提取如此高层次、抽象的特征是非常困难的。许多诸如说话 口音这样的变差因素,只能通过对数据进行复杂的、接近人类水平的理解来辨识。这 几乎与获得原问题的表示一样困难,因此,乍一看,表示学习似乎并不能帮助我们。 深度学习(deep learning)通过其他较简单的表示来表达复杂表示,解决了表 示学习中的核心问题。 深度学习让计算机通过较简单概念构建复杂的概念。图 1.2 展示了深度学习系统
- 33.5 CAR PERSON ANIMAL Output (object identity) 3rd hidden layer (object parts) 2nd hidden layer (corners and contours) 1st hidden layer (edges) Visible layer (input pixels) 图 1.2: 深度学习模型的示意图。计算机难以理解原始感观输入数据的含义,如表示为像素值集合 的图像。将一组像素映射到对象标识的函数非常复杂。如果直接处理,学习或评估此映射似乎是 不可能的。深度学习将所需的复杂映射分解为一系列嵌套的简单映射(每个由模型的不同层描述) 来解决这一难题。输入展示在 可见层(visible layer),这样命名的原因是因为它包含我们能观察 到的变量。然后是一系列从图像中提取越来越多抽象特征的 隐藏层(hidden layer)。因为它们的 值不在数据中给出,所以将这些层称为 ‘‘隐藏”; 模型必须确定哪些概念有利于解释观察数据中的 关系。这里的图像是每个隐藏单元表示的特征的可视化。给定像素,第一层可以轻易地通过比较相 邻像素的亮度来识别边缘。有了第一隐藏层描述的边缘,第二隐藏层可以容易地搜索可识别为角 和扩展轮廓的边集合。给定第二隐藏层中关于角和轮廓的图像描述,第三隐藏层可以找到轮廓和 角的特定集合来检测特定对象的整个部分。最后,根据图像描述中包含的对象部分,可以识别图 像中存在的对象。经 Zeiler and Fergus (2014) 许可转载此图。 如何通过组合较简单的概念(例如转角和轮廓,它们转而由边线定义)来表示图像 中人的概念。深度学习模型的典型例子是前馈深度网络或 多层感知机(multilayer perceptron, MLP)。多层感知机仅仅是一个将一组输入值映射到输出值的数学函数。 该函数由许多较简单的函数复合而成。我们可以认为不同数学函数的每一次应用都 为输入提供了新的表示。
- 34.第一章 6 引言 学习数据的正确表示的想法是解释深度学习的一个视角。另一个视角是深度促 使计算机学习一个多步骤的计算机程序。每一层表示都可以被认为是并行执行另一 组指令之后计算机的存储器状态。更深的网络可以按顺序执行更多的指令。顺序指 令提供了极大的能力,因为后面的指令可以参考早期指令的结果。从这个角度上看, 在某层激活函数里,并非所有信息都蕴涵着解释输入的变差因素。表示还存储着状 态信息,用于帮助程序理解输入。这里的状态信息类似于传统计算机程序中的计数 器或指针。它与具体的输入内容无关,但有助于模型组织其处理过程。 目前主要有两种度量模型深度的方式。第一种方式是基于评估架构所需执行的 顺序指令的数目。假设我们将模型表示为给定输入后,计算对应输出的流程图,则 可以将这张流程图中的最长路径视为模型的深度。正如两个使用不同语言编写的等 价程序将具有不同的长度;相同的函数可以被绘制为具有不同深度的流程图,其深 度取决于我们可以用来作为一个步骤的函数。图 1.3 说明了语言的选择如何给相同的 架构两个不同的衡量。 Element Set + ⇥ Element Set + ⇥ w1 ⇥ x1 w2 Logistic Regression x2 Logistic Regression w x 图 1.3: 将输入映射到输出的计算图表的示意图,其中每个节点执行一个操作。深度是从输入到输 出的最长路径的长度,但这取决于可能的计算步骤的定义。这些图中所示的计算是逻辑回归模型的 输出,σ(wT x),其中 σ 是 logistic sigmoid 函数。如果我们使用加法、乘法和 logistic sigmoid 作 为我们计算机语言的元素,那么这个模型深度为三。如果我们将逻辑回归视为元素本身,那么这 个模型深度为一。 另一种是在深度概率模型中使用的方法,它不是将计算图的深度视为模型深度, 而是将描述概念彼此如何关联的图的深度视为模型深度。在这种情况下,计算每个 概念表示的计算流程图的深度可能比概念本身的图更深。这是因为系统对较简单概 念的理解在给出更复杂概念的信息后可以进一步精细化。例如,一个 AI 系统观察其
- 35.7 中一只眼睛在阴影中的脸部图像时,它最初可能只看到一只眼睛。但当检测到脸部 的存在后,系统可以推断第二只眼睛也可能是存在的。在这种情况下,概念的图仅 包括两层(关于眼睛的层和关于脸的层),但如果我们细化每个概念的估计将需要额 外的 n 次计算,即计算的图将包含 2n 层。 由于并不总是清楚计算图的深度或概率模型图的深度哪一个是最有意义的,并 且由于不同的人选择不同的最小元素集来构建相应的图,因此就像计算机程序的长 度不存在单一的正确值一样,架构的深度也不存在单一的正确值。另外,也不存在 模型多么深才能被修饰为 ‘‘深’’ 的共识。但相比传统机器学习,深度学习研究的模型 涉及更多学到功能或学到概念的组合,这点毋庸置疑。 总之,这本书的主题——深度学习是通向人工智能的途径之一。具体来说,它 是机器学习的一种,一种能够使计算机系统从经验和数据中得到提高的技术。我们 坚信机器学习可以构建出在复杂实际环境下运行的 AI 系统,并且是唯一切实可行的 方法。深度学习是一种特定类型的机器学习,具有强大的能力和灵活性,它将大千 世界表示为嵌套的层次概念体系(由较简单概念间的联系定义复杂概念、从一般抽 象概括到高级抽象表示)。图 1.4 说明了这些不同的 AI 学科之间的关系。图 1.5 展示 了每个学科如何工作的高层次原理。
- 36.第一章 8 Deep learningExample:'>Example: