LLM:GPT 系列

打印 上一主题 下一主题

主题 971|帖子 971|积分 2915

阅读原文:
LLM:Qwen 系列

GPT(Generative Pre-trained Transformer)是生成式预训练语言模型,基于 Transformer 架构,专注于通过自回归的方式生成自然语言文本,即给定一个输入序列                                    x                         =                         {                                   x                            1                                  ,                                   x                            2                                  ,                         .                         .                         .                         ,                                   x                            t                                  }                              x = \{x_1, x_2, ..., x_t\}                  x={x1​,x2​,...,xt​},模型学习预测下一个单词                                              x                                       t                               +                               1                                                 x_{t+1}                  xt+1​ 的条件概率                                    P                         (                                   x                                       t                               +                               1                                            ∣                                   x                            1                                  ,                         .                         .                         .                         ,                                   x                            t                                  )                              P(x_{t+1} \mid x_1, ..., x_t)                  P(xt+1​∣x1​,...,xt​)。
1、GPT-1

GPT-1 于 2018 年发布,接纳了仅有解码器的 Transformer 架构,参数量为 1.17 亿,其通过无监视学习在海量文本数据上预训练,并在特定任务上举行鉴别式微调来实现自然语言明白任务的明显提升。
1.1、无监视预训练

给定一个无监视的标记语料库                                    U                         =                         {                                   u                            1                                  ,                         …                         ,                                   u                            n                                  }                              \mathcal{U}=\lbrace u_{1}, \dots, u_{n} \rbrace                  U={u1​,…,un​},使用标准的自然语言建模目的来最大化以下似然:
                                                    L                               1                                      (                            U                            )                            =                                       ∑                               i                                      log                            ⁡                            P                            (                                       u                               i                                      ∣                                       u                                           i                                  −                                  k                                                 ,                            …                            ,                                       u                                           i                                  −                                  1                                                 ;                            Θ                            )                                  L_{1}(\mathcal{U})=\sum_{i}\log P(u_{i}|u_{i-k},\ldots,u_{i-1};\Theta)                     L1​(U)=i∑​logP(ui​∣ui−k​,…,ui−1​;Θ)
其中                                    k                              k                  k 是上下文窗口的巨细,条件概率                                    P                              P                  P 使用具有参数                                    Θ                              \Theta                  Θ 的神经网络建模。这些参数使用随机梯度降落法举行训练。
1.2、监视微调

在预训练模型的基础上,使用相应的监视目的对模型举行微调。假设一个标记的数据集                                    C                              \mathcal{C}                  C,其中每个实例包括一系列输入标记                                              x                            1                                  ,                         …                         ,                                   x                            m                                       x^{1},\ldots, x^{m}                  x1,…,xm,以及标签                                    y                              y                  y。输入通过预训练模型得到最终 Transformer 块的激活                                              h                            l                            m                                       h_{l}^{m}                  hlm​,然后将其输入到一个线性输出层,其参数为                                              W                            y                                       W_{y}                  Wy​,以预测                                    y                              y                  y:
                                         P                                       (                               y                               ∣                                           x                                  1                                          ,                               …                               ,                                           x                                  m                                          )                                      =                            softmax                            ⁡                                       (                                           h                                  l                                  m                                                      W                                  y                                          )                                      .                                  P\left(y\mid x^{1},\ldots, x^{m}\right)=\operatorname{softmax}\left(h_{l}^{m} W_{y}\right).                     P(y∣x1,…,xm)=softmax(hlm​Wy​).
其对应的目的函数为:
                                                    L                               2                                      (                            C                            )                            =                                       ∑                                           (                                  x                                  ,                                  y                                  )                                                 log                            ⁡                            P                                       (                               y                               ∣                                           x                                  1                                          ,                               …                               ,                                           x                                  m                                          )                                      .                                  L_{2}(\mathcal{C})=\sum_{(x, y)}\log P\left(y\mid x^{1},\ldots, x^{m}\right).                     L2​(C)=(x,y)∑​logP(y∣x1,…,xm).
