searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

XLNET模型概述

2023-05-19 07:48:32
28
0

1. 背景

  • 2个概念-2种语言模型方法:

    • 自编码(Auto Encoder):根据上下文的信息来生成当前词的方式,BERT使用的就是此种方式

      • 优点:

        1. 模型具备上下文信息(双向信息)

        2. Long-Term Dependency(长期记忆特性)

      • 缺点:

        • 预训练任务与下游任务目标不一样,预训练时其中一个任务是MLM,但是在fine-tuning的时候,文本里面是没有[MASK]的

        • 缺乏生成能力

        • 一条文本里,多个[MASK]预测的时候,并不考虑其他[MASK]信息,也就是说[MASK]之间是独立的(☺类似于朴素bayes的那种感觉)

      • LOSS

    • 自回归(Auto Regressive):根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务,或者反过来也行,就是根据下文预测前面的单词,这种类型的LM被称为自回归语言模型。

      即便是ELMO做了两个方向(从左到右以及从右到左两个方向的语言模型),但是是分别有两个方向的自回归LM,然后把LSTM的两个方向的隐节点状态拼接到一起,来体现双向语言模型 h=[h1,h2],h1是正向的AR产生的Hidden States,h2是逆向的AR产生的Hidden States

      • 优点:

        1. 具备生成能力

        2. 上文和下文之间紧密的相关性

        3. 无监督的

        4. 严格的数学表达 P(w1,w2,...,wn)=P(w1)P(w2|w1)...P(wn|w1,...wn-1)

      • 缺点:

        1. 单向信息,只有上文,没有下文

        2. 离得近,未必有关系

      • LOSS:

  • Transformer

    缺点:

    1. 只能处理定长序列,且对于过长的序列,其计算复杂度非常高,假设输入序列长度为N,那么在self-attention中将产生N*N的矩阵,且transformer模块在bert中存在至少12层。

    2. Transformer序列长度的极限一般在512,无法建模超过固定长度的依赖关系,对长文本编码效果差。

    3. Transformer把要处理的文本分割成等长的片段,通常不考虑句子(语义)边界,导致上下文碎片化(context fragmentation),片段之间没有任何的信息交互

  • 改造目标:采用AR方式达到如下效果

    • 预训练时不采用[MASK]的MLM任务

    • 让AR也具备双向的编码能力(难点)

    • 被MASK的词之间的关系

    • 处理长文本

