6.1 目标函数
本节介绍了三种主要的语言模型及其目标函数:
6.1.1 Decoder-only 模型(例如 GPT-3)
- 条件概率:自回归语言模型定义条件分布 p(xi∣x1:i−1)p(x_i | x_{1:i-1})。
- 目标:通过最大化似然函数 p(xi∣x1:i−1)p(x_i | x_{1:i-1}),训练模型生成上下文嵌入。
- 训练目标:最大似然估计(MLE),通过负对数似然函数优化模型参数。
6.1.2 Encoder-only 模型(例如 BERT)
- 双向上下文嵌入:与 Decoder-only 模型不同,Encoder-only 模型提供双向上下文嵌入,适用于理解任务而非生成任务。
- BERT的目标函数:
- 掩码语言模型(Masked Language Modeling):通过对输入序列中部分 token 掩码并预测其原始值来训练模型。
- 下一句预测(Next Sentence Prediction):训练模型判断两个句子是否是连续的。
6.1.3 Encoder-decoder 模型(例如 T5, BART)
- BART(Bidirectional Auto-Regressive Transformers):结合了 BERT 的双向编码和 GPT 的自回归解码,适用于生成任务。
- T5(Text-to-Text Transfer Transformer):将所有 NLP 任务统一为文本到文本的转换任务,不仅支持分类任务,还能处理生成任务。
6.2 优化算法
优化算法是训练大语言模型的关键。以下是几种常用的优化方法:
6.2.1 随机梯度下降(SGD)
- 步骤:每次通过小批量样本计算梯度,更新参数。
- 关键问题:需要平衡收敛速度、数值稳定性和内存效率。
6.2.2 Adam(Adaptive Moment Estimation)
- 创新:结合了动量和自适应学习率,能加速收敛。
- 步骤:
- 计算一阶和二阶动量。
- 通过自适应学习率更新模型参数。
- 存储占用:增加了存储需求(需要存储动量和梯度)。
6.2.3 AdaFactor
- 目标:减少存储占用。通过只存储矩阵的行和列的和,避免了存储完整的梯度矩阵。
- 适用模型:用于训练大规模模型,如 T5。
6.2.4 混合精度训练
- 方法:使用低精度(FP16)进行计算,使用高精度(FP32)存储模型权重。
- 优势:减少内存使用,提高训练效率。
6.2.5 学习率调整
- 策略:通常随着训练过程的进行,学习率逐渐衰减。可以通过预热(warmup)来增加训练的稳定性。
6.2.6 初始化方法
- 标准初始化:如 Xavier 初始化,以避免梯度消失或爆炸。
- 模型例子:GPT-2 和 GPT-3 使用残差层的额外缩放来进行初始化。
主要总结
- 目标函数:根据模型类型不同,选择适合的目标函数(如最大似然、掩码语言建模、下一句预测)。
- 优化算法:使用如 SGD、Adam、AdaFactor 等优化算法,并结合混合精度训练、学习率调整等技术,提升训练效率与稳定性。