超细粒度分析XLNet中神奇的Attention Mask

2020 年 11 月 28 日 PaperWeekly


©PaperWeekly 原创 · 作者|海晨威

学校|同济大学硕士生

研究方向|自然语言处理


BERT 后时代,XLNet 在 20 个任务上超越 BERT,引起不小的关注。最重要的改进是 XLNet  实现了不在输入中加 [Mask] 标志,同样可以利用上下文信息,解决了 BERT 预训练和微调不一致的问题。

1. XLNet 如何实现在不加 [Mask] 情况下利用上下文信息呢?

XLNet 通过 Permutation Language Modeling(PLM)重排输入文本,使得当前词的下文也有可能出现在当前词的「上文」中,而实际的操作不是通过改变文本输入顺序来实现,而是依靠关键的 Attention Mask 机制来完成的。

上图就是文中 Attention Mask 的机制,只看图并不是那么好理解,这里引用张俊林老师:XLNet:运行机制及和 Bert 的异同比较 [1] 文章中非常关键的一句话:
在Transformer内部,通过 Attention 掩码,从 T 的输入单词里面,也就是 Ti 的上文和下文单词中,随机选择 i-1 个,放到 Ti 的上文位置中,把其它单词的输入通过 Attention 掩码隐藏掉,于是就能够达成我们期望的目标(当然这个所谓放到Ti的上文位置,只是一种形象的说法,其实在内部,就是通过 Attention Mask,把其它没有被选到的单词 Mask 掉,不让它们在预测单词 Ti 的时候发生作用,如此而已。看着就类似于把这些被选中的单词放到了上文 Context_before 的位置了)
以图中的排列序列:3->2->4->1 为例,通过 Attention Mask,在 self-attention 的加权平均计算中,假设要计算 attention 之后第 2 个词对应的向量
根据图中 Content stream 中的 mask, ,其中 表示第 2 个词对应的向量, 表示第 2 行第 2 列红点位置对应的 attention score,其他同理。这样在 中就看到了它的下文 ,就像是把 放到了它的上文位置一样,但实际顺序并没有改变。

采样序列的全排列,目的就是为了生成这个 Attention Mask,实际的文本输入并不受任何的影响。

那这个 Attention Mask 是如何生成的呢?

还是以排列 3->2->4->1 为例,去生成 Content stream 中的 mask,1 前面有 3,2,4,再加上自己,所以上图中第一行都为红点;2 前面只有 3,再加上自己,所以第二行的二三列都为红点,依次类推,就可以得到这个排列对应的  Attention Mask。

注:红点位值为 0,代表这个位有用,白点位值为 -inf,代表这个位被 mask 掉。

2. 为什么不直接在attention掩码矩阵中只把当前的单词掩盖住来获取上下文的信息呢?直接mask住左上到右下的对角线构建双向语言模型不行吗?

XLNet 实际上仍然遵循语言模型的预测模式(AutoRegressive Language Modeling),即从左往右依次预测,如对于排列序列:3->2->4->1,预测 2 时用到了 3 信息,预测 4 时用到了 3、2 信息.……因此,它本质还是需要一个上三角/下三角 mask 矩阵,在第一幅图的 content stream 矩阵中,把第 4 行的左边两个红点移到第 4 列中去,就变成了一个三角矩阵了,和 Transformer decoder 中的 mask 矩阵是一样的。

那为什么要这样的三角矩阵呢?直接 mask 住左上到右下的对角线可以嘛?

答案是不行,mask 掉对角线在预测时可以不看到当前词,但是会提前看到后面的词,这样在预测后面词的时候就相当于提前发生了泄露。

另外,要提及的一点是,XLNet 的从左到右和一般语言模型(如 GPT)的从左到右稍微有一点区别,GPT 的输入和输出是错位一个时间步的,即读入 1,2,3,然后在 3 的位置预测 4;而 XLNet 的输入和输出时间步数是相同的(这一点类似于 BERT),输入 1,2,3,4 并在 4 的位置预测 4。当然,XLNet 不会读取第 4 个时间步的单词(否则有信息泄露),仅仅利用位置 4 的 position embedding,告诉模型现在想要预测第 4 个位置,所以最终预测是用的 query stream,不含当前时间步文本信息 [2]

3. 虽然不需要改变输入文本的顺序,但 XLNet 通过 PLM 采样输入文本的不同排列去学习,这样不会打乱或者丢失词汇的时序信息嘛?

不会,因为 BERT/XLNet 底层的特征提取器都是 Transformer,而不是时序敏感的 RNN/LSTM。

