七、XLNet

7.1 自回归语言模型 vs 自编码语言模型

  1. 无监督预训练有两种策略:

    • 自回归语言模型 autoregressive language model : AR LM :通过自回归模型来预测一个序列的生成概率。

      令序列为 七、XLNet - 图1,则模型计算概率 七、XLNet - 图2 ,或者反向概率 七、XLNet - 图3

      七、XLNet - 图4 是通过 RNN 或者 Transformer 提取的单向上下文representation 向量,七、XLNet - 图5七、XLNet - 图6embedding 向量,则有:

      七、XLNet - 图7

      给定预训练数据集 七、XLNet - 图8,模型基于最大对数似然的准则来最优化目标函数:

      七、XLNet - 图9

      即:预训练数据集 七、XLNet - 图10 的生成概率最大。

    • 自编码语言模型 autoencoding language model:AE LM :通过自编码模型来从损坏的输入中重建原始数据。

      令原始序列为 七、XLNet - 图11,添加多个噪音之后的序列为:

      七、XLNet - 图12

      令这些被 masktoken 为:七、XLNet - 图13 ,则模型计算概率:

      七、XLNet - 图14

      其中 七、XLNet - 图15 是一个示性函数,当第 七、XLNet - 图16 个位置被mask 时取值为 1;否则取值为 0 。

      七、XLNet - 图17 为一个 Transformer 函数,它将长度为 七、XLNet - 图18 的序列 七、XLNet - 图19 映射成一个长度为 七、XLNet - 图20representation 向量序列:七、XLNet - 图21 ,其中第 七、XLNet - 图22 个位置的 representation 向量为 七、XLNet - 图23 。令 七、XLNet - 图24七、XLNet - 图25embedding 向量,则有:

      七、XLNet - 图26

      给定预训练数据集 七、XLNet - 图27,首先通过预处理生成带噪音的数据集 七、XLNet - 图28 ,然后模型最大化目标函数:

      七、XLNet - 图29

  2. 自回归语言模型和自编码语言模型的区别:

    • 自回归语言模型是生成式模型,自编码语言模型是判别式模型。
    • 自回归语言模型是单向的(前向或者后向),自编码语言模型是双向的,可以使用双向上下文
  3. 自回归语言模型和自编码语言模型的缺点:

    • 自回归语言模型是单向模型,它无法对双向上下文进行建模。而下游任务通常需要双向上下文的信息,这使得模型的能力不满足下游任务的需求。

    • 自编码语言模型:

      • 在预训练期间引入噪声 [MASK],而在下游任务中该噪声并不存在,这使得预训练和微调之间产生差距。

      • 根据概率分解 七、XLNet - 图30 可以看到:自编码语言模型假设序列中各位置处的 [MASK] 彼此独立,即:预测目标独立性假设。

        事实上,这和实际情况不符合。如:这 里 有 很 多 水 果 , 比 如 苹 果 、 香 蕉 、葡 萄 经过引入噪声之后:这 里 有 很 多 水 果 , 比 如 [MASK] [MASK] 、 香 蕉 、葡 萄 。实际上这两个 [MASK] 之间并不是相互独立。

  4. XLNet 是一种广义自回归语言模型,它结合了自回归语言模型和自编码语言模型的优点,同时避免了它们的局限性。

    • 对于每个 token 七、XLNet - 图31 ,通过概率分解的排列顺序全组合的形式, 七、XLNet - 图32 可以 ”见到” 七、XLNet - 图33 中的所有其它 token,因此可以捕获到双向上下文。

      即:在某些排列顺序下,七、XLNet - 图34 可以见到它的左侧上下文;在另一些排列顺序下,七、XLNet - 图35 可以见到它右侧上下文。

    • XLNet 没有引入噪声 [MASK],因此预训练阶段和微调阶段不存在差异。

    • XLNet 基于乘积规则来分解整个序列的联合概率,消除了自编码语言模型中的预测目标独立性假设。

