本帖最后由 佛系阿yu 于 2025-3-9 16:38 编辑
《大语言模型原理与工程实践》第二章到此即结束了,后面有毕业论文,工作实习和论文返修,后面从第三章开始将会是大篇幅的文字,我扫了一下感觉难度很高,我将继续努力更新。
2.3 预训练语言模型
基于Transformer结构的预训练语言模型分为三类:
- Encoder-Only模型(如BERT):捕获双向上下文,擅长文本理解任务(NLU)。
- Decoder-Only模型(如GPT系列):单向生成,擅长文本生成任务。
- Encoder-Decoder模型(如T5、BART):统一为序列到序列框架,灵活通用。
2.3.1 Decoder的代表:GPT系列
核心思想
- 预训练+微调:利用大规模无标注文本预训练,捕捉语言模式,再针对下游任务微调。
- 模型结构:基于Transformer Decoder,保留多头自注意力机制和前馈网络,移除交叉注意力。
- 训练任务:自回归语言模型,预测下一个词
最大化似然函数:
$$ L(X) = \sum_i \log P(w_i|w_1, \cdots, w_{i-1}; \Theta) $$
GPT系列参数对比
模型 |
发布时间 |
参数量(亿) |
训练数据量 |
GPT-1 |
2018 |
1.17 |
5GB |
GPT-2 |
2019 |
15 |
40GB |
GPT-3 |
2020 |
1750 |
45TB |
2.3.2 Encoder的代表:BERT
核心特点
- 双向性:捕获上下文双向关系,提升文本理解能力。
- 模型结构:基于Transformer Encoder,包含多头自注意力和前馈网络。
- 预训练任务:
- 掩码语言模型(MLM):预测被掩码的词(如“The [MASK] sat on the mat” → 预测“cat”)。
- 下一句预测(NSP):判断两个句子是否连续。
参数规模
- BERT-base:12层Encoder,768特征维度,1.1亿参数。
- BERT-large:24层Encoder,1024特征维度,3.4亿参数。
2.4 初探大语言模型
2.4.1 InstructGPT(ChatGPT前身)
目标
将基座模型(如GPT-3)从文本续写升级为遵循人类指令的对话模型,通过对齐(Alignment)实现。
三阶段流程
- 有监督微调(SFT):用1.3万条人工标注的指令数据微调基座模型。
- 奖励模型训练(RM):基于3.3万条排序数据训练评价模型。
- 强化学习优化(PPO):用奖励模型指导模型生成更优回答。
流程如图所示:
效果与不足
- 效果:1.3B参数的InstructGPT性能超过175B的GPT-3。
- 缺点:生成内容不确定性、有害指令响应不合理、幻觉问题。
模型改进
- 结构优化:
- Pre-normalization:输入前进行层归一化(RMSNorm)。
- SwiGLU激活函数:增强非线性表示能力。
- Rotary Embedding:相对位置编码(RoPE)优化长程依赖。
- 训练数据:LLaMA2使用2万亿Token数据(网页、代码、书籍等),训练耗时21天(2048块A100 GPU)。
微调策略
- 有监督微调:27,540条高质量人工指令数据。
- RLHF改进:
- Pairwise排序数据:100万对标注数据。
- 双奖励模型:分别评估回答的“有用性”和“安全性”。
- 拒绝采样微调:迭代优化生成结果。
效果对比
- 经过RLHF的模型在有用性和无害性上显著优于仅微调模型。
附录:相关资源
代码实践:
GPT系列:Hugging Face的transformers
库(如gpt2
、gpt-neo
)。
LLaMA:Meta官方GitHub仓库(需申请访问权限)。
数据集:
InstructGPT数据集:人工标注的高质量指令数据。
LLaMA训练数据:CommonCrawl、GitHub代码、维基百科等公开语料。