跳转至

大模型面试基础知识

针对 Agent/大模型开发岗位,提取最小化必备知识点


第一部分:机器学习基础概念

机器学习就是去找一个\(function\),输入数据,输出对应的,预期的结果,比如说:分类任务,输入一张图像,输出该图像对应的类别。

深度学习是机器学习的一个子领域,核心是通过多层神经网络自动提取特征,尤其适用于图像、语音、文本等非结构化数据。

1、机器学习与深度学习的区别

对比项 传统机器学习 深度学习
特征工程 需人工设计 自动提取
模型结构 简单模型(SVM、决策树) 多层神经网络
适用数据 小规模、结构化数据 大规模、非结构化数据

学习类型

  • 监督学习:数据有标签,用于分类/回归
  • 无监督学习:数据无标签,用于聚类/降维
  • 半监督学习:部分数据有标签

2、模型、损失函数、优化器

模型(Model):带有未知参数的函数,\(y = wx + b\)

损失函数(Loss Function) 是用来衡量模型预测结果与真实值之间差距的函数,是训练过程中的优化目标。

损失函数 适用场景 公式
MSE 回归 \(\frac{1}{n}\sum(y - \hat{y})^2\)
Cross-Entropy 分类 \(-\sum y_i \log(\hat{y}_i)\)

梯度下降(Gradient Descent)

梯度下降是用来训练模型的一种优化算法。它的作用是找到让损失函数最小的参数值。每次迭代时,计算损失函数对参数的梯度,然后沿着梯度相反的方向调整参数,就像下山一样,一步步走到最低点。实际训练中常用 Mini-batch 梯度下降,配合 Adam 优化器效果更好。

直观理解:想象你在山上,想快速下山,每一步都沿着当前最陡的方向往下走。

更新公式

\[\theta = \theta - \eta \cdot \nabla L(\theta)\]

其中 \(\eta\) 是学习率,\(\nabla L\) 是损失函数对参数的梯度。

三种梯度下降

类型 每次用多少数据 特点
BGD(批量) 全部数据 稳定但慢,内存消耗大
SGD(随机) 1 个样本 快但震荡,容易跳出局部最优
Mini-batch 一小批数据 平衡速度与稳定性,实际最常用

学习率的影响

  • 太大:震荡甚至发散
  • 太小:收敛太慢
优化器 特点
SGD 简单,但收敛慢,易震荡
Adam 动量 + 自适应学习率,收敛快且稳定

3、过拟合与欠拟合

问题 表现 解决方案
欠拟合 训练集表现差 增加模型复杂度、添加特征
过拟合 训练好但测试差 正则化、Dropout、数据增强

正则化

正则化是用来防止过拟合的一种技术。过拟合就是模型把训练数据"学得太死",对训练集表现很好,但遇到新数据就不行了。正则化通过在损失函数里加一个惩罚项,限制模型参数的大小,让模型不能太"任性",从而提高泛化能力。

三种常见方法

  • L1 正则化:损失函数加上权重绝对值惩罚项 \(L = L_{loss} + \lambda \sum|w|\) 会让部分权重变成 0,可以做特征选择

  • L2 正则化:损失函数加上权重平方惩罚项 \(L = L_{loss} + \lambda \sum w^2\) 让权重整体变小,防止过拟合,最常用

  • Dropout:训练时随机丢弃一部分神经元,强迫模型不依赖某些神经元,增强鲁棒性

4、评估指标(分类任务)

基于混淆矩阵(TP/FP/TN/FN):

指标 公式 适用场景
Accuracy \(\frac{TP+TN}{ALL}\) 类别均衡
Precision \(\frac{TP}{TP+FP}\) 关心误报(垃圾邮件)
Recall \(\frac{TP}{TP+FN}\) 关心漏报(医疗诊断)
F1 \(2\frac{P \times R}{P+R}\) 综合评估
AUC ROC曲线下面积 模型整体区分能力

第二部分:深度学习核心

1、激活函数

激活函数的作用是给神经网络引入非线性。如果没有激活函数,不管网络有多少层,最后都等价于一个线性变换,那就没法处理复杂的问题了。

常用激活函数

函数 公式 特点
ReLU \(\max(0, x)\) 简单高效,收敛快,但易死神经元
Sigmoid \(\frac{1}{1+e^{-x}}\) 输出(0,1),易梯度消失
Softmax \(\frac{e^{z_i}}{\sum e^{z_j}}\) 多分类输出层,转为概率分布

2、梯度消失与梯度爆炸

