LLM 知识梳理

背景

初步学习了 ML/DL、Transformer、RAG、SFT、RL等,为了更好的记忆、理解以及应对面试,故此博客文章诞生。

不定期更新。

ML/DL

数据集

数据集种类

  • 训练集:用于拟合模型,更新权重参数
  • 验证集:用于超参数调优(如学习率、层数、Dropout 概率)和早期停止(Early Stopping)
  • 测试集:仅用于最终评估模型的泛化能力。它代表了模型在“未见过”的真实数据上的表现

面试陷阱: 如果你在训练过程中根据测试集的表现去调整模型,这就叫 “数据泄露” (Data Leakage),会导致评估结果虚高

数据集配比

  • 万级以下
    • 70-15-15:小规模数据(<10k样本)
    • 80-10-10:中等规模数据(10k-100k)
  • 百万级以上
    • 90-5-5:大规模数据(>100k)
    • 98-1-1:超大规模数据(如LLaMA训练数据)
  • 数据量较小时:交叉验证
    • 当数据量较小时,简单的划分会导致评估结果受随机性影响太大。充分利用每一条数据,评估结果更稳健,减少因数据划分不均匀导致的偏差
    • K-Fold 交叉验证: 将数据集分为 $K$ 个等份,轮流用其中 1 份做验证,剩下的 $K-1$ 份做训练。最后取 $K$ 次结果的平均值

数据质量与预处理

  • 数据去重
    • 为什么: 如果训练集和测试集有重复(或高度相似),模型会通过“背诵”而非“理解”来获得高分,导致评估失效
    • 技术: MinHash, LSH (局部敏感哈希)
  • 数据不平衡
    • 问题: 某类样本极多(如正常请求),某类极少(如恶意攻击)
    • 对策:
      • 过采样 (Oversampling): 增加少数类样本
      • 欠采样 (Undersampling): 减少多数类样本
      • 代价敏感学习: 在 Loss 函数中加大对少数类预测错误的惩罚

数据泄露

  • 时间泄露: 在时间序列任务中,用“未来”的数据训练模型去预测“过去”。(应使用时间切分法)
  • 特征泄露: 包含了不该有的目标信息。例如预测是否患病,特征中包含“处方药名称”
  • 预处理泄露: 在划分数据集之前做了全局归一化(Normalization)。正确做法: 先分集,用训练集的均值/方差去处理验证集和测试集

过拟合处理

数据层面

核心逻辑:让模型从“死记硬背”转向“举一反三”。

  • 1.1 增加数据量与多样性
    • 原理:数据越多,模型越难记住每个样本,被迫学习通用规律。涵盖不同领域、风格、情绪
  • 1.2 数据增强 (Data Augmentation)
    • 手段回译(Back-Translation)、同义词替换LLM 文本改写、加入微小噪声
  • 1.3 提升质量 (Data Cleaning)
    • 关键点:去除重复(Deduplication)、修正错误标签、过滤低质量垃圾文本

训练层面

核心逻辑:通过惩罚项或时机控制,约束模型复杂度。

  • 2.1 正则化 (Regularization)
    • 权重衰减 (L2/Weight Decay):通过惩罚大权重,让模型变得更“平滑”
    • Dropout:训练时随机“关闭”一部分神经元,强迫模型不依赖单一路径,增强冗余性。
  • 2.2 早停 (Early Stopping)
    • 策略:监控验证集(Val Loss),一旦表现不再提升或开始变差,立即停止训练。防止从“学习”滑向“记忆”
  • 2.3 学习率调度 (LR Scheduling)
    • 方案余弦退火 (Cosine Decay) 或线性衰减。
    • 目的:后期减小步长,使模型稳定在泛化性好的区域(平坦最小值区)

架构层面

核心逻辑:降低自由度,锁死大部分参数。

  • 3.1 参数高效微调 (PEFT/LoRA)
    • 原理冻结 99%+ 的原参数,只训练极少数(<1%)的新增参数(Adapter/Rank 矩阵)
    • 防过拟合优势
      1. 限制自由度:参数极少,模型难以“背诵”微调数据
      2. 保留通用性:原始底座知识被锁死,防止“灾难性遗忘”和针对特定任务的过拟合