7.2 Permutation Language Model

  1. XLNet 是一个基于全组合的语言模型 permutation language modeling

  2. 设一个长度为 3 的文本序列 七、XLNet - 图36,一共 七、XLNet - 图37 种顺序来实现一个有效的自回归概率分解:

    七、XLNet - 图38

    这等价于先将序号 七、XLNet - 图39 进行全组合,得到 七、XLNet - 图40 种顺序:

    七、XLNet - 图41

    然后对每一种顺序,按照从左到右执行自回归概率分解。

    • 对于一个长度为 七、XLNet - 图42 的文本序列 七、XLNet - 图43,则有 七、XLNet - 图44 种顺序来实现一个有效的自回归概率分解。如果在这些概率分解之间共享模型参数,则模型能够捕捉到所有位置的信息,即:模型能够访问双向上下文。

    • 这种分解方式也考虑了 token 之间的顺序。

      七、XLNet - 图45 分别代表第一、二、三个位置的随机变量,则有:

      七、XLNet - 图46

      其物理意义为:序列 七、XLNet - 图47 可以有如下的生成方式:

      • 首先挑选第一个位置的 token 七、XLNet - 图48,然后已知第一个位置的 token 条件下挑选第二个位置的 token 七、XLNet - 图49,最后在已知第一个、第二个位置的 token 条件下挑选第三个位置的 token 七、XLNet - 图50
      • ….
      • 首先挑选第三个位置的 token 七、XLNet - 图51,然后已知第三个位置的 token 条件下挑选第二个位置的 token 七、XLNet - 图52,最后在已知第三个、第二个位置的 token 条件下挑选第一个位置的 token 七、XLNet - 图53
  3. 对于一个长度为3的文本序列 七、XLNet - 图54,传统的自回归语言模型的目标函数是生成概率的对数似然:

    七、XLNet - 图55

    这仅仅对应于上述 6 种概率分解中的第一个分解。

    XLNet 与此不同,它考虑所有的 6 种概率分解,其目标函数为:

    七、XLNet - 图56

  4. 七、XLNet - 图57 表示位置编号 七、XLNet - 图58 的所有可能排列的组合,令 七、XLNet - 图59七、XLNet - 图60 的某个排列,如 :七、XLNet - 图61

    七、XLNet - 图62 为该排列的第 七、XLNet - 图63 个位置编号,如 :七、XLNet - 图64 ;令 七、XLNet - 图65 为该排列中前 七、XLNet - 图66 个位置编号,如 七、XLNet - 图67

    七、XLNet - 图68七、XLNet - 图69 中的编号位于 七、XLNet - 图70token 组成的序列。

    XLNet 考虑所有的概率分解,因此其目标函数为:

    七、XLNet - 图71

    假设每一种排列是等概率的,均为 七、XLNet - 图72 。则有:

    七、XLNet - 图73

    最终 XLNet 的目标函数为:

    七、XLNet - 图74

    • 采用期望的形式是因为:如果考虑所有的概率分解,则需要计算 七、XLNet - 图75 种组合的概率。当序列长度为 七、XLNet - 图76 时 组合数量 七、XLNet - 图77 超过 20 万亿次,计算复杂度太大导致无法计算。

      所以采用期望的形式,然后利用采样来计算期望,可以使得计算复杂度大大降低。

      因此对于给定的输入序列 七、XLNet - 图78,训练期间每次采样一个顺序 七、XLNet - 图79,然后根据该顺序进行概率分解。

    • 参数 七、XLNet - 图80 在所有的排列顺序中共享。

  5. XLNet 仅仅调整了联合概率 七、XLNet - 图81 的分解顺序,并没有调整序列 七、XLNet - 图82 本身的 token 顺序。因此在 XLNet 中保留序列 七、XLNet - 图83的原始顺序,并使用原始顺序的 position embedding

    • 联合概率 七、XLNet - 图84 的分解顺序的调整依赖于 Transformermask 机制。

      下图为输入序列 七、XLNet - 图85 中,计算 七、XLNet - 图86 的几种排列顺序。(右下角的图形应该为 七、XLNet - 图87七、XLNet - 图88 ) 。

      七、XLNet - 图89

    • 因为在微调阶段遇到的文本序列都是原始顺序的,所以这种方式保证了预训练阶段和微调阶段在输入文本序列的顺序上是一致的:都是原始顺序。

