《动手学大型语言模型》核心摘要

作者: Jay Alammar & Maarten Grootendorst

💡 作者理念 这本书采用“直觉优先”的哲学,通过大量可视化和生动的例子,帮助读者快速建立对大型语言模型复杂概念的直观理解,而非纠结于深奥的数学原理。
第1章: 大型语言模型简介

本章为全书奠定基础,追溯了语言AI的发展历程,并明确了贯穿全书的核心模型分类。

🔬 事实: 语言AI发展简史
  • 词袋模型 (Bag-of-Words): 早期的文本表示方法,通过统计词频将文本向量化,但忽略了词序和语义。
  • 词嵌入 (Word Embeddings - Word2Vec): 2013年提出,使用神经网络学习单词的语义表示,使得意义相近的词在向量空间中也相近。
  • 循环神经网络 (RNN) + 注意力机制: 能够处理序列信息,注意力机制允许模型在处理序列时关注更相关的部分。
  • Transformer (2017): 革命性的架构,完全基于自注意力机制(Self-Attention),能够并行处理序列,极大地提升了效率和性能,是现代LLM的基石。
🎯 核心模型分类
  • 表征模型 (Representation Models): 如BERT(仅编码器架构),擅长理解和表征文本,用于分类、聚类等任务,不直接生成长文本。
  • 生成模型 (Generative Models): 如GPT(仅解码器架构),擅长根据输入文本(Prompt)生成新的、连贯的文本。
💡 观点: "大"的定义是相对的 作者指出,“大型语言模型”中的“大”是动态变化的,本书不仅涵盖巨型模型,也包括那些可以在消费级硬件上运行、参数量较小的实用模型。
第2章: Token与词嵌入

深入探讨LLM处理文本的两个基本构建块:如何将文本分解为模型能理解的单元(Token),以及如何将这些单元转化为有意义的数字表示(Embedding)。

🔬 事实: Tokenization (分词)

这是将文本分解成小单元(Token)的过程。常见的方案有:

  • 按词分词 (Word Tokenization): 简单,但词汇表庞大且无法处理未登录词。
  • 按字符分词 (Character Tokenization): 词汇表小,能处理任何词,但序列过长,模型学习效率低。
  • 子词分词 (Subword Tokenization): 主流方法(如BPE, WordPiece),将文本分解为常用词和词根、后缀等子词单元,在词汇表大小和处理新词能力之间取得了很好的平衡。
🎯 核心概念: 词嵌入 (Embeddings)

词嵌入是Token的数值化表示(向量),它不仅仅是数字,更捕捉了Token的语义信息。模型通过一个巨大的嵌入矩阵(Embedding Matrix)来查找每个Token ID对应的向量。

  • 静态词嵌入 (Static Embeddings): 如Word2Vec,一个词只有一个固定的向量,无法处理多义词(如"bank"既可以是银行也可以是河岸)。
  • 上下文词嵌入 (Contextualized Embeddings): 由BERT等现代LLM生成,同一个词在不同语境下会有不同的嵌入向量,极大地提升了对语言细微差别的理解能力。
第3章: 深入大型语言模型内部

本章以图文并茂的方式,解构了Transformer架构的核心——自注意力机制,揭示了LLM如何“思考”和生成文本。

🔬 事实: Transformer生成过程
  • 自回归生成 (Autoregressive): 模型一次只生成一个Token,然后将新生成的Token加入到输入中,再预测下一个Token,循环往复。
  • 前向传播 (Forward Pass): 从输入Token到输出概率分布的完整计算过程。主要包括:嵌入层 -> 多个Transformer模块 -> 语言模型头 (LM Head)。
  • 语言模型头 (LM Head): 一个线性层,将Transformer模块的最终输出转换为整个词汇表的概率分布,模型从中选择下一个Token。
🎯 核心机制: 自注意力 (Self-Attention)

这是Transformer的灵魂。它允许模型在处理一个Token时,权衡输入序列中所有其他Token的重要性,从而动态地捕捉上下文关系。

  • 查询 (Query), 键 (Key), 值 (Value): 每个输入Token的嵌入向量都会被转换成这三个向量。
  • 计算过程: 通过计算当前Token的Query向量与其他所有Token的Key向量的点积来得到注意力分数,该分数决定了应该从其他Token的Value向量中“提取”多少信息来更新当前Token的表示。
  • 多头注意力 (Multi-Head Attention): 并行运行多个自注意力计算过程(即多个“头”),每个头关注不同的语义信息,最后将结果合并,使模型能从多个角度理解上下文。
