
DOC - 《大语言模型》读书笔记
主要是科普,很多知识点还是需要投入大量时间学习
Part1 背景与基础知识
1. 语言模型发展历程
统计语言模型(SLM):基于统计学习方法研发,使用马尔可夫假设来建立语言序列的预测模型,通常是根据词序
列中若干个连续的上下文单词来预测下一个词的出现概率,即根据一个固定长度的前缀来预测目标单词。
神经语言模型(NLM):使用神经网络来建模文本序列的生成,如 RNN、word2vec
预训练语言模型(PLM):BERT 、GPT-1、GPT-2
大语言模型(LLM):通过规模扩展通常会带来下游任务的模型性能提升。GPT-3、GPT-4
2. 大预言模型关键技术
- 规模扩展:扩展法则
- 数据工程
- 高效预训练
- 能力激发:提示策略(上下文学习、思维链提示)
- 人类对齐:3H 对齐标准(Helpfulness、Honesty、Harmlessness)
- 工具使用
3. 大模型构建过程
主要分位大规模预训练、指令微调与人类对齐两个阶段
3-1. 大规模预训练
一般来说,预训练是指使用与下游任务无关的大规模数据进行模型参数的初始训练,可以认为是为模型参数找到一个较好的“初值点”。
早期的预训练技术还是聚焦于解决下游某一类的特定任务,如传统的自然语言处理任务。后面 OPENAI 提出通过大规模文本数据的预训练实现通用任务的求解器,并且将这一思路在 GPT-3 中推广到了当时最大的千亿规模。
预训练数据:收集数据->清洗->词原化
3-2 指令微调与人类对齐
经过大规模数据预训练后的语言模型已经具备较强的模型能力,能够编码丰富的世界知识,但是由于预训练任务形式所限,这些模型更擅长于文本补全,并不适合直接解决具体的任务。
目前比较广泛使用的微调技术是“指令微调”(Supervised Fine-tuning, SFT):通过使用任务输入与输出的配对数据进行模型训练,可以使得语言模型较好地掌握通过问答形式进行任务求解的能力。一般来说,指令微调很难教会大语言模型预训练阶段没有学习到的知识与能力,它主要起到了对于模型能力的激发作用,而不是知识注入作用。
人类对齐:将大语言模型与人类的期望、需求以及价值观对齐。主要引入了基于人类反馈的强化学习对齐方法 RLHF(Reinforcement Learning from Human Feedback)。
4. 扩展法则
在实现上,大语言模型采用了与小型预训练语言模型相似的神经网络结构(基于注意力机制的 Transformer 架构)和预训练方法(如语言建模)。但是通过扩展参数规模、数据规模和计算算力,大语言模型的能力显著超越了小型语言模型的能力。
- KM 扩展法则
- Chinchilla 扩展法则
5. 涌现能力
大语言模型的涌现能力被非形式化定义为“在小型模型中不存在但在大模型中出现的能力”,具体是指当模型扩展到一定规模时,模型的特定任务性能突然出现显著跃升的趋势,远超过随机水平。
- 上下文学习
- 指令遵循
- 逐步推理
6. GPT 模型技术演变
- 大语言模型发展时间线

- GPT 技术发展历程

7. 学习资源
7-1 开源模型
LLaMA、LLaMA-2
(LLaMA 系列模型的衍生工作进化图)
LLaMA 系列模型的衍生工作进化图 ChatGLM
Qwen、Qwen2
DeepSeek
7-2 API
7-3 预训练数据集
网页
书籍
- BookCorpus
- Project Gutenberg
- arXiv Dataset 预印本论文
代码
- BigQuery
- The Stack
- StarCoder
维基百科
7-4 微调数据集


