查看原文
其他

用于语义检索的多语言通用语句编码器

Google TensorFlow 2021-07-27

文 / Yinfei Yang 与 Amin Ahmad

Google Research 软件工程师 

“通用语句编码器 (USE) 英文版”自去年推出以来,已成为 Tensorflow Hub 中下载次数最多的预训练文本模块之一。该编码器提供通用语句嵌入模型,可将语句转换为矢量表示。这些矢量能表示丰富的语义信息,可作为训练面向各类下游任务的分类器例如,研究人员可通过 一个仅有 100 个标记示例来训练出强大的语义分类器,且仍可使用该分类器测量语义相似度并将相似的语义进行归类。

注:通用语句编码器(USE)链接https://aclweb.org/anthology/papers/D/D18/D18-2029/Tensorflow Hub 链接https://tensorflow.google.cn/hub


今天,我们很高兴发布三个全新的 USE 多语言模块,这三个模块将提供更多功能并能实现多项应用。前两个模块提供了多语言模型,可用于检索语义文本相似度,且其中一个模块对检索性能进行了优化,另一个则优化了运行速度并可减少内存占用。第三个模型专用于 16 种语言的问答检索 (USE-QA),代表一种全新的 USE 应用。与原始的英文版 USE 模型类似,我们同样使用多任务双编码器框架训练以上三个多语言模块,同时还使用已开发的多项技术来改进带有附加边际 softmax 的双编码器。这三个模块的设计不仅保持良好的翻译学习性能,还能保持出色的执行语义检索性能。

注:三个全新的 USE 多语言模块 链接https://arxiv.org/abs/1907.04307多任务双编码器框架 链接https://arxiv.org/abs/1810.12836
附加边际 softmax 的双编码器 链接https://arxiv.org/abs/1902.08564


通用语句编码器的多任务训练结构。各类任务和任务结构均通过共享编码器层/参数相连(粉色框)


   

语义检索应用

这三个全新模块均基于语义检索架构构建而成,它们通常会将问题和答案的编码分割为独立的神经网络,进而在几毫秒内搜索数十亿种可能的答案。在使用双编码器进行高效语义检索时,关键一步在于要对预期输入查询的所有候选答案进行预编码,并将其存储于矢量数据库中(已针对解决最近邻问题作出优化)。这一做法支持快速搜索大量候选答案,且能获得较高的精确率和返回度。之后,我们会将这三个模块的输入查询编码成矢量,以便在其上执行近似的临近搜索。如此一来,我们无需进行直接查询或比较各个候选答案,即可快速找到满意的结果。该应用的典型流程如下所示:

用于测量文本相似度的典型语义检索流程



语义相似度模块

在执行语义相似度任务时,应使用相同的神经网络来对查询和候选答案进行编码。新模块可实现两种常见的语义检索任务,分别为多语言语义文本相似度检索和多语言翻译对检索。

  • 多语言的语义文本相似度检索
    在寻找具有相近语义的文本时,现有的多数方法都需要给定用于比较的文本。然而,通用语句编码器则可直接从巨型数据库中提取具有相近语义的文本。例如,在常见的FAQ搜索等类似应用中,系统可以先将所有可能带有相关答案的问题进行索引。然后,在给定用户问题后,系统便可在已知问题中搜索语义足够相近的问题,以便提供答案。从维基百科的 5000 万个语句中查找相似语句时,也曾用到此种类似方法。如今,借助全新的多语言 USE 模块,您可使用任何受支持的语言实现此操作。 
注:具有相近语义的文本 链接https://ai.googleblog.com/2018/05/advances-in-semantic-textual-similarity.html查找相似语句 链接
https://medium.com/@vineet.mundhra/finding-similar-sentences-using-wikipedia-and-tensorflow-hub-dee2f52ed587
  • 多语言的翻译对检索
    新发布的模块还可用于挖掘翻译对,进而训练神经机器翻译系统。若给定一种语言的源语句(“请问洗手间怎么走?”),这些模块便可在其他任何受支持的语言中找到可能的目标语译文(如“¿Cómo llego al baño?”)。

这两个全新的语义相似度模块均具有跨语言特性。例如,若给定中文输入内容,则不论其以何种语言表示,模块均可找到最佳候选结果。此通用性对于未能在互联网上表达的语言尤为有用。例如,Chidambaram 等人(2018) 已验证过这些模块的早期版本,虽然在单语言环境(如英语)中进行训练能够完成语义的分类,但是在最终系统中仍能支持其他多种语言。

注:Chidambaram 等人(2018)  链接https://arxiv.org/abs/1810.12836



用于问答检索的 USE

USE-QA 模块可将 USE 架构拓展至问答检索应用,这些应用通常会接受输入查询,并从大型文档集中查找相关答案,答案为文档、段落乃至语句层级的索引。该模块使用问题编码网络对输入查询进行编码,并通过答案编码网络对候选答案进行编码。 

注:问答检索应用 链接https://arxiv.org/abs/1907.04780

对神经答案检索系统的操作进行可视化。北极的蓝点代表问题矢量。其他各点代表各类答案的嵌入。标红部分为正确答案,由于其会最小化角距,因而是与问题“最匹配”的答案。此图中的点均由真实的 USE-QA 模型生成,但为便于向读者展示,我们已将其由 ℝ500 向下投射至 ℝ3


此外,问答检索系统还依赖于其对语义的理解能力。例如,假设对 Google Talk to Books 系统输入一个合理查询;该系统发布于 2018 年初,可支持搜索超过 10 万本书的语句级索引。输入查询内容“哪种香味可以让人想起往事?”后,系统将生成如下结果:“对我来说,茉莉花香和法国金枪鱼沙拉三明治的气味会让我想起无忧无虑的整个童年时光。”无需指定任何显式规则或替换项,矢量编码即可检测到术语香味和气味之间的语义相关性。USE-QA 模块所带来的优势便是,它可将此类问答检索任务扩展至多语言应用。 

注:哪种香味可以让人想起往事?链接https://books.google.com/talktobooks/query?q=What%20fragrance%20brings%20back%20memories%3F



致研究人员和开发者

我们乐于与研究社群共享通用语句编码器系列的最新成果,也很期待日后将会发掘的其他应用方面。社群成员既可原封不动地使用这些模块,也可使用特定领域的数据进行微调。最后,我们还将在 Cloud AI Workshop 开设自然语言的语义相似性专页,以进一步推动该领域的研究。

注:自然语言的语义相似性 链接https://aihub.cloud.google.com/u/0/p/products%2F069e31ff-9dd1-4681-a8fe-06ec2ebe490f



致谢

感谢 Mandy Guo、Daniel Cer、Noah Constant、Jax Law 和 Muthuraman Chidambaram 在核心建模方面的贡献,感谢 Gustavo Hernandez Abrego、Chen Chen 和 Mario Guajardo-Cespedes 为基础架构和 Colab 所作出的努力,同时还要感谢 Steve Yuan、Chris Tar、Yunhsuan Sung、Brian Strope 和 Ray Kurzweil 对模型架构所做的积极讨论。




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存