跳转至

06 - 大模型基础理论面试题

⚠️ 时效性说明:本章涉及前沿模型/价格/榜单等信息,可能随版本快速变化;请以论文原文、官方发布页和 API 文档为准。

大模型基础理论面试题图

Transformer、预训练、微调等核心理论

📖 章节概述

本章将整理大模型基础理论相关的面试题,包括Transformer架构、预训练方法、微调技术等内容。

🎯 学习目标

完成本章后,你将能够:

  • 掌握大模型的核心理论
  • 熟悉常见的面试题型
  • 理解Transformer架构
  • 了解预训练和微调方法

1. Transformer架构

Q1: Transformer的核心组件是什么?

解答: Transformer的核心组件包括:

  1. 自注意力机制(Self-Attention):计算序列中每个位置与其他所有位置的关系
  2. 多头注意力(Multi-Head Attention):并行计算多个注意力,捕获不同的特征
  3. 位置编码(Positional Encoding):为序列添加位置信息
  4. 前馈网络(Feed-Forward Network):对每个位置独立应用非线性变换
  5. 残差连接(Residual Connection):缓解梯度消失问题
  6. 层归一化(Layer Normalization):稳定训练过程

Q2: 自注意力机制是如何工作的?

解答: 自注意力机制的工作步骤:

  1. 计算Q、K、V:通过线性变换得到查询(Q)、键(K)、值(V)
  2. 计算注意力分数:Q和K的点积
  3. 缩放:除以√d_k(防止梯度消失)
  4. Softmax归一化:得到注意力权重
  5. 加权求和:用注意力权重对V进行加权求和

公式

Text Only
Attention(Q, K, V) = softmax(QK^T / √d_k) V

Q3: 位置编码有哪些类型?

解答: 常见的位置编码类型:

  1. 绝对位置编码
  2. 正弦/余弦位置编码(原始Transformer)
  3. 可学习的位置嵌入

  4. 相对位置编码

  5. T5 Bias
  6. Transformer-XL

  7. 旋转位置编码(RoPE)

  8. 当前最流行
  9. 通过旋转矩阵编码位置信息

  10. ALiBi(Attention with Linear Biases)

  11. 通过线性偏置编码相对位置

2. 预训练

Q4: 什么是预训练?为什么需要预训练?

解答: 预训练是在大规模数据上训练模型,学习通用的语言表示。

需要预训练的原因: 1. 数据效率:大规模数据学习更有效的表示 2. 知识迁移:学习到的知识可以迁移到下游任务 3. 泛化能力:提高模型的泛化能力 4. 加速收敛:下游任务训练更快收敛

Q5: 常见的预训练目标有哪些?

解答: 常见的预训练目标:

  1. MLM(Masked Language Modeling)
  2. BERT使用
  3. 随机mask部分token,预测被mask的token

  4. CLM(Causal Language Modeling)

  5. GPT使用
  6. 自回归预测下一个token

  7. NSP(Next Sentence Prediction)

  8. BERT使用
  9. 预测两个句子是否连续

  10. Span Prediction

  11. T5使用
  12. 预测被mask的span

  13. Denoising Autoencoding

  14. BART使用
  15. 去噪自编码

Q6: 什么是Scaling Law?

解答: Scaling Law描述了模型性能与模型大小、数据量、计算资源之间的关系。

主要发现: 1. 模型性能与模型大小呈幂律关系 2. 模型性能与数据量呈幂律关系 3. 模型性能与计算量呈幂律关系 4. 三者之间存在权衡关系

公式

Text Only
L(N, D) = A · N^(-α) + B · D^(-β) + E
其中N是模型参数量,D是数据量,E是不可约损失(自然语言固有的熵),A、B、α、β为拟合常数。计算量 C ≈ 6ND,与 N、D 不独立,不作为联合公式中的独立变量。

3. 微调

Q7: 什么是微调?微调有哪些方法?

解答: 微调是在预训练模型基础上,使用特定任务的数据进行训练。

微调方法: 1. 全量微调(Full Fine-tuning): - 更新所有参数 - 需要大量数据和计算资源

  1. 部分微调(Partial Fine-tuning)
  2. 只更新部分层
  3. 减少计算量

  4. 参数高效微调(PEFT)

  5. LoRA(Low-Rank Adaptation)
  6. Adapter
  7. Prefix Tuning
  8. Prompt Tuning

Q8: LoRA的原理是什么?

解答: LoRA通过低秩分解来减少可训练参数。

核心思想: - 假设权重更新ΔW是低秩的 - ΔW = BA,其中B和A是低秩矩阵 - 只训练B和A,参数量大幅减少

公式

Text Only
W' = W + ΔW = W + BA

优势: - 参数量少(通常<1%) - 不增加推理开销 - 可以合并到原始权重

Q9: QLoRA相比LoRA有什么改进?

解答: QLoRA(Quantized LoRA)相比LoRA的改进:

  1. 量化基础模型:将基础模型量化到4位
  2. 低秩适配器:使用LoRA进行微调
  3. 显存大幅降低:显存需求降低约75%

优势: - 可以在消费级GPU上微调大模型 - 精度损失小 - 推理速度不受影响

4. 练习题

基础练习

  1. 实现自注意力

    Python
    # TODO: 实现自注意力机制
    def self_attention(Q, K, V):
        # 你的代码
        pass
    

  2. 实现位置编码

    Python
    # TODO: 实现正弦位置编码
    def positional_encoding(seq_len, d_model):
        # 你的代码
        pass
    

进阶练习

  1. 实现LoRA

    Python
    # TODO: 实现LoRA
    class LoRALayer(nn.Module):
        def __init__(self, in_features, out_features, rank=8):
            # 你的代码
            pass
    
        def forward(self, x):
            # 你的代码
            pass
    

  2. 实现MLM预训练

    Python
    # TODO: 实现MLM预训练
    class MLMPretraining(nn.Module):
        def __init__(self, model):
            # 你的代码
            pass
    
        def forward(self, input_ids, attention_mask, labels):
            # 你的代码
            pass
    

5. 最佳实践

✅ 面试技巧

  1. 理解核心概念
  2. 深入理解Transformer架构
  3. 掌握预训练和微调方法
  4. 了解最新研究进展

  5. 准备代码示例

  6. 准备关键算法的实现
  7. 理解代码细节
  8. 能够解释代码

  9. 结合实际项目

  10. 将理论与项目经验结合
  11. 举例说明应用场景
  12. 展示实践经验

❌ 避免做法

  1. 死记硬背
  2. 理解核心原理
  3. 掌握关键公式
  4. 能够灵活应用

  5. 忽视细节

  6. 注意技术细节
  7. 理解设计决策
  8. 了解权衡取舍

  9. 缺乏实践

  10. 结合实际项目
  11. 展示应用能力
  12. 分享经验教训

6. 总结

本章介绍了大模型基础理论的面试题:

  • Transformer架构: 自注意力、多头注意力、位置编码
  • 预训练: MLM、CLM、Scaling Law
  • 微调: 全量微调、LoRA、QLoRA

掌握这些理论知识是面试的基础。

7. 下一步

继续学习07-Transformer架构面试题,深入了解Transformer架构的细节。