随便推荐

新书推荐

基于大模型的RAG应用开发与优化——构建企业级LLM应用

内容简介

《基于大模型的RAG应用开发与优化——构建企业级LLM应用》是一本全面介绍基于大语言模型的RAG应用开发的专业图书。本书共分为3篇:预备篇、基础篇和高级篇。预备篇旨在帮助你建立起对大模型与RAG的基本认识,并引导你搭建起RAG应用开发的基础环境;基础篇聚焦于经典RAG应用开发的核心要素与阶段,介绍关键模块的开发过程,剖析相关的技术原理,为后面的深入学习打下坚实的基础;高级篇聚焦于RAG应用开发的高阶模块与技巧,特别是在企业级RAG应用开发中的优化策略与技术实现,并探索了一些新型的RAG工作流与范式,旨在帮助你了解最新的RAG应用技术发展,掌握RAG应用的全方位开发能力。 《基于大模型的RAG应用开发与优化——构建企业级LLM应用》适合对大模型及RAG技术感兴趣的开发者、研究人员、产品经理及希望了解并掌握RAG应用开发能力的人阅读。无论你是进入AI领域的初学者,还是已经有一定基础的进阶者,都能从本书中找到适合自己的内容。

作者简介

严灿平
毕业于南京理工大学计算机系,南京大学工商管理硕士。先后就职于联创(后与亚信科技合并)担任软件工程师与设计师,甲骨文中国(Oracle)担任中国区企业架构部首席架构师,上海慧问信息科技有限公司担任合伙人兼技术总监。现为独立IT咨询顾问,公众号“AI大模型应用实践”主理人。拥有超过20年的企业软件从业经验,专注于企业软件架构设计、互联网时代传统行业的IT转型、人工智能与大数据技术在企业应用的创新等。 曾担任多项大型企业级软件系统核心架构师与咨询师,参与包括中国移动、中国电信等通信行业客户的核心业务运营支撑系统建设、智慧城市与政务行业互联网转型的IT咨询与规划。精通多种计算机软件开发技术与IT架构方法论,对移动互联网、大数据、人工智能在企业领域应用有深入的研究与实施经验。

