Skip to content

预训练与微调

什么是预训练

预训练(Pretraining)是指在大规模数据集上训练一个基础模型,让模型学习通用的知识和模式。这个基础模型可以后续用于各种下游任务。

类比:预训练就像让一个人先广泛阅读各种书籍,学习通用的知识和思维方式,然后再学习特定领域的专业技能。

预训练数据

大语言模型的预训练数据通常包括:

  • 网页文本(维基百科、新闻网站、博客等)
  • 书籍
  • 代码仓库
  • 论文
  • 社交媒体内容

数据规模:现代大语言模型的预训练数据通常达到万亿级别的Token。

预训练目标

预训练阶段的主要目标是让模型学习:

  1. 语言知识:语法、词汇、语义
  2. 世界知识:事实、概念、关系
  3. 推理能力:逻辑、因果、类比
  4. 通用能力:理解、生成、推理等

预训练目标函数

掩码语言模型(Masked Language Modeling, MLM)

代表模型:BERT

方法

  1. 随机掩盖输入序列中的一些词
  2. 让模型预测这些被掩盖的词
  3. 模型需要理解上下文才能准确预测

示例

输入:The cat sat on the [MASK]
预测:mat

优点

  • 能同时利用上下文
  • 适合理解任务

缺点

  • 不适合生成任务
  • 训练效率较低

因果语言模型(Causal Language Modeling, CLM)

代表模型:GPT系列、Claude

方法

  1. 给定前面的词,预测下一个词
  2. 只能利用前面的上下文
  3. 自回归生成

示例

输入:The cat sat on the
预测:mat

优点

  • 适合生成任务
  • 训练效率高

缺点

  • 只能利用单向上下文

什么是微调

微调(Finetuning)是指在预训练模型的基础上,使用特定任务的数据进行进一步训练,使模型适应特定任务或领域。

类比:微调就像一个已经广泛阅读的人,现在要学习特定领域的专业知识(如医学、法律等)。

微调的类型

  1. 全量微调:更新所有参数

    • 优点:效果最好
    • 缺点:成本高、需要大量数据
  2. 部分微调:只更新部分参数

    • 优点:成本较低
    • 缺点:效果可能略差
  3. 参数高效微调:只更新少量参数

    • 代表方法:LoRA、Prefix Tuning、Adapter
    • 优点:成本很低、数据需求少
    • 缺点:效果可能略差

指令微调(Instruction Tuning)

指令微调是一种特殊的微调方法,它使用"指令-响应"对来训练模型,使模型能够理解并遵循自然语言指令。

指令微调的数据

指令微调的数据通常包含:

  • 指令:自然语言描述的任务
  • 输入:任务的具体输入
  • 输出:期望的输出

示例

指令:将以下句子翻译成英文
输入:我喜欢人工智能
输出:I like artificial intelligence

指令微调的作用

  1. 提升指令遵循能力:让模型能够理解和执行自然语言指令
  2. 改善对话能力:让模型更擅长多轮对话
  3. 增强泛化能力:让模型能够处理未见过的指令

RLHF(基于人类反馈的强化学习)

RLHF(Reinforcement Learning from Human Feedback)是一种使用人类反馈来优化模型的方法,它使模型的输出更符合人类偏好。

RLHF的步骤

  1. 收集人类偏好数据:让人类对模型的不同输出进行排序
  2. 训练奖励模型:基于人类偏好数据训练一个奖励模型
  3. 使用强化学习优化:使用奖励模型作为奖励信号,优化语言模型

RLHF的作用

  1. 提升输出质量:让模型输出更有用、更诚实、更无害
  2. 对齐人类偏好:让模型的输出更符合人类价值观
  3. 减少有害输出:降低模型生成有害内容的概率

参数高效微调方法

LoRA(Low-Rank Adaptation)

LoRA是一种参数高效的微调方法,它通过添加低秩矩阵来适应新任务,而不是更新所有参数。

原理

  • 在原有权重矩阵旁边添加低秩矩阵
  • 只训练这些低秩矩阵
  • 原有权重保持不变

优点

  • 参数量少(通常不到原模型的1%)
  • 训练成本低
  • 可以轻松切换不同任务

应用

  • 适应特定领域
  • 个性化模型
  • 快速实验

其他方法

  1. Prefix Tuning:在输入前添加可学习的提示
  2. Adapter:在模型中添加小型适配器层
  3. Prompt Tuning:优化输入提示而非模型参数

微调的挑战和局限性

挑战

  1. 数据需求:需要高质量的领域数据
  2. 计算资源:即使参数高效微调也需要一定资源
  3. 灾难性遗忘:可能遗忘预训练学到的知识
  4. 过拟合:在小数据集上容易过拟合

局限性

  1. 效果限制:参数高效微调的效果可能不如全量微调
  2. 领域漂移:领域变化快时需要频繁微调
  3. 评估困难:如何评估微调效果是一个挑战

实际应用

预训练模型

  • GPT-4:OpenAI的通用大语言模型
  • Claude:Anthropic的AI助手
  • LLaMA:Meta的开源模型

微调模型

  • CodeLlama:专门针对代码的微调模型
  • Med-PaLM:医学领域的微调模型
  • BloombergGPT:金融领域的微调模型

总结

预训练与微调是大语言模型开发的核心流程:

  1. 预训练:在大规模数据上学习通用知识和能力
  2. 微调:适应特定任务或领域
  3. 指令微调:提升指令遵循能力
  4. RLHF:对齐人类偏好

理解预训练与微调有助于:

  • 选择合适的模型
  • 决定是否需要微调
  • 理解模型的能力和局限

下一步学习

MIT Licensed