第4章: 文本分类

介绍如何使用预训练好的LLM(无需微调)完成经典的NLP任务——文本分类。

🎯 核心方法
  • 使用表征模型:
    1. 任务特定模型: 直接使用在情感分析等任务上微调好的模型(如distilbert-base-uncased-finetuned-sst-2-english)进行预测。
    2. 嵌入模型 + 分类器: 使用通用嵌入模型(如all-mpnet-base-v2)将文本转换为向量,然后训练一个简单的分类器(如逻辑回归)来完成分类。此方法更灵活。
    3. 零样本分类 (Zero-shot): 将候选标签也转换为嵌入向量,通过计算文本嵌入与标签嵌入的余弦相似度来进行分类,无需任何训练样本。
  • 使用生成模型: 通过精心设计的提示(Prompt),直接要求模型(如Flan-T5, GPT系列)输出分类标签。例如:“请将以下评论分类为正面或负面:[评论文本]”。
第5章: 文本聚类与主题建模

探索无监督学习,即在没有标签的情况下,如何从大量文本中发现潜在的结构和主题。

🔬 事实: 聚类通用流程
  1. 嵌入 (Embedding): 使用嵌入模型将所有文档转换为向量。
  2. 降维 (Dimensionality Reduction): 使用UMAP等算法降低嵌入向量的维度,以便聚类算法能更有效地工作,同时便于可视化。
  3. 聚类 (Clustering): 使用HDBSCAN等算法在降维后的向量空间中寻找文档簇。
🎯 核心工具: BERTopic

BERTopic是一个模块化的主题建模框架,它将上述聚类流程与主题表示相结合。

  • 主题表示: 在形成簇之后,使用c-TF-IDF(一种为类定制的TF-IDF)来为每个簇提取最具代表性的关键词,从而形成主题。
  • 模块化与增强: BERTopic的强大之处在于其灵活性。可以轻易替换嵌入、降维、聚类算法,甚至可以使用生成模型(如GPT)为每个主题生成更具可读性的标签或摘要,而不仅仅是关键词列表。
第6章: 提示工程 (Prompt Engineering)

这是一门“与LLM有效沟通的艺术”,通过设计和优化输入提示,引导模型产生高质量、符合预期的输出。

🎯 核心技巧
  • 明确指令: 给出清晰、具体、无歧义的指令。
  • 提供上下文: 给予模型足够的背景信息。
  • 设置角色 (Persona): "你现在是一位资深的文案专家..."
  • 少样本提示 (Few-shot Prompting): 在提示中给出几个示例,让模型学习你想要的格式和风格。
  • 思维链 (Chain-of-Thought, CoT): 引导模型“一步一步地思考”,通过展示推理过程来解决复杂问题(如数学题),能显著提高准确率。只需在问题后加上“让我们一步一步地思考”即可触发。
  • 思维树 (Tree-of-Thought, ToT): CoT的进阶版,让模型探索多个推理路径,并评估哪条路径最优,进一步提升复杂推理能力。
第7 & 8章: 高级生成技术、语义搜索与RAG

将LLM从一个独立的模型,升级为能够与外部世界交互、利用外部知识的复杂系统。

🔬 事实: 语义搜索 (Semantic Search)

不同于传统的关键词匹配,语义搜索通过嵌入向量的相似度来查找内容,能够理解查询背后的真实意图。

🎯 核心架构: RAG (Retrieval-Augmented Generation)

RAG是解决LLM“幻觉”(捏造事实)和知识过时问题的关键技术。其流程为:

  1. 检索 (Retrieve): 当用户提问时,首先使用语义搜索从外部知识库(如公司文档、维基百科)中检索出最相关的文本片段。
  2. 增强 (Augment): 将检索到的文本片段作为上下文,与用户的原始问题一起组合成一个新的、更丰富的提示。
  3. 生成 (Generate): 将这个增强后的提示喂给LLM,让它基于提供的上下文来生成答案。
