AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


XLNet+Milvus:比BERT还聪明的语义理解模型到底是怎么工作的?
发布日期:2025-01-22 19:08:10 浏览次数: 1527 来源:Zilliz
推荐语

这是对 XLNet 语义理解模型的深度解读,揭示其超越 BERT 的奥秘。

核心内容:
1. XLNet 的产生背景与技术优势
2. 解决传统 NLP 不足的方法
3. XLNet 的实践应用与想象空间

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家

导读

近些年来,在自然语言理解领域,最火的模型是什么?
XLNet当仁不让。
自2019年《XLNet: Generalized Autoregressive Pretraining for Language Understanding》发布以来,目前论文引用次数已经超过10661次,被业界、学界广泛认可。
(另外,值得一提的是,本篇论文的一作,正是如今国内最火的大模型创业公司月之暗面创始人杨植麟;其并列一作戴子航则是马斯克成立的xAI中的华人中坚力量)
从技术侧出发,XLNet通过将自回归与上下文建模的结合,不仅克服了BERT在处理掩码时的局限性,从而实现更有效的上下文学习,其多模型优势结合的思路,更是成为了后续一众算法创新的重要路径参考。
那么XLNet究竟是如何解决传统NLP不足的?其在实践场景中都有哪些应用?我们又该如何对其进行部署?长期的想象空间又在哪里?本文将对以上问题进行一一解答。
01 
XLNet的产生背景:传统NLP到底有何不足?
在解读XLNet之前,我们先对NLP的历史演变做一下简单的梳理:我们可以将其粗略地分为古典派,深度学习派以及大模型派。
古典派:主要出现在201年之前,其主要技术代表是朴素贝叶斯分类器、支持向量机(SVM)、隐马尔可夫模型(HMM)等传统的机器学习方法。
深度学习派:在2012年深度学习登上历史舞台后,古典派技术逐渐被淘汰,CNN、RNN等技术成为此后2012-2018年间处理自然语言理解的主流技术。但是CNN、RNN等技术,在面对长序列数据处理时依然有一定的能力不足。
大模型派:2017年,Transformer架构提出,其基于自注意力机制的思路,成为这些年来处理NLP问题的主流思路,在此基础上,BERT、GPT等一众明星算法及其微调脱颖而出,主导近些年来的NLP发展。
而在一众基于Transformer架构的NLP模型中,都具备一个共同点,那就是预训练是影响最终自然语言理解效果的一个关键步骤。在预训练环节,模型会在大规模数据集上进行训练,学习通用的语言模式,然后我们还会再针对特定任务进行微调。
具体到预训练环节,业内主要有两种流行的预训练方法:自回归模型(autoregressive ,AR)和自编码模型(autoencoding,AE)。
1、自回归模型(Autoregressive Models)
其典型代表如 GPT,可以根据前t-1个(或后t-1个)tokens来预测当前时刻t的token。这种方法虽然简单,但只能捕捉单向的上下文信息,限制了模型对全局语义的理解。
展开来说,自回归模型(如 GPT)仅仅基于前面的 token,逐个预测下一个 token,来生成序列。这意味着模型只能学习单向的上下文信息(从左到右或从右到左),这限制了它捕捉 token 之间更复杂的双向关系的能力。例如,当预测句子中间的 token 时,自回归模型只能依赖于目标 token 前面的 token,而无法利用后续 token 的信息。
举个例子,我们呢要对这个不完整的句子做完形填空:“The cat is sleeping on the __.”自回归模型仅仅根据前面的 token,来预测下一个 token(例如“mat”)。它不会使用其他的 token 来预测,这使得在需要双向理解的任务中(如情感分析或问答任务),自回归模型的效果不够理想。
接下来,我们来看一下自回归语言建模的目标函数。
图一:自回归语言模型的目标函数
在这个函数中,表示从目标 token 之前的所有 token 中提取的上下文信息。这个上下文是通过神经网络模型(如 RNN 或 Transformer)生成的,这些模型会处理前面的 token 序列,为当前位置生成一个隐藏状态(或者上下文表示)。通过点积等相似性度量,将上下文向量和所有可能的下一个token的embedding进行对比,模型就可以利用上下文来预测下一个 token了。最终,模型会生成一个所有可能 token 的概率分布,并选择概率最高的 token 作为预测结果。
也就是说,自回归语言模型的单向性,决定了其无法利用未来的 token 信息,进而限制了模型对句子整体语义的理解能力,因为在许多情况下,未来的token信息,对于准确理解句子的完整意义至关重要。
2、自编码模型(Autoencoding Models)
BERT即是一种典型的自编码模型。它基于Transformer架构的编码器部分构建,工作原理是通过随机掩码部分token,并利用周围上下文,预测被掩码的token,从而来学习双向上下文表示(也就是我们常说的双向编码器结构)。
展开来说,自编码模型(如 BERT)通过引入掩码语言模型(Masked Language Modeling, MLM),可以解决自回归模型的不足。在 MLM 中,输入序列中的随机 token 会被掩码,模型的任务是基于周围的上下文,来预测这些被掩码的 token。这种方法使 BERT 能够捕捉双向依赖关系,因为它在预测被掩码 token 时,会同时考虑左侧和右侧的上下文信息。
然而,这也带来了预训练与微调之间的不一致,因为在预训练阶段使用的 [MASK]  token,在实际的后续任务中并不会出现。
例如,在句子 “The [MASK] brown fox jumps over the lazy dog” 中,BERT 的任务是基于句子左右两侧的上下文,预测被掩码的 token “quick”。这种能够考虑完整双向上下文的能力,对于理解复杂的语言任务(如判断句子中的情感)非常有用。然而,在微调阶段,BERT 在实际任务(如聊天机器人或搜索引擎)中的表现可能并不好,因为在真实案例中并不存在[MASK] 这个 token。
BERT 掩码语言模型的目标函数如下:
图二:BERT掩码语言模型的目标函数
在这个公式中,当时,表示序列中位置的 token 被掩码,必须由模型进行预测。被掩码的token 会被替换为一个特殊的 token(如[MASK] ),模型的任务是根据周围未被掩码的 token 来预测原始 token。序列 表示输入序列的“损坏”版本,其中部分 token 被掩码。整个序列的隐藏状态表示为 ,可以通过 Transformer 模型计算得到,这些表示可以用于预测被掩码的 token。
不难发现,BERT 的一个假设是,被掩码的 token 在预测时,是相互独立的,很显然,这低估了自然语言中的 token 之间相互依赖的事实。因此,尽管 BERT 能够有效捕捉双向上下文信息,但对于挖掘深层语义信息来说,仍是不足的。
那么如何解决自回归模型对未来token利用不足,以及自编码模型对深度语义挖掘的能力缺失呢?
XLNet 应运而生。
02 
XLNet 的核心创新:克服预训练的局限性
2019年,论文《XLNet: Generalized Autoregressive Pretraining for Language Understanding》横空出世,在文章中,XLNet通过引入排列语言模型和双流自注意力机制等创新,结合了自回归模型(AR)和自编码模型(AE)的优点,同时解决了它们各自的不足,概括来说,其优点主要有三:
创新点一:排列语言建模与自注意力掩码机制
XLNet 的核心创新在于排列语言模型。与传统的固定顺序(从左到右或从右到左)不同,XLNet 通过考虑所有可能的排列顺序来预测 token。具体来说,XLNet在训练时生成随机排列的序列,并根据这些排列顺序进行预测。
这种方法使 XLNet 能够同时捕捉过去和未来上下文中的 token 关系,并捕捉到更长距离的依赖关系,而不仅仅是固定的前向或后向依赖。
另外,需要注意的是,排列仅仅改变了长距离语义挖掘时词的顺序,但并没有改变输入序列本身的顺序。原始序列及其对应的位置编码,仍然保持不变。这一设计选择至关重要,因为在微调阶段,模型遇到的仍是自然顺序的文本序列。
因此,XLNet 在 Transformer 的基础上,引入了自注意力掩码(attention mask)来处理生成过程中的词序问题。这确保了模型在训练时,虽然使用了多种排列顺序,但在微调阶段面对自然顺序的序列时,仍然可以表现得很好。
图三:排列语言模型的目标函数
其中:
  • 表示序列长度为的所有可能排列的集合,这意味着 XLNet 在训练时,不会以固定顺序(如从左到右)来预测单词,而是会考虑序列的每一种可能的重排方式。

  • <分别代表排列的第个元素和前个元素,这意味着模型会根据排列中位于之前的 token,来预测位置的 token,而不管这些token在原始序列中的顺序。