7.3 Two-Stream Self-Attention

  1. 虽然 permutation language model 有诸多优点,但是如果直接采用标准的 Transformer 结构来实现该模型,则会出现问题。

    考虑输入序列 七、XLNet - 图90,考虑位置编号 七、XLNet - 图91 的两种排列顺序:

    七、XLNet - 图92

    七、XLNet - 图93 时,有:

    七、XLNet - 图94

    对于第一种排列,条件概率分布 七、XLNet - 图95 ,其物理意义为:在序列第二个 token七、XLNet - 图96、第五个 token七、XLNet - 图97 的条件下,第一个 token七、XLNet - 图98 的概率分布。

    对于第二种排列,条件概率分布 七、XLNet - 图99 ,其物理意义为:在序列第二个 token七、XLNet - 图100、第五个 token七、XLNet - 图101 的条件下,第四个 token七、XLNet - 图102 的概率分布。

    对于标准 Transformer,有:

    七、XLNet - 图103

    其中 七、XLNet - 图104 表示 Transformer 从输入序列的第二个token、第五个 token 七、XLNet - 图105 中抽取的 representation 向量;七、XLNet - 图106 表示 token 七、XLNet - 图107embedding

    因此当已知第二个 token 七、XLNet - 图108 和第五个 token 七、XLNet - 图109,无论预测目标位置是第一个位置(对应于 七、XLNet - 图110 )还是第四个位置(对应于 七、XLNet - 图111 ),其概率分布都相同。实际上,对于不同的目标位置,其概率分布应该是不同的。

    该问题产生的本质原因是:七、XLNet - 图112 未能考虑预测目标 七、XLNet - 图113 的位置,当 七、XLNet - 图114 代表第一个 token ,与 七、XLNet - 图115 代表第四个 token,其分布应该不同。

  2. 解决该问题的方式是:对预测目标token 引入位置信息。

    重新定义条件概率分布:

    七、XLNet - 图116

    其中 七、XLNet - 图117 定义了序列的一个新的representation,它考虑了目标位置 七、XLNet - 图118

    如上述例子中:

    • 排列顺序 七、XLNet - 图119 中,预测 七、XLNet - 图120 的条件概率分布为:

      七、XLNet - 图121

    • 排列顺序 七、XLNet - 图122 中,预测 七、XLNet - 图123 的条件概率分布为:

      七、XLNet - 图124

      由于 七、XLNet - 图125 ,因此不同的目标位置,其概率分布会不同。

  3. 问题是:如何定义一个合理的 七、XLNet - 图126 函数。

    • 当基于上下文 七、XLNet - 图127 来预测位置 七、XLNet - 图128 的单词时,要求最多能够使用位置 七、XLNet - 图129 ,而不能使用位置 七、XLNet - 图130 的内容 七、XLNet - 图131

      即:对于序列 七、XLNet - 图132七、XLNet - 图133 一定不能对 七、XLNet - 图134 进行编码。否则,当利用该编码来预测 七、XLNet - 图135 时损失函数一定为零,因为这相当于给定单词 七、XLNet - 图136 来预测它本身。

    • 当预测 七、XLNet - 图137 之后的token 七、XLNet - 图138 时,七、XLNet - 图139 必须对 七、XLNet - 图140 进行编码,从而为预测 七、XLNet - 图141 提供上下文。

      即:对于预测位置 七、XLNet - 图142token七、XLNet - 图143 必须对 七、XLNet - 图144 进行编码。

    总而言之,是否对 七、XLNet - 图145 进行编码依赖于当前预测的目标单词的位置 七、XLNet - 图146 。但是 Transformer 中,每个 tokenembedding 信息和位置的 embedding 信息在一开始就融合在一起。

    解决这一对冲突的方法时 two-stream self attention 机制:

    • content stream:提供了内容表达 content representation 七、XLNet - 图147 ,记作 七、XLNet - 图148 ,它类似于标准 Transformer 中的隐状态向量,编码了上下文和 七、XLNet - 图149 本身。

      七、XLNet - 图150

      其中 七、XLNet - 图151七、XLNet - 图152 的内容隐状态向量,它是 七、XLNet - 图153 维列向量。

    • query stream:提供了查询表达 content representation 七、XLNet - 图154,记作 七、XLNet - 图155,它仅编码了 七、XLNet - 图156 的上下文及其位置 七、XLNet - 图157,并未编码 七、XLNet - 图158 本身。

      七、XLNet - 图159

      其中 七、XLNet - 图160七、XLNet - 图161query 隐状态向量,它是 七、XLNet - 图162 维列向量。

  4. 双路Self-Attention 的更新规则:

    • 第一层的 query 状态向量通过一个参数 七、XLNet - 图163 来初始化:七、XLNet - 图164,其中 七、XLNet - 图165 是待学习的参数。

    • 第一层的content 状态向量通过 word embedding 初始化:七、XLNet - 图166

    • 对每一个self-attention 层,七、XLNet - 图167 ,这两路self-attention 通过共享参数来更新:

      七、XLNet - 图168

      其中 Attention 的计算规则与 BERTSelf-Attention 一致。

      • query-stream 状态更新如下图所示:位置 七、XLNet - 图169query状态更新只可能用到 七、XLNet - 图170 位置的内容信息(不包括它自身)。

        七、XLNet - 图171

      • content-stream 状态更新如下图所示:位置 七、XLNet - 图172content状态更新用到 七、XLNet - 图173 位置的内容信息(包括它自身)。

        七、XLNet - 图174

      • 位于最后一层的、位置 七、XLNet - 图175query 状态向量就是我们想要的 七、XLNet - 图176 函数。

        • 通过前面定义的 Attention 机制,它包含了 七、XLNet - 图177 位置的内容信息(不包括它自身)。
        • 通过指定位置 七、XLNet - 图178 处的 query 状态向量(而不是指定其它位置),它包含了位置 七、XLNet - 图179 的位置信息。
    • 整体更新示意图如下所示:

      采样顺序为 七、XLNet - 图180Attention Masksk 行表示 七、XLNet - 图181 的上下文。

      七、XLNet - 图182

  5. 微调阶段:仅仅使用 content stream self-attention,并采用 Transformer-XL 的推断机制。