目录

  • 预 备 篇
    • 第1章 了解大模型与RAG 3
      • 1.1 初识大模型 3
        • 1.1.1 大模型时代:生成式AI应用的爆发 3
        • 1.1.2 大模型应用的持续进化 4
        • 1.1.3 大模型是无所不能的吗 7
      • 1.2 了解RAG 11
        • 1.2.1 为什么需要RAG 11
        • 1.2.2 一个简单的RAG场景 12
      • 1.3 RAG应用的技术架构 14
        • 1.3.1 RAG应用的经典架构与流程 14
        • 1.3.2 RAG应用面临的挑战 17
        • 1.3.3 RAG应用架构的演进 18
      • 1.4 关于RAG的两个话题 20
        • 1.4.1 RAG与微调的选择 21
        • 1.4.2 RAG与具有理解超长上下文能力的大模型 24
    • 第2章 RAG应用开发环境搭建 27
      • 2.1 开发RAG应用的两种方式 27
        • 2.1.1 使用低代码开发平台 27
        • 2.1.2 使用大模型应用开发框架 29
      • 2.2 RAG应用开发环境准备 33
        • 2.2.1 硬件环境建议 33
        • 2.2.2 基础大模型 34
        • 2.2.3 嵌入模型 41
        • 2.2.4 Python虚拟运行环境 44
        • 2.2.5 Python IDE与开发插件 45
        • 2.2.6 向量库 47
        • 2.2.7 LlamaIndex框架 51
      • 2.3 关于本书开发环境的约定 51
  • 基 础 篇
    • 第3章 初识RAG应用开发 55
      • 3.1 开发一个最简单的RAG应用 55
        • 3.1.1 使用原生代码开发 56
        • 3.1.2 使用LlamaIndex框架开发 64
        • 3.1.3 使用LangChain框架开发 68
      • 3.2 如何跟踪与调试RAG应用 70
        • 3.2.1 借助LlamaDebugHandler 70
        • 3.2.2 借助第三方的跟踪与调试平台 73
      • 3.3 准备:基于LlamaIndex框架的RAG应用开发核心组件 77
    • 第4章 模型与Prompt 78
      • 4.1 大模型 78
        • 4.1.1 大模型在RAG应用中的作用 79
        • 4.1.2 大模型组件的统一接口 80
        • 4.1.3 大模型组件的单独使用 82
        • 4.1.4 大模型组件的集成使用 83
        • 4.1.5 了解与设置大模型的参数 84
        • 4.1.6 自定义大模型组件 85
        • 4.1.7 使用LangChain框架中的大模型组件 87
      • 4.2 Prompt 87
        • 4.2.1 使用Prompt模板 87
        • 4.2.2 更改默认的Prompt模板 88
        • 4.2.3 更改Prompt模板的变量 91
      • 4.3 嵌入模型 92
        • 4.3.1 嵌入模型在RAG应用中的作用 92
        • 4.3.2 嵌入模型组件的接口 93
        • 4.3.3 嵌入模型组件的单独使用 95
        • 4.3.4 嵌入模型组件的集成使用 97
        • 4.3.5 了解与设置嵌入模型的参数 97
        • 4.3.6 自定义嵌入模型组件 98
    • 第5章 数据加载与分割 100
      • 5.1 理解两个概念:Document与Node 100
        • 5.1.1 什么是Document与Node 100
        • 5.1.2 深入理解Document与Node 102
        • 5.1.3 深入理解Node对象的元数据 103
        • 5.1.4 生成Document对象 106
        • 5.1.5 生成Node对象 107
        • 5.1.6 元数据的生成与抽取 111
        • 5.1.7 初步了解IndexNode类型 115
      • 5.2 数据加载 116
        • 5.2.1 从本地目录中加载 117
        • 5.2.2 从网络中加载数据 123
      • 5.3 数据分割 129
        • 5.3.1 如何使用数据分割器 129
        • 5.3.2 常见的数据分割器 131
      • 5.4 数据摄取管道 145
        • 5.4.1 什么是数据摄取管道 145
        • 5.4.2 用于数据摄取管道的转换器 147
        • 5.4.3 自定义转换器 149
        • 5.4.4 使用数据摄取管道 150
      • 5.5 完整认识数据加载阶段 155
    • 第6章 数据嵌入与索引 156
      • 6.1 理解嵌入与向量 156
        • 6.1.1 直接用模型生成向量 157
        • 6.1.2 借助转换器生成向量 157
      • 6.2 向量存储 158
        • 6.2.1 简单向量存储 159
        • 6.2.2 第三方向量存储 161
      • 6.3 向量存储索引 164
        • 6.3.1 用向量存储构造向量存储索引对象 165
        • 6.3.2 用Node列表构造向量存储索引对象 166
        • 6.3.3 用文档直接构造向量存储索引对象 169
        • 6.3.4 深入理解向量存储索引对象 172
      • 6.4 更多索引类型 175
        • 6.4.1 文档摘要索引 175
        • 6.4.2 对象索引 177
        • 6.4.3 知识图谱索引 180
        • 6.4.4 树索引 186
        • 6.4.5 关键词表索引 187
    • 第7章 检索、响应生成与RAG引擎 190
      • 7.1 检索器 191
        • 7.1.1 快速构造检索器 191
        • 7.1.2 理解检索模式与检索参数 192
        • 7.1.3 初步认识递归检索 197
      • 7.2 响应生成器 199
        • 7.2.1 构造响应生成器 200
        • 7.2.2 响应生成模式 201
        • 7.2.3 响应生成器的参数 210
        • 7.2.4 实现自定义的响应生成器 212
      • 7.3 RAG引擎:查询引擎 214
        • 7.3.1 构造内置类型的查询引擎的两种方法 214
        • 7.3.2 深入理解查询引擎的内部结构和运行原理 217
        • 7.3.3 自定义查询引擎 218
      • 7.4 RAG引擎:对话引擎 221
        • 7.4.1 对话引擎的两种构造方法 221
        • 7.4.2 深入理解对话引擎的内部运行和运行原理 224
        • 7.4.3 理解不同的对话模式 227
      • 7.5 结构化输出 239
        • 7.5.1 使用output_cls参数 240
        • 7.5.2 使用输出解析器 241
  • 高 级 篇
    • 第8章 RAG引擎高级开发 247
      • 8.1 检索前查询转换 247
        • 8.1.1 简单查询转换 248
        • 8.1.2 HyDE查询转换 249
        • 8.1.3 多步查询转换 251
        • 8.1.4 子问题查询转换 254
      • 8.2 检索后处理器 259
        • 8.2.1 使用节点后处理器 259
        • 8.2.2 实现自定义的节点后处理器 260
        • 8.2.3 常见的预定义的节点后处理器 261
        • 8.2.4 Rerank节点后处理器 266
      • 8.3 语义路由 272
        • 8.3.1 了解语义路由 272
        • 8.3.2 带有路由功能的查询引擎 274
        • 8.3.3 带有路由功能的检索器 276
        • 8.3.4 使用独立的选择器 277
        • 8.3.5 可多选的路由查询引擎 278
      • 8.4 SQL查询引擎 280
        • 8.4.1 使用NLSQLTableQueryEngine组件 281
        • 8.4.2 基于实时表检索的查询引擎 283
        • 8.4.3 使用SQL检索器 285
      • 8.5 多模态文档处理 286
        • 8.5.1 多模态文档处理架构 286
        • 8.5.2 使用LlamaParse解析文档 288
        • 8.5.3 多模态文档中的表格处理 294
        • 8.5.4 多模态大模型的基础应用 297
        • 8.5.5 多模态文档中的图片处理 303
      • 8.6 查询管道:编排基于Graph的RAG工作流 308
        • 8.6.1 理解查询管道 309
        • 8.6.2 查询管道支持的两种使用方式 310
        • 8.6.3 深入理解查询管道的内部原理 313
        • 8.6.4 实现并插入自定义的查询组件 315
    • 第9章 开发Data Agent 321
      • 9.1 初步认识Data Agent 322
      • 9.2 构造与使用Agent的工具 323
        • 9.2.1 深入了解工具类型 324
        • 9.2.2 函数工具 325
        • 9.2.3 查询引擎工具 326
        • 9.2.4 检索工具 327
        • 9.2.5 查询计划工具 328
        • 9.2.6 按需加载工具 330
      • 9.3 基于函数调用功能直接开发Agent 331
      • 9.4 用框架组件开发Agent 335
        • 9.4.1 使用OpenAIAgent 335
        • 9.4.2 使用ReActAgent 336
        • 9.4.3 使用底层API开发Agent 338
        • 9.4.4 开发带有工具检索功能的Agent 340
        • 9.4.5 开发带有上下文检索功能的Agent 341
      • 9.5 更细粒度地控制Agent的运行 343
        • 9.5.1 分步可控地运行Agent 344
        • 9.5.2 在Agent运行中增加人类交互 346
    • 第10章 评估RAG应用 349
      • 10.1 为什么RAG应用需要评估 349
      • 10.2 RAG应用的评估依据与指标 350
      • 10.3 RAG应用的评估流程与方法 351
      • 10.4 评估检索质量 352
        • 10.4.1 生成检索评估数据集 352
        • 10.4.2 运行评估检索过程的程序 354
      • 10.5 评估响应质量 356
        • 10.5.1 生成响应评估数据集 356
        • 10.5.2 单次响应评估 358
        • 10.5.3 批量响应评估 360
      • 10.6 基于自定义标准的评估 362
    • 第11章 企业级RAG应用的常见优化策略 364
      • 11.1 选择合适的知识块大小 364
        • 11.1.1 为什么知识块大小很重要 364
        • 11.1.2 评估知识块大小 365
      • 11.2 分离检索阶段的知识块与生成阶段的知识块 369
        • 11.2.1 为什么需要分离 369
        • 11.2.2 常见的分离策略及实现 369
      • 11.3 优化对大文档集知识库的检索 378
        • 11.3.1 元数据过滤 + 向量检索 378
        • 11.3.2 摘要检索+ 内容检索 383
        • 11.3.3 多文档Agentic RAG 390
      • 11.4 使用高级检索方法 397
        • 11.4.1 融合检索 398
        • 11.4.2 递归检索 406
    • 第12章 构建端到端的企业级RAG应用 429
      • 12.1 对生产型RAG应用的主要考量 429
      • 12.2 端到端的企业级RAG应用架构 430
        • 12.2.1 数据存储层 431
        • 12.2.2 AI模型层 432
        • 12.2.3 RAG工作流与API模块 432
        • 12.2.4 前端应用模块 433
        • 12.2.5 后台管理模块 434
      • 12.3 端到端的全栈RAG应用案例 436
        • 12.3.1 简单的全栈RAG查询应用 436
        • 12.3.2 基于多文档Agent的端到端对话应用 455
    • 第13章 新型RAG范式原理与实现 478
      • 13.1 自纠错RAG:C-RAG 478
        • 13.1.1 C-RAG诞生的动机 478
        • 13.1.2 C-RAG的原理 479
        • 13.1.3 C-RAG的实现 480
      • 13.2 自省式RAG:Self-RAG 485
        • 13.2.1 Self-RAG诞生的动机 485
        • 13.2.2 Self-RAG的原理 486
        • 13.2.3 Self-RAG的实现 493
        • 13.2.4 Self-RAG的优化 506
      • 13.3 检索树RAG:RAPTOR 507
        • 13.3.1 RAPTOR诞生的动机 507
        • 13.3.2 RAPTOR的原理 508
        • 13.3.3 RAPTOR的实现 510

