专栏首页AI部落联盟讲讲我理解的XLNet

讲讲我理解的XLNet

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

本文分享自微信公众号 - AI部落联盟(AI_Tribe),作者:Jason Cai

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 微软和清华开源ConvLab: 多领域端到端对话系统平台

    本文大部分来自ConvLab: Multi-Domain End-to-End Dialog System Platform,2019年4月1...

    AI部落联盟
  • 论文阅读|How Does Batch Normalizetion Help Optimization

    Batch Normalization在2015年被谷歌提出,因为能够加速训练及减少学习率的敏感度而被广泛使用。

    AI部落联盟
  • 干货|XGBoost进阶—调参+实战

    0,silent模式关闭(一般我们选择slient=0,因为这样能更好的帮助我们理解模型)

    AI部落联盟
  • SQL 2008 r2 安装提示 visual studio 2008 版本错误解决方法

    HKLM\SOFTWARE\Wow6432Node\Microsoft\DevDiv\VS\Servicing\9.0\IDE\1033 In that key...

    阿新
  • 华为加拿大高级副总裁离职,曾在华为工作7年

    今天上午最新消息,据媒体报道,华为加拿大高级副总裁斯科特·布拉德利在周五宣布离职。华为官方表示,布拉德利将会担任华为的特别顾问,根据公司的要求提供一些帮助。

    镁客网
  • 《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程

    《Redis设计与实现》读书笔记(二十) ——Redis命令在redis服务器执行过程 (原创内容,转载请注明来源,谢谢) 序:redis服务器是redis一切...

    用户1327360
  • 华为秘密“达芬奇计划”首曝光!自研AI芯片或重创英伟达

    【新智元导读】华为内部“达芬奇计划”首次曝光:该计划旨在将AI带入华为所有的产品和服务中,最首要的一步,就是开发用于数据中心的AI芯片,挑战英伟达!

    新智元
  • 业界 | 华为「达芬奇计划」首曝光:自研云端芯片,将AI技术融入所有产品

    每个月,华为的一位高管都会召集同事讨论如何将人工智能融入华为的所有产品和业务中,从通信基站、云数据中心到智能手机、监控摄像头等设备。这一努力被命名为「达芬奇计划...

    机器之心
  • 从零开始搭建服务器之登录和登出远程服务器

    双 11 期间入手了一台云服务器,备案花了一两个星期,这两天终于备案通过了.于是在个人服务器上装了 Docker 容器用于部署项目,准备尽量把所有的服务都打包成...

    雪之梦技术驿站
  • 这可能是目前最实用的医学R语言绘图教程

    在一篇论文中,最引人注目的除了标题和摘要,便是嵌于文中的各种图表了。而图形凭借其更为直观的表达效果一直备受学术界青睐,可以说如何用更为美观的图形更恰当、更全面、...

    百味科研芝士

扫码关注云+社区

领取腾讯云代金券