7.4 Partial Prediction

  1. permutation language model会带来优化困难:由于位置排列的各种组合导致收敛速度很慢。

    为解决该问题,模型仅预测位置排列 七、XLNet - 图183 最后面的几个位置对应的 token

    • 首先根据拆分点 七、XLNet - 图184 拆分 七、XLNet - 图185 为:七、XLNet - 图186 (不预测)、七、XLNet - 图187 (预测)。

    • 然后调整模型的优化目标为:

      七、XLNet - 图188

    这称作 Partial Prediction 部分预测。

    对于拆分点之前的 token,无需计算它们的 query representation,这会大大节省内存,降低计算代价。

  2. 部分预测选择后半部分来预测的原因是:

    • 后半部分的 token 具有较长的上下文,使得上下文信息更丰富,从而为模型提供了更丰富的输入特征,更有利于模型对上下文的特征抽取。
    • 推断阶段,真实的序列一般都具有较长的上下文。根据第一点的结论,模型更有利于对这些序列的特征抽取。
  3. 拆分点 七、XLNet - 图189 的选择由超参数 七、XLNet - 图190 来选择。定义:

    七、XLNet - 图191

    即:拆分点之后的 token 数量比上总 token 数量等于 七、XLNet - 图192七、XLNet - 图193 越大,则需要预测的 token 数量越少。