2.  原理详述

  • 核心思路

    XLNet仍然遵循两阶段的过程,第一个阶段是语言模型预训练阶段;第二阶段是任务数据Fine-tuning阶段。它主要希望改动第一个阶段,就是说不像Bert那种带Mask符号的Denoising Auto Encoder的模式,而是采用自回归LM的模式

    • Permutation Language Model

      使用单词的排列来构建上下文信息的使用,如图,如果要预测单词3,则随机产生几种排列如3241,2431,1423,4312,第一种因为3是第一个,所以没有上文信息,第二个2和4在3的前面,所以2和4作为了3的上下文(2是上文,4是下文),第三种142均在3前面,所以使用142来构建上下文序列预测3,第四种同理。

       

      损失函数:

    • Attention Mask

      需要强调一点,尽管上面讲的是把句子X的单词排列组合后,再随机抽取例子作为输入,但是,实际上你是不能这么做的,因为Fine-tuning阶段你不可能也去排列组合原始输入。所以,就必须让预训练阶段的输入部分,看上去仍然是x1,x2,x3,x4这个输入顺序,但是可以在Transformer部分做些工作,来达成我们希望的目标。

    • Two-Stream Attention

      h:内容表示,乘以对应的Q,K,V矩阵后产生对应的表示

      g:当前位置表示,乘以对应的Q,K,V矩阵后产生对应的表示

      ==How to Understand==

       

      Content Stream Attention:它是Transformer中的标准自注意力

      Query Stream Attention:XLNet引入它来替换BERT中的 [MASK] token

      如果BERT想用上下文单词x1和x2的知识来预测x3,它可以使用[MASK]来表示x3 token。[MASK]只是一个占位符。x1和x2的嵌入包含位置信息,帮助模型“知道”[MASK]的是x3

      XLNet的情况有所不同:一个token x3将服务两种角色。当它被用作内容来预测其他标记时,我们可以使用内容表示(通过内容流注意力来学习)来表示x3。但是如果我们想要预测x3,我们应该只知道它的位置而不是它的内容。这就是为什么XLNet使用查询表示(通过查询流注意力来学习)来保留x3之前的上下文信息,只保存x3的位置信息。

      ==For Example==

      • 假设一个句子,原始顺序是[x1, x2, x3, x4]

      • 随机得到一个分解的顺序为[x3, x2, x4, x1]

      • 图(a)是内容表示的计算。如果要预测x1的内容表示,应该拥有所有4个token内容信息。KV = [h1, h2, h3, h4]Q = h1

      • 图(b)是查询表示的计算。如果要预测x1的查询表示,不能看到x1本身的内容表示。KV = [h2, h3, h4]Q = g1

      • 图(c)是整个计算过程。首先,hg被初始化为e(xi)w。在内容掩码和查询掩码之后,双流注意力将输出第一层输出h^(1)g^(1),然后计算第二层。

    • Transformer-XL (==XL是extra long的意思==)

      • 提出片段级递归机制(segment-level recurrence mechanism),引入一个记忆(memory)模块(类似于cache或cell),循环用来建模片段之间的联系。

        • 使得长距离依赖的建模成为可能;

        • 使得片段之间产生交互,解决上下文碎片化问题。

      • 提出相对位置编码机制(relative position embedding scheme),代替绝对位置编码。

        self-attention的计算公式:

        transformer-XL中将其改写为如下:

      • 改写逻辑如下:

        1. 首先将所有的U(j)改为R(i-j),表示对key来说将绝对位置转换为相对query(xi)的位置。R(i-j)也是基于正弦波的,可以理解为R1=U1,R2=U2,...

        2. (c)和(d)中,UW 表示query相关的绝对位置向量,改为相对位置以后,query应该和自己的位置没关系,所以将每个head对应的UW使用一个和位置i无关的向量u表示,v也是同理。由于Wq是一个trainable的参数,所以u和v也是trainable

  • 主要改进点:

    XLNet是Bert、GPT 2.0和Transformer XL的结合:

    1. 通过PLM预训练目标,吸收了Bert的双向语言模型

    2. GPT2.0的核心其实是更多更高质量的预训练数据,也被XLNet所应用;

    3. Transformer XL的主要思想也被吸收到XLNET中

  • 解决的问题:

    1. 使用PLM的预训练目标,使得AR(自回归)语言模型也具备了双向语言的信息

    2. Two-Stream Attention机制解决了在输入顺序保持原状的情况下,无法获得Permutation ML训练方式的问题

    3. 使用Transformer-XL解决了Transformer对于长文档NLP应用不够友好的问题

  • 与其他模型的对比

    比较项 BERT XLNET
    预训练MASK机制
    长文本多segment信息传递 相对位置编码以及分段RNN机制
    相对位置编码
    序列双向信息(上下文)
    预训练语料 较少 囊括更多语料,并对质量进行了筛选过滤
  • 模型评价指标

    1. XLNet对于阅读理解类任务,相对Bert,性能有极大幅度地提升

      其中,RACE和SQuAD 2.0是文档长度较长的阅读理解任务,任务难度也相对高。可以看出,在这两个任务中,XLNet相对 Bert_Large,确实有大幅性能提升(Race提升13.5%,SQuAD 2.0 F1指标提升8.6)。在Squad1.1上提升尽管稍微小些,F1提升3.9%,但是因为基准高,所以提升也比较明显。

    2. 其他任务上的性能对比

      MNLI自然语言推断任务,,即给出一对(a pair of)句子,判断两个句子是entailment(相近),contradiction(矛盾)还是neutral(中立)的。 由于也是分类问题, 也被称为sentence pair classification tasks

      QNLI(Question Natural Language Inference): 也是一个二分类问题,两个句子是一个(question, answer)对. 正样本为answer是对应question的答案,负样本则相反

      QQP(Quora Question Pairs): 这是一个二分类数据集,目的是判断两个来自于Quora的问题句子在语义上是否是等价的

      RTE(Recognizing Textual Entailment): 是一个二分类问题,类似于MNLI, 但是数据量少很多

      SST-2(Stanford Sentiment Treebank): 单句的二分类问题,句子的来源于人们对一部电影的评价,判断这个句子的情感

      MRPC(Microsoft Research Paraphrase Corpus): 句子对来源于对同一条新闻的评论, 判断这一对句子在语义上是否相同

      CoLA(Corpus of Linguistic Acceptability): 单句的二分类问题,判断一个英文句子在语法上是不是可接受的

      STS-B(Semantic Textual Similarity Benchmark): 这是一个类似回归的问题。给出一对句子, 使用1~5的评分评价两者在语义上的相似程度

      WNLI(Winograd NLI),自然语言推断任务,是一项阅读理解任务,其中系统必须读一个带有代词的句子,并从列表中找到代词的指代对象。