为了提高监视模型的泛化本领,并加速收敛,引入语言建模作为辅助目的:
                                                    L                               3                                      (                            C                            )                            =                                       L                               2                                      (                            C                            )                            +                            λ                            ∗                                       L                               1                                      (                            C                            )                                  L_{3}(\mathcal{C})=L_{2}(\mathcal{C})+\lambda*L_{1}(\mathcal{C})                     L3​(C)=L2​(C)+λ∗L1​(C)
1.3、针对特定任务的输入转换

对于某些任务(如文天职类),可以直接举行微调。但对于其他任务(如问答或文本蕴含),需要将结构化输入转换为顺序序列。比方,对于文本蕴含任务,将前提                                    p                              p                  p 和假设                                    h                              h                  h 连接起来,中间加上分隔符。

2、GPT-2

GPT-2 发布于 2019 年,继承了 GPT-1 的架构,并将参数规模扩大到 15 亿。GPT-2 尝试通过增长模型参数规模来提升性能,并探索使用无监视预训练的语言模型来办理多种下游任务,而无需显式地使用标注数据举行微调。
2.1、语言建模

语言建模通常被看作是从一组示例                                    (                                   x                            1                                  ,                                   x                            2                                  ,                         .                         .                         .                         ,                                   x                            n                                  )                              (x_1, x_2, ..., x_n)                  (x1​,x2​,...,xn​) 中举行无监视的概率分布估计,每个示例由可变长度的符号序列                                    (                                   s                            1                                  ,                                   s                            2                                  ,                         .                         .                         .                         ,                                   s                            n                                  )                              (s_1, s_2, ..., s_n)                  (s1​,s2​,...,sn​) 组成。由于语言具有自然的顺序,通常将符号的条件概率分解为条件概率的乘积:
                                         p                            (                            x                            )                            =                                       ∏                                           i                                  =                                  1                                          n                                      p                            (                                       s                               n                                      ∣                                       s                               1                                      ,                            .                            .                            .                            ,                                       s                                           n                                  −                                  1                                                 )                                  p(x)=\prod_{i=1}^{n}p(s_{n}|s_{1},...,s_{n-1})                     p(x)=i=1∏n​p(sn​∣s1​,...,sn−1​)
这种方法允许对                                    p                         (                         x                         )                              p(x)                  p(x) 以及形如                                    p                         (                                   s                                       n                               −                               k                                            ,                         .                         .                         .                         ,                                   s                            n                                  ∣                                   s                            1                                  ,                         .                         .                         .                         ,                                   s                                       n                               −                               k                               −                               1                                            )                              p(s_{n-k},...,s_{n} \mid s_{1},...,s_{n-k-1})                  p(sn−k​,...,sn​∣s1​,...,sn−k−1​) 的任何条件概率举行易于处置惩罚的采样和估计。
2.2、多任务学习

学习执行单一任务可以表示为在概率框架内估计条件分布                                    p                         (                         output                         ∣                         input)                              p(\text{output} \mid \text{input)}                  p(output∣input),为了使系统能够执行多个差别的任务,即使对于雷同的输入,系统应该不但依靠于输入,还依靠于要执行的任务。即,系统应建模                                    p                         (                         output                         ∣                         input                         ,                         task                         )                              p(\text{output} \mid \text{input},\text{task})                  p(output∣input,task)。
2.3、训练数据集

创建名为 WebText 的新数据集,主要通过抓取 Reddit 上的链接来获取文本。为了提高文档质量,要求链接至少获得 3 次点赞,WebText 包含 4500 万个链接的文本子集。为了从 HTML 相应中提取文本,使用 Dragnet 和 Newspaper1 内容提取器的组合举行去重和清理,最终得到包含 800 万篇文档,总计约 40 GB 的文本。
2.4、输入表示