正则化

正则化(Regularization)是一种在训练机器学习模型时,在损失函数中添加额外项,来 惩罚过大的参数,进而限制模型复杂度、避免过拟合,提高模型泛化能力的技术。

  • L1 正则化(Lasso 回归):惩罚参数绝对值之和,使部分参数为 0,实现特征选择
  • L2 正则化(Ridge 回归):惩罚参数平方和,使参数值普遍较小,提高模型稳定 性
  • ElasticNet:结合 L1 和 L2 正则化,平衡稀疏性和稳定性

模型评估

分类任务指标 (Classification Metrics)

  • 准确率 (Accuracy):预测正确的样本占总样本的比例。
    • 缺点:在数据不平衡(比如 99% 都是负样本)时会失效。
  • 精确率 (Precision):预测为正的样本中,有多少是真的正样本(查准率)。
  • 召回率 (Recall):实际的正样本中,有多少被你找出来了(查全率)。
  • F1-Score:精确率和召回率的调和平均数。
  • ROC 曲线与 AUC 值
    • ROC 是以假正率(FPR)为横轴,真正率(TPR)为纵轴的曲线。
      • 真正例 (TP):预测为正,实际也为正(预测正确)
      • 真负例 (TN):预测为负,实际也为负(预测正确)
      • 假正例 (FP):预测为正,实际为负(误报)。
      • 假负例 (FN):预测为负,实际为正(漏报)
        $$FPR = \frac{FP}{FP + TN}$$
        $$TPR = \frac{TP}{TP + FN}$$
    • AUC 为曲线下的面积,越接近 1 代表模型分辨正负样本的能力越强。

回归任务指标 (Regression Metrics)

用于预测连续数值(如房价预测、股价预测)

  • MAE (平均绝对误差):预测值与真实值差的绝对值均值。
  • MSE (均方误差):惩罚大的误差,对异常值非常敏感。
  • RMSE (均方根误差):单位与原始数据一致,直观。
  • R² (决定系数):越接近 1 说明模型拟合效果越好。

生成与 NLP 任务指标 (NLP & Generation)

用于评价文本生成或序列标注。

  • BLEU (Bilingual Evaluation Understudy)
    • 常用于机器翻译。计算模型输出与参考答案之间的 n-gram 重合度。
  • ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
    • 常用于文本摘要。侧重于参考答案中有多少内容出现在了模型输出中(召回率)。
  • PPL (Perplexity, 困惑度)
    • 衡量语言模型生成一段文本的“确定性”。PPL 越低,模型生成的文本越自然、越确定。
  • seqeval (IOB 评价)
    • 专门用于评价 NER(命名实体识别),会根据实体的边界和类型是否同时准确来计算 F1。

排序与检索指标 (Ranking & Retrieval)

  • MRR (Mean Reciprocal Rank):只关注第一个正确答案出现的位置。如果第 1 位是正确的,得 1 分;第 2 位正确,得 0.5 分。最后取平均。适用于“只有一个标准答案”的任务,如你项目中的库表字段召回
  • MAP(Mean Average Precision):考虑所有相关文档的准确率。它会对排名靠前的正确结果给予更高权重。适用于目标是找回“所有相关文档”的场景,比 MRR 更全面。
  • nDCG@K (Normalized Discounted Cumulative Gain):考虑了相关度的级别(不仅是 0/1,可以是 0-5 分)和排名位置。排名越靠后,增益衰减越快。工业界最标准。用于评估搜索结果的整体排序质量,@K 表示只看前 K 个结果。

RAG

RAGAS (Retrieval-Augmented Generation Assessment) 是目前评估 RAG 流程最流行的开源框架。它提出了一个“无参考训练(Reference-free)”的概念,利用 LLM 来评价 LLM。

其核心是 “RAG 三元组” 的四个评估维度:

  1. Faithfulness (忠实度):生成的回答是否完全来自检索到的上下文?(防止幻觉)。
  2. Answer Relevance (答案相关性):生成的回答是否直接回答了用户的问题?
  3. Context Precision (检索精准度):检索到的片段中,真正有用的信息是否排在前面?
  4. Context Recall (检索完备度):为了回答问题所需的全部信息,是否都被找回来了?