3. 算法应用场景

其实XLNET与bert一样,是一个特征提取的深度网络,可以支持很多下游任务:

  • 文本分类

  • 情感分析

  • 智能问答

  • 阅读理解

  • 文本生成

    • 文章摘要

    • 智能写作

    • 机器翻译

  • 序列标注

    • 实体识别

    • 词性识别

    • ...

附图

一个诗句生成任务,将形式和主题转换为[形式,标识符 1,主题,标识符 2 ]的初始序列,然后将初始序列给到模型,并对主体字段逐个进行解码。在解码过程中,并不需要硬约束来保证形式的正确性。相反,该模型能够在解码时,自动分配逗号和句号的位置。当完成诗歌的生成时,会以「EOS」的 token 来结束这一过程。

效果:

0条评论
作者已关闭评论
姚****凯
4文章数
2粉丝数
姚****凯
4 文章 | 2 粉丝
姚****凯
4文章数
2粉丝数
姚****凯
4 文章 | 2 粉丝
原创

XLNET模型概述

2023-05-19 07:48:32
28
0

1. 背景

  • 2个概念-2种语言模型方法:

    • 自编码(Auto Encoder):根据上下文的信息来生成当前词的方式,BERT使用的就是此种方式

      • 优点:

        1. 模型具备上下文信息(双向信息)

        2. Long-Term Dependency(长期记忆特性)

      • 缺点:

        • 预训练任务与下游任务目标不一样,预训练时其中一个任务是MLM,但是在fine-tuning的时候,文本里面是没有[MASK]的

        • 缺乏生成能力

        • 一条文本里,多个[MASK]预测的时候,并不考虑其他[MASK]信息,也就是说[MASK]之间是独立的(☺类似于朴素bayes的那种感觉)

      • LOSS

    • 自回归(Auto Regressive):根据上文内容预测下一个可能跟随的单词,就是常说的自左向右的语言模型任务,或者反过来也行,就是根据下文预测前面的单词,这种类型的LM被称为自回归语言模型。

      即便是ELMO做了两个方向(从左到右以及从右到左两个方向的语言模型),但是是分别有两个方向的自回归LM,然后把LSTM的两个方向的隐节点状态拼接到一起,来体现双向语言模型 h=[h1,h2],h1是正向的AR产生的Hidden States,h2是逆向的AR产生的Hidden States

      • 优点:

        1. 具备生成能力

        2. 上文和下文之间紧密的相关性

        3. 无监督的

        4. 严格的数学表达 P(w1,w2,...,wn)=P(w1)P(w2|w1)...P(wn|w1,...wn-1)

      • 缺点:

        1. 单向信息,只有上文,没有下文

        2. 离得近,未必有关系

      • LOSS:

  • Transformer

    缺点:

    1. 只能处理定长序列,且对于过长的序列,其计算复杂度非常高,假设输入序列长度为N,那么在self-attention中将产生N*N的矩阵,且transformer模块在bert中存在至少12层。

    2. Transformer序列长度的极限一般在512,无法建模超过固定长度的依赖关系,对长文本编码效果差。

    3. Transformer把要处理的文本分割成等长的片段,通常不考虑句子(语义)边界,导致上下文碎片化(context fragmentation),片段之间没有任何的信息交互

  • 改造目标:采用AR方式达到如下效果

    • 预训练时不采用[MASK]的MLM任务

    • 让AR也具备双向的编码能力(难点)

    • 被MASK的词之间的关系

    • 处理长文本