使用字节级编码(BPE)作为输入表示,制止了字符级别和词级别的限制。BPE(Byte Pair Encoding) 是一种基于字符的无监视的分词算法,它通过反复合并最常见的字符对(byte pairs)来构建词汇表,使得模型能够处置惩罚词汇中未见的词(OOV,Out-of-Vocabulary)并提高文本表示的服从。
详细的,BPE 会扫描文本,统计所有字节对(相邻的两个字符)的出现频率。接着选取出现频率最高的字节对并将其合并为一个新的子词单元,然后更新词汇表和文本中的所有出现。比方,若 “ab” 是最频繁出现的字节对,它会将 “ab” 视为一个新单元,将文本中的所有 “ab” 替换为这个新单元,并将 “ab” 添加到词汇表中。这个过程会一连迭代,词汇表不停扩大,同时文本表示会变得更紧凑。
3、GPT-3

GPT-3 发布于 2020 年,使用了与 GPT-2 雷同的模型架构,但其参数规模扩展到了 1750 亿。GPT-3 引入 “上下文学习(In-context learning)” 概念,允许大语言模型通过少样本学习办理各种任务,消除了对新任务举行微调的需求。
3.1、In-context learning

In-context learning(ICL) 利用模型在预训练阶段获得的大量知识和语言规则,通过计划任务相干的指令和提示模板,引导模型在新的测试数据上生成预测结果。ICL 允许模型在没有显式微调的情况下,通过在输入上下文中提供少量示例来学习新任务。
GPT-3 系统分析了在同一下游任务中,在差别设置下模型学习本领的差别,这些设置可以被视为处于一个反映对任务特定数据依靠水平的范围之中:


  • Fine-Tuning (FT):通过数千到数万个下游任务的监视数据集上更新预训练模型的权重来举行训练。其主要缺点是需要为每个任务创建一个新的大型数据集,可能会在分布外泛化不佳,而且可能会利用训练数据中的虚假特征导致与人类性能的不公平比较。GPT-3 没有接纳微调
  • Few-Shot (FS):推理时向模型提供任务的几个示例作为条件,但不允许更新权重。少样本学习大大淘汰了对特定任务数据的需求,并低落了从一个大而狭窄的微调数据集学习到过窄分布的可能性。但这种方法的结果比微调的 SOTA 模型的效果差很多
  • One-Shot (1S):单样本与少样本雷同,除了任务的自然语言描述外,只允许使用一个示例。将单样本与少样本和零样本区分开来的原因是,它最符合向人类传达某些任务的方式
  • Zero-Shot (0S):零样本不允许使用示例,而且仅向模型提供描述任务的自然语言指令

3.2、模型架构

GPT-3 使用与 GPT-2 雷同的模型和架构,包括初始化、预归一化和可逆分词,差别之处在于 Transformer 的各层中使用瓜代的麋集和局部带状 稀疏注意力 模式(雷同于 Sparse Transformer)。
   稀疏注意力机制

  稀疏注意力机制(Sparse Attention Mechanism) 是一种优化 Transformer 模型中计算服从和内存使用的技能。由于标准的自注意力机制需要计算所有词对之间的注意力权重,这导致了随着输入序列长度增长,计算和内存开销呈二次增长                                         O                            (                                       n                               2                                      )                                  O(n^2)                     O(n2) 。稀疏注意力机制通过限制每个单词只能关注一部分其他单词,从而淘汰了计算复杂度。

   

  • Global Attention:为了缓解稀疏注意力在模拟长距离依靠本领上的退化,可以添加一些全局节点作为节点间信息传播的枢纽
  • Band Attention:注意力权重被限制在一个固定的窗口中,每个 Query 只关注其邻居节点
  • Dilated Attention:雷同于扩张卷积神经网络,通过使用扩张,可以在不增长计算复杂度的情况下增长 Band Attention 的感受野
  • Random Attention:为了增强非局部交互的本领,对每个 Query 随机抽取一些边
  • Block Local Attention:将输入序列分割成几个不重叠的查询块,每个查询块都与一个局部记忆块相干联,查询块中的所有 Query 只关注相应记忆块中的 Key
  4、InstructGPT

