在给出相似输出神经网络的情况下,获得最佳匹配对的有效方法是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在给出相似输出神经网络的情况下,获得最佳匹配对的有效方法是什么?相关的知识,希望对你有一定的参考价值。

我试图想出一个神经网络,排列两对短文本(例如,stackexchange标题和正文)。根据深度学习食谱的例子,网络看起来基本上是这样的:

enter image description here

所以我们有两个输入(标题和正文),嵌入它们,然后计算嵌入之间的余弦相似度。模型的输入是[title,body],输出是[sim]。

现在我想要一个给定标题最接近的匹配体。我想知道是否有一种更有效的方法,不涉及迭代每一对(标题,正文)和计算相应的相似性?因为对于非常大的数据集,这是不可行的。

任何帮助深表感谢!

答案

迭代每个可能的数据对确实不是很有效。相反,您可以使用模型提取标题和文本正文的所有嵌入,并将它们保存在数据库(或简单的.npy文件)中。因此,您不使用模型输出相似性分数,而是使用模型输出嵌入(来自嵌入层)。

在推理时,您可以使用库进行有效的相似性搜索,例如faiss。给定一个标题,您只需查找其嵌入并在所有人体嵌入的整个嵌入空间中搜索,以查看哪些获得最高分。我自己使用过这种方法,并且能够在100毫秒内搜索1M矢量。

以上是关于在给出相似输出神经网络的情况下,获得最佳匹配对的有效方法是什么?的主要内容,如果未能解决你的问题,请参考以下文章

P1140 相似基因

如何使用Tensorflow获得数组的所有元素与同一数组中的所有其他元素的余弦相似度

Android AudioRecord - 在没有库的情况下获得 FFT 的最佳方式

检测图像中的相似对象

相似代码检测器

在没有 Softmax 的情况下标准化输出