在给出相似输出神经网络的情况下,获得最佳匹配对的有效方法是什么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在给出相似输出神经网络的情况下,获得最佳匹配对的有效方法是什么?相关的知识,希望对你有一定的参考价值。
我试图想出一个神经网络,排列两对短文本(例如,stackexchange标题和正文)。根据深度学习食谱的例子,网络看起来基本上是这样的:
所以我们有两个输入(标题和正文),嵌入它们,然后计算嵌入之间的余弦相似度。模型的输入是[title,body],输出是[sim]。
现在我想要一个给定标题最接近的匹配体。我想知道是否有一种更有效的方法,不涉及迭代每一对(标题,正文)和计算相应的相似性?因为对于非常大的数据集,这是不可行的。
任何帮助深表感谢!
答案
迭代每个可能的数据对确实不是很有效。相反,您可以使用模型提取标题和文本正文的所有嵌入,并将它们保存在数据库(或简单的.npy文件)中。因此,您不使用模型输出相似性分数,而是使用模型输出嵌入(来自嵌入层)。
在推理时,您可以使用库进行有效的相似性搜索,例如faiss。给定一个标题,您只需查找其嵌入并在所有人体嵌入的整个嵌入空间中搜索,以查看哪些获得最高分。我自己使用过这种方法,并且能够在100毫秒内搜索1M矢量。
以上是关于在给出相似输出神经网络的情况下,获得最佳匹配对的有效方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Tensorflow获得数组的所有元素与同一数组中的所有其他元素的余弦相似度