InstructGPT 在 GPT-3 的基础上,创建了基于人类反馈的强化学习算法 RLHF,通过代码数据训练和人类偏好对齐举行了改进,旨在提高指令遵循本领,并缓解有害内容的生成。
大型语言模型可能生成不真实、有毒或对用户毫无资助的输出。InstructGPT 通过强化学习与人类反馈联合的方式,使语言模型在广泛的任务上生成的内容更加符合人类的盼望。
InstructGPT 的训练步骤如下:


  • 数据网络:网络标签器编写的提示和通过 OpenAI API 提交的提示,形成了一个数据集。雇佣 40 名承包商对这些数据举行标注,以生成监视学习的基准数据
  • 监视学习微调:使用标签器的标注数据对预训练的 GPT-3 模型举行监视学习微调(SFT),得到 SFT 模型。SFT 模型的训练目的是最小化标签器对模型输出的偏好丧失
  • 夸奖模型训练:网络模型输出之间的比较数据,其中标注员指出他们对于给定输入更倾向于哪个输出。然后训练一个夸奖模型(RM)来预测人类偏好的输出。夸奖模型的输入是一个提示和一个相应,输出是一个标量夸奖
  • 强化学习优化:使用近端计谋优化(PPO)算法,以夸奖模型作为标量夸奖,对 SFT 模型举行进一步微调
4.1、数据集

数据集主要由提交给 OpenAI API 的文本提示(prompt)组成,通过检查提示是否有长的公共前缀来启发式地去重,而且限制每个用户 ID 的提示数量为 200。同时根据用户 ID 创建训练、验证和测试分割,以确保验证和测试集不包含训练会集的用户数据。
为了训练最初的 InstructGPT 模型,需要一个初始的指令样式的提示来源来启动这个过程,要求标注者编写三种类型的提示:


  • Plain: 简朴地要求标注者想出一个恣意的任务,同时确保任务的多样性
  • Few-shot: 要求标注者想出一个指令,并为该指令提供多个查询/相应对
  • User-based: 在 OpenAI API 的候补申请中收到了多个用例,要求标注者根据这些用例提出相应的提示词
基于这些提示(prompt)生成了用于微调过程中的三种差别数据集:


  • SFT 数据集: 来自 API 和标注者编写的 13k 个训练提示,包含标注者演示数据,用于训练 SFT 模型
  • RM 数据集: 来自 API 和标注者编写的 33k 个训练提示,包含标注者对模型输出的排名,用于训练夸奖模型(RM)
  • PPO 数据集: 仅来自 API 的 31k 个训练提示,不含任何人类标签,用于强化学习微调(RLHF)
对于每个自然语言提示,任务通常是通过自然语言指令直接指定的(比方,“写一个关于聪明田鸡的故事”),但也可以通过少量示例(比方,给出两个田鸡故事的例子,并提示模型生成一个新的故事)或隐含的延续(比方,提供关于田鸡的故事开头)间接指定。在每种情况下,要求标注者尽力推断写提示者的意图,并要求跳过任务非常不明确的输入。在最终评估中,要求标注员优先思量真实性和无害性。
4.2、监视微调(SFT)

基于人工标注员编写并提供的示范答复,使用监视学习对 GPT-3 举行微调。模型训练 16 个周期,接纳余弦学习率衰减,并设置了 0.2 的残差丢弃率(residual dropout)。根据验证集上的 RM 评分举行最终的 SFT 模型选择。SFT 模型在经过 1 个周期后会在验证丧失上出现过拟合;然而,只管存在过拟合,训练更多周期仍然有助于提高 RM 评分和人类偏好评分
   

    残差丢弃: 在残差连接的地方,丢弃来自前一层的部分残差信号(不是当前层的激活输出)
  4.3、夸奖建模(RM)

