新書推薦:
《
形似神异:什么是中日传统政治文化的结构性差异
》
售價:NT$
254.0
《
养育不好惹的小孩
》
售價:NT$
352.0
《
加加美高浩的手部绘画技法 II
》
售價:NT$
407.0
《
卡特里娜(“同一颗星球”丛书)
》
售價:NT$
398.0
《
伟大民族:从路易十五到拿破仑的法国史(方尖碑)
》
售價:NT$
857.0
《
古今“书画同源”论辨——中国书法与中国绘画的关系问题兼中国画笔墨研究
》
售價:NT$
602.0
《
《日本文学史序说》讲演录
》
售價:NT$
332.0
《
无尽的海洋:美国海事探险与大众文化(1815—1860)
》
售價:NT$
454.0
|
編輯推薦: |
从模型结构和数据基础两大角度解构大语言模型。详解经典模型的核心结构及实现过程,夯实基础。模型开发与调优,重构ChatGPT,GitHub配套代码。融合统计分析/机器学习/经济学等知识,全彩印刷。
|
內容簡介: |
本书从模型的结构和数据基础两个方面解构大语言模型,以便帮助读者理解和搭建类似ChatGPT的系统。在模型的结构方面,大语言模型属于深度神经网络,其设计核心是注意力机制,因此,本书涵盖了多层感知器、卷积神经网络和循环神经网络等经典模型。在模型的数据基础方面,本书既涉及模型训练的工程基础,如反向传播,又涉及数据的使用方式,如迁移学习、强化学习,以及传统的监督学习和无监督学习。此外,本书还阐述了如何从计量经济学和经典机器学习模型中汲取灵感,以提高模型的稳定性和可解释性。
本书既适用于希望深入了解大语言模型、通过人工智能技术解决实际问题的读者,也适合作为高等院校计算机及相关专业的师生参考用书。
|
關於作者: |
唐亘,数据科学家,专注于人工智能和大数据,积极参与Apache Spark、scikit-learn等开源项目,曾为华为、复旦大学等多家机构提供过百余场技术培训。曾撰写《精通数据科学:从线性回归到深度学习》一书,并担任英国最大在线出版社Packt的技术审稿人。毕业于复旦大学,获数学和计算机双学士学位,后求学于巴黎综合理工学院,获经济学和数据科学双硕士学位。
|
目錄:
|
第1章 绪论 2
1.1 是数字鹦鹉,还是自我意识 3
1.1.1 电车难题 3
1.1.2 任务分解 4
1.2 数据基础 5
1.3 模型结构 7
1.4 关于本书 9
第2章 数学基础:不可或缺的知识 12
2.1 向量、矩阵和张量 13
2.1.1 标量、向量、矩阵与张量 13
2.1.2 数学记号与特殊矩阵 14
2.1.3 矩阵运算 15
2.1.4 向量夹角 18
2.1.5 矩阵的秩 19
2.1.6 高维张量运算 20
2.2 概率 21
2.2.1 定义概率:事件和概率空间 22
2.2.2 条件概率:信息的价值 23
2.2.3 随机变量 24
2.2.4 正态分布:殊途同归 27
2.2.5 P-value:自信的猜测 28
2.3 微积分 30
2.3.1 导数和积分 30
2.3.2 极限 32
2.3.3 链式法则 33
2.3.4 偏导数与梯度 34
2.3.5 极值与最值 34
2.4 本章小结 35
第3章 线性回归:模型之母 38
3.1 一个简单的例子 39
3.1.1 机器学习的建模方式 40
3.1.2 统计分析的建模方式 43
3.2 模型实现 47
3.2.1 机器学习的代码实现 47
3.2.2 统计分析的代码实现 49
3.3 模型陷阱 52
3.3.1 过拟合:模型越复杂越好吗 53
3.3.2 假设检验:统计分析的解决方案 56
3.3.3 惩罚项:机器学习的解决方案 57
3.3.4 比较两种方案 60
3.4 面向未来的准备 60
3.4.1 图形表示与数学表达 61
3.4.2 模型的生命周期与持久化 62
3.5 本章小结 63
3.5.1 要点回顾 63
3.5.2 常见面试问题 64
第4章 逻辑回归:隐藏因子 68
4.1 二元分类问题:是与否 68
4.1.1 线性回归:为何失效 69
4.1.2 窗口效应:看不见的才是关键 70
4.1.3 逻辑分布 72
4.1.4 似然函数:统计分析的参数估计 74
4.1.5 损失函数:机器学习的参数估计 75
4.1.6 最终预测:从概率到类别 76
4.2 模型实现 76
4.2.1 初步分析数据:直观印象 77
4.2.2 搭建模型 79
4.2.3 理解模型结果 81
4.3 评估模型效果 82
4.3.1 查准率与查全率 83
4.3.2 F-score 85
4.3.3 ROC空间 86
4.3.4 ROC曲线与AUC 88
4.3.5 AUC的概率解释 89
4.4 非均衡数据集 90
4.4.1 准确度悖论 90
4.4.2 模型效果影响 91
4.4.3 解决方案 93
4.5 多元分类问题:超越是与否 94
4.5.1 多元逻辑回归 94
4.5.2 One-vs.-All:从二元到多元 95
4.5.3 模型实现 96
4.6 本章小结 97
4.6.1 要点回顾 97
4.6.2 常见面试问题 98
第5章 计量经济学的启示:他山之石 100
5.1 定量与定性:特征的数学运算合理吗 101
5.2 定性特征的处理 102
5.2.1 虚拟变量 102
5.2.2 定性特征转换为定量特征 104
5.3 定量特征的处理 105
5.3.1 定量特征转换为定性特征 106
5.3.2 基于卡方检验的方法 108
5.4 多重共线性:多变量的烦恼 109
5.4.1 多重共线性效应 110
5.4.2 检测多重共线性 113
5.4.3 解决方法 114
5.4.4 虚拟变量陷阱 116
5.5 本章小结 117
5.5.1 要点回顾 117
5.5.2 常见面试问题 118
第6章 最优化算法:参数估计 120
6.1 算法思路:模拟滚动 121
6.2 梯度下降法 122
6.2.1 算法使用的窍门 124
6.2.2 算法的局限性:局部最优与鞍点 125
6.3 梯度下降法的代码实现 126
6.3.1 PyTorch基础 127
6.3.2 利用PyTorch的封装函数 130
6.4 随机梯度下降法:更优化的算法 133
6.4.1 算法细节 133
6.4.2 代码实现 134
6.4.3 进一步优化 135
6.5 本章小结 137
6.5.1 要点回顾 137
6.5.2 常见面试问题 138
第7章 反向传播:神经网络的工程基础 140
7.1 计算图和向前传播 141
7.1.1 什么是计算图 141
7.1.2 代码实现 142
7.2 链式法则和反向传播 145
7.2.1 拓扑排序 146
7.2.2 代码实现 146
7.2.3 梯度传播过程 148
7.3 参数估计的全流程 151
7.3.1 随机梯度下降法回顾 151
7.3.2 计算图膨胀 152
7.4 动态优化 155
7.4.1 梯度累积 155
7.4.2 参数冻结 158
7.4.3 随机失活 159
7.5 真实世界:针对大规模模型的优化技巧 162
7.5.1 GPU计算 162
7.5.2 混合精度训练 164
7.5.3 梯度检查点 166
7.5.4 分布式计算 167
7.6 本章小结 170
7.6.1 要点回顾 170
7.6.2 常见面试问题 171
第8章 多层感知器:神经网络的“创世记” 174
8.1 感知器模型 175
8.1.1 神经元的数字孪生 175
8.1.2 图示与计算图 177
8.1.3 Sigmoid感知器与逻辑回归 178
8.1.4 Softmax函数 179
8.2 从神经网络的视角重新理解逻辑回归 181
8.2.1 回顾窗口效应 182
8.2.2 代码实现 183
8.2.3 损失函数为模型注入灵魂 185
8.2.4 神经网络的建模文化:搭积木 186
8.3 多层感知器 187
8.3.1 图形表示 187
8.3.2 数学基础 189
8.3.3 令人惊讶的通用性 192
8.3.4 代码实现 193
8.3.5 模型的联结主义 195
8.4 训练优化的关键:激活函数 197
8.4.1 坏死的神经细胞 198
8.4.2 数学基础 200
8.4.3 监控模型训练 201
8.4.4 不稳定的梯度 205
8.4.5 激活函数的改进 206
8.5 从第一步开始优化训练 208
8.5.1 模型损失的预估 208
8.5.2 参数初始化的初步优化 209
8.5.3 参数初始化的进一步优化 212
8.5.4 归一化层 214
8.6 本章小结 218
8.6.1 要点回顾 218
8.6.2 常见面试问题 219
第9章 卷积神经网络:深度学习的“出埃及记” 222
9.1 利用多层感知器识别数字 223
9.1.1 视觉对象的数字化 223
9.1.2 搭建模型 224
9.1.3 代码实现 226
9.1.4 防止过拟合之随机失活 229
9.1.5 防止过拟合之惩罚项 231
9.2 卷积神经网络 233
9.2.1 神经元的组织方式 234
9.2.2 卷积层的网络结构 235
9.2.3 卷积层的细节处理与代码实现 237
9.2.4 池化层 239
9.2.5 完整结构与实现 240
9.2.6 超越图像识别 242
9.3 残差网络 243
9.3.1 残差连接 243
9.3.2 实现要点和小窍门 245
9.3.3 代码实现 247
9.4 本章小结 247
9.4.1 要点回顾 247
9.4.2 常见面试问题 248
第10章 循环神经网络:尝试理解人类语言 250
10.1 自然语言处理的基本要素 251
10.1.1 语言数字化 252
10.1.2 分词器的语言基础 253
10.1.3 英文分词器 254
10.1.4 中文分词的挑战 256
10.1.5 学习框架:迁移学习 258
10.2 利用多层感知器学习语言 260
10.2.1 数据准备 260
10.2.2 文本嵌入 263
10.2.3 代码实现 265
10.2.4 普通神经网络的缺陷 266
10.3 循环神经网络 267
10.3.1 图示与结构 268
10.3.2 模型的关键:隐藏状态 269
10.3.3 利用循环神经网络学习语言 271
10.3.4 模型训练与文本生成 272
10.3.5 模型的学习原理:通过时间的反向传播 274
10.4 深度循环神经网络 275
10.4.1 更优雅的代码实现 275
10.4.2 批量序列数据的处理 277
10.4.3 从单层走向更复杂的结构 278
10.4.4 利用深度循环神经网络学习语言 280
10.5 长短期记忆网络 281
10.5.1 短期记忆 282
10.5.2 模型结构 284
10.5.3 代码实现 285
10.5.4 利用长短期记忆网络学习语言 287
10.6 本章小结 290
10.6.1 要点回顾 290
10.6.2 常见面试问题 291
第11章 大语言模型:是通用人工智能的开始吗 294
11.1 注意力机制 295
11.1.1 设计初衷 296
11.1.2 改进后的注意力机制 297
11.1.3 数学细节与实现技巧 299
11.2 从零开始实现GPT-2 300
11.2.1 模型结构 301
11.2.2 多头单向注意力 303
11.2.3 解码块 304
11.2.4 GPT-2的完整结构与重现 305
11.2.5 Python语言学习任务 307
11.3 从大语言模型到智能助手 308
11.3.1 大语言模型的现状 308
11.3.2 开源模型 310
11.3.3 从GPT到ChatGPT 311
11.3.4 提示工程 313
11.3.5 检索增强生成 314
11.4 模型微调 316
11.4.1 模型微调的4种模式 317
11.4.2 高效调参概述 318
11.4.3 高效调参之增加模型组件 319
11.4.4 高效调参之LoRA 320
11.5 监督微调和评分建模 323
11.5.1 监督微调初体验 323
11.5.2 更优化的监督微调 326
11.5.3 评分建模 327
11.5.4 如果重新构建ChatGPT 330
11.6 超越技术 331
11.6.1 智能的哲学基础 331
11.6.2 血汗工厂 333
11.6.3 碳足迹 334
11.7 本章小结 335
11.7.1 要点回顾 335
11.7.2 常见面试问题 336
第12章 强化学习:在动态交互中进化 338
12.1 大语言模型的持续优化 339
12.1.1 最大化评分:直观但错误的模型 339
12.1.2 为什么行不通:不可微的运算 341
12.1.3 可行的建模方式:调整损失函数 343
12.2 强化学习简介 345
12.2.1 核心概念 345
12.2.2 目标定义 346
12.2.3 两种解决方法 348
12.3 值函数学习 349
12.3.1 MC学习 350
12.3.2 贝尔曼方程与TD学习 352
12.3.3 利用神经网络进行学习 354
12.3.4 n步TD学习与优势函数 356
12.3.5 TD Lambda学习与GAE 357
12.4 策略学习 359
12.4.1 策略梯度定理 360
12.4.2 Reinforce算法 361
12.4.3 基准线算法 362
12.4.4 A2C算法 364
12.5 利用PPO优
|
內容試閱:
|
编写背景
以ChatGPT为代表的大语言模型一经问世,便立即吸引了全世界的目光。大语言模型不仅能理解人类语言,还能掌握语言中蕴含的知识,能够轻松地与人类进行深入交谈,并高效完成各种任务。在许多场景中,如果将系统的交互界面隐藏起来,我们甚至很难分辨它和真人之间的差异。尤其引人注目的是,大语言模型不时展现出自我意识,这引发了人们对人工智能的广泛讨论。一些人甚至开始感到恐慌,担心人工智能将逐渐取代作为碳基生物的人类,成为主导地球的新型硅基生物。
人工智能对人类社会的影响难以准确预测,就如同在互联网最初兴起时,人们难以想象它将如何改变我们的生活。毫无疑问,人工智能带来的冲击将是巨大的,甚至可能超越互联网,与电的发明相媲美,引发第四次工业革命(前三次工业革命分别由机械化、电气化、信息技术主导)。从目前已知的发展趋势来看,人工智能至少会彻底改变人与计算机的互动方式。
对技术人员而言,大语言模型能够自动生成大部分基础代码,从而降低传统编程的门槛。这虽然带来了诸多便利,但就像汽车取代马车一样,也可能减少相关职位的数量,使部分技术人员面临失业的风险,这只是硬币的一面。另一方面,随着人工智能的广泛应用,现有系统将按照人工智能的方式进行改造或重新构建,这必然会带来新的需求。为了抓住时代的红利,技术人员必须对人工智能技术有深刻的理解。
对非技术人员而言,人工智能的应用使他们能够绕开编写代码,直接通过自然语言与计算机交互,显著提升他们驾驭计算机的能力。除生成代码外,大多数基础工作,如撰写报告和制作PPT等,人工智能同样能够胜任。面对这样一个高效、无须休息且掌握大量知识的竞争者,非技术人员也需要认真思考哪些工作是无法被机器取代的。
投资大师巴菲特曾戏言,“大多数经济学家在思想上最经济,他们把在研究生院学到的东西用一辈子”。然而,即将迎来人工智能时代的我们并没有如此幸运,因为理解和掌握人工智能将成为必不可少的技能。大语言模型虽处于人工智能的前沿,但相关的最新资料分散在各种学术期刊上,其中有些内容过于注重数学细节,显得晦涩难懂。因此,笔者编写本书的初衷和目标十分清晰:以从零开始复刻ChatGPT为导向,搜集人工智能的相关资料,将其以更优雅的形式呈现出来,旨在帮助读者更好地理解大语言模型。
本书内容
相比于同类图书,本书在理论基础和工程实现方面都颇具特色。
在理论基础方面,人工智能知识涉及多个学科,包括统计分析、机器学习、计量经济学等。虽然同一模型在不同的学科中有不同的侧重点,但由于学科之间的割裂,很少有资料对它们进行融合和深入讨论。本书致力于打通这些学科之间的隔阂,通过类比的方式展示它们之间的关联。此外,本书在搭建大语言模型的过程中借鉴了许多经典模型的最佳实践经验,因此使用了较大篇幅来讨论和讲解相关模型的搭建技巧及发展历程,以帮助读者更好地掌握其中的精髓。
在工程实现方面,对于本书涉及的经典模型,第三方开源工具已经提供了封装良好的实现,使用起来并不复杂。然而,若仅限于使用这些开源工具,对模型的理解可能流于表面。此外,出于工程化的考虑,这些开源工具的代码引入了过多的封装和细节,即使读者有意深入阅读这些开源工具的源码,也难以理解模型的核心结构。因此,本书侧重于重新实现模型的核心部分,以帮助读者更好地理解模型。有时,使用人类的语言描述一些精妙的算法细节需要花费较大篇幅,而且效果并不尽如人意。相比之下,直接阅读代码则更加直观清晰。
在章节安排上,本书分为三个主要部分。
第一部分深入讨论人工智能领域最基础的线性回归模型和逻辑回归模型,详见第2~5章。这两个模型被认为是神经网络的基石,许多复杂模型的设计理念都源于它们。因此,深刻理解二者中的设计细节和训练方式可谓至关重要。这两个模型足够简单,我们正好可以通过它们来探讨一些人工智能的通用问题,如过拟合和惩罚项等。此外,这两个模型的理论基础涉及统计分析和计量经济学,这些学科也能为人工智能的发展提供启示和借鉴。
第二部分介绍神经网络的相关内容,详见第6~12章。本书以模型的最优化算法为起点,详细解析了神经网络的基石——反向传播算法,并在此基础上,逐一讨论经典神经网络的核心结构。在这个过程中,常用的训练优化方法也是重点内容之一,这些方法可以帮助模型更快地收敛。随后,本书将展开对大语言模型的讨论:从零开始实现GPT-2模型,继而深入研究如何将GPT演进为ChatGPT。这一过程将涉及模型微调和强化学习等内容。
第三部分简要介绍一些与神经网络相关的经典模型,详见第13章。这些内容旨在为读者拓宽视野,以便于更深入地理解神经网络技术的起源和演进过程。
|
|