前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >讲讲我理解的XLNet

讲讲我理解的XLNet

作者头像
AI部落联盟
发布2019-06-25 16:04:17
1.2K0
发布2019-06-25 16:04:17
举报
文章被收录于专栏:AI部落联盟AI部落联盟

Bert、GPT-2在怀里都还没捂热乎,XLNet又出来了,最近NLP界真的是风(gen)生(bu)水(shang)起(le),在看过各牛人( @张俊林@Towser)对XLNet的解读之后,小菜鸟也想说说自己的理解(毕竟讲出来比留在脑子里印象深刻)。

1. XLNet和Bert

首先讲讲我对XLNet和Bert比,有什么异同?有什么模型方面的改进?的理解(该部分主要拜读了@张俊林博士的解读)

1.1 自回归语言模型

第一次听到自回归语言模型(Autoregressive LM)这个词。我们知道一般的语言模型都是从左到右计算某个词出现的概率,但是当我们做完型填空或者阅读理解这一类NLP任务的时候词的上下文信息都是需要考虑的,而这个时候只考虑了该词的上文信息而没有考虑到下文信息。所以,反向的语言模型出现了,就是从右到左计算某个词出现的概率,这一类语言模型称之为自回归语言模型。像坚持只用单向Transformer的GPT就是典型的自回归语言模型,也有像ELMo那种拼接两个上文和下文LSTM的变形自回归语言模型。

1.2 自编码语言模型

自编码语言模型(Autoencoder LM)这个名词毫无疑问也是第一次听到。区别于上一节所述,自回归语言模型是根据上文或者下文来预测后一个单词。那不妨换个思路,我把句子中随机一个单词用[mask]替换掉,是不是就能同时根据该单词的上下文来预测该单词。我们都知道Bert在预训练阶段使用[mask]标记对句子中15%的单词进行随机屏蔽,然后根据被mask单词的上下文来预测该单词,这就是自编码语言模型的典型应用。

1.3 两种模型的优缺点对比

自回归语言模型没能自然的同时获取单词的上下文信息(ELMo把两个方向的LSTM做concat是一个很好的尝试,但是效果并不是太好),而自编码语言模型能很自然的把上下文信息融合到模型中(Bert中的每个Transformer都能看到整句话的所有单词,等价于双向语言模型),但自编码语言模型也有其缺点,就是在Fine-tune阶段,模型是看不到[mask]标记的,所以这就会带来一定的误差。XLNet将二者的上述优缺点做了一个完美的结合,在自回归语言模型中自然地引入上下文信息,并且解决自编码语言模型两阶段保持一致的问题。

2. XLNet是怎么做的

XLNet的思路采用的是自回归语言模型,根据上文来预测下一个单词,但是在上文中添加了下文信息,这样就既解决了[mask]带来的两阶段不一致问题和无法同时引入上下文信息的问题。改进之后,取了个新名字:Permutation Language Model。举个例子:输入句子为x1->x2->x3->x4,假设我们要预测的单词是x3,那我们需要在x3的上文x1和x2的位置看到x4的信息,这样才能解决同时引入上下文的问题。那就可以这么做了:随机排列组合x1、x2、x3、x4的顺序,并从中随机选择一部分作为新的句子输入。比如选择了x2->x4->x3->x1,那这个时候预测x3的时候是不是就能看到上文x2和下文x4的信息了呢,这就是XLNet的基本思路。就是通过排列组合的方式将一部分下文单词放到上文单词的位置,但实际形式还是一个从左到右预测的自回归语言模型。

但是我们在Fine-tune的时候总不能也随机组合输入的句子吧,那这和加了[mask]有啥区别呢?别急,继续往下看。XLNet在输入阶段并没有改变输入顺序,随机打乱输入句子的顺序这个过程是在Transformer中通过Attention mask实现的,就是随机掩盖掉序列中的一些单词,并将未掩盖掉的单词作为预测单词的上文。拿原文中的一个图举例:

右图的红色矩阵就是Attention Mask矩阵,1->2->3->4的输入序列在Attention Mask的作用下变成了3->2->4->1,Attention Mask也分为两种,一种是能看见自身的Content stream和Query stream。对于1来说3,2,4就是1的上文,所以第一行全是红色;对于2来说上文就只有3,所以对应位置为红色;对于3来说没有上文,所以全为白色...以此类推。那这样就实现了在输入侧不改变单词顺序,在Transformer内部实现了输入的随机排列了。

XLNet在长文本上的表现也比Bert强,Transformer-XL这篇文章还没看过,待我看过文章之后再继续写。以上我的理解都是源自两位大牛的解读,理解的比较浅,有兴趣的小伙伴建议阅读原文章:

https://www.zhihu.com/question/330307904/answer/721986216

https://zhuanlan.zhihu.com/p/70257427

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI部落联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. XLNet和Bert
  • 2. XLNet是怎么做的
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档