学习率调度

  • Warmup:训练初期为什么要用低 LR(防止初始梯度冲击破坏权重)。
  • 余弦退火:后期缓慢下降如何帮助模型找到更深层的全局最优。

AdamW

AdamW 是 Adam 的改进版,主要区别在于:AdamW 正确地将“权重衰减(Weight Decay)”与“梯度更新”解耦,而 Adam 中的 L2 正则化会被自适应学习率“抵消”,导致正则化失效。
AdamW = Adam + Decoupled Weight Decay (解耦的权重衰减)

特性 Adam AdamW
是否支持权重衰减 ✅ 支持(通过 L2 正则化) ✅ 支持(显式 weight_decay 参数)
正则化是否被自适应学习率影响 ❌ 是,被 vt缩放,效果不稳定 ✅ 否,独立于学习率,稳定有效
参数更新公式 正则化项进入梯度 正则化项单独加在参数上
实际效果 可能欠正则化或过正则化 更稳定、可控的正则化
使用场景 早期研究、简单任务 现代大模型训练(BERT、LLaMA、ViT)首选

Transformer

RNN

RNN (Recurrent Neural Networks) 通过循环结构处理序列数据,每个时间步的输出依赖当前输入和上一时间步的隐藏状态, 能建模上下文信息。

链式法则乘法效应: 在反向传播(BPTT)过程中,梯度需要跨越时间步相乘。
如果权重矩阵的最大特征值 $< 1$,梯度会指数级衰减(消失);如果 $> 1$,则会指数级增长(爆炸)。
导致模型会“忘记”很久以前的输入,无法捕获长程依赖(Long-term Dependency)

并行计算: RNN 必须按顺序计算(串行),效率低;Transformer 采用 Self-Attention,可以并行计算,适合大规模预训练。

显存占用: RNN 的显存随序列长度线性增长(只存当前状态),而标准 Transformer 是平方增长(KV Cache 压力大)。

LSTM

LSTM (Long Short-Term Memory) 引入记忆单元(Memory Cell)和三个门控机制(遗忘门、输入门、输出门)

  • 遗忘门: 控制忘记多少历史信息
  • 输入门: 控制存入多少新信息到记忆单元
  • 输出门: 控制从记忆单元读取多少信息作为当前隐藏状态。

加法更新: 记忆单元的更新主要是“加法”操作,这比 RNN 的“连乘”更能有效缓解梯度消失。

LSTM 是通过门控逻辑和加法连接,极大缓解了梯度消失,使得它能处理的序列长度从 RNN 的十几个时间步提升到了几百个。但如果序列达到上千甚至上万,LSTM 依然会出现严重的记忆遗忘和梯度消散现象。这时候通常需要 Transformer 的 Attention 机制 来解决。

GRU

GRU (Gated Recurrent Unit, 门控循环单元) GRU 只有两个门:更新门 (Update Gate)重置门 (Reset Gate)

  • 更新门 : 类似于 LSTM 遗忘门和输入门的结合体。它决定了前一时刻的状态 $h_{t-1}$ 有多少要保留,以及当前候选状态 $\tilde{h}_t$ 有多少要存入。
  • 重置门 : 决定在计算当前候选状态时,忽略多少过去的隐藏状态。如果重置门接近 0,说明模型在当前步骤“忘记”了之前的历史,只看当前输入。

“RNN 是基础,但有梯度消失的致命伤;LSTM 通过三个门和细胞状态解决了长期记忆问题;GRU 则是对 LSTM 的精简优化,在保持长记忆的同时,减少了参数量,提高了训练效率。”