在 BERT/XLNet 中,时序信息是通过 Position Embedding 获取的,每个词最后的 embedding 都是已经叠加了 Position Embedding 的,采样不同的排列,影响的是每个词能看到的「上文」,但这个「上文」的 Position Embedding 是由它在原始输入文本中的位置决定的,而不是排列之后的位置。

比如,两种排列 3->2->4->1 和 2->3->4->1 对于预测 4 来说是没有差别的,因为 4 看到的上文都是 2 和 3,它们各自最后的 embedding 不会因为采样排列顺序不同而变化。

XLNet 的实现,确实很惊艳,希望这篇文章能帮你掌握 XLNet 的关键实现机制——Attention Mask。



参考文献

[1] https://zhuanlan.zhihu.com/p/70257427

[2] https://www.zhihu.com/question/330307904/answer/721986216


更多阅读




#投 稿 通 道#

 让你的论文被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学习心得技术干货。我们的目的只有一个,让知识真正流动起来。


📝 来稿标准:

• 稿件确系个人原创作品,来稿需注明作者个人信息(姓名+学校/工作单位+学历/职位+研究方向) 

• 如果文章并非首发,请在投稿时提醒并附上所有已发布链接 

• PaperWeekly 默认每篇文章都是首发,均会添加“原创”标志


📬 投稿邮箱:

• 投稿邮箱:hr@paperweekly.site 

• 所有文章配图,请单独在附件中发送 

• 请留下即时联系方式(微信或手机),以便我们在编辑发布时和作者沟通



🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧



关于PaperWeekly


PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击「交流群」,小助手将把你带入 PaperWeekly 的交流群里。



登录查看更多
1

相关内容

【AAAI2021】知识图谱增强的预训练模型的生成式常识推理
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
66+阅读 · 2020年1月2日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
绝对干货!NLP预训练模型:从transformer到albert
新智元
13+阅读 · 2019年11月10日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
一文详解Google最新NLP模型XLNet
PaperWeekly
17+阅读 · 2019年7月1日
站在BERT肩膀上的NLP新秀们(PART I)
AINLP
30+阅读 · 2019年6月4日
Transformer-XL:释放注意力模型的潜力
谷歌开发者
31+阅读 · 2019年2月19日
BERT大火却不懂Transformer?读这一篇就够了
大数据文摘
11+阅读 · 2019年1月8日
从Seq2seq到Attention模型到Self Attention(一)
量化投资与机器学习
76+阅读 · 2018年10月8日
深度上下文词向量
微信AI
27+阅读 · 2018年9月13日
Arxiv
1+阅读 · 2021年2月4日
Arxiv
8+阅读 · 2020年10月9日
Self-Attention Graph Pooling
Arxiv
13+阅读 · 2019年6月13日
Arxiv
4+阅读 · 2019年1月1日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Arxiv
7+阅读 · 2018年1月24日
VIP会员
相关VIP内容
【AAAI2021】知识图谱增强的预训练模型的生成式常识推理
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
BERT进展2019四篇必读论文
专知会员服务
66+阅读 · 2020年1月2日
【GitHub实战】Pytorch实现的小样本逼真的视频到视频转换
专知会员服务
35+阅读 · 2019年12月15日
注意力机制介绍,Attention Mechanism
专知会员服务
166+阅读 · 2019年10月13日
相关资讯
一文读懂Attention机制
机器学习与推荐算法
63+阅读 · 2020年6月9日
绝对干货!NLP预训练模型:从transformer到albert
新智元
13+阅读 · 2019年11月10日
深度学习的下一步:Transformer和注意力机制
云头条
56+阅读 · 2019年9月14日
一文详解Google最新NLP模型XLNet
PaperWeekly
17+阅读 · 2019年7月1日
站在BERT肩膀上的NLP新秀们(PART I)
AINLP
30+阅读 · 2019年6月4日
Transformer-XL:释放注意力模型的潜力
谷歌开发者
31+阅读 · 2019年2月19日
BERT大火却不懂Transformer?读这一篇就够了
大数据文摘
11+阅读 · 2019年1月8日
从Seq2seq到Attention模型到Self Attention(一)
量化投资与机器学习
76+阅读 · 2018年10月8日
深度上下文词向量
微信AI
27+阅读 · 2018年9月13日
相关论文
Arxiv
1+阅读 · 2021年2月4日
Arxiv
8+阅读 · 2020年10月9日
Self-Attention Graph Pooling
Arxiv
13+阅读 · 2019年6月13日
Arxiv
4+阅读 · 2019年1月1日
Conditional BERT Contextual Augmentation
Arxiv
8+阅读 · 2018年12月17日
Arxiv
7+阅读 · 2018年1月24日
Top
微信扫码咨询专知VIP会员