大模型论文:Improving Language Understanding by Generative Pre-Trainin ...

打印 上一主题 下一主题

主题 1930|帖子 1930|积分 5790

大模型论文:Improving Language Understanding by Generative Pre-Training

OpenAI2018
文章地址:https://www.mikecaptain.com/resources/pdf/GPT-1.pdf
摘要

自然语言理解包括各种各样的任务,如文本蕴涵、题目回答、语义相似性评估和文档分类。只管大量未标志的文本语料库丰富,但用于学习这些特定任务的标志数据很少,这使得鉴别训练模型难以充分实验。我们证明,通过在不同的未标志文本语料库上对语言模型进行生成式预训练,然后对每个特定任务进行鉴别性微调,可以实现这些任务的巨大收益。与从前的方法相反,我们在微调期间使用任务感知输入转换来实现有效的传输,同时需要对模型体系结构进行最小的更改。我们在自然语言理解的广泛基准上证明了我们的方法的有效性。我们的通用任务不可知模型优于为每个任务使用专门计划的架构的鉴别训练模型,在研究的12个任务中的9个任务中显著提高了技术水平。例如,我们在知识性推理(故事完形测试)上实现了8.9%的绝对改进,在题目回答(RACE)上实现了5.7%的绝对改进,在文本蕴涵(MultiNLI)上实现了1.5%的绝对改进
文本蕴含(Textual Entailment) 是自然语言处理(NLP)中的一项核心任务,旨在判断一段文本(称为“条件”,Premise)是否可以或许逻辑上蕴含另一段文本(称为“假设”,Hypothesis)。其本质是分析两者之间的语义关系
模型背景



  • 大多数深度学习方法需要大量的人工标志数据,在无监督的环境下学习良好的表现也可以显著提高性能,因此选择无监督的方式进行模型学习。但存在下列题目

    • 首先,是因为不清楚要鄙俚任务,以是也就没法针对性的进行行优化;
    • 其次,就算知道了鄙俚任务,如果每次都要大改模型也会得不偿失

  • 本文提出的GPT框架探讨了使用无监督预训练和有监督微调相结合的方法来处理语言理解任务。目标是学习一个通用表现,它可以适应各种任务,而无需太多调解。本文假设可以访问大量未标志文本以及包含手动注释训练示例(目标任务)的几个数据集。本文的设置不要求这些目标任务与未标志语料库属于同一域
  • 本文用一种半监督学习的方法来完成语言理解任务,GPT 的训练过程分为两个阶段:Pre-training 和 Fine-tuning。目标是在于学习一种通用的文本表征方法,针对不同种类的任务只需略作修改便能适应
  • 预训练模型:预训练具有类似正则化的作用,能让深度神经网络具有更好的泛化本领。正则化是防止过拟合的本事,预训练在这里被视为帮助模型不轻易陷入训练集“影象陷阱”的方法之一
