0%

Happy_LLM

一、前言

2022年底,ChatGPT 的横空出世给自然语言处理(Natural Language Process,NLP)领域带来变革,以 GPT 系列模型为代表的大语言模型(Large Language Model,LLM)成为 NLP 乃至人工智能领域的研究主流。

LLM 是 NLP 领域经典研究方法预训练语言模型(Pretrain Language Model,PLM)的一种衍生成果。NLP 领域聚焦于自然语言文本的处理、理解和生成,从诞生至今经历了符号主义阶段、统计学习阶段、深度学习阶段、预训练模型阶段到而今大模型阶段的多次变革。

graph LR
    %% 定义节点样式
    classDef stage fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
    classDef current fill:#fff9c4,stroke:#fbc02d,stroke-width:4px;

    subgraph NLP_Evolution [NLP 发展五大阶段]
        direction LR
        A(符号主义阶段) --> B(统计学习阶段)
        B --> C(深度学习阶段)
        C --> D(预训练模型阶段 PLM)
        D --> E(大模型阶段 LLM)
    end

    %% 详细描述
    D -.-> D_desc["代表: GPT, BERT
核心: 注意力机制, 预训练-微调"] E -.-> E_desc["代表: ChatGPT, DeepSeek, Qwen
核心: 涌现能力, 指令微调, RLHF"] %% 样式应用 class A,B,C,D stage; class E current;
  • 预训练模型阶段:以 GPT、BERT 为代表的 PLM,以注意力机制为模型架构,通过预训练-微调进行自监督预训练。

  • 大模型 LLM 阶段:在 PLM 的基础上,通过扩大模型参数、预训练数据规模,并引入指令微调、人类反馈强化学习等手段提升模型能力。

graph TB
    %% === 顶层目标 ===
    Goal("NLP 核心目标:自然语言理解与生成")
    
    %% === 分支路径 ===
    Goal --> Path_PLM("阶段一:PLM (预训练模型)")
    Goal --> Path_LLM("阶段二:LLM (大语言模型)")

    %% === 左侧:PLM 流程 ===
    subgraph PLM_Zone ["如 BERT/RoBERTa"]
        direction TB
        P1["核心逻辑:预训练 + 微调 (Fine-tuning)"]
        P2["关键特征:参数量适中 (亿级)"]
        P3["应用方式:需要特定任务的标注数据"]
        P4["能力边界:单一任务表现好 (专才)"]
        
        P1 --> P2 --> P3 --> P4
    end

    %% === 右侧:LLM 流程 ===
    subgraph LLM_Zone ["如 GPT-4/DeepSeek"]
        direction TB
        L1["核心逻辑:预训练 + 指令/提示 (Prompting)"]
        L2["关键特征:参数量巨大 (千亿/万亿级) + 涌现能力"]
        L3["应用方式:少样本/零样本 (上下文学习)"]
        L4["能力边界:通用任务处理 (通才/通用人工智能)"]
        
        L1 --> L2 -->|由量变产生质变| L3 --> L4
    end

    %% === 连接关系 ===
    Path_PLM --> PLM_Zone
    Path_LLM --> LLM_Zone

    %% === 样式定义 (美化) ===
    classDef main fill:#333,stroke:#333,color:#fff;
    classDef plm fill:#e3f2fd,stroke:#1565c0,stroke-width:2px;
    classDef llm fill:#fff3e0,stroke:#e65100,stroke-width:2px;
    
    class Goal main;
    class Path_PLM,P1,P2,P3,P4 plm;
    class Path_LLM,L1,L2,L3,L4 llm;

相较于传统 PLM,LLM 具备涌现能力,具有强大的上下文学习能力、指令理解能力和文本生成能力。

  • NLP 研究者可以一定程度抛弃大量的监督数据标注工作,通过提供少量监督示例,LLM 即能在指定下游任务上达到媲美大规模微调 PLM 的性能。

  • LLM 能够直接、高效、准确地响应用户指令,从而真正向通用人工智能的目标逼近。

LLM 的突破性进展激发了 NLP 领域乃至整个人工智能领域的研究热度,海内外高校、研究院、大厂乃至众多传统领域企业都投入到 LLM 研究的浪潮中。

timeline
    title LLM发展历程 (2023年至今)
    section 2023年初
        ChatGPT发布 : 引发全球LLM研究热潮
        "百模大战" : 海内外机构纷纷投入LLM研究
    section 2023年发展
        GPT-4发布 : 模型性能大幅提升
        应用涌现 : 提升生产力的创新应用出现
    section 2023年末至今
        推理大模型 : DeepSeek-R1等专用模型
        多模态大模型 : Qwen-VL等跨模态模型
        "Agent元年" : 智能体应用兴起
    section 未来趋势
        基座研究稳定 : LLM核心技术趋于成熟
        研究持续活跃 : 应用场景不断扩展
        基础设施化 : 成为生活、学习、工作的基础工具

自 2023年至今,LLM 阶段性成果层出不穷,模型性能不断刷新上限,从一开始的 ChatGPT,到 GPT-4,再到以 DeepSeek-R1 为代表的推理大模型、以 Qwen-VL 为代表的多模态大模型等。可以肯定的是,在并不遥远的未来,LLM 及以 LLM 为基础的应用一定会成为人们生活中的基础设施,与每个人的生活、学习、工作密不可分。

在这样的背景下,深入理解、掌握 LLM 原理,能够动手应用、训练任意一个 LLM 的能力,对每一位 NLP 研究者乃至其他领域的 AI 研究者至关重要。本学习笔记记录从零拆解 LLM 原理,并着手亲手搭建、训练 LLM 。

本书教程将从 NLP 的基本研究方法出发,根据 LLM 的思路及原理逐层深入,依次为读者剖析 LLM 的架构基础和训练过程。同时,我们会结合目前 LLM 领域最主流的代码框架,演练如何亲手搭建、训练一个 LLM,期以实现授之以鱼,更授之以渔。希望读者能从这本书开始走入 LLM 的浩瀚世界,探索 LLM 的无尽可能。

第一章 NLP 基础概念

自然语言处理(Natural Language Processing, NLP)作为人工智能领域的一个重要分支,旨在使计算机能够理解和处理人类语言,实现人机之间的自然交流。

1.1 什么是 NLP

NLP 是 一种让计算机理解、解释和生成人类语言的技术。

  • 核心任务:通过计算机程序来模拟人类对语言的认知和使用过程。
  • 核心目的:打破人类语言和计算机语言之间的障碍,实现无缝的交流与互动。

NLP技术使得计算机能够执行各种复杂的语言处理任务,如中文分词、子词切分、词性标注、文本分类、实体识别、关系抽取、文本摘要、机器翻译、自动问答等。这些任务不仅要求计算机能够识别和处理语言的 表层结构,更重要的是可以理解语言背后的 深层含义,包括语义、语境、情感和文化等方面的复杂因素。

随着深度学习等现代技术的发展,NLP 已经取得了显著的进步。通过训练大量的数据,深度学习模型能够学习到语言的复杂模式和结构,从而在多个 NLP 任务上取得了接近甚至超越人类水平的性能。

然而,尽管如此,NLP 仍然面临着诸多挑战,如 处理歧义性、理解抽象概念、处理隐喻和讽刺 等。研究人员正致力于通过更加先进的算法、更大规模的数据集和更精细的语言模型来解决这些问题,以推动NLP技术不断发展。

1.2 发展历程

NLP 的发展历程:

  • 早期探索(1940年代 - 1960年代)

NLP 的早期探索始于二战后,当时人们认识到将一种语言自动翻译为另一种语言的重要性。1950年,艾伦·图灵提出了图灵测试。

他说,如果一台机器可以通过使用打字机成为对话的一部分,并且能够完全模仿人类,没有明显的差异,那么机器可以被认为是能够思考的。

这是判断机器是否能够展现出与人类不可区分的智能行为的测试。

这一时期,诺姆·乔姆斯基提出了生成语法理论,这对理解机器翻译的工作方式产生了重要影响。

  • 符号主义与统计方法(1970年代 - 1990年代)

符号主义研究者关注于形式语言和生成语法,而统计方法的研究者更加关注于统计和概率方法。

  • 机器学习与深度学习(2000年代至今)

随着深度学习技术的发展,NLP 领域取得了显著的进步。深度学习模型如循环神经网络(Recurrent Neural Network,RNN)、长短时记忆网络(Long Short-Term Memory,LSTM)和注意力机制等技术被广泛应用于 NLP 任务中,取得了令人瞩目的成果。

1.3 NLP 任务

在NLP的广阔研究领域中,有几个核心任务构成了NLP领域的基础,它们涵盖了从文本的基本处理到复杂的语义理解和生成的各个方面。

这些任务包括但不限于:

  • 中文分词;

    1
    2
    3
    4
    英文输入:The cat sits on the mat.
    英文切割输出:[The | cat | sits | on | the | mat]
    中文输入:今天天气真好,适合出去游玩.
    中文切割输出:["今天", "天气", "真", "好", ",", "适合", "出去", "游玩", "。"]
  • 子词切分;

    常见的有Byte Pair Encoding (BPE)、WordPiece、Unigram、SentencePiece等

    基本思想:将单词分解成更小的、频繁出现的片段,这些片段可以是单个字符、字符组合或者词根和词缀。

    1
    2
    3
    4
    5
    输入:unhappiness

    不使用子词切分:整个单词作为一个单位,输出:“unhappiness”
    使用子词切分(假设BPE算法):单词被分割为:“un”、“happi”、“ness”
    注⚠️:前缀“un”表示否定,“happi”是“happy”的词根变体,表示幸福,“ness”是名词后缀,表示状态。
  • 词性标注;

    假设我们有一个英文句子:She is playing the guitar in the park。词性标注的结果如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    - She (代词,Pronoun,PRP)
    - is (动词,Verb,VBZ)
    - playing (动词的现在分词,Verb,VBG)
    - the (限定词,Determiner,DT)
    - guitar (名词,Noun,NN)
    - in (介词,Preposition,IN)
    - the (限定词,Determiner,DT)
    - park (名词,Noun,NN)
    - . (标点,Punctuation,.)
  • 文本分类;

    假设有一个文本分类任务,目的是将新闻文章分类为“体育”、“政治”或“科技”三个类别之一。

    1
    2
    3
    4
    5
    6
    7
    8
    文本:“NBA季后赛将于下周开始,湖人和勇士将在首轮对决。”
    类别:“体育”

    文本:“美国总统宣布将提高关税,引发国际贸易争端。”
    类别:“政治”

    文本:“苹果公司发布了新款 Macbook,配备了最新的m3芯片。”
    类别:“科技”
  • 实体识别;

    旨在自动识别文本中具有特定意义的实体,并将它们分类为预定义的类别,如人名、地点、组织、日期、时间等。实体识别任务对于信息提取、知识图谱构建、问答系统、内容推荐等应用很重要,它能够帮助系统理解文本中的关键元素及其属性。

    假设有一个实体识别任务,目的是从文本中识别出人名、地名和组织名等实体。

    1
    2
    3
    输入:李雷和韩梅梅是北京市海淀区的居民,他们计划在2024年4月7日去上海旅行。

    输出:[("李雷", "人名"), ("韩梅梅", "人名"), ("北京市海淀区", "地名"), ("2024年4月7日", "日期"), ("上海", "地名")]
  • 关系抽取;

    目标:从文本中识别实体之间的语义关系(因果关系、拥有关系、亲属关系、地理位置关系等),关系抽取对于理解文本内容、构建知识图谱、提升机器理解语言的能力等方面具有重要意义。

    1
    2
    3
    输入:比尔·盖茨是微软公司的创始人。

    输出:[("比尔·盖茨", "创始人", "微软公司")]
  • 文本摘要;

    目的:生成一段简洁准确的摘要,来概括原文的主要内容。根据生成方式的不同,文本摘要可以分为两大类:

    • 抽取式摘要(Extractive Summarization):抽取式摘要通过直接从原文中选取关键句子或短语来组成摘要。
    • 生成式摘要(Abstractive Summarization):生成式摘要不仅涉及选择文本片段,还需要对这些片段进行重新组织和改写,并生成新的内容。

    假设我们有以下新闻报道:

    1
    2021年5月22日,国家航天局宣布,我国自主研发的火星探测器“天问一号”成功在火星表面着陆。此次任务的成功,标志着我国在深空探测领域迈出了重要一步。“天问一号”搭载了多种科学仪器,将在火星表面进行为期90个火星日的科学探测工作,旨在研究火星地质结构、气候条件以及寻找生命存在的可能性。

    抽取式摘要:

    1
    我国自主研发的火星探测器“天问一号”成功在火星表面着陆,标志着我国在深空探测领域迈出了重要一步。

    生成式摘要:

    1
    “天问一号”探测器成功实现火星着陆,代表我国在宇宙探索中取得重大进展。
  • 机器翻译

  • 自动问答系统

    可分为三类:

    • 检索式问答(Retrieval-based QA):通过搜索引擎等方式从大量文本中检索答案
    • 知识库问答(Knowledge-based QA):通过结构化的知识库来回答问题
    • 社区问答(Community-based QA):依赖于用户生成的问答数据,如问答社区、论坛等

1.4 文本表示的发展历程

文本表示目的是将人类语言转化为计算机可以处理的形式。

在 NLP 中,文本表示涉及到将文本中的语言单位(如字、词、短语、句子等)以及它们之间的关系和结构信息转换为计算机能够理解和操作的形式,例如向量、矩阵或其他数据结构。这样的表示不仅需要保留足够的语义信息,以便于后续的 NLP 任务,如文本分类、情感分析、机器翻译等,还需要考虑计算效率和存储效率。

1.4.1 词向量

向量空间模型(Vector Space Model, VSM),最早由哈佛大学Salton提出,通过将文本(包括单词、句子、段落或整个文档)转换为高维空间中的向量,来实现文本的数学化表示。

在这个模型中,每个维度代表一个特征项(例如,字、词、词组或短语),而向量中的每个元素值代表该特征项在文本中的权重,这种权重通过特定的计算公式(如词频TF、逆文档频率TF-IDF等)来确定,反映了特征项在文本中的重要程度。

向量空间模型存在的问题:

  • 数据稀疏性和维数灾难问题:特征项数量庞大导致向量维度极高,同时多数元素值为零。
  • 上下文信息缺失:模型基于特征项之间的独立性假设,忽略了文本中的结构信息

VSM 方法词向量:

1
2
3
4
5
6
7
8
# "雍和宫的荷花很美"
# 词汇表大小:16384,句子包含词汇:["雍和宫", "的", "荷花", "很", "美"] = 5个词

vector = [0, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ..., 1, 0, ...]
# ↑ ↑ ↑ ↑ ↑
# 16384维中只有5个位置为1,其余16379个位置为0
# 实际有效维度:仅5维(非零维度)
# 稀疏率:(16384-5)/16384 ≈ 99.97%

词汇表是一个包含所有可能出现的词语的集合。在向量空间模型中,每个词对应词汇表中的一个位置,通过这种方式可以将词语转换为向量表示。例如,如果词汇表大小为 16384 ,那么每个词都会被表示为一个 16384 维的向量,其中只有该词对应的位置为 1,其他位置都为 0。

为了解决这些问题,对向量空间模型的研究主要集中在两个方面:

  • 特征表示:借助图方法、主题方法等进行关键词抽取;

  • 改进和优化特征项权重:在现有方法的基础上进行融合计算或提出新的计算方法.

1.4.2 语言模型

N-gram 模型是 NLP 领域中一种基于统计的语言模型,核心思想是基于马尔可夫假设,即一个词的出现概率仅依赖于它前面的N-1个词。

这里的N代表连续出现单词的数量,可以是任意正整数。

  • 当N=1时,模型称为unigram,仅考虑单个词的概率;
  • 当N=2时,称为bigram,考虑前一个词来估计当前词的概率;
  • 当N=3时,称为trigram,考虑前两个词来估计第三个词的概率,
  • 以此类推,N-gram。

N-gram模型通过条件概率链式规则来估计整个句子的概率。对于给定的一个句子,模型会计算每个N-gram出现的条件概率,并将这些概率相乘以得到整个句子的概率。

例如,对于句子“The quick brown fox”,作为trigram模型,我们会计算 P("brown" | "The", "quick")P("fox" | "quick", "brown") 等概率,并将它们相乘。

N-gram的优缺点:

  • 优点:实现简单、容易理解,在许多任务中效果不错。
  • 缺点:1)当N较大时,会出现数据稀疏性问题。模型的参数空间会急剧增大,相同的N-gram序列出现的概率变得非常低,导致模型无法有效学习,模型泛化能力下降。2)N-gram模型忽略了词之间的范围依赖关系,无法捕捉到句子中的复杂结构和语义信息。