从零构建大模型算法、训练与微调

内容简介

《从零构建大模型:算法、训练与微调》是一本系统且实用的大模型构建指南,旨在引领读者从基础知识起步,逐步深入探索大模型的算法原理、训练方法及微调技术。《从零构建大模型:算法、训练与微调》共12章,涵盖了Transformer模型的基础理论,如Seq2Seq模型、分词、嵌入层和自注意力机制等关键概念;并深入剖析了GPT模型的核心实现与文本生成过程,以及BERT模型的预训练和微调技术。同时,也对ViT(视觉Transformer)模型的架构、训练方法,以及高阶微调策略如Adapter Tuning和P-Tuning进行了详尽讲解。此外,还系统地介绍了数据处理、数据增强、模型性能优化(包括混合精度训练和分布式训练)、对比学习、对抗训练、自适应优化器、动态学习率调度,以及模型蒸馏与剪枝技术等多个方面。最后,通过应用案例,展示了模型训练和微调的完整流程,助力读者将理论知识转化为实践技能。 全书注重理论与实践的结合,适合希望系统掌握大模型构建、训练和优化的研发人员、高校学生,也适合对自然语言处理、计算机视觉等领域的大模型开发有兴趣的读者。还可作为培训机构和高校相关课程的教学用书。

作者简介

梁楠,博士,毕业于北京航空航天大学,高级职称,长期从事模式识别、机器学习、统计理论的研究与应用,负责或参与科研项目多项,专注于人工智能、大语言模型的应用与开发,对深度学习、数据分析与预测等有独到见解。