模型框架及训练



  • GPT 训练过程分为两个阶段:第一个阶段是 Pre-training 阶段,主要使用大型语料库完成非监督学习;第二阶段是 Fine-tuning,针对特定任务在相应数据集中进行监督学习,通过 Fine-tuning 技术来适配具体任务。下图为 GPT 的架构图:


  • 无监督预训练:给定一个无监督的令牌语料库                                        U                            =                                       {                                           u                                  1                                          ,                               …                               ,                                           u                                  n                                                 }                                  U = {\{u_1,…,u_n}\}                     U={u1​,…,un​},本文使用尺度的语言建模目标来最大化以下大概性:
                                                    L                               1                                      (                            U                            )                            =                                       ∑                               i                                      log                            ⁡                            P                            (                                       u                               i                                      ∣                                       u                                           i                                  −                                  k                                                 ,                            …                            ,                                       u                                           i                                  −                                  1                                                 ;                            Θ                            )                                  L_1(U) = \sum_i \log P(u_i | u_{i-k}, \dots, u_{i-1}; \Theta)                     L1​(U)=i∑​logP(ui​∣ui−k​,…,ui−1​;Θ)


  •                                         k                                  k                     k是上下文窗口,本文使用多层的 Transformer 解码器作为语言模型,它是 Transformer 的一种变体。该模型对输入的上下文标志应用多头自留意力操纵,然后在position-wise前馈层上生成目标令牌的输出分布:
                                                    h                               0                                      =                            U                                       W                               e                                      +                                       W                               p                                            h_0 = U W_e + W_p                     h0​=UWe​+Wp​
                                                    h                               l                                      =                            transformer_block                            (                                       h                                           l                                  −                                  1                                                 )                                     ∀                            i                            ∈                            [                            1                            ,                            n                            ]                                  h_l = \text{transformer\_block}(h_{l-1}) \quad \forall i \in [1, n]                     hl​=transformer_block(hl−1​)∀i∈[1,n]
                                         P                            (                            u                            )                            =                            softmax                            (                                       h                               n                                                 W                               e                               T                                      )                                  P(u) = \text{softmax}(h_n W_e^T)                     P(u)=softmax(hn​WeT​)


  • 有监督微调:在无监督训练后,本文使用有监督的方式对模型进行微调,个标注数据集                                              C                                      C                        C,每个实例由一组输入token,$x^1, \dots, x^m                                              和标签                                      和标签                        和标签y                                             构成,输入被传入预训练的模型,通过最后一个                               T                               r                               a                               n                               s                               f                               o                               r                               m                               e                               r                               块的激活                                      构成,输入被传入预训练的模型,通过最后一个Transformer块的激活                        构成,输入被传入预训练的模型,通过最后一个Transformer块的激活h_l^m                                             ,然后再输入到一个额外的线性输出层,该层带有参数                                      ,然后再输入到一个额外的线性输出层,该层带有参数                        ,然后再输入到一个额外的线性输出层,该层带有参数 W_y                                              来预测                                      来预测                        来预测 y$:
                                                       P                                  (                                  y                                  ∣                                               x                                     1                                              ,                                  …                                  ,                                               x                                     m                                              )                                  =                                  softmax                                  (                                               h                                     l                                     m                                                           W                                     y                                              )                                          P(y | x^1, \dots, x^m) = \text{softmax}(h_l^m W_y)                           P(y∣x1,…,xm)=softmax(hlm​Wy​)
  • 优化目标为:
                                                                    L                                     2                                              (                                  C                                  )                                  =                                               ∑                                                   (                                        x                                        ,                                        y                                        )                                                           log                                  ⁡                                  P                                  (                                  y                                  ∣                                               x                                     1                                              ,                                  …                                  ,                                               x                                     m                                              )                                          L_2(C) = \sum_{(x, y)} \log P(y | x^1, \dots, x^m)                           L2​(C)=(x,y)∑​logP(y∣x1,…,xm)
  • 本文还发现:将语言建模作为微调辅助目标,通过 (a) 改进监督模型的泛化,以及 (b) 加速收敛来帮助学习,优化目标为:
                                                                    L                                     3                                              (                                  C                                  )                                  =                                               L                                     2                                              (                                  C                                  )                                  +                                  λ                                  ⋅                                               L                                     1                                              (                                  C                                  )                                          L_3(C) = L_2(C) + \lambda \cdot L_1(C)                           L3​(C)=L2​(C)+λ⋅L1​(C)
  • 在微调期间所需的唯一额外参数是$W_y $和分隔符标志的嵌入
特定于任务的转换



  • 对于一些任务,好比文本分类,可以像上述那样直接对模型进行微调。其他任务,如问答或文本蕴涵,具有结构化输入,如有序的句子对或文档、题目和答案的三元组。由于预训练模型是在一连的文本序列上训练的,因此需要对模型做一些修改才能应用到这些任务上
  • 本文使用了一种遍历样式的方法,将结构化输入转换为预训练模型可以处理的有序序列。这些输入转换方法允许我们制止对架构做出大量的修改,从而在不同任务中共享架构。下面扼要描述了这些输入转换,而且图1提供了一个视觉示意。全部的转换都包括添加随机初始化的开始和结束标志                                             <                               s                               >                               ,                               <                               e                               >                               <                               s                               >                               ,                               <                               e                               >                               <                               s                               >                               ,                               <                               e                               >                                      <s>,<e><s>, <e><s>,<e>                        <s>,<e><s>,<e><s>,<e>
  • 文本蕴涵:对于蕴涵任务,我们将条件 p和假设 h的标志序列拼接,并在它们之间加上分隔符标志($)
  • 相似性:对于相似性任务,两个句子之间没有固有的次序。为此,我们修改输入序列,使其包含两个大概的句子次序(并在它们之间添加分隔符),然后分别处理这两个序列,生成两个序列表现                                                          h                                  l                                  m                                                 h_l^m                        hlm​,这些表如今输入到线性输出层之前逐元素相加
  • 问答和知识推理:对于这些任务,给定一个文档                                              z                                      z                        z,一个题目                                              q                                      q                        q,以及一组大概的答案$ {{a_k}}$。将文档上下文和题目拼接,并在它们之间添加分隔符标志,得到 $[z;q;$;a_k]$。每个序列会独立地被模型处理,然后通过softmax归一化,输出大概答案的概率分布。
  • 总结:GPT 是一种半监督学习,采用两阶段任务模型,通过使用无监督的 Pre-training 和有监督的 Fine-tuning 来实现强大的自然语言理解。在 Pre-training 中采用了 12 层的修改过的 Transformer Decoder 结构,在 Fine-tuning 中会根据不同任务提出不同的分微调方式,从而到达适配各类 NLP 任务的目标

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

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

本版积分规则

忿忿的泥巴坨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表