候选生成概览

候选生成是第一阶段建议。根据查询,系统会生成一组相关候选字词。下表显示了两种常见的候选生成方法:

类型定义示例
基于内容的过滤 使用商品之间的相似度推荐与用户喜欢的内容相似的商品。 如果用户 A 观看了两个可爱的猫咪视频,系统就可以向该用户推荐可爱的动物视频。
协同过滤 同时使用查询和相似内容来提供建议。 如果用户 A 与用户 B 类似,并且用户 B 喜欢视频 1,那么系统可以向用户 A 推荐视频 1(即使用户 A 未观看过任何与视频 1 相似的视频)。

嵌入空间

基于内容的过滤和协作过滤将每个项目和每个查询(或上下文)映射到共同嵌入空间\(E = \mathbb R^d\)中的嵌入向量。通常,嵌入空间是低维度的(也就是说, \(d\) 比语料库的大小小得多),并且会捕获项或查询集的某些潜在结构。相似内容(例如通常由同一用户观看的 YouTube 视频)最终在嵌入空间中彼此靠近。“接近”的概念通过相似度测量来定义。

相似度测量

相似度测量是一个函数,它接受一对嵌入并返回一个标量来衡量其相似度。 \(s : E \times E \to \mathbb R\) 这些嵌入可用于生成候选字词,例如:在查询嵌入 \(q \in E\)之后,系统会查找\(x \in E\) 接近 \(q\)的嵌入(即具有高相似度的嵌入) \(s(q, x)\)。

为确定相似度,大多数推荐系统依赖于以下一项或多项:

  • 余弦
  • 点积
  • 欧几里得距离

余弦

这只是两个向量之间角度的余弦, \(s(q, x) = \cos(q, x)\)

点产品

两个向量的点积为\(s(q, x) = \langle q, x \rangle = \sum_{i = 1}^d q_i x_i\)。角度值也为 \(s(q, x) = \|x\| \|q\| \cos(q, x)\) (角度的余弦乘以规范的乘积)。因此,如果嵌入被标准化,则点积与余弦一致。

欧几里得距离

这是欧几里得空间的常规距离, \(s(q, x) = \|q - x\| = \left[ \sum_{i = 1}^d (q_i - x_i)^2\right]^{\frac{1}{2}}\)。距离越短,相似度越高。请注意,如果归一化,则平方欧几里得的距离与点积(和余弦)一致,最高可为一个常数,因为在本例中为 \(\frac{1}{2}\|q - x\|^2 = 1 - \langle q, x \rangle\)。

显示二维嵌入空间的图片,其中包含一个查询嵌入和三个候选项。

比较相似度测量

请参考下图中的示例。黑色矢量展示了查询嵌入。其他三个嵌入向量(项 A、项 B、项 C)表示候选项。根据所使用的相似度测量,这些项的排名可能会有所不同。

通过图片,尝试使用以下三种相似度指标确定商品排名:余弦、点积和欧几里得距离。

应选择哪种相似度指标?

与余弦相比,点积相似度对嵌入的规范很敏感。也就是说,嵌入的范数越大,相似度(对于锐角项)越高,被推荐的可能性就越大。这可能会影响建议,如下所示:

  • 训练集中经常出现的内容(例如热门 YouTube 视频)往往具有具有大型规范的嵌入。如果需要捕获热门程度信息,则应首选点式产品。但是,如果您格外小心,推荐商品最终可能会在推荐中占据主导地位。在实际操作中,您可以使用其他相似度衡量变体,不太强调对相应项的常规性。例如,为一些 \(\alpha \in (0, 1)\)定义\(s(q, x) = \|q\|^\alpha \|x\|^\alpha \cos(q, x)\) 。

  • 在训练期间很少出现的内容可能不会经常更新。因此,如果它们使用大规范项进行初始化,系统可能会推荐罕见的项,而非更相关的项。为避免此问题,请注意嵌入初始化,并使用适当的正则化。我们将在第一次练习中详细说明此问题。