XLNet是一种用于自然语言处理的自回归Transformer (architecture)模型,作为BERT的改进版本被提出。它于2019年6月19日以Apache 2.0许可证发布,拥有3.4亿参数,并在330亿词上进行了训练。该模型在语言建模、问答和自然语言推理等任务上取得了当时最优的结果,是Large language model架构在Deep learning研究中的一个重要实例。
与使用掩码语言建模的BERT不同,XLNet采用了排列语言建模。这种方法通过所有可能的顺序对序列的联合概率进行因式分解,使模型能够在无需掩码的情况下捕获双向上下文。这一设计旨在解决BERT的一个局限,即掩码token在预训练中不可见,导致预训练与微调之间存在差异。
排列语言建模
在标准自回归建模中,序列的概率按固定的从左到右顺序进行因式分解。例如,句子“My dog is cute”被建模为条件概率的乘积:Pr(My) Pr(dog|My) Pr(is|My, dog) * Pr(cute|My, dog, is)。而XLNet则对token位置进行随机排列抽样,并根据该顺序对概率进行因式分解。例如,使用排列3-2-4-1时,模型先预测“is”,然后是“dog”,再然后是“cute”,最后预测“My”,每个token都基于先前预测的token进行条件化。通过在所有排列上进行训练,模型学会了使用来自两个方向的上下文,从而增强了捕获长距离依赖的能力。
双流自注意力机制
为了实现排列语言建模,XLNet使用了双流自注意力机制。第一个流称为内容流,使用标准因果自注意力编码每个token的内容。第二个流称为查询流,在先前预测token的上下文中编码每个token的内容,使用掩码交叉注意力,其中查询来自查询流,键值对来自内容流。这种设计使得模型能够在无法看到自身内容的情况下预测token,同时仍能利用排列顺序中其他token的内容。
训练与性能
XLNet在330亿token的大规模语料库上进行了训练,模型规模为3.4亿参数。训练过程包括排列语言建模和一个段落重排序目标,后者帮助模型学习句子之间的关系。发布时,XLNet在一系列基准测试上优于BERT,包括斯坦福问答数据集(SQuAD)、通用语言理解评估(GLUE)基准以及多个阅读理解任务。其成功证明了基于排列的预训练的有效性,并影响了后续在Generative AI和Machine learning方面的工作。
影响与遗产
XLNet通过强调自回归与自编码方法之间的权衡,促进了预训练语言模型的发展。BERT的掩码策略能够实现双向上下文,但引入了预训练与微调的不一致;XLNet的排列方法则在不牺牲自回归属性的情况下获得了双向上下文。这一理念已被纳入后来的模型中,例如Transformer-XL及其他变体。尽管较新的架构已超越XLNet的性能,但它仍然是Artificial intelligence和Neural network研究史上的重要里程碑。
参见
- BERT(不在提供的slugs中,但可以作为Transformer (architecture)链接)
- Large language model
- Deep learning
- Machine learning