7.5 引入 Transformer XL

  1. 考虑到XLNet 是自回归语言框架,天然的匹配 Transformer-XL 思想,因此引入 Transformer XL。这也是 XLNet 的名字的由来。

    具体而言,XLNet 引入了 相对位置编码和 segment-level 递归机制。

  2. XLNet 引入相对位置编码比较简单,它直接采用了 Transformer XL 中的做法。

  3. XLNet 引入 segment-level 递归机制比较复杂,因为 XLNet 中需要考虑位置的重排。

    令一个很长的文本序列中前后相邻的两个 segment 为:

    七、XLNet - 图194

    令位置编号 七、XLNet - 图195 重排后的结果为 七、XLNet - 图196七、XLNet - 图197 重排后的结果为 七、XLNet - 图198

    • 计算 content stream

      • 首先基于 七、XLNet - 图199 来处理前一个 segment,,并缓存每一层的隐向量 七、XLNet - 图200

      • 然后基于 七、XLNet - 图201 来处理后一个 segment,并计算每一层的隐向量:

        七、XLNet - 图202

        • 其中 [] 表示沿着序列维度拼接。

        • 其中相对位置编码仅仅依赖于原始的序列位置,而不是重排后的顺序。因此 七、XLNet - 图203 中各状态向量的位置对应于原始的排列顺序。

          因此一旦获取了 七、XLNet - 图204,上述 Attention 的计算就独立于 七、XLNet - 图205 。这使得缓存 七、XLNet - 图206时,不必关心前一个 segment 的混排顺序。

    • 计算 query stream:和 content stream 处理方式相同。

7.6 多输入

  1. 许多下游任务有多个输入部分,如QA 任务的输入包含两部分:一个 question 、以及包含 answer 的一段话。

    类似 BERTXLNET 将这两部分输入 AB 拼接成一个整体 :[A,SEP,B,SEP,CLS]。 其中 SEP 作为这两部分的分隔符,CLS 作为整体的标记符。

    segment-level 递归阶段,每个部分只使用对应上下文的状态缓存。

  2. BERT 采用 segment 绝对编码不同,XLNet 基于Transformer-XL 的思想,采用相对 segment 编码 relative segment encoding:RES

    注:这里的 segment 含义和 segment-level 中的不同。这里指的是输入样本的不同部分,而后者指的是长文本序列拆分成多个输入片段。

    给定序列的两个位置 i,j ,如果二者在同一个部分,则使用相同的 segment 编码 七、XLNet - 图207;否则使用不同的 segment 编码 七、XLNet - 图208。即:只考虑两个位置是否在同一个输入部分,而不考虑每个位置来自于哪个输入部分。

    query 对于segment 部分的 attention score 为:

    七、XLNet - 图209

    其中:

    • 七、XLNet - 图210query 向量
    • 七、XLNet - 图211 是一个待学习的参数,表示偏置向量
    • 七、XLNet - 图212 是为标准的 attention score 的一部分
  3. 相对 segment 编码的优点:

    • 泛化效果较好。

    • 支持预训练期间两部分输入、但微调期间多部分输入的场景。

      绝对segment 编码不支持这种场景,因为预训练期间它只对绝对位置 Seg 1,Seg 2 编码,而微调期间的 Seg3,... 编码是未知的。

7.7 模型比较

7.1.1 BERT vs XLNet

  1. BERTXLNet 都只是预测序列中的部分 token

    • BERT 只能预测部分 token,因为如果预测序列中的所有 token,则它必须把所有 tokenmask。此时的输入全都是 mask,无法学到任何东西。
    • XLNet 通过部分预测来降低计算代价,提高收敛速度。
  2. BERTXLNet 的部分预测都要求上下文足够长,这是为了降低优化难度,提高收敛速度。

  3. 独立性假设使得 BERT 无法对 mask token 的关系建模。

    对于句子 New York is a city,假设 BERTXLNetNew York 建模:七、XLNet - 图213

    • 对于 BERT ,其目标函数为:

      七、XLNet - 图214

    • 假设 XLNet 的混排顺序为:a is city New York。则对应的目标函数为:

      七、XLNet - 图215

    因此 XLNet 能够捕捉到 (New,York) 之间的依赖性,而BERT无法捕捉。

    虽然 BERT 能够捕捉到 (New,city)(York,city) 这类依赖性,但是很显然 XLNet 也可以。

  4. 给定一个序列 七、XLNet - 图216,定义序列 七、XLNet - 图217 的一组目标 token 的集合为 七、XLNet - 图218,对应的非目标 token 的集合为 七、XLNet - 图219BERTXLNet 都是最大化 七、XLNet - 图220

    • BERT 的目标函数:

      七、XLNet - 图221

    • XLNet 的目标函数:

      七、XLNet - 图222

      其中 七、XLNet - 图223 表示位置重排之后,排列在 七、XLNet - 图224 位置之前的那些单词。

    可以看到:对于 XLNet,目标单词 七、XLNet - 图225 不仅可以捕捉到非目标 token集合 七、XLNet - 图226 中的 token 的相关性,还可以捕捉到目标 token 集合 七、XLNet - 图227 中的部分 token 的相关性。

