xlnet震惊了nlp领域,这种语言建模的新方法在20个nlp任务上的表现优于强大的bert,并且在18个任务中获得了最先进的结果。
xlnet可能会改变语言建模,这就是为什么它是任何nlp从业者的重要补充。在本文中,我们将讨论xlnet背后的原理,它使它比bert更好。为了更好地理解它,我们还将研究它之前的相关技术。
语言建模简介
在2018年,随着语言建模任务处于研究的中心,nlp领域取得了重大的进步。
语言建模是在给定所有先前的单词的情况下,预测句子中的下一个单词的任务。语言模型现在已经成为nlp管道的重要组成部分,因为它们为各种下游任务提供了支撑。语言模型捕获几乎普遍有用的输入文本的一些特性。
早期的语言模型ulmfit和elmo,两者都是基于lstm的语言模型。事实上,ulmfit和elmo都取得了巨大的成功,在众多任务中取得了最先进的成果。但我们将看到xlnet如何实现前所未有的成果。
用于语言建模的自回归模型(ar)
xlnet是一种通用的自回归预训练模型。自回归模型仅仅是一种前馈模型,它根据给定上下文的一组单词预测下一个词。但是在这里,上下文单词被限制在两个方向,前向或后向。
可以按顺序运行自回归模型以生成新序列!从x1,x2,…,xk开始,预测xk+1。然后使用x2,x3,…,xk+1来预测xk+2,依此类推。gpt和gpt-2都是自回归语言模型。所以,它们在文本生成中变现不错。
自回归语言模型的问题在于它只能使用前向上下文或后向上下文,这意味着它不能同时使用前向和后向上下文,从而限制其对上下文和预测的理解。
自动编码器(ae)语言建模
与ar语言模型不同,bert使用自动编码器(ae)语言模型。ae语言模型旨在从损坏的输入重建原始数据。
在bert中,通过添加[mask]来破坏预训练输入数据。例如,'goa has the most beautiful beaches in india'将成为‘goa has the most beautiful [mask] in india’,该模型的目标是根据上下文词预测[mask]词。自动编码器语言模型的优点是,它可以看到前向和后向的上下文。但是,由于在输入数据中添加[mask]引入了微调模型的差异。
bert有什么问题?
虽然通过使用ae语言建模bert几乎在所有nlp任务中都实现了sota,但它的实现仍然存在一些漏洞。bert模型有两个主要缺点:
1.由于掩蔽导致的微调差异
训练bert以预测用特殊[mask]标记替换的标记。问题是在下游任务中微调bert时,[mask]标记永远不会出现。在大多数情况下,bert只是将非掩码标记复制到输出中。
那么,它真的会学会为非掩码标记生成有意义的表示吗?它也不清楚如果输入句中没有[mask]标记会发生什么。
2.预测的标记彼此独立
bert假设在给定未掩蔽的的标记的情况下,预测的(掩蔽的)标记彼此独立。为了理解这一点,我们来看一个例子。
whenever she goes to the[mask][mask]she buys a lot of[mask].
这可以填写为:
whenever she goes to theshopping center, she buys a lot ofclothes.
或者
whenever she goes to thecinema hallshe buys a lot ofpopcorn.
而句子:
whenever she goes to thecinema hallshe buys a lot ofclothes.
是无效的。bert并行预测所有掩蔽的的位置,这意味着在训练期间,它没有学会处理同时预测的掩蔽的标记之间的依赖关系。换句话说,它不会学习到预测之间的依赖关系。它预测标记彼此之间互相独立。这可能是一个问题的原因是这减少了bert一次学习的依赖关系的数量,使得学习信号比它原本可能的更弱。
xlnet:排列语言建模
bert在所有传统语言模型中脱颖而出的原因在于它能够捕获双向上下文。同样,它的主要缺陷是在预训练引入[mask]标记和并行独立预测。
如果我们以某种方式构建一个包含双向上下文的模型,同时避免[mask]标记和并行独立预测,那么该模型肯定会胜过bert并取得最先进的结果。
这基本上就是xlnet所实现的目标。
xlnet通过使用称为“排列语言建模”的语言建模变体来实现这一点。训练排列语言模型以预测在给定上下文后的一个标记,就像传统语言模型一样,但是不是以连续顺序预测标记,而是以某种随机顺序预测标记。为清楚起见,我们以下面的句子为例:
“sometimes you have to be your own hero.”
传统的语言模型按照下面的顺序预测标记:
“sometimes”, “you”, “have”, “to”, “be”, “your”, “own”, “hero”
其中每个标记使用所有前面的标记作为上下文。
在排列语言建模中,预测的顺序不一定是从左到右。例如,它可能是:
“own”, “sometimes”, “to”, “be”, “your”, “hero”, “you”, “have”
其中“sometimes”会以看到“own为条件,而“to” 则以看到“own”和“sometimes”等为条件。
注意如何使用排列语言建模强制模型建模双向依赖关系。期望上,模型应该学习建模所有输入组合之间的依赖关系,而传统语言模型只能在一个方向上学习依赖关系。
xlnet使用transformer xl
除了使用排列语言建模之外,xlnet还使用了transformer xl,它可以进一步改善其结果。
transformer xl模型背后的主要思想:
相对位置嵌入
循环机制
在对当前段进行排列语言建模时,缓存并冻结来自前一段的隐藏状态。由于来自前一段的所有单词都用作输入,因此不需要知道前一段的排列顺序。
双流自注意力(two-stream self-attention)
对于使用transformer模型的语言模型,当预测位置i处的标记时,该词的整个嵌入被掩蔽,包括位置嵌入。这意味着模型与它所预测的标记位置有关的知识隔绝。
这可能是有问题的,特别是对于句子开头的位置,其与句子中的其他位置具有显着不同的分布。为了解决这个问题,作者引入了第二组表示,其中包含位置信息,但仅为了预训练而屏蔽了实际的标记。第二组表示称为query stream。训练该模型以使用来自query stream的信息来预测句子中的每个标记。
包括位置嵌入和词嵌入的原始表示集称为content stream。这组表示用于在预训练期间合并与特定单词相关的所有信息。content stream用作query stream的输入。这个模式称为“双流自注意力”。
对于每个单词,query stream使用ontent stream,该ontent stream对直到当前单词的单词的所有可用上下文信息进行编码。例如,我们在下面的句子中预测 “calm” 一词:
“keep calm and read papers”
其中位于排列前面的词是 “and”和“papers”。content stream将编码单词“and”和“papers”的信息,query stream将编码 “calm”的位置信息,以及结合来自content stream的信息,用于预测单词 “calm”。
总结
xlnet必将成为研究中讨论的话题。这表明nlp中的语言建模和迁移学习还有很多需要探索的地方。
主流的深度学习模型有哪些?AI开发工程师必备!
雷曼光电十七年积累或将迎来收获季
特斯拉亚太首座机场超级充电站上线,目前只拥有 8 个充电桩
简易病房呼叫器电路图
三星第三代10nm工艺DDR4内存下半年量产
语言建模中XLNet比BERT好在哪里
国内芯片行业暴露短板_“中国芯”崛起还要多久?
如何判别驻极体话筒的极性
用电子管6N3代替CD运放LPF输出实例
uart串口代码verilog
ADC工作原理及详细参数
Arm任命 Rene Haas为新任首席执行官
为什么大功率电阻会爆炸?
热电偶的种类
华硕将再次为ROG Phone 4提供6000mAh电池容量
如何有效保证模温机使用安全,有哪3大安全要点
显示屏是怎么做成透明的?
智能手机散热器的制作
闻泰科技AI×IoT战略初现 以开发新的物联网科技解决方案为目标
理想运算放大器“虚短”和“虚断”概念分析