7-5 社区
Part2 预训练
这一部分先讲了如何处理预训练数据,接着比较详细介绍了模型的架构,最后介绍了如何用模型做预训练
1. 数据准备
为了确保数据的质量和效用,还需要对数据进行预处理,从而消除低质量、冗余、无关甚可能有害的数据
1.1 数据预处理
YuLan-GARDEN - 预训练数据处理框架
质量过滤:
基于启发式规则:基于语种、特定的统计指标、关键词等精心设计的规则,剔除掉低质量文本。有点类似于 badcase 挖掘
基于分类器的方法:包括轻量级模型(如 FastText 等)、可微调的预训练语言模型(如 BERT、BART 或者 LLaMA 等)以及闭源大语言模型 API(如
GPT-4、Claude 3)三类分类器。
敏感内容过滤:
- 过滤有毒内容
- 过滤隐私内容
数据去重:
- 精确匹配:后缀数组匹配
- 近似匹配:MinHash
1.2 ⭐️ 词元化(分词)
词元化(Tokenization)是数据预处理中的一个关键步骤,旨在将原始文本分割成模型可识别和建模的词元序列,作为大语言模型的输入数据。
- BPE 分词:从一组基本符号(例如字母和边界字符)开始,迭代地寻找语料库中的两个相邻词元,并将它们替换为新的词元
- WordPiece 分词
- Unigram 分词
2. ⭐️⭐️Transformer 模型
当前主流的大语言模型都基于 Transformer 模型进行设计的。Transformer 是由多层的多头自注意力(Multi-head Self-attention)模块堆叠而成的神经网络模型。原始的 Transformer 模型由编码器和解码器两个部分构成,而这两个部分实际上可以独立使用,例如基于编码器架构的 BERT 模型和解码器架构的 GPT 模型 。
与 BERT 等早期的预训练语言模型相比,大语言模型的特点是使用了更长的向量维度、更深的层数,进而包含了更大规模的模型参数,并主要使用解码器架构,对于 Transformer 本身的结构与配置改变并不大。
本部分内容将首先介绍 Transformer 模型的基本组成,包括基础的输入、多头自注意力模块和前置网络层;接着分别介绍 Transformer 模型中的编码器和解码器模块。