2.  原理详述

  • 核心思路

    XLNet仍然遵循两阶段的过程,第一个阶段是语言模型预训练阶段;第二阶段是任务数据Fine-tuning阶段。它主要希望改动第一个阶段,就是说不像Bert那种带Mask符号的Denoising Auto Encoder的模式,而是采用自回归LM的模式

    • Permutation Language Model

      使用单词的排列来构建上下文信息的使用,如图,如果要预测单词3,则随机产生几种排列如3241,2431,1423,4312,第一种因为3是第一个,所以没有上文信息,第二个2和4在3的前面,所以2和4作为了3的上下文(2是上文,4是下文),第三种142均在3前面,所以使用142来构建上下文序列预测3,第四种同理。

       

      损失函数:

    • Attention Mask

      需要强调一点,尽管上面讲的是把句子X的单词排列组合后,再随机抽取例子作为输入,但是,实际上你是不能这么做的,因为Fine-tuning阶段你不可能也去排列组合原始输入。所以,就必须让预训练阶段的输入部分,看上去仍然是x1,x2,x3,x4这个输入顺序,但是可以在Transformer部分做些工作,来达成我们希望的目标。

    • Two-Stream Attention

      h:内容表示,乘以对应的Q,K,V矩阵后产生对应的表示

      g:当前位置表示,乘以对应的Q,K,V矩阵后产生对应的表示

      ==How to Understand==

       

      Content Stream Attention:它是Transformer中的标准自注意力

      Query Stream Attention:XLNet引入它来替换BERT中的 [MASK] token

      如果BERT想用上下文单词x1和x2的知识来预测x3,它可以使用[MASK]来表示x3 token。[MASK]只是一个占位符。x1和x2的嵌入包含位置信息,帮助模型“知道”[MASK]的是x3

      XLNet的情况有所不同:一个token x3将服务两种角色。当它被用作内容来预测其他标记时,我们可以使用内容表示(通过内容流注意力来学习)来表示x3。但是如果我们想要预测x3,我们应该只知道它的位置而不是它的内容。这就是为什么XLNet使用查询表示(通过查询流注意力来学习)来保留x3之前的上下文信息,只保存x3的位置信息。

      ==For Example==

      • 假设一个句子,原始顺序是[x1, x2, x3, x4]

      • 随机得到一个分解的顺序为[x3, x2, x4, x1]

      • 图(a)是内容表示的计算。如果要预测x1的内容表示,应该拥有所有4个token内容信息。KV = [h1, h2, h3, h4]Q = h1

      • 图(b)是查询表示的计算。如果要预测x1的查询表示,不能看到x1本身的内容表示。KV = [h2, h3, h4]Q = g1

      • 图(c)是整个计算过程。首先,hg被初始化为e(xi)w。在内容掩码和查询掩码之后,双流注意力将输出第一层输出h^(1)g^(1),然后计算第二层。

    • Transformer-XL (==XL是extra long的意思==)

      • 提出片段级递归机制(segment-level recurrence mechanism),引入一个记忆(memory)模块(类似于cache或cell),循环用来建模片段之间的联系。

        • 使得长距离依赖的建模成为可能;

        • 使得片段之间产生交互,解决上下文碎片化问题。

      • 提出相对位置编码机制(relative position embedding scheme),代替绝对位置编码。

        self-attention的计算公式:

        transformer-XL中将其改写为如下:

      • 改写逻辑如下:

        1. 首先将所有的U(j)改为R(i-j),表示对key来说将绝对位置转换为相对query(xi)的位置。R(i-j)也是基于正弦波的,可以理解为R1=U1,R2=U2,...

        2. (c)和(d)中,UW 表示query相关的绝对位置向量,改为相对位置以后,query应该和自己的位置没关系,所以将每个head对应的UW使用一个和位置i无关的向量u表示,v也是同理。由于Wq是一个trainable的参数,所以u和v也是trainable

  • 主要改进点:

    XLNet是Bert、GPT 2.0和Transformer XL的结合:

    1. 通过PLM预训练目标,吸收了Bert的双向语言模型

    2. GPT2.0的核心其实是更多更高质量的预训练数据,也被XLNet所应用;

    3. Transformer XL的主要思想也被吸收到XLNET中

  • 解决的问题:

    1. 使用PLM的预训练目标,使得AR(自回归)语言模型也具备了双向语言的信息

    2. Two-Stream Attention机制解决了在输入顺序保持原状的情况下,无法获得Permutation ML训练方式的问题

    3. 使用Transformer-XL解决了Transformer对于长文档NLP应用不够友好的问题

  • 与其他模型的对比

    比较项 BERT XLNET
    预训练MASK机制
    长文本多segment信息传递 相对位置编码以及分段RNN机制
    相对位置编码
    序列双向信息(上下文)
    预训练语料 较少 囊括更多语料,并对质量进行了筛选过滤
  • 模型评价指标

    1. XLNet对于阅读理解类任务,相对Bert,性能有极大幅度地提升

      其中,RACE和SQuAD 2.0是文档长度较长的阅读理解任务,任务难度也相对高。可以看出,在这两个任务中,XLNet相对 Bert_Large,确实有大幅性能提升(Race提升13.5%,SQuAD 2.0 F1指标提升8.6)。在Squad1.1上提升尽管稍微小些,F1提升3.9%,但是因为基准高,所以提升也比较明显。

    2. 其他任务上的性能对比

      MNLI自然语言推断任务,,即给出一对(a pair of)句子,判断两个句子是entailment(相近),contradiction(矛盾)还是neutral(中立)的。 由于也是分类问题, 也被称为sentence pair classification tasks

      QNLI(Question Natural Language Inference): 也是一个二分类问题,两个句子是一个(question, answer)对. 正样本为answer是对应question的答案,负样本则相反

      QQP(Quora Question Pairs): 这是一个二分类数据集,目的是判断两个来自于Quora的问题句子在语义上是否是等价的

      RTE(Recognizing Textual Entailment): 是一个二分类问题,类似于MNLI, 但是数据量少很多

      SST-2(Stanford Sentiment Treebank): 单句的二分类问题,句子的来源于人们对一部电影的评价,判断这个句子的情感

      MRPC(Microsoft Research Paraphrase Corpus): 句子对来源于对同一条新闻的评论, 判断这一对句子在语义上是否相同

      CoLA(Corpus of Linguistic Acceptability): 单句的二分类问题,判断一个英文句子在语法上是不是可接受的

      STS-B(Semantic Textual Similarity Benchmark): 这是一个类似回归的问题。给出一对句子, 使用1~5的评分评价两者在语义上的相似程度

      WNLI(Winograd NLI),自然语言推断任务,是一项阅读理解任务,其中系统必须读一个带有代词的句子,并从列表中找到代词的指代对象。

3. 算法应用场景

其实XLNET与bert一样,是一个特征提取的深度网络,可以支持很多下游任务:

  • 文本分类

  • 情感分析

  • 智能问答

  • 阅读理解

  • 文本生成

    • 文章摘要

    • 智能写作

    • 机器翻译

  • 序列标注

    • 实体识别

    • 词性识别

    • ...

附图

一个诗句生成任务,将形式和主题转换为[形式,标识符 1,主题,标识符 2 ]的初始序列,然后将初始序列给到模型,并对主体字段逐个进行解码。在解码过程中,并不需要硬约束来保证形式的正确性。相反,该模型能够在解码时,自动分配逗号和句号的位置。当完成诗歌的生成时,会以「EOS」的 token 来结束这一过程。

效果:

文章来自个人专栏
NLP算法
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0