特性 RNN (循环神经网络) LSTM (长短期记忆网络) GRU (门控循环单元)
核心机制 简单的递归循环 门控机制 (遗忘、输入、输出门) 门控机制 (更新、重置门)
状态量 只有隐藏状态 $h_t$ 双状态:细胞状态 $C_t$ + 隐藏状态 $h_t$ 单状态:合并为隐藏状态 $h_t$
参数量 最少 (1组权重) 最多 (4组权重) 较少 (3组权重,是 LSTM 的 75%)
长程依赖 极差 (易梯度消失/爆炸) (细胞状态保护了长期记忆) (与 LSTM 效果接近)
计算效率 最高 (计算最简单) 最低 (结构最复杂) 中等 (比 LSTM 快,比 RNN 慢)
主要应用 极短序列、流式信号处理 复杂长文本、翻译、语音识别 强化学习、中等复杂度序列预测

Attention

Query: 表示当前词的用于发起注意力匹配的向量
Key: 表示序列中每个位置的内容标识,用于与 Query 进行匹配
Value: 表示该位置携带的信息,用于加权汇总得到新的表示

缩写 全称 核心特点
MHA Multi-Head Attention 每个 Query 都有自己的一组 Key 和 Value
MQA Multi-Query Attention 所有 Query 共享同一组 Key 和 Value
GQA Grouped-Query Attention Query 分组,每组共享一组 Key 和 Value
MLA Multi-head Latent Attention 通过 低秩压缩 大幅减少 KV 显存

既然 MLA 这么好,它为什么不直接在所有模型上普及?
答案要点: 因为 MLA 涉及复杂的矩阵重新投影(Projection),在训练时的计算开销和复杂度高于 GQA。
此外,MLA 对 RoPE(旋转位置编码)的适配也需要特殊技巧。

MLA步骤

  1. 全局潜空间投影 (Global Latent Projection)
    • 步骤: 传统的 $K$ 和 $V$ 矩阵,首先被投影到一个低维的潜空间中。
    • 作用: 这是一个“信息浓缩”**的过程,捕捉原始 Key/Value 中的核心信息。
  2. 潜空间融合 (Latent Space Aggregation)
    • 步骤: 随着序列的增长,新的 Query 进来,它对应的 Key 和 Value 也会被投影到这个低维潜空间。然后,所有这些低维的潜 Key/Value 向量会被聚合起来。
    • 作用: 相当于在低维空间中维护一个“浓缩的历史上下文”,而不是存储每一个原始的 KV 向量。这个聚合可以是一个简单的求和,或者更复杂的递归操作。
  3. 解压缩与局部注意力 (Decompression & Local Attention)
    • 步骤: 当一个 Query 需要计算注意力时,它不会直接和低维的潜 KV 向量进行点积。
      1. 从低维潜空间中解压缩出一个近似的、高维的 Key 和 Value 矩阵。
      2. 然后使用这个近似的 KV 矩阵与当前的 Query 进行标准的注意力计算。
    • 作用: 确保了最终的注意力计算依然是高维的,但存储和传输的 KV Cache 始终是低维的,极大地减少了显存开销。

Flash Attention

特性 SRAM (静态随机存储) HBM (高带宽显存) DRAM (动态随机存储)
物理位置 芯片内部(就在算力核心旁边) 芯片封装内(通过中间层连接) 主板上(通过总线连接,如内存条)
容量 极小 (MB 级别) (如 H100 的 80GB) 极大 (几百 GB 到 TB)
速度/带宽 极快 (TB/s 级别,纳秒延迟) (1-3 TB/s) (几十 GB/s)
成本 极高 (涉及 3D 堆叠工艺) (成熟的大规模工业品)
AI 角色 计算工作台 (存 Tile、中间计算值) 大模型仓库 (存权重 W、KV Cache) 冷备份/数据源 (存放原始训练数据集)

为什么标准的 Attention 很慢?

在标准的 Attention 计算中,最大的瓶颈不是计算量(FLOPs),而是内存访问(Memory Wall)

  • 中间矩阵巨大: 计算 $QK^T$ 会产生一个 $L \times L$ 的矩阵($L$ 是序列长度)。如果序列长达 128K,这个矩阵大到显存根本装不下。
  • 读写太频繁: 显卡(GPU)的计算核心(CUDA Core)很快,但从显存(HBM)搬运数据到核心(SRAM)的速度很慢。标准做法是频繁地在显存和核心之间读写巨大的中间矩阵,导致 GPU 大部分时间在“等数据搬运”。