目录

  • 引言 1
  • 一、大模型技术的发展历史 1
    • 1. 基于规则和统计学习的早期阶段 1
    • 2. 神经网络与深度学习的崛起 2
    • 3. Transformer的诞生与自注意力机制的崛起 2
    • 4. 预训练模型的兴起:BERT、GPT和T5 2
    • 5. 超大规模模型与多模态应用 3
  • 二、开发环境配置基础 3
    • 1. 硬件配置要求 3
    • 2. 软件依赖与环境搭建 4
    • 3. 常见问题与解决方案 5
  • 第 1 章 Transformer模型基础 6
    • 1.1 Seq2Seq模型 6
      • 1.1.1 编码器-解码器工作原理 7
      • 1.1.2 Seq2Seq结构实现 7
    • 1.2 分词与嵌入层 11
      • 1.2.1 分词器:将文本转换为嵌入向量 11
      • 1.2.2 PyTorch实现嵌入层(将分词后的结果输入模型) 11
    • 1.3 自注意力与多头注意力机制 15
      • 1.3.1 自注意力机制计算过程(QKV矩阵生成和点积运算) 15
      • 1.3.2 多头注意力机制与Transformer 18
    • 1.4 残差连接与层归一化 22
      • 1.4.1 残差连接层的实现 22
      • 1.4.2 层归一化与训练稳定性 25
    • 1.5 位置编码器 28
      • 1.5.1 位置编码的计算与实现 28
      • 1.5.2 位置编码在无序文本数据中的作用 30
    • 1.6 本章小结 35
    • 1.7 思考题 35
  • 第 2 章 GPT模型文本生成核心原理与实现 37
    • 2.1 GPT-2核心模块 37
      • 2.1.1 层堆叠 37
      • 2.1.2 GPT-2中的注意力机制 41
    • 2.2 GPT模型的文本生成过程 44
      • 2.2.1 详解GPT-2文本生成过程 44
      • 2.2.2 Greedy Search和Beam Search算法的实现与对比 47
    • 2.3 模型效果评估与调优 51
      • 2.3.1 模型常见评估方法 51
      • 2.3.2 基于困惑度的评估过程 56
    • 2.4 本章小结 60
    • 2.5 思考题 60
  • 第 3 章 BERT模型核心实现与预训练 62
    • 3.1 BERT模型的核心实现 62
      • 3.1.1 编码器堆叠 62
      • 3.1.2 BERT的自注意力机制与掩码任务 67
    • 3.2 预训练任务:掩码语言模型(MLM) 71
      • 3.2.1 MLM任务实现过程 71
      • 3.2.2 如何对输入数据进行随机遮掩并预测 72
    • 3.3 BERT模型的微调与分类任务应用 77
    • 3.4 本章小结 81
    • 3.5 思考题 81
  • 第 4 章 ViT模型 83
    • 4.1 图像分块与嵌入 83
    • 4.2 ViT模型的核心架构实现 89
      • 4.2.1 ViT模型的基础结构 89
      • 4.2.2 自注意力和多头注意力在图像处理中的应用 91
    • 4.3 训练与评估ViT模型 96
    • 4.4 ViT模型与注意力严格量化分析 100
    • 4.5 本章小结 105
    • 4.6 思考题 105
  • 第 5 章 高阶微调策略:Adapter Tuning与P-Tuning 107
    • 5.1 Adapter Tuning的实现 107
    • 5.2 LoRA Tuning实现 111
    • 5.3 Prompt Tuning与P-Tuning的应用 114
      • 5.3.1 Prompt Tuning 114
      • 5.3.2 P-Tuning 117
      • 5.3.3 Prompt Tuning和P-Tuning组合微调 120
      • 5.3.4 长文本情感分类模型的微调与验证 122
    • 5.4 本章小结 125
    • 5.5 思考题 125
  • 第 6 章 数据处理与数据增强 127
    • 6.1 数据预处理与清洗 127
      • 6.1.1 文本数据预处理 127
      • 6.1.2 文本数据清洗 130
    • 6.2 文本数据增强 133
      • 6.2.1 同义词替换 133
      • 6.2.2 随机插入 135
      • 6.2.3 其他类型的文本数据增强方法 137
    • 6.3 分词与嵌入层的应用 139
      • 6.3.1 深度理解分词技术 140
      • 6.3.2 嵌入向量的生成与优化 142
      • 6.3.3 文本预处理与数据增强综合案例 144
    • 6.4 本章小结 146
    • 6.5 思考题 147
  • 第 7 章 模型性能优化:混合精度训练与分布式训练 148
    • 7.1 混合精度训练的实现 148
    • 7.2 多GPU并行与分布式训练的实现 150
      • 7.2.1 分布式训练流程与常规配置方案 150
      • 7.2.2 Data Parallel方案 152
      • 7.2.3 Model Parallel方案 154
    • 7.3 梯度累积的实现 157
      • 7.3.1 梯度累积初步实现 157
      • 7.3.2 小批量训练中的梯度累积 159
      • 7.3.3 梯度累积处理文本分类任务 161
    • 7.4 本章小结 164
    • 7.5 思考题 165
  • 第 8 章 对比学习与对抗训练 166
    • 8.1 对比学习 166
      • 8.1.1 构建正负样本对及损失函数 166
      • 8.1.2 SimCLR的实现与初步应用 171
    • 8.2 基于对比学习的预训练与微调 174
      • 8.2.1 通过对比学习进行自监督预训练 175
      • 8.2.2 对比学习在分类、聚类等任务中的表现 180
    • 8.3 生成式对抗网络的实现与优化 183
    • 8.4 对抗训练在大模型中的应用 188
    • 8.5 本章小结 192
    • 8.6 思考题 192
  • 第 9 章 自适应优化器与动态学习率调度 194
    • 9.1 AdamW优化器与LAMB优化器的实现 194
      • 9.1.1 AdamW优化器 194
      • 9.1.2 LAMB优化器 197
    • 9.2 基于梯度累积的优化技巧 200
      • 9.2.1 大批量内存受限环境 200
      • 9.2.2 梯度累积的应用场景和参数调整对训练效果的影响 203
    • 9.3 动态学习率调度 205
      • 9.3.1 线性衰减 205
      • 9.3.2 余弦退火 207
    • 9.4 Warmup与循环学习率调度 209
      • 9.4.1 Warmup策略实现 209
      • 9.4.2 循环学习率调度 211
      • 9.4.3 其他几种常见的动态学习调度器 214
    • 9.5 本章小结 217
    • 9.6 思考题 218
  • 第 10 章 模型蒸馏与剪枝 219
    • 10.1 知识蒸馏:教师-学生模型 219
      • 10.1.1 知识蒸馏核心过程 219
      • 10.1.2 教师-学生模型 221
      • 10.1.3 蒸馏损失 224
    • 10.2 知识蒸馏在文本模型中的应用 226
      • 10.2.1 知识蒸馏在文本分类模型中的应用 226
      • 10.2.2 模型蒸馏效率分析 229
      • 10.2.3 文本情感分析任务中的知识蒸馏效率对比 231
    • 10.3 模型剪枝技术 234
      • 10.3.1 权重剪枝 234
      • 10.3.2 结构化剪枝 237
      • 10.3.3 在嵌入式设备上部署手写数字识别模型 240
      • 10.3.4 BERT模型的多头注意力剪枝 243
    • 10.4 本章小结 247
    • 10.5 思考题 248
  • 第 11 章 模型训练实战 249
    • 11.1 数据预处理与Tokenization细节 249
      • 11.1.1 大规模文本数据清洗 249
      • 11.1.2 常用分词器的使用 252
    • 11.2 大规模预训练模型的设置与启动 255
    • 11.3 预训练过程中的监控与中间结果保存 258
    • 11.4 训练中断与恢复机制 262
    • 11.5 综合案例:IMDB文本分类训练全流程 265
      • 11.5.1 数据预处理与Tokenization 265
      • 11.5.2 多GPU与分布式训练设置 266
      • 11.5.3 训练过程中的监控与中间结果保存 266
      • 11.5.4 训练中断与恢复 267
      • 11.5.5 测试模型性能 268
    • 11.6 本章小结 269
    • 11.7 思考题 270
  • 第 12 章 模型微调实战 271
    • 12.1 微调数据集的选择与准备 271
      • 12.1.1 数据集准备与清洗 271
      • 12.1.2 数据集分割 272
      • 12.1.3 数据增强 272
    • 12.2 层级冻结与部分解冻策略 274
    • 12.3 模型参数调整与优化技巧 276
    • 12.4 微调后的模型评估与推理优化 278
    • 12.5 综合微调应用案例 280
    • 12.6 本章小结 283
    • 12.7 思考题 283

