AI 前线导读: 在生活中, 信息检索, 文档复制检测等领域都应用到 "语义文本相似度".Google 已经使用深度学习技术开发了许多新方法来解析语言, 如它们发布的首款面向大众的深度学习工具 word2vec. 不久前, Google 研究了新的方法, 并发布了文章来介绍这个新方法: Advances in Semantic Textual Similarity.
近年来, 基于神经网络的自然语言理解研究的最新进展, 特别是学习语义文本表示方面的研究, 可以实现真正新颖的产品, 如自动写作,"Talk to Books" 等. 它还可以帮助提高各种自然语言任务的性能, 这些任务的训练数据数量有限, 比如在只有 100 个带标记的样本中构建强大的文本分类器.
在本文中, 我们将讨论两篇关于 Google 语义表示研究最新进展的论文, 以及两种可在 TensorFlow Hub 上下载的新模型, 希望开发人员能够利用它们来构建令人兴奋的新应用.
语义文本相似度
在从会话中学习语义文本相似度(Learning Semantic Textual Similarity from Conversations)论文中, 我们引入了一种学习语义文本相似度的句子表征的新方法. 人们的直觉是, 如果句子具有相似的响应分布, 那么它们在语义上应该是相似的. 例如,"How old are you ?","What is your age ?" 都是关于年龄的问题, 这些问题都可以用类似的回答作为响应, 如 "I am 20 years old". 相比之下, 虽然 "How are you ?" 和 "How old are you ?" 包含了几乎相同的单词, 但它们的含义却大相径庭, 得到的响应也不同.
如果句子可以通过相同的反应来回答, 那么句子在语义上是相似的. 否则, 它们在语义上是不同的. 在这项工作中, 我们的目标是, 通过一种响应式分类任务来学习语义相似度, 具体思路是: 给定一个会话输入, 我们希望从一批随机选择的响应中, 对正确的响应进行分类. 但是最终目标是学习一种模型, 它可以返回代表各种自然语言关系 (包括相似度和相关性) 的编码. 通过添加另一个预测任务(在本例中是 SNLIentailment 数据集), 并通过共享编码层强制执行, 我们在相似度度量上获得了更好的性能, 例如 STSBenchmark(一个句子相似度基准度量) 和 CQA task B(衡量一个问题 / 问题相似任务). 这是因为逻辑推理与简单的等价性是完全不同的, 它为学习复杂的语义表示提供了更多的借鉴意义.
对于给定的输入, 分类被认为是针对潜在候选者的排序问题.
通用语句编码器
在 "通用语句编码器(Universal Sentence Encoder)" 中, 我们引入了一种模型, 它通过添加更多任务来扩展上述多任务训练, 并通过一种类似 skip-thought 的模型联合训练, 该模型可以预测给定文本范围内的句子. 然而, 我们没有使用最初的 skip-thought 模型中的编码器 - 解码器体系架构, 而是通过共享编码器的方式, 利用一个只有编码器的体系架构来驱动预测任务. 这种方式使得训练时间大为减少, 同时保留了各种传输任务的性能, 包括情绪和语义相似度分类等. 其目的是提供一个单一的编码器, 可以支持尽可能广泛的应用, 包括释义检测, 相关性, 聚类和自定义文本分类等.
通过对 TensorFlow Hub 通用语句编码器的输出进行配对语义相似比较. 正如我们的论文所描述的, 通用语句编码器模型的一个版本使用了一个深度平均网络(deep average network,DAN,https://www.cs.umd.edu/~miyyer/pubs/2015_acl_dan.pdf) 编码器, 而第二个版本使用了一个更复杂的自参与网络架构: Transformer(https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html).
在 "通用语句编码器" 中阐述的多任务训练. 通过共享编码器层 / 参数 (图中灰框处) 来连接各种任务和任务结构. 在更复杂的体系结构中, 该模型比简单的 DAN 模型在各种情绪和相似度分类任务上表现得更好, 而对于短句子来说, 它只是稍微慢一些. 然而, 随着句子长度的增加, 使用 Transformer 的模型计算时间显著增加, 而 DAN 模型的计算时间几乎保持不变.
新模型
除了上述的通用语句编码器模型外, 我们还在 TensorFlow Hub 上共享两个新模型: 通用语句编码器 Large(https://www.tensorflow.org/hub/modules/google/universal-sentence-encoder-large/1) 和通用语句编码器 Lite(https://www.tensorflow.org/hub/modules/google/universal-sentence-encoder-lite/1) . 这两个都是预训练的 TensorFlow 模型, 用于返回可变长度文本输入的语义编码. 这些编码可用于语义相似度度量, 相关性, 分类或自然语言文本的聚类.
Large 模型是用我们第二篇论文中提到的 Transformer 编码器进行训练的, 它针对需要高精度语义表示的场景以及以速度和大小为代价的最佳模型性能. Lite 模型是使用句子的词汇而不是用单词进行训练的, 这样做是为了显著减少词汇量, 而模型大小主要是由词汇量决定的. 该模型针对的是内存和 CPU 等资源有限的场景, 比如基于设备或基于浏览器的实现. 我们很高兴能与社区分享这项研究和这些模型. 我们认为, 我们在本文中所述的只是一个开始, 还有一些重要的研究问题有待解决, 比如将技术扩展到更多的语言 (上面讨论的模型目前仅支持英语). 我们还希望进一步开发这项技术, 以便它能够理解段落甚至文档级别的文本. 在能够实现这些任务时, 通用编码器才会有望真正实现.
来源: https://juejin.im/post/5b0cc729f265da08ca02a1c4