2.1 输入编码
主要功能:讲上面步骤生成的词元序列经过一个 Embedding Model 转化为词向量序列*,再叠加位置编码信息,生成最终的输入序列 X = [],其中*
通过这种建模方法的表示,Transformer 模型可以利用位置编码建模不同词元的位置信息。
2.2 多头自注意力机制
相比于循环神经网络(Recurrent Neural Network, RNN)和卷积神经网络(Convolutional Neural Network, CNN)等传统神经网络,多头自注意力机制能够直接建模任意距离的词元之间的交互关系。
TODO:先了解下,更深入的理论知识需要再看看
2.3 前馈神经网络
主要功能:对于每个位置的隐藏状态进行非线性变换和特征提取
2.4 编码器
在 Transformer 模型中,编码器(Encoder)的作用是将每个输入词元都编码成一个上下文语义相关的表示向量。编码器结构由多个相同的层堆叠而成,其中每一层都包含多头自注意力模块和前馈网络模块。在注意力和前馈网络后,模型使用层归一化和残差连接来加强模型的训练稳定度。
2.5 解码器
基于来自编码器编码后的最后一层的输出表示以及已经由模型生成的词元序列,执行后续的序列生成任务。与编码器不同,解码器需要引入掩码自注意力(Masked Self-attention)模块,用来在计算注意力分数的时候掩盖当前位置之后的词,以保证生成目标序列时不依赖于未来的信息。
Part3 微调与对齐
这部分先跳过
Part4 大模型使用
1. Prompting
1.1 提示词工程
针对特定任务设计合适的任务提示。
1.1.1 提示词四要素:
任务描述 :
知识问答的任务描述:请使用所提供的以三个井号(###)分隔的文章回答问题。如果在文章中找不到答案,请回答“无法找到答案。” 代码补全的任务描述:你是一名程序员。给你一个代码片段,你的目标是完成这段代码,确保它能实现描述的功能。 对话推荐的任务描述:推荐 10 个符合用户偏好的商品。推荐列表可以包含对话框之前提到的商品。推荐列表的格式为:商品 ID 标题(年份)。请勿在推荐列表 中提及商品标题以外的任何内容
输入数据 :结构化数据
上下文信息
提示策略
让我们一步一步地思考
:激发逐步推理能力你是xx领域的专家
:提升特定领域表现
1.1.2 提示词设计原则
- 清晰地表达任务目标
- 分解为简单且详细的子任务
- 提供少量样本示例 :少样本示例有助于大语言模型在无需调整参数的前提下学习输入与输出之间的语义映射关系
- 采用模型友好的提示格式
1.2 上下文学习
1.3 思维链提示
基本形式:<输入,思维链,输出>,可以包含
Lets's think step by step
等诱导性指令优化策略 - 思维链示例设计:使用复杂化、多样化的思维链
优化策略 - 思维链生成方法:基于采样的方法 vs 基于验证的方法
优化策略 - 扩展的推理结构: 思维树 vs 思维图
思维链 vs 上下文学习
2. ⭐️ 规划与智能体
规划旨在为目标任务制定包含一系列动作的解决方案,是大语言模型解决复杂问题能力的重要体现,也是自主智能体最重要的核心能力。
规划整体框架
基于大语言模型的规划方法主要由三个组件构成,包括任务规划器(Task Planner)、规划执行器(Plan Executor)以及环境(Environment)。具体来说,大语言模型作为任务规划器,其主要职责是生成目标任务的解决方案。该方案包含一系列执行动作,每个动作通过合适的形式进行表达,例如自然语言描述或代码片段。对于长期任务,任务规划器还可以引入存储机制,用于解决方案与中间执行结果的存储与检索。规划执行器则负责执行解决方案中所涉及到的动作。根据任务性质的不同,规划执行器可以由大语言模型实现,也可以由执行具体物理任务的实体(如机器人)来实现。环境是规划执行器实施动作的具体场景,不同任务对应着不同的执行环境,例如 Web 互联网或像 Minecraft 这样的外部虚拟世界

智能体的构建
在大语言模型智能体的构建过程主要包含三个基本组件:记忆组件(Memory)、规划组件(Planning) 和执行组件(Execution)。通过这些组件共同协作,智能体能够有效地感知环境、制定决策并执行规划的动作,进而完成相应任务
智能体的应用
WebGPT | ⭐️ MetaGPT | ⭐️ AutoGen
Part5 评测与应用
1. 评测指标

2. 评测方法

3. 开源评测体系
3.1 MMLU
MMLU 是一个综合性的大规模评测数据集,旨在全面评估大语言模型在多个领域中的知识理解和应用能力,包括人文科学、社会科学、自然科学和工程技术等。
在任务形式上,MMLU 采用选择题的形式对模型能力进行检验,每个实例都包括一个问题和若干个候选项。模型需要根据任务描述和问题来预测各选项的概率,并选择概率最高的选项作为答案。在评估设置方面,该数据集通常采用少样本学习方式,在输入提示中加入 5 个示例数据。在评测指标方面,主要采用平均准确率作为衡量标准。
3.2 BIG-Bench
BIG-Bench 包含了 204 个任务,广泛涵盖了语言学、儿童发展、数学、常识推理、生物学、物理学、社会偏见、软件开发等多个领域,旨在全面反映模型在不同方面的综合能力。
在任务形式方面,BIG-Bench 主要采用了文本生成与多项选择两种类型。
3.3 其他
HELM | C-Eval
4. 专业领域大模型
介绍了法律、语言、科学研究等场景,其中金融场景如下
- 知识库资料:公开的公司文件、金融新闻、财务分析报告等
- BloombergGPT:该模型采用自回归 Transformer 模型的架构,包含 50B 参数,使用了 363B 词元的金融领域语料和 345B 词元的通用训练语料从头开始预训练。其中,金融领域数据主要来自于彭博社在过去二十年业务中所涉及到的英文金融文档,包括从互联网中抓取的金融文档、金融出版物、彭博社编写的金融新闻以及社交媒体等
- 金融数据比较隐私,开发数据资源较少,仍需进一步建设与补充。(可能更适合于公司内部)