从移除最后的反嵌入层(unembedding layer:将模型的输出向量映射回词汇表中的一个词汇或子词)的 SFT 模型开始,训练一个模型以担当提示和相应,并输出一个标量夸奖。论文中仅使用了 6B 的夸奖模型(RM),因为这可以节流大量计算资源,而且发现使用 175B 夸奖模型举行训练可能会导致不稳定,因此不太适合作为 RL 过程中值函数(value function)使用。
夸奖模型(RM)基于同一输入的两个模型输出之间的对比组成的数据集上举行训练,模型使用交叉熵丧失,以对比结果作为标签,其中夸奖的差别代表了某个回应相比另一个回应更可能被人类标注员偏好的对数几率。
为了加速比较数据的网络速度,向标注员展示 4 到 9 个相应,并让他们对这些相应举行排序。这为每个提示(prompt)生成了                                    (                                   K                            2                                  )                              \binom{K}{2}                  (2K​) 个比较,其中                                    K                              K                  K 是展示给标注员的相应数量。
由于在每个标注任务中的对比之间有很强的相干性,假如简朴地将对比打乱到一个数据会集,单次遍历该数据集会导致夸奖模型发生过拟合。因此,将每个提示(prompt)的                                    (                                   K                            2                                  )                              \binom{K}{2}                  (2K​) 个对比作为单个 batch 来训练。这种方法在计算上更高效,因为仅需要为每个生成的答复举行一次前向传播(将多个样本放在一个批次中时,神经网络可以通过一次前向传播同时处置惩罚这些样本),而不是对                                    K                              K                  K 个生成举行                                    (                                   K                            2                                  )                              \binom{K}{2}                  (2K​) 次前向传递,而且因为制止了过拟合,在验证准确率和对数丧失上有了明显的提升。
详细来说,夸奖模型的丧失函数是:
                                         loss                            ⁡                            (                            θ                            )                            =                            −                                       1                                           (                                               K                                     2                                              )                                                            E                                                        (                                     x                                     ,                                                   y                                        w                                                  ,                                                   y                                        l                                                  )                                              ∼                                  D                                                            [                               log                               ⁡                                           (                                  σ                                               (                                                   r                                        θ                                                                (                                        x                                        ,                                                       y                                           w                                                      )                                                  −                                                   r                                        θ                                                                (                                        x                                        ,                                                       y                                           l                                                      )                                                  )                                              )                                          ]                                            \operatorname{loss}(\theta)=-\frac{1}{\binom{K}{2}} E_{\left(x, y_{w}, y_{l}\right)\sim D}\left[\log\left(\sigma\left(r_{\theta}\left(x, y_{w}\right)-r_{\theta}\left(x, y_{l}\right)\right)\right)\right]                     loss(θ)=−(2K​)1​E(x,yw​,yl​)∼D​[log(σ(rθ​(x,yw​)−rθ​(x,yl​)))]
其中,                                             r                            θ                                  (                         x                         ,                         y                         )                              r_\theta(x, y)                  rθ​(x,y) 是夸奖模型在给定提示                                    x                              x                  x 和生成内容                                    y                              y                  y 的情况下,使用参数                                    θ                              \theta                  θ 输出的标量值,                                             y                            w                                       y_w                  yw​ 是在一对                                              y                            w                                       y_w                  yw​ 和                                              y                            l                                       y_l                  yl​ 中被偏好的生成内容,                                   D                              D                  D 是人类比较数据集。
在训练夸奖模型(RM)时,丧失函数对夸奖值的偏移(即夸奖的团体水平)是不敏感的。即,不管夸奖的数值范围是多少,只要模型正确地比较差别生成内容的优劣,它的训练效果是不会受到夸奖的团体偏移(或常数项)影响的。即在训练过程中,模型不需要特别关心夸奖值的详细数值,只要相对顺序正确即可。
因此,通过引入偏置,使得标注数据在经过夸奖模型处置惩罚后,将夸奖分数归一化为均值为 0 的分布,使强化学习算法在学习过程中更好地根据夸奖的相对巨细和正负来调整举动,制止了因夸奖值的绝对巨细和初始毛病而导致的学习问题。
4.4、强化学习(RL)