1.4.3 Word2Vec

Word2Vec是由Tomas Mikolov等人在2013年提出的一种词嵌入(Word Embedding)技术。它基于神经网络NNLM的语言模型,通过学习词与词之间的上下文关系来生成词的密集向量表示。

  • 核心思想:利用词在文本中的上下文信息来捕捉词之间的语义关系,从而使得语义相似或相关的词在向量空间中距离较近。

Word2Vec模型主要有两种架构:

  • 连续词袋模型CBOW(Continuous Bag of Words):根据目标词上下文中的词对应的词向量, 计算并输出目标词的向量表示;
  • Skip-Gram模型:与CBOW模型相反, 是利用目标词的向量表示计算上下文中的词向量。

实践验证 CBOW 适用于小型数据集, 而Skip-Gram在大型语料中表现更好。

相比于传统的高维稀疏表示(如One-Hot编码),Word2Vec生成的是低维(通常几百维)的密集向量,有助于减少计算复杂度和存储需求。

Word2Vec模型能够捕捉到词与词之间的语义关系,比如”国王“和“王后”在向量空间中的位置会比较接近,因为在大量文本中,它们通常会出现在相似的上下文中。

由于它是基于上下文信息学习的,Word2Vec模型也可以很好的泛化到未见过的词。

缺点:由于CBOW/Skip-Gram模型是基于局部上下文的,无法捕捉到长距离的依赖关系,缺乏整体的词与词之间的关系,因此在一些复杂的语义任务上表现不佳。

1.4.4 ELMo

ELMo(Embeddings from Language Models)实现了一词多义、静态词向量到动态词向量的跨越式转变。

训练步骤:

  1. 在大型语料库上训练语言模型,得到词向量模型;
  2. 在特定任务上对模型进行微调,得到更适合该任务的词向量。

ELMo首次将预训练思想引入到词向量的生成中,使用双向LSTM结构,能够捕捉到词汇的上下文信息,生成更加丰富和准确的词向量表示。

ELMo采用典型的两阶段过程:

  1. 利用语言模型进行预训练;
  2. 在做特定任务时, 从预训练网络中提取对应单词的词向量作为新特征补充到下游任务中。基于RNN的LSTM模型训练时间长, 特征提取是ELMo模型优化和提升的关键。

ELMo模型的主要优势在于其能够捕捉到词汇的多义性和上下文信息,生成的词向量更加丰富和准确,适用于多种 NLP 任务。然而,ELMo模型也存在一些问题,如模型复杂度高、训练时间长、计算资源消耗大等。

-------------This blog is over! Thanks for your reading-------------