Google语义文本相似性研究的进步,可为智能产品提供必要的技术
2018年05月18日 由 浅浅 发表
76593
0
最近,基于神经网络的自然语言理解研究的快速发展,特别是学习语义文本表征,为全新产品提供必要的技术,如Smart Compose和Talk to Books。它还可以帮助提高基于有限的训练数据量的自然语言任务性能,例如,从少至100个标记示例中构建强大的文本分类器。
下面,我们讨论两篇论文,关于语义表征研究方面的最新进展,以及两种可在TensorFlow Hub上下载的新模型,我们希望开发人员用它来构建新的应用程序。
语义文本相似性
在“Learning Semantic Textual Similarity from Conversations”论文中,我们引入了一种学习语义文本相似度的句子表征新方法。如果句子具有类似的回答,则它们在语义上相似。例如,“How old are you?”以及“What is your age?”都是关于年龄的问题,可以得到类似的回答,例如“我20岁”。相比之下,虽然“How are you?”和“How old are you?”包含的单词几乎相同,但它们的含义却相差甚远,导致了不同的回答。
如果句子可以通过相同的答案来回答,那么句子在语义上是相似的。否则,它们在语义上是不同的。
在这项工作中,我们的目标是通过回答分类任务学习语义相似性:给定一个对话输入,从一批随机选择的回答中分出正确的回答。但是,最终目标是学习一个可以返回表示各种自然语言关系(包括相似性和相关性)的编码模型。通过添加另一个预测任务(在这种情况下使用SNLI 蕴涵数据集),并迫使双方共享编码层,我们用相似的措施甚至得到更出色的表现,如STSBenchmark(一个句子相似度基准)和CQA任务B(问题/问题相似性任务)。这是因为逻辑蕴涵与简单等价不同,为学习复杂的语义表征提供了更多的信号。
对于给定的输入,分类相当于潜在候选的排名问题。
通用句子编码器
在“通用句子编码器”中,我们引入了一种模型,通过添加更多任务来扩展上述多任务训练,并基于skip-thought-like model对给定的文本选择的句子进行预测。然而,我们不是使用原始skip-thought-like model中的解码器架构,而是通过共享编码器的方式利用纯编码架构来驱动预测任务。这种方式训练时间大大减少,同时保持包括情感和语义相似度分类在内的各种传输任务的性能。其目的是提供一种单一的编码器,可支持尽可能广泛的应用,包括释义检测,相关性,聚类和自定义文本分类。
通过来自TensorFlow Hub Universal Sentence Encoder的输出比较成对语义相似性。
正如我们的论文中所描述的,通用句子编码器模型的一个版本使用深度平均网络(DAN)编码器,而第二个版本使用更复杂的自助网络架构Transformer。
如通用句子编码器中所述的多任务训练。各种任务和任务结构通过共享编码器层/参数(灰色框)加入。
随着体系结构更复杂,该模型在各种情感和相似度分类任务上的表现都优于简单的DAN模型,而短句子的表现稍微慢一些。然而,随着句子长度的增加,使用Transformer模型的计算时间显着增加,而随着句子长度的增加,DAN模型的计算时间几乎保持不变。
新的模型
除了通用句子编码器模型,我们也在TensorFlow Hub共享两个新的模型:Universal Sentence Encoder - Large和Universal Sentence Encoder - Lite。这些是预训练的Tensorflow模型,返回可变长度文本输入的语义编码。这些编码可用于语义相似性度量,相关性,分类或自然语言文本的聚类。
The Large model使用我们第二篇论文中介绍的Transformer编码器进行训练。它针对需要高精度语义表征的场景以及以速度和大小为代价的最佳模型性能。
为了显著减少词汇量大小,这是模型大小的主要贡献者,Lite模型使用单词句子而不是单词进行训练。它针对内存和CPU等资源有限的场景,例如基于设备或基于浏览器来实现。
总结
我们很高兴与社区分享这项研究和这些模型。我们在这里展示的只是最开始的一步,仍然存在许多重要的研究问题,例如将技术扩展到更多语言(上述模型目前支持英语)。我们也希望进一步开发这种技术,能够理解段落甚至文档级别的文本。为了实现这些任务,可能会出现真正通用的编码器。