7.7.2 AR VS XLNet

  1. 传统的自回归语言模型只已知前文来预测后文,而无法根据后文来预测前文。这种局限性在实际任务中可能会遇到。

    如:给一段话 Thom Yorke is the singer of Radiohead ,给一个问题 Who is the singer of Radiohead

    由于 Thom Yorke 出现在序列的前面,因此在传统自回归语言模型中它不依赖于 Radiohead。因此难以获得正确答案。

  2. 由于 XLNet 引入了位置全排列,因此它可以对任意顺序建模,即不仅可以对 七、XLNet - 图228 建模,也可以对 七、XLNet - 图229 建模。

7.8 实验

7.8.1 数据集和超参数

  1. XLNet-LargeBERT-Large 拥有相同的结构超参数,因此具有差不多的模型大小。

    XLNet-BaseBERT--Base 拥有相同的结构超参数,因此也具有差不多的模型大小。

  2. XLNet-Large 预训练语料库:与 BERT 一致,XLNet 使用 BooksCorpus 和英文维基百科作为预训练语料库,一共 13 GB 的纯文本。

    除此之外,XLNet 还包括 Giga516GB 纯文本)、ClueWeb 2012-BCommon Crawl 语料库来预训练。

    • XLNet 使用启发式过滤策略来去掉 ClueWeb 2012-BCommon Crawl 中的太短或者低质量的文章,最终分别包含 19GB 纯文本和 78 GB 纯文本。
    • 在使用 SentencePiece 词干化之后,最终维基百科、BooksCorpus,Giga5,Clueweb,Common Crawl 分别获取了 2.78B,1.09B,4.75B, 4.30B,19.97Bsubword pieces,一共 32.89B
  3. XLNet-Base 预训练语料库:仅仅在 BookCorpus 和维基百科上预训练。

  4. 训练参数:

    • 序列长度 512, memory length (用于 segment-level 递归的缓存状态向量) 384 。

    • XLNet-Large 在 512 块 TPU v3 芯片上训练 50万步,采用 Adam optimizer 和线性学习率衰减,batch size 为 2048,一共大约 2.5天。

      实验观察表明:训练结束时模型仍然欠拟合,继续训练虽然能够降低预训练损失函数,但是无法改善下游任务的表现。这表明模型仍然没有足够的能力来充分利用大规模的数据。

      但是在论文并没有预训练一个更大的模型,因为代价太大且对下游任务的微调效果可能提升有限。

    • XLNet-Large 中,部分预测的常数 K=6

    • 由于引入segment-level递归机制,论文使用了双向数据输入pipeline,其中前向和后向各占批处理大小的一半。

  5. span-based predicition

    • 首先采样一个长度 七、XLNet - 图230
    • 然后随机选择一个连续的长度为 B 的区间的 token 作为预测目标
    • 最后选择包含该区间的 七、XLNet - 图231 长度的一段 token 作为一个序列样本。