💡 观点 RAG让LLM的回答有据可查,极大地提升了答案的准确性和可靠性,是构建企业级问答系统、知识库机器人的核心。
🔬 事实: 智能体 (Agents)

智能体是一个更高级的系统,它以LLM为“大脑”,不仅能检索信息,还能决定使用何种“工具”(如计算器、API调用、代码执行器)来完成复杂任务,并根据工具返回的结果进行下一步规划。

第9章: 多模态大型语言模型

让LLM突破文本的限制,能够理解和处理图像等多种类型的数据。

🔬 事实: 视觉Transformer (ViT)

ViT将Transformer架构成功应用于视觉领域。它的核心思想是将图像分割成一个个小图块(Patches),然后将这些图块像处理文本Token一样送入Transformer进行编码。

🎯 核心模型
  • CLIP (Contrastive Language-Image Pre-training): 通过对比学习,将图像和描述它们的文本映射到同一个嵌入空间。这使得我们可以用文本来搜索图像(Text-to-Image Search),或者反之。
  • BLIP-2 / LLaVA: 这类模型在LLM的基础上增加了一个视觉编码器和一个“桥梁”模块(如Q-Former)。当输入图像时,视觉编码器提取特征,桥梁模块将其转换为LLM能够理解的“软提示”(Soft Prompt),从而让LLM能够像处理文本一样“阅读”和“理解”图像内容,实现看图对话、视觉问答等功能。
第10 & 11章: 创建和微调表征模型

从使用现成模型转向根据特定需求定制自己的模型,主要聚焦于表征模型(如BERT)。

🔬 事实: 对比学习 (Contrastive Learning)

这是训练高质量嵌入模型的核心方法。其目标是让模型学会拉近“相似”样本对(正样本)在向量空间中的距离,同时推远“不相似”样本对(负样本)的距离。SBERT框架就是基于此原理。

🎯 核心微调技术
  • 全参数微调: 更新模型的所有参数。效果最好,但计算资源消耗巨大。
  • 领域自适应预训练: 在正式微调前,先用领域内的无标签数据继续进行预训练(如MLM任务),让模型熟悉特定领域的语言风格和术语,能显著提升后续任务表现。
  • SetFit: 一种高效的少样本分类微调方法。它通过少量标注样本自动生成大量正负句对,用对比学习微调嵌入模型,再训练一个简单的分类头。效果媲美全量数据微调,但速度快得多。
第12章: 微调生成模型

本章是全书的高潮,讲解如何将一个只会“续写”的基础模型,调教成一个听话、有用的聊天机器人或任务助手。

🎯 核心训练步骤
  1. 预训练 (Pre-training): 在海量文本上进行语言建模,得到一个基础模型(Base Model)。(通常由大公司完成)
  2. 有监督微调 (Supervised Fine-Tuning, SFT): 使用高质量的“指令-回答”对数据,教会基础模型理解并遵循指令。这是模型从“续写”到“对话”的关键一步。
  3. 偏好调优 (Preference Tuning): 进一步使模型的回答符合人类的偏好(更有用、更无害、更真实)。
    • RLHF (Reinforcement Learning from Human Feedback): 传统方法。先训练一个奖励模型来模拟人类偏好,再用强化学习优化LLM。过程复杂且不稳定。
    • DPO (Direct Preference Optimization): 更先进、更简单的方法。直接使用“更优回答 vs. 较差回答”的数据对,通过一个特殊的损失函数直接优化LLM,无需单独的奖励模型和复杂的强化学习过程。
🔬 事实: 参数高效微调 (PEFT)

全参数微调生成模型成本极高。PEFT技术只训练模型一小部分参数,就能达到接近全参数微调的效果。

  • LoRA (Low-Rank Adaptation): 核心思想是冻结原始模型权重,为模型的某些层(通常是注意力模块的权重矩阵)添加并只训练两个小型的“低秩”矩阵。训练结束后,这两个小矩阵可以合并回原始权重,或作为独立的“适配器”使用。
  • QLoRA: LoRA的升级版。在训练时,先将原始模型用4位精度进行量化(极大降低显存占用),然后再应用LoRA进行微调。这使得在单张消费级显卡上微调大型模型成为可能。

原文

源链接

附件

中文PDF (56.4M)

下载

中文epub (18.1M)

下载