又见算力碾压--解读最强自然语言处理模型XLnet

     谷歌和卡耐基梅隆大学联合发布了自然语言处理模型 XLNet,此模型从实测情况上看已经封神,甚至 20 个任务上超过了前任NLP霸主 BERT 的表现,说它全面超越BERT也不为过。那么本文就要向大家来解读一下自然语言处理的最新巅峰MLnet的具体情况。

     之前自然语言处理分为两大门派一个是以GPT,GPT-2为代表自回归(AR)另一个是以BERT为代表的自编码(AD),接下来分别对这两种模型,以及XLNet的创新点做一下介绍

            自回归模型

    在XLnet的原文中绍AR模型部分中最重要的一句“ AR language modeling factorizes the likelihood into a forward productor a backward one ”翻译过来就是自回归模型使用因式分解概率的方式来进行正向或者反向生成。接下来咱们重点解释一下这句话的意思。     

     什么是自回归:我在之前文章中《AI假新闻满天飞,打假神器GROVER帮你看清一切》介绍过的那个AI写手GPT-2就是一个典型的使用自回归方式架构的自然语言处理模型。其实通俗的讲自回归就是使用自身做回归变量的过程,一般说来记为以下的形式。

      也就是说自回归模型假定t时刻的序列(Xt)可以利用前期若干时刻的随机变量的线性组合来描述。

   

     什么是因式分解:我们来说一下什么是自然语言处理中的因式分解,先复习一下贝叶斯公式,它描述随机事件 A 和 B 的条件概率,其中P(A|B)是在 B 发生的情况下 A 发生的可能性。

    

     假设我们I、love、you三个单词分别对应向量:X_1、X_2、X_3,那么如果我们要建模”I love you”这句话,其实就要通过贝叶斯公式解出,在自然数据这个序列出现的联合概率分布 P(X_1,X_2,X_3)。

      由于词语之间的相互联系,我们除需要统计P(X_1)、P(X_2)、P(X_3)三个概率是不够的。因为X_1还依赖于其它变量存在条件分布 P(X_2|X_1) 和 P(X_3|X_1)。对于X_2和X_3也是一样,我们可以将这三个模型组合起来获得期望联合分布 P(X_1,X_2,X_3)=P(X_1)P(X_2|X_1)P(X_3|X_1,X_2)

    一般来说,变量的每个可能的排序都存在自回归因式分解。在有N个变量的问题中,就存在 N! 个因式分解。在上面提到的三个变量的例子中,我们可以列举出六个自回归因式分解,当然在AR模型中都考虑了顺序信息,不会计算所有的因式分解,不过后面我也会提到,这也是MLnet的改进之处。

    

又见算力碾压--解读最强自然语言处理模型XLnet_第1张图片

      自回归的局限:与到这里可能读者也就明白了,AR模型其实就是通过贝叶斯因式分解的方式来计算输入序列的概率密度。那么其劣势也就比较明显了,由于输入序列有方向性,所以AR模式只能拉收正向或者反向单向信息。

           自编码模型

        自编码模型的思想是利用被人为损坏的输入序列重建原始数据。比如BERT,它利用一个特殊符号[MASK]替换特定部分,并训练模型从损坏的版本中恢复原始的信息,如果以图像处理类比,自编码就是先用计算机为图像打上马赛克,然后再通过训练使计算机掌握去掉马赛克的算法。那么自编码的优势就是他完全可以利用双向的信息,来建构模型,不过劣势也非常明显,就是在真实环境下是不存在MASK部分的,这让自编码模型的训练集与预测数据集存在差异,而且自编码模型也无法计算概率密度。

         XLnet的创新

   其实如果理解了AR和AD两种模型的思想,那么XLnet创新点就非常容易解释了。

   1.学习双向语境:对可能的因式分解进行对数最大似然估计,我们上文提到了如果有N个元素的序列就会存在N!个因式分解的方式。XLnet在进行因式分解计算概率密度时会考虑所有因式分解的可能性,并做最大似然估计,以此方式来学习双向语境信息,以此来克服自回归模型的弱点。

    2.利用AR模型计算概率密度:XLnet本质是一个AR模型,也会计算概率密度也不存在训练集与实测集的差异。

    3.加入Transformer-XL的优点:原论文中的这张图表达到这个建模的思想,其中最左侧的(a)部分表示的就是一个普通的“self attention"层,而(b)部分Query 表征仅能获取上下文信息及当前的位置,它并不能获取当前位置的内容,并在(c)当中融合这两部分的信息,完成最终的模型架构。

又见算力碾压--解读最强自然语言处理模型XLnet_第2张图片

        后记

     最后笔者想说谷哥的研究人员待遇实在是令人羡慕,原文中提到"512 TPU v3 chips for 500K steps with an Adam optimizer,
linear learning rate decay and a batch size of 2048, which takes about 2.5 days"也就是他们用了512块TPUV3,训练了2.5天,这个算力,如果单用笔者的一块2060训练那么至少需要512*2.5*8(TPUv3的算力至少相当于2060的8倍)=10248天约28年,也说法是即使普通大众或者创业者有类似的想法,那么也需要数年时间才能有所成果。不知这是不是人工智能领域即将走向垄断的前兆。

     当然笔者对于NLP方面不是特别专业,如有指正欢迎留言。

     

论文地址:https://arxiv.org/pdf/1906.08237.pdf

开源代码与预训练模型:https://github.com/zihangdai/xlnet

你可能感兴趣的:(python)