datawhale 大模型学习 第五章-模型训练

发布时间:2024年01月24日

一、目标函数

今天要讨论的是以下三种模型结构:
Decoder-only模型:例如,GPT-3,单向上下文嵌入,在生成文本时一次生成一个token
Encoder-only模型:例如,BERT,利用双向上下文注意力生成embeding
Encoder-decoder模型:例如,T5,利用双向上下文编码,利用单向上下文生成文本

最终结果就是将token序列映射为一个Embedding向量

\sigma :V^{L}\rightarrow R^{d*L}

其中:
?L :代表文本长度
?d:代表embeding向量的维度

1.1 Decoder-only 模型

自回归语言模型预测是一个条件分布:即根据1,2,。。。i-1个词语,去预测第1个词语是什么

公式为:P(X_{i}:X_{1:i-1})?=softmax(Embedding(1:i-1))

那格局最大似然原理(通俗点讲就是,找到一个参数,是的概率最大),定义以下负对数似然目标函数:
O(\theta ) =\sum_{x\in D}-logP(x)= \sum_{x\in D}^{}\sum_{i\in L}^{L}-logP(X_{i}:X_{1:i-1})

1.2 Encoder-only模型

Decoder-only模型,它会产生(单向)上下文嵌入,更适合文本生成任务

Encoder-only模型,他是双向上下文嵌入,更适合分类任务

1.2.1 Bert 模型

BERT的目标函数,它包含以下两个部分:

  • 掩码语言模型(Masked language modeling)
  • 下一句预测(Next sentence prediction)

其中有两个特殊的token:

  • [CLS]?:包含用于驱动分类任务的嵌入,即Next sentence prediction 任务
  • [SEP] :用于告诉模型区分第一个序列(例如,前提)与第二个序列(例如,假设)。
1.2.1.1?掩码语言模型

基本思想是通过加噪然后预测来进行训练:

[the,[MASK],ate,[MASK],cheese]? ??? ? [the,mouse,ate,the,cheese]
需要模型把[MASK]位置的词语给预测出来

噪声函数的定义:

  • 假设 I?{1,…,L}?代表所有位置中随机的15%。
  • 对于每个 i∈I,(x~i 代表需要mask的位置):
    • 以0.8的概率,?x~i?←[MASK]
    • 以0.1的概率, x~i?←xi?
    • 以0.1的概率, x~i?←random?word?from?V
1.2.2 RoBERTa

RoBERTa对BERT进行了以下改进:

  • 删除了下一句预测这一目标函数(发现它没有帮助)。
  • 使用更多数据训练(16GB文本????160GB文本 )。
  • 训练时间更长。
  • RoBERTa在各种基准上显著提高了BERT的准确性(例如,在SQuAD上由81.8到89.4)。

1.3 Encoder-Decoder模型:

  • 首先像BERT一样对输入进行双向编码。
  • 然后像GPT-2一样对输出进行自回归解码。
1.3.1 BART(Bidirectional Auto-Regressive Transformers)

BART (Lewis et al. 2019)是基于Transformer的编码器-解码器模型。

  • 使用与RoBERTa相同的编码器架构(12层,隐藏维度1024)。
  • 使用与RoBERTa相同的数据进行训练(160GB文本)。

基于BERT的实验,最终模型进行以下了变换:

  • 掩码文档中30%的token
  • 将所有子句打乱

最后,通过微调,BART在分类和生成任务上都展示了强大的效果。

1.3.2 T5(Text-to-Text Tranfer Transformer)

训练过程:给定一段文本,在随机位置将其分割为输入和输出:

T= {the,mouse ,ate ,the ,cheese}
X1 = {the}? ?Y1 = {mouse,ate,the,cheese}
X2 = {the,mouse} Y2=? {ate,the,cheese}
X3 = {the ,mouse,ate} Y3= {the,cheese}
?

差异:

  • BERT使用?[CLS][CLS]?的嵌入来预测。
  • T5、GPT-2、GPT-3等(生成模型)将分类任务转换成自然语言生成。

二、大模型参数优化算法

2.1 随机梯度下降 (SGD)

2.2 Adam(?adaptive moment estimation)

引入了一阶动量和二阶动量的概念

参数跟新过程:

说明:

学习率\alpha?
一阶指数移动平滑加权? m_{t}
二阶指数移动平滑加权??v_{t}
一阶指数移动加权衰减系数?\beta 1
二阶指数皮冻加权衰减系数?\beta 2

内存占用:
之前SGD训练时只需要保存?(\theta _{t},g_{t})? 是模型参数的2倍
现在Adam训练要保存(\theta _{t},g_{t}m_{t},v_{t}) 是模型参数的4倍

2.3 混合半精度训练

简单理解就是:
训练的时候用F16,跟新模型参数的时候用F32

2.4 学习率

  • 训练过程中使用衰减学习率
  • 对于Tranformer模型,还需要增加一个(warmup)学习率

2.5 参数初始化

  • 给定矩阵W∈Rm×n?,标准初始化(即,xavier初始化)为 Wij?~N(0,1/n)?。
  • GPT-2和GPT-3通过额外的 1/N??缩放权重,其中?N?是残差层的数量。
  • T5将注意力矩阵增加一个1/d??(代码)。

以GPT-3为例,使用的参数如下:

  • Adam参数: 1=0.9,2=0.95,8β1?=0.9,β2?=0.95,?=10?8
  • 批量小:320万个token(约1500个序列)
  • 使用梯度剪裁(t?←gt?/min(1,∥g∥2?)?)
  • 线性学习率预热(前3.75亿个token)
  • 余弦学习率衰减到10%
  • 逐渐增加批大小
  • 权重衰减设为0.1

文章来源:https://blog.csdn.net/fan_fan_feng/article/details/135774830
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。