反向传播时,梯度是按链式法则一层层乘过去的。如果每层的梯度都很小(比如用 Sigmoid,导数最大才 0.25),乘到最后就越乘越小,接近 0,这就是梯度消失,深层网络就没法学习了。反过来,如果每层梯度都很大,乘到最后就爆炸了,参数更新太猛,训练就不稳定。

问题 原因 影响 解决方案
梯度消失 链式法则乘积趋近0 深层网络无法学习 ReLU、BN、残差结构
梯度爆炸 链式法则乘积过大 训练不稳定 梯度裁剪、权重初始化

3、归一化技术

归一化的目的是让每层输出的数值分布更稳定,别忽大忽小,这样训练收敛更快、更稳定。

BatchNorm 是对同一个 batch 里所有样本的同一个特征做归一化,适合 CNN。LayerNorm 是对单个样本内部的所有特征做归一化,适合 Transformer,因为 NLP 任务每个样本长度不一样,BatchNorm 不好用。两者的目的都是让数值分布稳定,加速收敛。

类型 归一化维度 适用场景
BatchNorm 跨 batch 对每个特征 CNN、图像任务
LayerNorm 对每个样本的所有特征 Transformer、NLP

第三部分:大模型

1、Self-Attention 自注意力机制

输入是一个vector set,假设序列长度为T,也就是T个token,每个token的嵌入是固定的,而这个嵌入的维度就是\(d_{model}\),

Self-Attention 机制的核心思想是:每一个位置的表示都由序列中所有位置的信息加权得到,权重由输入本身计算得出,因此叫做“自注意力”。

计算流程

Step 1: 输入 X → 线性变换得到 Q、K、V

\[Q = XW^Q, \quad K = XW^K, \quad V = XW^V\]

其中:

  • \(W^Q, W^K, W^V \in \mathbb{R}^{d \times d_k}\) 是可学习的参数矩阵。
  • \(Q, K, V \in \mathbb{R}^{n \times d_k}\)

Step 2: 计算注意力权重

通过点积计算注意力权重:

\[\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right)V\]
  • \(\frac{QK^\top}{\sqrt{d_k}} \in \mathbb{R}^{n \times n}\):表示每个位置之间的相似度(缩放点积)。
  • 使用 softmax 保证权重归一化。

为什么除以 \(\sqrt{d_k}\):防止点积过大导致 softmax 进入饱和区(梯度消失)。

2、Multi-Head Attention 多头注意力

将 Q、K、V 拆成 h 个头,分别计算注意力,最后拼接融合: $\(\text{MultiHead} = \text{Concat}(\text{head}_1, ..., \text{head}_h)W^O\)$

作用:从不同子空间捕捉不同类型的关系。

3、Transformer 架构

编码器结构:Multi-Head Attention → Add & Norm → Feed Forward → Add & Norm

解码器结构

  • Masked Self-Attention(只能看到当前位置之前的信息)
  • Cross-Attention(Decoder 的 Q 与 Encoder 的 K、V 计算)
  • Feed Forward

关键点

  • 位置编码(Positional Encoding):Transformer 无顺序概念,需要加入位置信息
  • 残差连接 + LayerNorm:稳定深层网络训练

4、Self-Attention vs RNN

对比 Self-Attention RNN
并行性 可并行计算整个序列 顺序计算,慢
长距离依赖 直接建模任意两个位置 信息逐层传递,易丢失
计算复杂度 \(O(n^2)\) \(O(n)\)

5. 大模型的结构

当前主流的大语言模型大多基于 Transformer 架构构建,其中很多模型(如 GPT、DeepSeek、Qwen)采用 Decoder-only 结构。

从整体上看,一个典型的大语言模型可以简单分为三层:输入层 → Transformer Block 堆叠层 → 输出层。这些层内部包含大量矩阵,矩阵中的数值就是模型的参数。

5.1 输入层

输入层负责把用户输入的文本转换成模型可以计算的数字表示。模型不能直接理解文字,因此会:

  1. 先把文本切分成一个个 token
  2. 再把每个 token 通过词嵌入(Embedding)和矩阵运算,转换成表示 token 初始语义信息的向量

作用:把"文字"变成"模型能处理的数字",为后续 Transformer Block 提供初始的语义信息。

5.2 Transformer Block(堆叠层)

Transformer Block 是大模型中最核心的计算部分,通常会堆叠很多层(从几十层到上百层不等)。每一层内部主要包含:

  • 多头注意力机制(Multi-Head Attention)
  • 前馈神经网络(FFN)
  • 残差连接 + LayerNorm

