既然翻开这本书,你就已经是时代的幸运儿。大模型是近 10 年来最大的技术浪潮,机器第一次能够掌握世界知识,像人一样思考。遇到这样大的技术浪潮是我人生最幸运的事情,在 GPT-4 发布之后,我就果断投身创业。
如今,大模型已经走进千行百业——程序员用 Cursor 可以提升一倍以上的开发效率;不懂编程的人也可以用 Lovable 开发产品原型;OpenAI Deep Research 生成的调研报告比大部分实习生做的专业;只需两小时,我就能使用 AI 根据录音整理出 5 万字的访谈稿;有了 AI,一名运营人员就可以管理几十个网站、上百个社交媒体账号;在公司举行会议的过程中,项目管理工具中的工作项就能实时更新相关信息……一些公司已经开始组建 AI 原生团队,每名真人员工带几名数字员工,真人员工将大多数时间用于思考和讨论,烦冗的执行工作则交给 24 小时不休息的数字员工。大模型也已经走进普通人的日常生活——餐厅服务员教我用 Kimi 写点评,家里的老人和亲戚用 DeepSeek-R1 写拜年短信,小区里的小孩天天“抱着”豆包聊天……
大模型发展迅速,可谓“AI 一天,人间一年”。很多人在百花齐放的模型花园中迷失了方向,不知道手头的应用场景应该用什么模型,也无法预判未来一年模型的发展方向,时常陷入焦虑。其实,如今几乎所有大模型都是基于 Transformer 架构的,万变不离其宗。
而你手里的这本书正是帮你系统了解 Transformer 和大模型的基本原理和能力边界的绝佳资料。当图灵公司找到我翻译这本书时,我看到作者的名字就第一时间答应了,因为我当年就是读了 Jay Alammar 的“The Illustrated Transformer”这篇博客文章才真正弄懂 Transformer 的(本书第 3 章就是由这篇博客文章扩展而来的)。如今讲解大模型的图书和文章浩如烟海,但本书的插图之精美、讲解之深入浅出是罕见的。本书从词元和嵌入讲起,不局限于生成模型,还包括很多人忽视的表示模型。此外,书中还包括文本分类、文本聚类、提示工程、RAG、模型微调等实用内容。
花些时间读一下本书,系统地了解 Transformer 和大模型的基本原理和能力边界,就如同在大模型的探险之旅中拥有了地图和指南针。这样,我们不但不会担心新发布的模型一夜之间让长期的工程积累变得无用,还可以为未来的模型开发产品。模型能力一旦就绪,产品就可以马上起量。
我在面试候选人和参加业内研讨会时,常常发现很多人有大量实战经验,但对模型的基本原理知之甚少。为了帮助大家更好地理解本书,也为了方便部分有面试需求的朋友更有针对性地阅读本书,围绕本书各章主题,我系统梳理了大模型领域常见的面试题,其中的大多数问题可以在书中直接找到答案,部分进阶问题可以从本书的参考文献或网络上的最新论文中找到答案。希望所有的朋友都能够带着这些问题阅读本书。
第 1 章 大语言模型简介
Q1:仅编码器(BERT 类)、仅解码器(GPT 类)和完整的编码器 - 解码器架构各有什么优缺点?
Q2:自注意力机制如何使大模型能够捕捉长距离依赖关系,它跟 RNN 有什么区别?
Q3:大模型为什么有上下文长度的概念?为什么它是指输入和输出的总长度?
第 2 章 词元和嵌入
Q4:大模型的分词器和传统的中文分词有什么区别?对于指定的词表,一句话是不是只有唯一的分词方式?
Q5:大模型是如何区分聊天历史中用户说的话和 AI 说的话的?
Q6:传统的静态词嵌入(如 word2vec)与大模型产生的上下文相关的嵌入相比,有什么区别?有了与上下文相关的嵌入,静态词嵌入还有什么价值?
Q7:在 word2vec 等词嵌入空间中,存在 king - man + woman ≈ queen 的现象,这是为什么?大模型的词元嵌入空间是否也有类似的属性?
第 3 章 LLM 的内部机制
Q8:注意力机制是如何计算上下文各个词元之间的相关性的?每个注意力头只关注一个词元吗?
Q9:如果需要通过修改尽可能少的参数值,让模型忘记某一特定知识,应该修改注意力层还是前馈神经网络层的参数?
Q10:为什么注意力机制需要多个头?跟简单地减少注意力头的数量相比,多查询注意力和分组查询注意力优化有什么不同?它们优化的是训练阶段还是推理阶段?
Q11:Flash Attention 并不能减少计算量,为什么能提升推理速度?Flash Attention 是如何实现增量计算 softmax 的?
Q12:跟原始 Transformer 论文中的绝对位置编码相比,RoPE(旋转位置嵌入)有什么优点?RoPE 在长上下文外推时会面临什么挑战?
第 4 章 文本分类
Q13:在本章中,嵌入模型 + 逻辑回归的分类方式获得了 0.85 的 F1 分数,而零样本分类方式获得了 0.78 的 F1 分数。如果有标注数据,什么情况下会选择零样本分类?
Q14:与 BERT 的掩蔽策略相比,掩码语言建模有何不同?这种预训练方式如何帮助模型在下游的文本分类任务中获得更好的性能?
Q15:假设你有一个包含 100 万条客户评论的数据集,但只有 1000 条带有标签的数据,请同时利用有标签和无标签的数据,结合表示模型和生成模型的优势,构建一个分类系统。
第 5 章 文本聚类和主题建模
Q16:有了强大的生成式大模型,嵌入模型还有什么用?(提示:推荐系统)
Q17:词袋法和文档嵌入在实现原理上有什么区别?词袋法是不是一无是处了?
Q18:BERTopic 中的 c-TF-IDF 与传统的 TF-IDF 有何不同?这种差异如何帮助改进主题表示的质量?
Q19:基于质心和基于密度的文本聚类算法有什么优缺点?
Q20:在一个主题建模项目中,你发现生成的主题中有大量重叠的关键词,如何使用本章介绍的技术来提高主题之间的区分度?
第 6 章 提示工程
Q21:针对翻译类、创意写作类、头脑风暴类任务,分别如何设置
temperature
和
top_p
?
Q22:一个专业的提示词模板由哪几部分构成?为什么提示词中需要描述角色定义?
Q23:为了尽可能防止提示词注入,如何设计提示词模板?如何在系统层面检测提示词注入攻击?
Q24:在没有推理模型之前,如何让模型先思考后回答?思维链、自洽性、思维树等几种技术各有什么优缺点?
Q25:如何保证模型的输出一定是合法的 JSON 格式?将大模型用于分类任务时,如何保证其输出一定是几个类别之一,而不会输出无关内容?如果开发一个学习英语的应用,如何确保其输出的语言始终限定在指定的词汇表中?
第 7 章 高级文本生成技术与工具
Q26:如果我们需要生成小说的标题、角色描述和故事梗概,当单次模型调用生成效果不佳时,如何分步生成?
Q27:如果用户跟模型对话轮次过多,超出了模型的上下文限制,但我们又希望尽可能保留用户的对话信息,该怎么办?
Q28:如何编写一个智能体,帮助用户规划一次包含机票预订、酒店安排和景点游览的旅行?需要配置哪些工具?如何确保系统在面对不完整或矛盾的信息时仍能提供合理建议?
Q29:如果单一智能体的提示词过长,导致性能下降,如何将其拆分为多个智能体,并在合适的时机调用不同的智能体?
第 8 章 语义搜索与 RAG
Q30:在 RAG 中,为什么要把文档划分成多个块进行索引?如何解决文档分块后内容上下文缺失的问题?如何处理跨片段的依赖关系?
Q31:向量相似度检索不能实现关键词的精确匹配,基于倒排索引的关键词检索不能匹配语义相近的词,如何解决这对矛盾?为什么需要重排序模型?
Q32:为什么要在向量相似度检索前,对用户输入的话进行改写?
Q33:如果需要根据某长篇小说的内容回答问题,而小说的长度远远超出了上下文限制,应该如何综合利用摘要和 RAG 技术,使其能同时回答故事梗概和故事细节?
第 9 章 多模态 LLM
Q34:在 CLIP 训练过程中,为什么需要同时最大化匹配图文对的相似度和最小化非匹配图文对的相似度?
Q35:BLIP-2 为何不直接将视觉编码器的输出连接到语言模型,而要引入 Q-Former 这一中间层结构?
Q36:现有一个能力较弱的多模态模型和一个能力较强的文本模型(如 DeepSeek-R1),如何结合两者的能力来回答与多模态相关的问题?
Q37:如何构建一个 AI 照片助手,能够对用户的上万张照片进行索引,根据用户的查询高效地检索相关照片?
第 10 章 构建文本嵌入模型
Q38:相比交叉编码器,为什么双编码器在大规模相似度搜索中更受欢迎?
Q39:在训练嵌入模型时,MNR(多负例排序)损失、余弦相似度损失和 softmax 损失各有哪些优缺点?在哪些场景下,余弦相似度损失可能比 MNR 损失更合适?
Q40:如何生成负例以提升模型性能?如何构建高质量的难负例?
Q41:为什么 TSDAE 选择使用特殊词元而非平均池化作为句子表征?
Q42:相比 STSB,MTEB 有哪些改进?其中包括哪些类别的嵌入任务?
第 11 章 为分类任务微调表示模型
Q43:如果标注的训练数据很少,如何扩增训练数据的数量?(提示:SetFit)
Q44:在继续预训练时,如何在保证模型获得特定领域知识的同时,最大限度地保留其通用能力?
Q45:请比较以下三种方案在医疗领域文本分类任务上的优缺点:(a) 直接使用通用 BERT 模型微调;(b) 在医疗文本上继续预训练 BERT 后再微调;(c) 从头开始用医疗文本预训练模型再微调。
Q46:在命名实体识别任务中,当 BERT 将单词拆分成多个词元时,如何解决标签对齐问题?
Q47:假设一个嵌入模型的训练语料主要由英文构成,在中文任务上表现不佳,如何用较低的继续预训练成本提升其中文能力?
第 12 章 微调生成模型
Q48:有人声称一篇文章是用 DeepSeek-R1 生成的,并给了你生成所用的完整提示词,如何证实或证伪这个说法?(提示:利用困惑度)
Q49:如何微调一个 Llama 开源模型,使其输出风格更简洁、更像微信聊天,并保证输出的内容符合国内的大模型安全要求?
Q50:QLoRA 中的分块量化如何解决普通量化导致的信息损失问题?
Q51:现有一个由若干篇文章组成的企业知识库,如何将其转换成适合 SFT 的数据集?
Q52:PPO 和 DPO 相比有什么优缺点?
Q53:在 PPO 中,如何防止模型在微调数据集以外的问题上泛化能力下降?如何防止模型收敛到单一类型的高奖励回答?
Q54:设想一个网站上都是 AI 生成的内容,我们统计了每篇文章的平均用户停留时长,如何将其转化为 DPO 所需的偏好数据?对于小红书和知乎两种类型的网站,处理方式有什么区别?
Q55:提示工程、RAG、SFT、RL、RLHF 应该分别在什么场景下应用?例如:快速迭代基本能力(提示工程)、用户个性化记忆(提示工程)、案例库和事实知识(RAG)、输出格式和语言风格(SFT)、领域深度思考能力和工具调用能力(RL)、根据用户反馈持续优化(RLHF)。
附录:图解 DeepSeek-R1 (建议补充阅读 DeepSeek 的原始论文)
Q56:DeepSeek-R1(简称 R1)与 DeepSeek-R1-Zero(简称 R1-Zero)的训练过程有什么区别,各自有什么优缺点?既然 R1-Zero 生成的推理过程可读性差,在非推理任务上的表现也不如 R1,那么 R1-Zero 存在的价值是什么?R1 训练过程是如何解决 R1-Zero 的上述问题的?
Q57:DeepSeek 是如何把 R1 的推理能力蒸馏到较小的模型中的?如果我们要自己蒸馏一个较小的垂直领域模型,如何尽可能保留 R1 在特定领域的能力?
Q58:R1-Zero 的方法主要适用于有明确验证机制的任务(如数学、编程),如何将这一方法扩展到更主观的领域(如创意写作或战略分析)?
Q59:如果要在一个非推理型模型的基础上通过强化学习(RL)训练出一个 1000 以内的整数四则运算错误率低于 1% 的模型,预计基座模型至少需要多大?RL 过程需要多少张 GPU 和多少训练时长?(提示:TinyZero)
Q60:在 QwQ-32B 推理模型的基础上,通过 RL 在类似 OpenAI Deep Research 的场景中强化垂直领域能力,如何构建训练数据集?预计需要多少张 GPU 和多少训练时长?
本书是我的首部译作,本书的翻译也是在大模型的辅助下完成的。翻译与修改过程大体如下。
第一轮:使用 Claude 3.5 Sonnet 对文本内容进行初步翻译,借助其多模态能力提取近 300 张图片的文字并进行翻译。
第二轮:由于技术图书对术语表达的一致性、格式的一致性、语言的流畅度等要求很高,在刘美英编辑的指导下,我又用大模型生成了术语表,参考术语表批量修正了术语翻译和格式问题。
第三轮:编辑中耕并提出修改反馈,按照编辑意见进行人工修改。
第四轮:编辑编加并提出修改反馈,按照编辑意见进行人工修改。
第五轮:排版后内容审读,通读全书内容并对个别问题进行人工修改。
由此可见,机器翻译虽然做了大量工作,但翻译过程仍然涉及多轮人工修改和校对。虽然我和编辑已竭尽所能地提升内容质量,但书中难免有错漏和不当之处,恳请读者指正。
本书初稿翻译完成之际,恰逢 DeepSeek-R1 发布。推理模型开启了缩放定律的第二曲线,不仅解决了数学计算和逻辑推理的可靠性问题,文字的流畅度和创造力也有了很大的提升。它背后的强化学习技术更是让我们看到了模型智力超越人类的曙光,也为中小企业利用行业数据建立护城河提供了一条路径。我们看到本书作者关于 DeepSeek-R1 的精彩图解博客文章后,又征得作者授权,补充了一个附录,让本书涵盖了读者最关心的主题之一。
我最近尝试用 DeepSeek-R1 和 Claude 3.7 Sonnet 再次运行我的翻译流水线,发现原有的术语不一致、翻译味重等问题大多数已经能自动解决。如果今天才开始翻译这本书,也许出版周期能缩短很多。这就是大模型的魅力,每过半年或一年,一件事情就有了全新的做法。
希望本书能够成为大模型花园的观光巴士,让更多人看到大模型的全景。这样,大模型不断扩展的能力边界就是一场视觉盛宴,而非吞噬一切的怪兽;我们就有机会站在 AI 的潮头,实现更多梦想,获得更多自由。
李博杰,2025 年 3 月
[1] 这里的试题是一个精华版,李博杰老师为本书整理了大模型面试题 200 问,作为免费的配套阅读资料,具体请前往 https://www.ituring.com.cn/book/3285 页面的“随书下载”下载阅读。——编者注