深度学习

内容简介

《深度学习》由全球知名的三位专家Ian Goodfellow、Yoshua Bengio 和Aaron Courville撰写,是深度学习领域奠基性的经典教材。全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。

《深度学习》适合各类读者阅读,包括相关专业的大学生或研究生,以及不具有机器学习或统计背景、但是想要快速补充深度学习知识,以便在实际产品或平台中应用的软件工程师。

作者简介

作者简介
Ian Goodfellow,谷歌公司(Google) 的研究科学家,2014 年蒙特利尔大学机器学习博士。他的研究兴趣涵盖大多数深度学习主题,特别是生成模型以及机器学习的安全和隐私。Ian Goodfellow 在研究对抗样本方面是一位有影响力的早期研究者,他发明了生成式对抗网络,在深度学习领域贡献卓越。
Yoshua Bengio,蒙特利尔大学计算机科学与运筹学系(DIRO) 的教授,蒙特利尔学习算法研究所(MILA) 的负责人,CIFAR 项目的共同负责人,加拿大统计学习算法研究主席。Yoshua Bengio 的主要研究目标是了解产生智力的学习原则。他还教授“机器学习”研究生课程(IFT6266),并培养了一大批研究生和博士后。
Aaron Courville,蒙特利尔大学计算机科学与运筹学系的助理教授,也是LISA 实验室的成员。目前他的研究兴趣集中在发展深度学习模型和方法,特别是开发概率模型和新颖的推断方法。Aaron Courville 主要专注于计算机视觉应用,在其他领域,如自然语言处理、音频信号处理、语音理解和其他AI 相关任务方面也有所研究。

中文版审校者简介
张志华,北京大学数学科学学院统计学教授,北京大学大数据研究中心和北京大数据研究院数据科学教授,主要从事机器学习和应用统计学的教学与研究工作。

译者简介
赵申剑,上海交通大学计算机系硕士研究生,研究方向为数值优化和自然语言处理。
黎彧君,上海交通大学计算机系博士研究生,研究方向为数值优化和强化学习。
符天凡,上海交通大学计算机系硕士研究生,研究方向为贝叶斯推断。
李凯,上海交通大学计算机系博士研究生,研究方向为博弈论和强化学习。

目录