使用 PPO 在给定环境中对 SFT 模型举行微调。该环境是一个 多臂赌博机环境,它会随机提供一个客户提示(customer prompt)并盼望模型对该提示给出相应。根据提示和相应,环境会生成一个由夸奖模型决定的夸奖,并竣事这一回合。别的,还在每个 token 上添加了来自 SFT 模型的 每个token的KL惩罚,以缓解夸奖模型的过度优化。代价函数 是从夸奖模型(RM)初始化的,并将这些模型称为 PPO。
InstructGPT 将 预训练梯度PPO梯度 混合,以办理在公共 NLP 数据集上出现的性能退化问题。InstructGPT 将这些模型称为 PPO-ptx ,并在 RL 训练中最大化以下连合目的函数:
                                                                                           objective                                        ⁡                                        (                                        ϕ                                        )                                        =                                                                                                                                      E                                                           (                                              x                                              ,                                              y                                              )                                              ∼                                                               D                                                                   π                                                    ϕ                                                                       R                                                       L                                                                                                                                       [                                                           r                                              θ                                                          (                                           x                                           ,                                           y                                           )                                           −                                           β                                           log                                           ⁡                                                           (                                                               π                                                 ϕ                                                                   R                                                    L                                                                               (                                              y                                              ∣                                              x                                              )                                              /                                                               π                                                                   S                                                    F                                                    T                                                                               (                                              y                                              ∣                                              x                                              )                                              )                                                          ]                                                      +                                                                                                                                                                                               γ                                                       E                                                           x                                              ∼                                                               D                                                 pretrain                                                                                                     [                                           log                                           ⁡                                                           (                                                               π                                                 ϕ                                                                   R                                                    L                                                                               (                                              x                                              )                                              )                                                          ]                                                                                              \begin{aligned} \operatorname{objective}(\phi)= & E_{(x, y) \sim D_{\pi_\phi^{\mathrm{RL}}}}\left[r_\theta(x, y)-\beta \log \left(\pi_\phi^{\mathrm{RL}}(y \mid x) / \pi^{\mathrm{SFT}}(y \mid x)\right)\right]+ \\ & \gamma E_{x \sim D_{\text {pretrain }}}\left[\log \left(\pi_\phi^{\mathrm{RL}}(x)\right)\right] \end{aligned}                     objective(ϕ)=​E(x,y)∼DπϕRL​​​[rθ​(x,y)−βlog(πϕRL​(y∣x)/πSFT(y∣x))]+γEx∼Dpretrain ​​[log(πϕRL​(x))]​
其中,                                             π                            ϕ                                       R                               L                                                 \pi_{\phi}^{\mathrm{RL}}                  πϕRL​ 是学习的 RL 计谋,                                             π                                       S                               F                               T                                                 \pi^{\mathrm{SFT}}                  πSFT 是监视训练的模型,                                             D                            pretrain                                       D_{\text{pretrain}}                  Dpretrain​ 是预训练分布。KL 夸奖系数                                    β                              \beta                  β 和预训练丧失系数                                    γ                              \gamma                  γ 分别控制 KL 惩罚和预训练梯度的强度。对于 PPO 模型,                                   γ                              \gamma                  γ 设置为0。
5、GPT-4

GPT-4 发布于 2023 年,首次将输入模态从单一文本扩展到图文多模态。
参考文献


  • Improving Language Understanding by Generative Pre-Training
  • Language Models are Unsupervised Multitask Learners
  • Release Strategies and the Social Impacts of Language Models
  • Language Models are Few-Shot Learners
  • Generating Long Sequences with Sparse Transformers
  • A Survey of Transformers
  • Training language models to follow instructions with human feedback
  • GPT-4 Technical Report
  • Language Models are Unsupervised Multitask Learners

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表