Flash Attention 提出了两个绝招来打破瓶颈:

A. 分块计算 (Tiling)

  • 做法: 将大矩阵拆成一个个小方块(Tiles)。
  • 原理: 每次只搬一小块 $Q, K, V$ 到 GPU 的高速缓存(SRAM) 里,在里面把这一小块的注意力算完。
  • 结果: 整个过程不需要在显存(HBM)中存储那个巨大的 $L \times L$ 中间矩阵,极大地减少了数据搬运次数。

B. 重计算 (Recomputation / Gradient Checkpointing)

  • 做法: 在反向传播时,不存储前向计算的中间结果。
  • 原理: 因为中间结果太占地方,Flash Attention 选择在反向传播时根据 SRAM 里的数据现场重新算一遍
  • 结果: 看起来多算了,但因为省去了读写显存的时间,总时间反而快得多(用计算换带宽)。

激活函数

特性 ReLU GELU SwiGLU
是否门控 ❌ 否 ❌ 否 ✅ 是(双分支)
是否平滑 ❌ 否(折点) ✅ 是 ✅ 是
计算复杂度
是否零中心 ❌ 否 ✅ 接近 ✅ 是
梯度特性 可能消失/死亡 良好 优秀
使用模型 早期模型 BERT、GPT-2、ViT LLaMA、PaLM
推荐场景 轻量模型 通用 NLP/CV 大模型、高性能需求

MoE

MoE(Mixture of Experts,混合专家模型) 是在传统 FeedForward模块基础上的一种结构扩展

核心思想:使用多个并行的 FeedForward 专家替代单一的 FeedForward 层, 并通过 Router(路由器)根据输入 Token 的特征选择其中少量最合适的专家参与计算。

不同类型的输入能够由擅长处理该类模式的专家负责,从而显著增强模型的表达能力与适应性。
MoE 已成为当前主流大语言模型(LLM)中广泛采用的、用于提升性能与效 率的关键结构之一

  1. 核心优势 (Pros) —— “大而快”
    • 计算效率 : 推理时仅激活 Top-K 专家,FLOPs(计算量) 显著降低
      • 能以较小的活跃参数量实现巨大的总参数量(Total Params)性能
    • 高扩展性: 模型容量暴力扩张,而训练/推理成本不随之翻倍
    • 任务特化: 专家会自发分工(如代码、数学、文案专家),提升复杂长尾任务的上限
  2. 核心挑战 (Cons) —— “贵而难”
    • 显存饥饿 : 虽然推理快,但显存必须装下所有专家权重
    • 训练不稳 : 易发生专家崩溃 (Expert Collapse):路由集中在少数专家
      • 需引入 **负载均衡损失 **,平衡不好会损耗模型精度
    • 通信瓶颈 : 分布式场景下存在巨大的 All-to-All 节点间通信 开销(Token 跨卡寻找专家)
    • 微调困难: 在下游小数据集上极易过拟合,对数据分布变化敏感。
维度 稠密模型 (Dense) 混合专家模型 (MoE)
计算复杂度 随参数量同步增长 (取决于激活参数)
显存占用 与参数量成正比 极高 (必须全量装载)
硬件要求 算力 (GPU Core) 显存带宽 + 节点间带宽 (NVLink)
训练策略 标准收敛,稳定 复杂,需负载均衡策略

归一化

归一化(Normalization) 技术的演进是为了解决深层神经网络中的“内部协变量偏移”问题,并确保梯度在数十层甚至上百层网络中依然能够稳定流动。

  • Batch Norm (BN):
    • 原理:对当前 Batch 内的所有样本,在每一个特征维度上独立计算均值和方差。
    • 局限性
      • 如果 Batch 太小,计算出的均值和方差不具备代表性,模型效果剧降。
      • 在 NLP 中,句子长度不一。BN 在计算时会将有效字符与补齐字符(Padding)混合计算,严重干扰语义表达。
  • Layer Norm (LN):
    • 原理:针对单个样本,对其内部的所有特征值计算均值和方差。
    • 优势
      • 独立性:计算不依赖其他样本,无论 Batch Size 是 1 还是 1024,结果一致。
      • NLP 适配:它是 TransformerBERT 架构的基础,能完美处理不同长度的句子。
  • RMSNorm:
    • 核心改进:舍弃平移(Re-centering)重缩放(Rescaling)才是归一化的核心价值。RMSNorm 直接去掉了均值计算,只计算均方根
  • Pre-Norm vs. Post-Norm:路径的抉择
    • 这决定了残差连接(Residual Connection)与归一化层的先后顺序,直接影响训练的稳定性。