中文版致谢
英文原书致谢
数学符号
第1章 引言
1.1 本书面向的读者
1.2 深度学习的历史趋势
第1部分 应用数学与机器学习基础
第2章 线性代数
2.1 标量、向量、矩阵和张量
2.2 矩阵和向量相乘
2.3 单位矩阵和逆矩阵
2.4 线性相关和生成子空间
2.5 范数
2.6 特殊类型的矩阵和向量
2.7 特征分解
2.8 奇异值分解
2.9 Moore-Penrose伪逆
2.10 迹运算
2.11 行列式
2.12 实例:主成分分析
第3章 概率与信息论
3.1 为什么要使用概率
3.2 随机变量
3.3 概率分布
3.4 边缘概率
3.5 条件概率
3.6 条件概率的链式法则
3.7 独立性和条件独立性
3.8 期望、方差和协方差
3.9 常用概率分布
3.10 常用函数的有用性质
3.11 贝叶斯规则
3.12 连续型变量的技术细节
3.13 信息论
3.14 结构化概率模型
第4章 数值计算
4.1 上溢和下溢
4.2 病态条件
4.3 基于梯度的优化方法
4.4 约束优化
4.5 实例:线性最小二乘
第5章 机器学习基础
5.1 学习算法
5.2 容量、过拟合和欠拟合
5.3 超参数和验证集
5.4 估计、偏差和方差
5.5 最大似然估计
5.6 贝叶斯统计
5.7 监督学习算法
5.8 无监督学习算法
5.9 随机梯度下降
5.10 构建机器学习算法
5.11 促使深度学习发展的挑战
第2部分 深度网络:现代实践
第6章 深度前馈网络
6.1 实例:学习XOR
6.2 基于梯度的学习
6.3 隐藏单元
6.4 架构设计
6.5 反向传播和其他的微分算法
6.6 历史小记
第7章 深度学习中的正则化
7.1 参数范数惩罚
7.2 作为约束的范数惩罚
7.3 正则化和欠约束问题
7.4 数据集增强
7.5 噪声鲁棒性
7.6 半监督学习
7.7 多任务学习
7.8 提前终止
7.9 参数绑定和参数共享
7.10 稀疏表示
7.11 Bagging和其他集成方法
7.12 Dropout
7.13 对抗训练
7.14 切面距离、正切传播和流形正切分类器
第8章 深度模型中的优化
8.1 学习和纯优化有什么不同
8.2 神经网络优化中的挑战
8.3 基本算法
8.4 参数初始化策略
8.5 自适应学习率算法
8.6 二阶近似方法
8.7 优化策略和元算法
第9章 卷积网络
9.1 卷积运算
9.2 动机
9.3 池化
9.4 卷积与池化作为一种无限强的先验
9.5 基本卷积函数的变体
9.6 结构化输出
9.7 数据类型
9.8 高效的卷积算法
9.9 随机或无监督的特征
9.10 卷积网络的神经科学基础
9.11 卷积网络与深度学习的历史
第10章 序列建模:循环和递归网络
10.1 展开计算图
10.2 循环神经网络
10.3 双向RNN
10.4 基于编码-解码的序列到序列架构
10.5 深度循环网络
10.6 递归神经网络
10.7 长期依赖的挑战
10.8 回声状态网络
10.9 渗漏单元和其他多时间尺度的策略
10.10 长短期记忆和其他门控RNN
10.11 优化长期依赖
10.12 外显记忆
第11章 实践方法论
11.1 性能度量
11.2 默认的基准模型
11.3 决定是否收集更多数据
11.4 选择超参数
11.5 调试策略
11.6 示例:多位数字识别
第12章 应用
12.1 大规模深度学习
12.2 计算机视觉
12.3 语音识别
12.4 自然语言处理
12.5 其他应用
第3部分 深度学习研究
第13章 线性因子模型
13.1 概率PCA和因子分析
13.2 独立成分分析
13.3 慢特征分析
13.4 稀疏编码
13.5 PCA的流形解释
第14章 自编码器
14.1 欠完备自编码器
14.2 正则自编码器
14.3 表示能力、层的大小和深度
14.4 随机编码器和解码器
14.5 去噪自编码器详解
14.6 使用自编码器学习流形
14.7 收缩自编码器
14.8 预测稀疏分解
14.9 自编码器的应用
第15章 表示学习
15.1 贪心逐层无监督预训练
15.2 迁移学习和领域自适应
15.3 半监督解释因果关系
15.4 分布式表示
15.5 得益于深度的指数增益
15.6 提供发现潜在原因的线索
第16章 深度学习中的结构化概率模型
16.1 非结构化建模的挑战
16.2 使用图描述模型结构
16.3 从图模型中采样
16.4 结构化建模的优势
16.5 学习依赖关系
16.6 推断和近似推断
16.7 结构化概率模型的深度学习方法
第17章 蒙特卡罗方法
17.1 采样和蒙特卡罗方法
17.2 重要采样
17.3 马尔可夫链蒙特卡罗方法
17.4 Gibbs采样
17.5 不同的峰值之间的混合挑战
第18章 直面配分函数
18.1 对数似然梯度
18.2 随机最大似然和对比散度
18.3 伪似然
18.4 得分匹配和比率匹配
18.5 去噪得分匹配
18.6 噪声对比估计
18.7 估计配分函数
第19章 近似推断
19.1 把推断视作优化问题
19.2 期望最大化
19.3 最大后验推断和稀疏编码
19.4 变分推断和变分学习
19.5 学成近似推断
第20章 深度生成模型
20.1 玻尔兹曼机
20.2 受限玻尔兹曼机
20.3 深度信念网络
20.4 深度玻尔兹曼机
20.5 实值数据上的玻尔兹曼机
20.6 卷积玻尔兹曼机
20.7 用于结构化或序列输出的玻尔兹曼机
20.8 其他玻尔兹曼机
20.9 通过随机操作的反向传播
20.10 有向生成网络
20.11 从自编码器采样
20.12 生成随机网络
20.13 其他生成方案
20.14 评估生成模型
20.15 结论
参考文献
索引

人类简史:从动物到上帝(图文精编版)

十万年前,地球上至少有六种不同的人

但今日,世界舞台为什么只剩下了我们自己?

从只能啃食虎狼吃剩的残骨的猿人,到跃居食物链顶端的智人,

从雪维洞穴壁上的原始人手印,到阿姆斯壮踩上月球的脚印,

从认知革命、农业革命,到科学革命、生物科技革命,

我们如何登上世界舞台成为万物之灵的?

从公元前1776年的《汉摩拉比法典》,到1776年的美国独立宣言,

从帝国主义、资本主义,到自由主义、消费主义,

从兽欲,到物欲,从兽性、人性,到神性,

我们了解自己吗?我们过得更快乐吗?

我们究竟希望自己得到什么、变成什么?

------------------------------------------------------------------------------------------------

【编辑推荐】

1、由书改变而成的人类简史课程风靡全球,成为希伯来大学最受欢迎课程 Coursera最受欢迎课程 ,mooc最受欢迎课程。学界和大众都一致认可,戴蒙德推荐。

