我们可以在推荐系统中使用嵌入或潜在向量吗?

数据挖掘 机器学习 推荐系统 词嵌入 嵌入
2021-09-16 18:11:33

我很难理解为什么人们使用他们找到的任何向量作为推荐系统的候选者。

在我看来,推荐系统需要一个距离代表相似性的空间。当然,在构建这样的空间之前,首先需要确定要使用的距离类型(欧几里得、角度或其他任何距离)。然后你需要一个模型(假设我们正在谈论 ML)来将你的输入(可以是图像、文本或其他任何东西)映射到该空间中的某个点。这个模型的一个主要方面是它知道我们定义的距离类型。如果模型中没有距离的概念,那么模型的输出肯定不会具有“距离意味着相似”的属性。

我问这个问题是因为我看到人们使用他们找到的任何向量来构建推荐系统。这是一个将 VAE 的潜在向量用于推荐系统的示例:

https://developer.nvidia.com/blog/building-recommender-systems-faster-using-jupyter-notebooks-from-ngc/

我还看到人们以同样的方式使用fastText词嵌入。我知道所有这些嵌入/潜在向量在它们的空间中形成具有一些有趣模式的集群。但我认为这不足以假设推荐系统的“距离代表相似性”要求。

如果我在这里遗漏任何东西,请告诉我。

2个回答

您说得对,将相似度映射到距离的推荐系统很有用。

矢量表示很有用,因为大多数机器学习学习工具都是基于线性代数的。矢量表示将原始数据编码为适合机器学习的形式。

“任何”向量表示比没有向量表示更有用。例如,one-hot 编码通常比不包含该功能更有用。然而,one-hot 编码中的距离与相似度无关。

更有用的是语义向量(例如 word2vec 和相关技术)。语义向量将上下文含义映射到学习向量空间中的位置。这是距离代表相似性的一个例子。

你是绝对正确的——词嵌入之间的“距离”并不自动意味着它们在语义上是自动相似的!这是一个普遍的误解。这更多是因为当您针对一个目标进行训练时,某些单词可以相互替代使用,因此它们可以在神经网络内部具有相似的表示(因此相似的嵌入,因此减少了嵌入之间的距离) . 然而,这绝对不意味着尽管词嵌入相似,但词的含义一定相似!

但是,可以训练模型以使相似的句子/单词具有相似的嵌入。Universal Sentence Encoder 就是这种情况,它被训练成相似的词和相似的句子相对于其他词具有较高的余弦相似度。这种训练方法有多种名称:孪生神经网络/一次性学习/度量学习。同样,我们所说的“相似”可以属于许多不同的定义——例如——“问题”可以与“答案”“相似”,因此它们的嵌入可以被训练为彼此接近——与文本和图像相同!

现在,为了构建推荐引擎,您需要获得一个项目和另一个已购买项目的嵌入,并类似地对它们进行索引,以便它们的嵌入空间更接近。然后,当您索引它们时,您可以立即获取特定项目的最近邻居并将它们作为结果返回。

我建议您自己尝试其中一些应用程序并尝试各种模型/数据!这些将帮助您探索一些相当有趣的结果!以下是一些可帮助您入门的快速入门:

文本到图像搜索 https://docs.relevance.ai/docs/quickstart-text-to-image-search

问答: https ://docs.relevance.ai/docs/quickstart-question-answering

“语义文本”搜索: https ://docs.relevance.ai/docs/quickstart-text-search

免责声明:我在 Relevance AI 工作并帮助创作/编辑链接的快速入门。