特性 Post-Norm (经典 Transformer/BERT) Pre-Norm (GPT/Llama/DeepSeek)
结构 $x = \text{Norm}(x + \text{Sublayer}(x))$ $x = x + \text{Sublayer}(\text{Norm}(x))$
位置 放在残差连接之后。 放在子层运算之前。
梯度流动 路径上存在 Norm 变换,梯度会被层层削弱或增强。 存在恒等路径,梯度可以直接流向浅层,不会被中途拦截。
训练表现 收敛难。如果不配合精心设计的 Warmup,极易崩盘。 非常平稳。允许模型堆叠到数百层而不会梯度消失。

位置编码

绝对位置编码 (Absolute PE)

模型为每一个物理位置(索引 $0, 1, 2 \dots$)分配一个唯一的特征向量,并在输入层直接加到词向量上。

  • 固定式 (Fixed/Sinusoidal):
    • 原理: 使用正弦(Sin)和余弦(Cos)函数计算。
    • 优点: 无需训练参数,理论上能处理训练时没见过的长度。
    • 代表: 原始 Transformer。
  • 可学习式 (Learned):
    • 原理: 维护一个 (max_len, hidden_dim)Embedding 查找表
    • 优点: 灵活性高,能学到特定位置的统计特征。
    • 缺点(致命伤):“长度硬上限”。如果预设 512,遇到第 513 个 Token 就会报错。
    • 代表: BERT、GPT-2。

相对位置编码 (Relative PE)

模型不关心绝对坐标,它关心的是词与词之间的距离差值(如:$i-j = -2$ 代表目标词在我左边两个位子)。

  • 偏置式 (Learned Bias):
    • 原理: 在计算 Attention Score 时,根据距离查表获取一个**可学习的偏置标量(Bias)**加进去
    • 优点: 具备平移不变性(句子整体挪动不影响结果),外推性好
    • 缺点: 推理慢。每一步生成都要重新算距离,对 KV Cache 的实现很不友好
    • 代表: T5、DeBERTa
  • 线性衰减 (ALiBi):
    • 原理: 不用向量,直接在 Attention 矩阵上按距离强行扣分(距离越远扣得越多。
    • 代表: Bloom

旋转位置编码 (RoPE) —— “转出来的相对关系”

目前大模型(Llama 3, DeepSeek)的绝对标配。它是绝对位置的形式,相对位置的灵魂。

  • 原理: 将词向量两两一组看作复数,根据位置 $n$ 旋转角度 $n\theta$。

    $$q_m \cdot k_n = \text{Re}{ \mathbf{q}_m \mathbf{k}_n^* e^{i(m-n)\theta} }$$

  • 核心特性(面试必背):

    1. 绝对的形式: 每个词根据自己的位置 $m$ 独立旋转,不依赖别人,推理快。
    2. 相对的效果: 两个词点积的结果只由它们的夹角差(相对距离 $m-n$) 决定
    3. 远程衰减: 随着距离拉长,点积结果会自然衰减
  • 代表: Llama 系列、Qwen、DeepSeek。

维度 绝对位置编码 (Learned) 相对位置编码 (T5 Bias) 旋转位置编码 (RoPE)
实现方式 nn.Embedding 查找表 Attention Score 加偏置项 向量旋转变换
是否可学习 (函数固定)
长度外推 极差 (有硬上限) 较好 极好 (支持插值扩展)
推理效率 极高 (加法运算) 较低 (每步重算距离) 高 (硬件友好)
主流地位 早期模型 (BERT) 特定模型 (T5) 现代模型标配

Transformer

微调

vLLM加速推理的原理