2、一大开创性:打通文字发明前后历史的界限。

文字发明之前的年代,是生物学家、考古学家的专长;文字发明之后的年代,是历史学家、政治学家和经济学家的专长;

许多著名史家的作品,欠缺遗传学或生态学的视野,如何让这两大段历史之间没有断层,能够有一以贯之的宏观解读?

本书不同于《枪炮、病菌与钢铁》从生物与环境的角度看人类社会的发展,也不同于麦克尼尔的《世界史》以文明为单位绘制的人类文明交织的世界。 他笔下的历史,在科学中有深沉的人文关怀。

3、填补传统人类史的三大鸿沟:

历史观与哲学观之间的鸿沟(提供有史实根据的深刻哲学思考);人类和生态系统之间的鸿沟(作者多从生态来思考,而不是只讲人类的利益);集体和个人之间的鸿沟(检视历史事件如何影响到当时一般人的生活)。

4、四大部分描述人类大历史:

7万年前的大脑认知革命(有能力谈八卦,想象不存在的事物,让陌生人开始合作、建立组织)

1.2万年前的农业革命(让我们渴求更多、生产更多,分工分职愈趋细腻)、

500年前的科学革命(带来快速进步,让我们拥有上帝的力量,也带来毁灭)

全球大一统、人类大融合的关键因素——金钱、帝国、宗教

5、一部个人幸福探索之书。

用通俗的语言和新鲜的视角,将个体的幸福放在人类发展的过程中审视,不再错过历史中最关键、最有意思的部分。涵盖了生物学,人类学,哲学,心理学,艺术,文学,伦理学等众多领域。涉及幸福,生命的意义等众多话题,有人说这是一部个人幸福探索之书。

6、一部“瘦身版”人类简史。

如果说给我一本书,不到五百页,没有一堆令人晕头转向的年份、人名、地名、称号,就能涵盖了人类如何崛起、影响现代生活甚巨的资本主义、一神教、自由人文主义、基因工程如何兴盛的人类历史重大脉络……这是仅有的一部!

7、一部引发多国版权大战的神秘大书。

获得波兰斯基人文学科创造力与独创性奖。 100周蝉联以色列畅销书排行榜第一,在英国,9家出版商疯狂竞价。 23个国家竞相购买版权。台湾上市一周,金石堂、诚品历史类畅销书榜第一 ,诚品总榜第八,西班牙上市两周总榜第一。

------------------------------------------------------------------------------------------------

【内容简介】

《人类简史:从动物到上帝》是以色列新锐历史学家的一部重磅作品。从十万年前有生命迹象开始到21世纪资本、科技交织的人类发展史。十万年前,地球上至少有六个人种,为何今天却只剩下了我们自己?我们曾经只是非洲角落一个毫不起眼的族群,对地球上生态的影响力和萤火虫、猩猩或者水母相差无几。为何我们能登上生物链的顶端,最终成为地球的主宰?

从认知革命、农业革命到科学革命,我们真的了解自己吗?我们过得更加快乐吗?我们知道金钱和宗教从何而来,为何产生吗?人类创建的帝国为何一个个衰亡又兴起?为什么地球上几乎每一个社会都有男尊女卑的观念?为何一神教成为最为广泛接受的宗教?科学和资本主义如何成为现代社会最重要的信条?理清影响人类发展的重大脉络,挖掘人类文化、宗教、法律、国家、信贷等产生的根源。这是一部宏大的人类简史,更见微知著、以小写大,让人类重新审视自己。

------------------------------------------------------------------------------------------------

【各界评论】

《人类简史:从动物到上帝》为什么能够在国际畅销书榜上爆冲?原因很简单,它处理的是历史的大问题、现代世界的大问题,而且,它的写作风格是刻骨铭心的生动。你会爱上它!

——普利策奖得主 《枪炮、病菌与钢铁》作者戴蒙德

这是此类大历史中最好的一本:规模宏大但绝非泛泛而谈;具有时代性又不花哨,观念惊世骇俗但绝不是个简单的反对者。每个人都能在书里找到一部分和另外的人开始讨论,但是弄清楚是哪部分、为什么,对我们都有好处。

——牛津大学历史学院院长 斯蒂文·刚尼

我拿起这本《人类简史》立刻“着道”了——拿起了就放不下,几乎一口气读完。吸引力主要来自作者才思的旷达敏捷,还有译者文笔的生动晓畅,而书中屡屡提及中国的相关史实,也能让人感到一种说不出的亲切,好像自己也被融入其中,读来欲罢不能。

——北京大学历史系教授 高毅

《人类简史》的目的不是传授人类考古学的所有研究成果,而是提供一种看历史的视角,一种全局的观点。当你不再执着于科学、政治或宗教等某一个领域的发展过程,而是关注人类社会的整体演变,观察这些领域之间的相互作用,你会感到你脑海中零碎的历史知识忽然像拼图一样各就各位,构成一幅宏大的图景,这样的视角非常新鲜。

——果壳网 姬十三

读完这本书,有一种跟着人类一同走过十万年的感觉!

——读者

这本书如果要用“宏伟史诗”来形容一点也不过分,其中包含了很多学科的内容,例如考古学、生物学、物理学、经济学、宗教、社会学甚至计算机科学等等。书里里面的大部分观点都是从不同的角度进行介绍,其中很多都是经无数人严格验证过的,讲师很多时候仅仅是通过自己的表达希望尽量客观地介绍一些内容,至于每个人怎么理解并没有统一的标准了。

——读者

超级好的课程,付费都坚持下来了,观点独特,从来没想到能从这个角度理解我们人类自己。

——读者

她来自马里乌波尔