7.8.2 实验结果

  1. RACE 数据集:包含了12到18岁中国初中、高中英语考试中的近10万个问题,答案由人工专家生成。

    涉及到挑战性的推理问题,所以它是最困难的阅读理解数据集之一。另外,该数据集每篇文章平均超过300个段落,远远超过其它流行的阅读理解数据集(如 SQuAD ) 。 因此该数据集对于长文本理解来说是个具有挑战性的 baseline

    XLNet 在该数据集上的微调结果如下图所示,其中:

    • 微调阶段的序列长度为 640
    • 所有 BERTXLNet 都是在 24层网络下实现,其模型大小几乎相同。
    • * 表示使用了多个训练模型的集成(取均值);MiddleHigh 表示初中和高中水平的难度。

    XLNet 在该数据集上相比 BERT 提升巨大的原因可能有两个:

    • XLNet 的自回归语言模型解决了 BERT 的两个缺点:预测目标独立性假设、预训练阶段和微调阶段不一致 。
    • XLNet 引入 Transformer-XL 提升了长文本建模能力。

    七、XLNet - 图232

  2. SQuAD 数据集:一个大型阅读理解数据集,包含 SQuAD 1.1SQuAD 2.0 。其中 SQuAD 1.1 中的问题总是有答案,而 SQuAD 2.0 中的问题可能没有答案。

    • 为了微调 SQuAD 2.0 ,论文联合使用了两个损失函数:

      • 一个逻辑回归的损失函数,用于预测该问题是否有答案。这是一个文本分类问题。
      • 一个标准的 span extraction loss 用于预测答案的位置。
    • XLNet 在该数据集上的微调结果如下图所示:

      • * 表示集成模型(多个模型的平均输出)

      • 前两行直接比较 BERTXLNET ,没有采用数据集增强,直接在验证集上的比较。

        验证集采用 SQuQD 1.1 。由于 SQuAD 1.1 始终有答案 ,因此评估时模型只考虑 span extraction loss 这一路的输出。

      • 后四行采用了数据集增强,通过 NewsQA 来增强数据。因为排行榜排名靠前的模型都采取了数据集增强。

        结果在排行榜的测试集上评估。

    七、XLNet - 图233

  3. 文本分类任务:XLNetIMDB,Yelp-2,Yelp-5,DBpedia,AG,Amazon-2,Amazon-5 等数据集上的表现如下。

    七、XLNet - 图234

  4. GLUE 数据集:9 个 NLP 任务的集合。XLNet 的表现如下图所示。

    • 前三行表示单任务单模型的表现:针对每个任务,使用该任务的数据微调一个模型。

      最后四行表示多任务集成模型的表现:

      • 多任务:先在多个任务的数据集上联合训练模型,并在其它任务的数据集上微调网络。

        其中 XLNet 采用 MNLI,SST-2,GNLI,QQP 这四个最大的数据集来联合训练。

      • 集成模型:用不同的初始化条件训练多个模型,并用这些模型的平均输出作为最终输出。

    • BERTXLNet 采用 24 层网络,其模型大小相差无几。

    七、XLNet - 图235

  5. ClueWeb09-B 数据集:包含了 TREC 2009-2012 Web Tracks ,一共5千万 doc 及其 query ,用于评估的文档排序 doc ranking 能力。该任务是用标准检索方法对检索到的前 100 份文档进行 rerank

    由于文档排序主要涉及到文档的低层表示而不是高层语义,因此该数据集用于评估词向量质量。

    论文使用预训练的 XLNet来提取 docquery 的词向量,无需微调阶段,结果如下图所示。

    结果表明:XLNetBERT 学到了更好的低级词向量。

    七、XLNet - 图236

  6. 消融实验主要验证了以下几个目的:

    • 相比较于 BERT 的自编码语言模型, XLNetPermutation Language Model 是否有效。
    • 是否有必要引入Transformer-XL 及其 segment-level递归。
    • 一些实现细节:span-based predicition, 双向输入piepeline, next-sentence-predicition 的必要性。

    所有模型都在维基百科和 BooksCorpus 数据集上预训练,模型采用 12层 Base 模型。实验结果如下图所示。结果表明:

    • 从第一/二行的比较来看:Transformer-XL 在长文本上表现优异。
    • 从第四/五行的比较来看:如果没有内存缓存机制则性能下降,对于长文本任务尤为明显。
    • 从第四/六/七行的比较来看:如果放弃 span-based predicition 和 双向输入pipeline,则效果也会下降。
    • 论文意外发现:NSP 任务不一定能改善性能;相反,除了 RACE 任务之外它会损害性能。

    七、XLNet - 图237