语义文本相似度研究进展
来源 | Tensorflow
出品 | 磐创AI技术团队
【磐创AI导读】:本文授权转载自Tensorflow。通过 Google 语义文本相关研究最新进展的论文,以及可在 TensorFlow Hub 上下载的两个新模型,向大家介绍语义文本相似度研究进展。欢迎大家点击上方蓝字关注我们的公众号:磐创AI。(发布人:Google AI 软件工程师 Yinfei Yang 和工程经理 Chris Tar)
近年来,“基于神经网络的自然语言识别”相关的研究取得了飞速进展,特别是在学习语义的文本表示方面,这些进展有助于催生一系列真正新奇的产品,例如智能撰写(Gmail 的辅助邮件创作)和 Talk to Books(访问文末的链接,试着与书籍对话)。还有助于提高训练数据量有限的各种自然语言任务的性能,例如,通过仅仅 100 个标记示例构建强大的文本分类器。
下面我们将讨论两篇关于 Google 语义表示相关研究最新进展的论文,以及可在 TensorFlow Hub 上下载的两个新模型,我们希望开发者使用这些模型来构建令人兴奋的新应用。
TensorFlow Hub 是一个管理、分发和检索用于 TensorFlow 的可重用代码(模型)的管理工具,了解更多可以查看(https://tensorflow.google.cn/hub/)
语义文本相似度
在“Learning Semantic Textual Similarity from Conversations”中,我们引入了一种新的方法来学习语义文本相似度的语句形式。可以直观理解为,如果句子的答复具有相似的分布,那么它们在语义上是相似的。例如,“你多大了?” (How old are you?) 和“你几岁了?” (What is your age?) 都是关于年龄的问题,可以通过类似的答复来回答,例如“我 20 岁” (I am 20 years old)。相比之下,虽然“你好吗?” (How are you?) 和“你多大?” (How old are you?) 包含的英文单词几乎相同,但它们的含义却大相径庭,因而答复也不同。
如果句子可以通过相同的答复来回答,那么它们在语义上是相似的。否则,它们在语义上是不同的。
在这项研究中,我们的目标是通过答复分类任务学习语义相似度:给定一个对话输入,我们希望从一批随机选择的答复中选出正确的答复。但是,最终目标是学习一个可以返回表示各种自然语言关系(包括相似度和相关性)编码的模型。通过添加另一个预测任务(在本例中为 SNLI 蕴含数据集),并通过共享编码层强制执行,我们在相似度度量方面获得了更好的性能,例如 STSBenchmark(句子相似度基准)和 CQA 任务 B(问题/问题相似度任务)。这是因为逻辑蕴含与简单的等价有很大不同,并且更有助于学习复杂的语义表示。
对于给定的输入,可将分类视为潜在候选项排名问题。
Universal Sentence Encoder
“Universal Sentence Encoder”一文中引入了一个模型,此模型通过增加更多的任务对上述多任务训练进行了扩展,我们使用类似于 skip-thought 的模型 (论文链接在文末)(可以在给定的文本范围内预测句子)来训练它们。但是,尽管原始 skip-thought 模型中采用的是编码器-解码器架构,我们并未照搬使用,而是通过共享编码器的方式使用了只有编码器的架构来驱动预测任务。通过这种方式可以大大缩短训练时间,同时保持各种传输任务的性能,包括情感和语义相似度分类。目的是提供一种单一编码器来支持尽可能广泛的应用,包括释义检测、相关性、聚类和自定义文本分类。
基于 TensorFlow Hub Universal Sentence Encoder 的输出进行的语义相似度成对比较。
正如我们的论文所述,Universal Sentence Encoder 模型的一个版本使用了深度平均网络 (DAN) 编码器,而另一个版本则使用了更复杂的自助网络架构 – Transformer。
“Universal Sentence Encoder”中所述的多任务训练。各种任务和任务结构通过共享编码器层/参数(灰色框)连接。
对于更复杂的架构而言,与相对简单的 DAN 模型相比,此模型在各种情感和相似度分类任务上的表现更加出色,而短句子方面的速度只是稍微慢一些。然而,随着句子长度的增加,使用 Transformer 的模型的计算时间显著增加,而同等条件下,DAN 模型的计算时间几乎保持不变。
新模型
除了上述 Universal Sentence Encoder 模型外,我们还将在 TensorFlow Hub 上分享两个 新 模型:Universal Sentence Encoder – Large 和 Universal Sentence Encoder – Lite。这些都是预训练的 Tensorflow 模型,可返回可变长度文本输入的语义编码。这些编码可用于语义相似度度量、相关性、分类或自然语言文本的聚类。
-
Large 模型使用 Transformer 编码器进行训练,我们的第二篇论文进行了介绍。此模型适用于需要高精度语义表示以及要求以速度和大小为代价获得最佳模型性能的场景。
-
Lite 模型基于 Sentence Piece 词汇而非单词进行训练,以显著减少词汇量,而词汇量则显著影响模型大小。此模型适用于内存和 CPU 等资源有限的场景,例如基于设备端或基于浏览器的实现。
我们很高兴与社区分享本研究成果和这些模型。我们相信这里所展示的成果只是一个开始,并且还有许多重要的研究问题亟待解决。例如,将技术扩展到更多语言(上述模型目前仅支持英语)。我们也希望进一步开发这项技术,以便能够理解段落甚至文档级别的文本。如果能够完成这些任务,或许我们能制作出一款真正意义上的“通用”编码器。
致谢
Daniel Cer、Mario Guajardo-Cespedes、Sheng-Yi Kong 和 Noah Constant 负责训练模型,Nan Hua、Nicole Limtiaco 和 Rhomni St. John 负责传输任务,Steve Yuan、Yunhsuan Sung、Brian Strope 和 Ray Kurzweil 参与了模型架构的讨论,在此一并感谢。特别感谢 Kong-Yi-Kong 和 Noah Constant 训练 Lite 模型。
涉及的论文清单
-
Learning Semantic Textual Similarity from Conversations – https://arxiv.org/abs/1804.07754
-
Universal Sentence Encoder – https://arxiv.org/abs/1803.11175
-
Skip-Thought Vectors – https://papers.nips.cc/paper/5950-skip-thought-vectors.pdf
Talk to Books 的访问链接:https://books.google.com/talktobooks/
你也许还想看:
● 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)
● TensorFlow + Keras 实战 YOLO v3 目标检测图文并茂教程(文末有惊喜)
● 入门 | Tensorflow实战讲解神经网络搭建详细过程
Tips:欢迎大家点击最下方二维码关注我们的公众号,点击干货资源专栏或发送关键字“资源”获取更多资源推荐。关注我们的历史文章,一起畅游在深度学习的世界中。我们期待你的留言和投稿,共建交流平台。来稿请寄:voice1235@163.com。
欢迎扫码进入相应技术交流群:
点击下方 | 阅读原文 | 了解更多
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2018/05/29/f1c7e1adf3/