通过最大化多种排列的相似概率,XLNet 能够捕捉上下文中过去和未来 token 的关系。这种方法使 XLNet 能够更有效地对双向依赖关系进行建模,因为它不假设单词之间的独立关系,从而比依赖掩码 token 的模型(如 BERT)更加灵活。
例如,在句子 “The cat sat on the mat” 中,XLNet 不会总是以从左到右的顺序预测下一个单词,而是可能使用类似 “sat mat The on cat the” 的排列方式。这种机制确保了模型能够更有效地学习双向依赖关系。
创新点二:
双流自注意力机制(Two-Stream Self-Attention Mechanism)
XLNet 引入双流自注意力机制,来确保在排列训练过程中,能够进行准确的预测。在传统的 Transformer 中,token 会关注输入序列中的所有其他单词,这可能导致信息泄露问题。为了解决这一问题,XLNet 将自注意力机制分为两个流:
内容流(Content Stream):基于完整的上下文,计算出每个 token 的隐藏表示。
查询流(Query Stream):生成下一个 token 的预测,同时防止访问被预测 token 的信息。
这两个流协同工作,确保了在保持排列模型完整性的同时,预测结果仍然是准确的。
图 4:架构:用于目标感知表示的双流自注意力机制
上述架构展示了 XLNet 的双流注意力机制,如何分离内容和查询操作。在内容流(a)中,单词通过传统的注意力机制相互关注,使模型能够收集完整的上下文信息。相比之下,查询流(b)的设计目的是防止 token 关注其自身的内容,这有助于确保模型在预测时,不会“偷看”当前 token 的值。通过使查询流“不可见”当前预测的 token,模型能够学会更好的预测。
当 XLNet 在多种排列上进行训练时(c),模型会根据周围 token 的不同组合来预测每个 token。例如,根据所选的排列顺序,可能会在处理完位置 4、2、1 token之后,再去预测位置 3 的 token。这种训练方法可以确保 XLNet 能够以多种方式建模,丰富了双向上下文和 token 的依赖关系,从而提升在以后任务中的通用能力。
创新点三:Transformer-XL解决长度限制问题
标准 Transformer 的一个不足,是其固定的上下文长度,通常为512个token。这限制了模型处理长距离语义挖掘的能力,因为超出固定长度的信息会被忽略。为了解决这一问题,XLNet 集成了 Transformer-XL,它引入了两项关键改进:
片段级循环机制(Segment Recurrence):Transformer-XL 通过段级循环机制,将长序列分割成多个较短的段,并在段之间引入循环机制。具体来说,模型在处理新的段时,会保留之前段的隐藏状态,从而在不增加计算复杂度的情况下扩展上下文长度。因此,XLNet 能够保持一种连续的记忆,即使在处理长序列时,也能捕捉不同片段之间的长期依赖关系。使得模型的有效记忆范围,超越了固定长度的窗口。
相对位置编码(Relative Positional Encoding):在传统 Transformer 中,每个 token 在序列中,被分配了一个绝对位置,模型利用这些位置来理解 token 之间的关系。然而,在 XLNet 中,相对位置编码关注的是单词之间的距离,而不是它们的固定位置。这使得模型能够更好地捕捉 token 之间的关系,而不用在乎它们在句子中的绝对位置,从而在处理上下文时更加灵活。