★内容介绍

“如果你看见过我曾见到的。”母亲总是一再重复这句话。

“亲爱的上帝,请让我感觉她感觉到的,只要一瞬间就好。”多年之后,女儿这么说道。

娜塔莎·沃丁十岁的某天,母亲出门,再也没有回来,后来才得知母亲自沉雷格尼茨河,没能留下只言片语;父亲则酗酒,终日埋首俄语书籍。——在那之后,作者才意识到自己对她一无所知,唯一知道的是她来自马里乌波尔,1943年作为强制劳工被驱离乌克兰,前往德国。凭借少得可怜的线索,娜塔莎·沃丁一点一点地把碎裂的瓷片拼接在一起,她发现,这个家族的过往是一个巨大的谜,是一则关于东欧苦难的历史寓言……作者用迷人的方式完整还原了一部母亲的个人史、家族史、二十世纪动荡史。虽然这是一部非虚构作品,却比虚构作品更魔幻,更戏剧化,也更惊心动魄。

------------------------------------------------

★编辑推荐

◎一部家族史,百年世界灾难缩影

◎20世纪东欧灾难实录,填补二战东方劳工史出版空白

◎堪与温弗雷德·塞巴尔德媲美的作家,用文字抢救逝去的生命与记忆之书

◎重写东欧史,拼接历史的碎片,完整还原悲恸个人史。12000000名东方劳工,绝非二战犹太人大屠杀之外的历史注脚,展示欧洲文明悲剧的全景,揭示乌克兰人不为人知的命运

◎斩获德语第二大文学奖“莱比锡图书奖”(非虚构类)、德布林奖,德语文学在线、《明镜周刊》、《德国时代周报》、《法兰克福汇报》、《南德意志报》等高度赞誉

◎一出版即译为法国、黎巴嫩、意大利、立陶宛、荷兰、西班牙、乌克兰、阿拉伯等文字,长期踞于德国图书榜首

------------------------------------------------

★媒体评论

以家族史展现了世纪全景……一部了不起的作品。

——《明镜周刊》

……只有通过个人性的叙述,我们才能知道历史事件是怎样影响了一个人的经历,当下的事件是怎样从根本上形塑了一个人的生命。这部作品让人看到了德国伟大的记忆艺术家塞巴尔德从遗忘中抢救逝去生命的影子,这绝非偶然。

——勒夫勒(Sigrid Löffler),2015年德布林奖颁奖词

关于遗忘的重要文本。……这部扣人心弦的杰作,已经远远超出了寻找个人家族之根的范畴。

——德语文学在线

人类的生命是如此渺小又如此丰富,在历史的粉碎机里消逝得又是如此悄无声息。这就是《她来自马里乌波尔》所讲述的,作者在虚构和研究、重构和记忆中游走,寻找。……作者的语言朴实无华,但这再合适不过。……非常伟大、极富影响力的艺术。

——犹克‧玛根瑙(Jörg Magenau),德国广播电台文化台

不可预知和令人大跌眼镜的线索盘根错节,活像一部犯罪悬疑片,每个细节都增添了张力,偶然又衍生出了一连串不可思议……《她来自马里乌波尔》是二十世纪灾难史的缩影,其影响至今绵延不绝。

——赫尔穆特·伯蒂格(Helmut Böttiger),《德国时代周报》

近年来有好几部关于二十世纪梦魇的作品,它们与暴力相关,如档案中记录般遥远。虽然娜塔莎·沃丁仅展示了正在发生的故事的一小部分,但她的讲述是如此拉近了读者,我们在当中看到了我们自己。

——《法兰克福汇报》

娜塔莎·沃丁确立了一种既古典又非凡的写作范式。

——汉斯-彼得·库尼施(Hans-Peter Kunisch),《南德意志报》

革命,饥饿,世界大战,内战,古拉格,这是一个更富戏剧性的家族故事。……娜塔莎·沃丁继承了历史学家似乎无法接续的使命:将强制劳工和战俘的历史曝光在公众的视野中。

——德意志广播电台

这本书引人入胜,读开头第一句话就把心提溜到了嗓子眼,悲壮,震撼,很难停下翻动纸页的手指。……属于赫塔·米勒和凯尔泰斯·伊姆雷一脉。

——《科隆城市报》

……一部伟大的书,对抗沉默。那是一段鲜活的,生动的,发出叩问的,绝望而又动人的历史。当然,也充满了痛苦。这是一部催人泪下的书,是多重线索和寻找下的个人史书写。

——巴伐利亚州第二电台文化频道

凭借有限的信息,沃丁小心翼翼地把谜一般的家族史碎片拼接起来,于是便有了这部饱受赞誉的深情杰作,堪与W. G. 塞巴尔德媲美。……《她来自马里乌波尔》填补了文学领域的空白,通过对母亲家族的深情追溯,为成千上万东欧人民树立了纪念碑。

——New Books in German

这本书呼吁人们关注那些鲜为人知且往往不是焦点的历史议题,纳粹德国的东方劳工史即其中之一。有时候它像一本推理小说,在这本书面前你根本停不下来,因为你不知道娜塔莎·沃丁还要往窟窿里填充什么。许多东西浮出历史地表,但还有许多没有说出来。这就是书写家族史的意义。

——Beyond History

此书再次揭开了德国历史上的一块伤疤。许多档案材料被刻意销毁,记忆随着当事人的去世而荡然无存,即便尚有知情人在世也大多缄口不言。……相信随着该书的传播,这段被遮蔽和遗忘的历史会重新进入公共记忆之中。

——中国《文艺报》

Github | Docker | Project