核心思想:token 进入 Transformer Block 后,会不断和前文中的 token 建立联系,模型会根据上下文更新它的表示,使这个表示不仅包含 token 本身的信息,也包含它在当前句子或对话中的语义关系。

5.3 输出层

经过多层 Transformer Block 计算后,每个 token 都会得到一个新的向量表示。对于文本生成任务来说:

模型通常会使用最后一个位置对应的向量,经过输出层的线性变换 + softmax,得到下一个 token 在整个词表上的概率分布

举例:假设模型隐藏维度是 1024,词表大小是 50000,输出层会把 1024 维向量转换成 50000 维向量,每个位置的值对应下一个 token 是该词表项的概率。

模型在生成文本时,会根据这个概率分布选择或采样出下一个 token,然后把新生成的 token 加到原来的输入后面,继续预测下一个 token。这个过程不断重复,就形成了完整的句子或回答。

三种主流架构

目前大模型主要有三种架构路线:

架构 特点 代表模型
Encoder-only 仅编码器,适合理解任务(分类、抽取) BERT
Encoder-Decoder 编解码结构,适合翻译、摘要 T5、BART
Decoder-only 仅解码器,自回归生成 GPT、Qwen、DeepSeek

当前大语言模型生成场景,Decoder-only 是绝对主流。

6. 大模型训练三阶段范式⭐⭐

自 GPT-1 以来,大语言模型的发展推动了训练范式逐步成熟,目前业界主流是 "预训练 → 监督微调 → 对齐" 三阶段开发框架。

第一阶段:预训练(Pre-training)

基于超大规模无标注语料进行自监督学习(主要是"预测下一个 token"),目标是让模型获得:

  • 通用语言建模能力
  • 广泛的世界知识
  • 基本的推理与泛化能力

预训练是大模型"智能"的来源,成本最高,通常由大厂完成。

第二阶段:监督微调(Supervised Fine-tuning, SFT)

利用人工构建的指令—响应示例或高质量对话数据进一步对模型进行训练。目的是使模型能够更好地理解人类指令,并输出更加规范、稳定且贴合任务需求的内容。

第三阶段:对齐(Alignment)

通过引入人类偏好、行为规范、安全约束与价值观等因素,使模型的行为更符合用户期望

对齐阶段目标:让模型在真实应用场景中表现得更有帮助、更安全、更可靠。

常见对齐方法:

方法 思路 特点
RLHF 奖励模型训练 + PPO 强化学习 经典方案,但训练复杂,成本高
DPO 直接偏好优化,不需要训练奖励模型和RL 训练简单,效果接近RLHF,越来越流行
ORPO odds ratio 偏好优化,进一步简化 一个阶段完成,不需要单独SFT
KTO 知识对齐偏好优化,同时考虑知识和偏好 较新,兼顾质量和多样性

7. 什么是知识蒸馏? ⭐⭐⭐

知识蒸馏(Knowledge Distillation) 是一种模型压缩技术,核心思想是:用一个效果好但体积大的教师模型(Teacher Model)"教"一个体积小、速度快的学生模型(Student Model),让小模型尽可能逼近大模型的效果。

核心思路:软标签 vs 硬标签

  • 硬标签:就是普通的监督标签(比如分类任务中,正确类别是 1,其他都是 0)
  • 软标签:教师模型输出的概率分布(比如 [0.001, 0.9, 0.05, 0.049]),不仅包含"哪个是正确答案",还包含"错误答案和正确答案有多相似"这种更多信息

为什么软标签有用? 比如分类"猫"和"狗",大模型知道"老虎"长得更像猫而不是狗,这个"相似性知识"是硬标签没有的,但软标签能传递给学生模型。

蒸馏流程

  1. 第一步:训练好一个大的教师模型(通常是预训练大模型或ensemble)
  2. 第二步:用教师模型对所有样本输出软概率(温度 T 放大概率分布,让相对差异更明显)
  3. 第三步:训练学生模型,让学生模型的输出同时逼近:
  4. 真实硬标签(监督学习)
  5. 教师模型的软概率(蒸馏损失)

总的损失函数通常是: $\(\text{Loss} = \alpha \cdot \text{HardLoss} + (1-\alpha) \cdot \text{DistillLoss}\)$

一句话总结:知识蒸馏就是让好学生(小模型)向老师(大模型)学习,不仅学标准答案,还学老师做题的"感觉",最终考出接近老师的分数,但体型小跑得快。