03 

XLNet 在基准测试中的性能表现

排列语言建模和 Transformer-XL 的结合,使 XLNet 在多个 NLP 基准测试中超越了之前的模型。以下是一些关键结果的解析:

1、SQuAD 2.0(斯坦福问答数据集)

在 SQuAD 2.0 基准测试中,XLNet 的 Exact Match (EM) 得分为 87.9%,而 BERT 的得分为 80.0%。这表明 XLNet 在处理复杂问答任务时,具有更强的能力,尤其是在需要理解长篇文章,和判断问题是否可以回答的任务中表现更好。

2、GLUE 基准测试

通用语言理解评估(GLUE) 基准测试,衡量模型在多种语言理解任务中的表现,包括情感分析(SST-2)、释义检测(MRPC)和自然语言推理(MNLI)。在多项 GLUE 任务中,XLNet 的表现都比 BERT 好,凸显了其在处理各种 NLP 挑战时的多功能性。

3、RACE 数据集

RACE 阅读理解数据集包含考试风格的问题,要求模型从长篇文章中提取信息,并进行跨句推理。XLNet 通过排列建模方法,有效地捕捉文章中的复杂依赖关系,在多句推理和推断问题上,表现出更高的准确性,从而超越了 BERT 等之前的模型。

04 

XLNet 在 NLP 中的实际应用

