ERNIE-Doc: A Retrospective Long-Document Modeling Transformer(2020-12-31)

ERINE系列模型:

ERINE1.0:https://blog.youkuaiyun.com/weixin_49346755/article/details/127257733?spm=1001.2014.3001.5501
ERNIE2.0:https://blog.youkuaiyun.com/weixin_49346755/article/details/127266955?spm=1001.2014.3001.5501
ERNIE3.0:https://blog.youkuaiyun.com/weixin_49346755/article/details/127258228?spm=1001.2014.3001.5501
ERNIE-Gram:https://blog.youkuaiyun.com/weixin_49346755/article/details/127259532?spm=1001.2014.3001.5501
THU-ERNIE:https://blog.youkuaiyun.com/weixin_49346755/article/details/127263266?spm=1001.2014.3001.5501

模型介绍

经典的Transformer在处理数据时,会将文本数据按照固定长度进行截断,这个看起来比较”武断”的操作会造成上下文碎片化以及无法建模更长的序列依赖关系。基于此项考虑,ERNIE-Doc提出了一种文档层级的预训练语言模型方法:ERNIE-Doc在训练某一个Segment时,允许该segment能够获得整个Doc的信息。

在这里插入图片描述
如图所示,假设一篇完整的文档被分割成3个Segment: S 1 , S 2 , S 3 S_1,S_2,S_3 S1,S2,S3,在编码segment S2时,经典的Transformer依赖的只是 S 2 S_2 S2本身: P ( y ∣ S 2 ) P(y|S_2) P(yS2), Recurrence Transformer (例如 Transformer-XL)依赖的是 S 1 , S 2 : P ( y ∣ S 1 , S 2 ) S_1,S_2:P(y|S_1,S_2) S1,S2P(yS1,S2),这两种方法均没有使Segment S 2 S_2 S2获得完整的文档信息 S 1 , S 2 , S 3 S_1,S_2,S_3 S1,S2,S3

ERNIE-Doc在建模过程中,使得每个Segment均能获得完整的文档信息: P ( y ∣ S 1 , S 2 , S 3 ) P(y|S_1,S_2,S_3) P(yS1,S2,S3),其中建模长序列的关键点如下:

  • Retrospective feed mechanism: 将文本两次传入模型获得文本序列的representation,第一次将获得完整的文本序列表示,然后该序列的representation继续参与第二次的编码过程,这样该文本序列在第二次编码过程中,每个token位置便能获得序列完整的双向信息。
  • Enhanced recurrence mechanism: 使用了一种增强的Segment循环机制进行建模。
  • Segment-reordering objective: 对一篇文档中的各个segment随机打乱,获得多个乱序文档,然后要求模型预测这些文档中哪个是正常语序的文档。

模型改进

Retrospective feed mechanism

ERNIE-Doc借鉴了人类阅读的行为习惯,在人类阅读时会分为两个阶段:首先会快速略读一下文档内容,然后回过头来仔细阅读。ERNIE-Doc基于此设计了Retrospective feed mechanism,该机制同样包含两个阶段:Skimming phase 和 Retrospective phase。

具体来讲,一篇文档会传入模型两次,第一次被称为Skimming phase,在该阶段将会获得改文档的完整序列表示。第二次被称为 Retrospective phase,在该阶段将会融入Skimming phase获得的完整文档表示,开始进一步的编码计算,从而保证在第二次计算每个Segment编码时能够获得完整的文档信息。Retrospective phase的计算方式如下:

在这里插入图片描述

其中以上公式各个参数解释如下:

T T T​:一篇文档的Segment数量; N N N:Transformer模型层的数量; L L L​:每个Segment中的最大token数量; H ^ ∈ R ( L × T × N ) × d \hat H\in R^{(L×T×N)×d} H^R(L×T×N)×d ​​​​​:一篇文档在所有层中输出的编码向量; H 1 : T i ∈ R ( L × T ) × d H^i_{1:T}∈R^{(L×T)×d} H1:TiR(L×T)×d : 一篇文档在第i​层产生的编码向量; h ^ τ i \hat h^i_τ h^τi:第τ个Segment在第i层产生的编码向量。

从以上公式可以看到,在retrospective 阶段,当计算每个Segment时,会引入完整文档的表示 H ^ \hat H H^​,这样就保证了编码时,每个token能够获得完整文档的信息。

Enhanced Recurrence Mechanism

ERNIE-Doc通过使用Retrospective feed mechanism和Enhanced Recurrence Mechanism两种方式,增大了计算每个segment时的有效上下文长度。但是上面引入的公式计算复杂度是很高,因此 Enhanced Recurrence Mechanism期望前一个Segment便能获得完整的文档信息,然后直接融入前一个Segment便能使得当前Segment计算融入完整的文档信息。

在这里插入图片描述
如图所示,ERNIE-Doc通过将前一个Segment的同层编码表示,引入了当前Segment的计算中,这个做法同时也有利于上层信息反补下层的编码表示,具体公式为:

在这里插入图片描述

Segment-Reordering Objective

在预训练阶段,ERNIE-Doc使用了两个预训练任务:MLM和Segment-Reordering Objective。我们先来讨论Segment-Reordering Objective,其旨在帮助模型显式地建模Segment之间的关系,其会将一篇长文档进行划分为若干部分,然后将这些部分进行随机打乱,最后让模型进行预测原始的语序,这是一个 K K K ​分类问题: K = ∑ i = 1 m i ! K=\sum^m_{i=1}i! K=i=1mi! ​,其中m​​是最大的划分数量。

在这里插入图片描述

如图所示,假设存在一篇文档 D D D 被划分为3部分: D = { C 1 , C 2 , C 3 } D=\{C_1,C_2,C_3\} D={C1,C2,C3},ERNIE-Doc通过打乱这些部分得到 D ^ = { C 2 , C 3 , C 1 } \hat D=\{C_2,C_3,C_1\} D^={C2,C3,C1},然后在最后一个Segment S τ S_τ Sτ的位置进行预测原始的文档顺序 C 1 , C 2 , C 3 C_1,C_2,C_3 C1,C2,C3

另外,在获得 D ^ = { C 2 , C 3 , C 1 } \hat D=\{C_2,C_3,C_1\} D^={C2,C3,C1}后,ERNIE-Doc会对 D ^ \hat D D^进行划分Segment: D ^ = S 1 , S 2 , . . . , S T ​​​​ \hat D={S_1,S_2,...,S_T}​​​​ D^=S1,S2,...,ST​​​​,并且会对这些Segment中的某些Token 进行Mask,从而构造MLM任务,要求模型根据破坏的Segment S τ S_τ Sτ恢复成原始的 S τ S_τ Sτ​。结合MLM和Segment-Reordering Objective总的预训练目标为:

max ⁡ θ log ⁡ p θ ( S τ ∣ S ^ τ ) + 1 τ = T log ⁡ p θ ( D ∣ D ^ ) \max\limits_\theta \log p_{\theta}(S_{\tau}|\hat S_{\tau})+1_{\tau=T} \log p_{\theta}(D|\hat D) θmaxlogpθ(SτS^τ)+1τ=Tlogpθ(DD^)

其中, 1 τ = T 1_{\tau=T} 1τ=T表示Segment-Reordering Objective仅仅在最后一个Semgnet S T S_T ST位置被执行,以优化模型。

模型参考

论文地址:https://arxiv.org/abs/2012.15688

代码地址:https://github.com/PaddlePaddle/PaddleNLP/tree/develop/paddlenlp/transformers/ernie_doc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不负韶华ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值