XLNet 的创新,使其适用于多种自然语言处理任务:

1、增强型问答系统

XLNet 的深度上下文理解能力,成为构建复杂问答系统的最佳选择。它能够建模双向上下文和长距离依赖关系,确保生成准确且符合上下文的答案。

示例:在客户服务聊天机器人中,当用户提问 “How do I return an item?”(如何退货?)时,XLNet 可以考虑整个对话历史,生成一个详细的回答,提供更准确和有用的答案。

2、文本摘要和生成

XLNet 捕捉长距离依赖关系的能力,使其在文本摘要和生成任务中表现很好。通过理解文档的完整上下文,XLNet 能够生成简洁且连贯的长文本摘要。

示例:如果需要对一篇长篇新闻文章进行总结,XLNet 可以准确捕捉关键点,同时保持原始上下文的连贯性。

3、情感分析

在情感分析任务中,XLNet 的排列语言建模,可以捕捉主体与观点之间的微妙关系,从而可以高效地从文本中提取情感信息。

示例:在分析产品评论时,XLNet 可以检测出间接或复杂语言中隐含的情绪,例如沮丧或满意。

05 

实践:XLNet +Milvus,构建高效检索推荐系统

除了在经典的 NLP 任务中表现很好外,XLNet 生成稠密向量 embedding 的能力,为可扩展的搜索和检索系统提供了新的可能性,尤其是在与强大的向量数据库(如 Milvus)集成时,可以在文档检索和推荐系统等任务中发挥强大作用。

在向量 embedding 环节,当 XLNet 处理一个句子或文档时,会在高维空间中,生成一个代表文本语义的高维向量。语义相似的文本会生成相似的向量表示,并在向量空间中相邻排列,从而支持基于语义而非精确关键词匹配的高效检索。

示例:对于句子 “The cat sat on the mat” 和 “The dog lay on the rug”,尽管单词不同,但它们的语义相似。XLNet 生成的向量embedding,会使这两个句子在向量空间中彼此相邻,从而使搜索引擎在查询语义相关的短语时,能够同时检索到这两个句子。

在此基础上,我们可以引入Milvus 开源向量数据库,Milvus 专为存储和查询高维向量(如 XLNet 生成的向量)而生,能够处理数百万乃至数十亿级的向量数据,并支持混合检索、全文检索等一众特性需求,是 GitHub 上最受欢迎的向量数据库。以下是 Milvus 如何增强 XLNet 能力的具体解读:

1、混合搜索(Hybrid Search):Milvus 允许将向量相似性搜索与传统过滤相结合,从而支持语义相似性和元数据的复杂查询。例如,在法律文档搜索系统中,Milvus 可以检索与查询语义相关的文档,同时根据案件类型或管辖区域进行过滤。

2、高效的高维索引(Efficient High-dimensional Indexing):Milvus 使用先进的索引方法,支持高效查询高维向量,这对于处理 XLNet 生成的embedding至关重要。这种索引能力确保了即使在海量向量中也能快速检索。

3、可扩展性(Scalability):Milvus 设计时用了水平扩展,能够处理数十亿条向量。这种可扩展性使其非常适合大规模应用,特别是使用 XLNet embedding 的产品环境。

4、实时更新(Real-time Updates):Milvus 支持实时插入和更新,使新生成的 XLNet embedding 能够立即用于查询。这使系统能够在不做大变动的情况下不断更新。

06 

尾声

XLNet 通过克服自回归模型和自编码模型的局限性,带来了NLP技术的重大进展。它的排列语言建模可以捕捉双向上下文信息,同时 Transformer-XL 可以处理长距离语义挖掘。这些创新使 XLNet 在问答、文档检索等多种任务中表现出色。

将 XLNet 与 Milvus 集成,我们可以构建出可扩展、高效的系统,它们可以通过稠密向量 embedding 来完成搜索和检索任务。随着 NLP 研究的不断推进,XLNet 的影响力可能会进一步扩大,为更强大、适应性更强的语言理解系统铺平道路。

如对以上案例感兴趣,或想对milvus做进一步了解,欢迎扫描文末二维码交流进步。

推荐阅读



53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询