推荐系列(二):生成候选者概述

简介: 生成候选者概述在上一节介绍了推荐系统的基本框架:可以看到,生成候选人(generate candidate)是推荐的第一阶段,也被称作retrieve。给定查询,系统生成一组相关候选者。下表显示了两种常见的候选生成方法:类型定义实例基于内容的过滤使用项目之间的相似性来推荐与...

生成候选者概述

在上一节介绍了推荐系统的基本框架:
在这里插入图片描述

可以看到,生成候选人(generate candidate)是推荐的第一阶段,也被称作retrieve。给定查询,系统生成一组相关候选者。下表显示了两种常见的候选生成方法:

类型 定义 实例
基于内容的过滤 使用项目之间的相似性来推荐与用户喜欢的项目类似的项目 如果用户A观看过两个可爱的猫视频,则系统可以向该用户推荐可爱的动物视频
协同过滤 同时使用查询和项目之间的相似性 来提供推荐 如果用户A类似于用户B,并且用户B喜欢视频1,则系统可以向用户A推荐视频1(即使用户A没有看到任何类似于视频1的视频)

Embedding Space

基于内容和协作过滤都将每个项目和每个查询(或上下文)映射到公共嵌入空间中的嵌入向量

$$ E = R^d $$

。通常,嵌入空间是低维的(d远小于语料库的大小),并且捕获事物或查询集的一些潜在结构。类似的项目(例如通常由同一用户观看的YouTube视频)最终会在嵌入空间中靠近在一起。“亲密度”的概念由相似性度量定义。

额外资源: projector.tensorflow.org是一个可视化嵌入的交互式工具。

相似度量

相似性度量是一种函数

$$ s: E×E→R $$

,输入一对embedding 向量并返回一个标量来衡量它们的相似性。embedding 向量可以用于候选生成,如下所示:给定查询嵌入

$$ q∈E $$

,系统查找项目嵌入

$$ x∈E $$

接近 q,即具有高相似性的向量对

$$ s(x, q) $$

为了确定相似程度,大多数推荐系统依赖于以下一个或多个相似度量方法:

  • 余弦(cosine);
  • 点积(dot product);
  • 欧氏距离(Euclidean distance);

余弦|Cosine

衡量两个向量之间角度的余弦,

$$ s(q, x)= cos(q, x) $$

点积|Dot product

两个向量的点积是

$$ s(q, x) = \langle q, x \rangle = \sum_{i = 1}^d q_i x_i $$

。它也是由

$$ s(q, x) = \|x\| \|q\| \cos(q, x) $$

(角度的余弦乘以规范的乘积)。因此,如果embedding向量被标准化后,则点积和余弦这两种方法等价。

欧氏距离|Euclidean distance

这是欧几里得空间的通常距离,

$$ s(q, x) = \|q - x\| = \left[ \sum_{i = 1}^d (q_i - x_i)^2\right]^{\frac{1}{2}} $$

。距离越小意味着相似性越高。注意,当embedding向量被归一化时,平方欧几里德距离与点积(和余弦)一致,因为在这种情况下

$$ \frac{1}{2}\|q - x\|^2 = 1 - \langle q, x \rangle $$

比较相似度量

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

考虑上图中的示例。黑色矢量表示查询embedding向量。其他三个embedding向量(项目A,项目B,项目C)表示候选项目。使用不同的相似性度量方法,得到的项目排序有不同的结果。

使用三个相似性度量来确定项目顺序:余弦,点积和欧几里德距离,答案如下:

答案


项目A长度最长,其标量最大,使用点积方法排名最高。项目C与查询向量具有最小角度,因此根据余弦相似性排名最高。物品B在距离上最接近查询,因此使用欧几里德距离排名最高:

Image showing the differences in the ranking induced by each similarity measure.


如何选择相似度量方法?

与余弦相比,点积相似性对embedding向量的范数更加敏感。也就是说,embedding向量的范数越大,相似性越高并且项目被推荐的可能性越大,因此给出的建议如下:

  • 在训练集中经常出现的项目(例如,热门流行的视频)往往具有大范数的嵌入向量。如果需要捕获流行度信息,那么更应该选择点积这种方法。但是,这种方法将导致流行的item最终可能会主导推荐。在实践中,可以使用其他变体的相似性度量,而不太强调项目的范数。例如,定义

$$ s(q, x) = \|q\|^\alpha \|x\|^\alpha \cos(q, x) $$

  • 在训练期间很少出现的项目,可能不会经常被更新。因此,如果它们以大规范初始化,则系统可以推荐出稀有项目而不是更相关的项目。为了避免此问题,需要注意embedding向量的初始化,并使用适当的正则化。

总结

  • 候选者的生成对于推荐系统是第一步,也是最关键的一部分,召回的事物好坏之间影响后续的推荐进程;
  • 如何获得候选者,一般是根据embedding向量的相似度来得到,相似度量方法常见的有三种:余弦距离,点积,以及欧式距离;
  • 根据具体的推荐业务及侧重点,选择合适的相似度量方法;
目录
相关文章
二阶锥松弛在配电网最优潮流计算中的应用matlab
二阶锥松弛在配电网最优潮流计算中的应用matlab
|
10月前
|
传感器 IDE 开发工具
如何在 Arduino 和 Raspberry Pi 上实现相同的功能
本文介绍了如何在Arduino和Raspberry Pi上实现相同的功能,通过对比两种平台的硬件和软件特性,帮助读者选择最适合项目的开发板,并提供实用的编程技巧和示例代码。
|
6月前
|
传感器 人工智能 自然语言处理
《DeepSeek MoE架构下,动态专家路由优化全解析》
DeepSeek的混合专家模型(MoE)架构以其独特的设计理念和卓越性能在大模型领域崭露头角。MoE架构模拟人类分工协作,由多个专精于特定任务的“专家”模型组成,通过门控网络调度,确保每个数据得到最专业的处理。其核心亮点——动态专家路由优化技术,仅激活与任务相关的专家,减少计算开销,提升效率。这一机制显著提高了资源利用率和推理速度,并在自然语言处理、图像识别等场景中展现出巨大潜力。未来,MoE架构有望在医疗、自动驾驶等领域发挥重要作用,推动AI技术迈向新高度。
487 0
|
8月前
|
存储 人工智能 自然语言处理
AI 工程学习 - 三张图说明白什么是 RAG
RAG(检索增强生成)是一种结合信息检索和生成模型的自然语言处理框架,通过引入外部知识库(如文档库、数据库等),增强生成模型的回答准确性与相关性。其核心在于避免模型仅依赖训练数据产生不准确或“幻觉”内容,而是通过实时检索外部资料,确保回答更精准、丰富且上下文相关。RAG的实现包括建立索引(清洗、分割、嵌入存储)和检索生成(计算相似度、选择最优片段、整合提示词模板提交给大模型)。
1883 0
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
秒级响应 + 99.9%准确率:法律行业文本比对技术解析
本工具基于先进AI技术,采用自然语言处理和语义匹配算法,支持PDF、Word等格式,实现法律文本的智能化比对。具备高精度语义匹配、多格式兼容、高性能架构及智能化标注与可视化等特点,有效解决文本复杂性和法规更新难题,提升法律行业工作效率。
535 9
|
10月前
|
传感器 人工智能 监控
智慧化工厂AI算法方案
智慧化工厂AI算法方案针对化工行业生产过程中的安全风险、效率瓶颈、环保压力和数据管理不足等问题,通过深度学习、大数据分析等技术,实现生产过程的实时监控与优化、设备故障预测与维护、安全预警与应急响应、环保监测与治理优化,全面提升工厂的智能化水平和管理效能。
1333 0
智慧化工厂AI算法方案
|
存储 机器学习/深度学习 缓存
LLM 加速技巧:Muti Query Attention
MQA 是 19 年提出的一种新的 Attention 机制,其能够在保证模型效果的同时加快 decoder 生成 token 的速度。在大语言模型时代被广泛使用,很多LLM都采用了MQA,如Falcon、PaLM、StarCoder等。
335 0
|
SQL 关系型数据库 MySQL
MySQL 百万级数据量分页查询方法及其优化
MySQL 百万级数据量分页查询方法及其优化
582 0
|
机器学习/深度学习 自然语言处理 数据可视化
【论文精读】基于知识图谱关系路径的多跳智能问答模型研究
【论文精读】基于知识图谱关系路径的多跳智能问答模型研究
|
数据采集 搜索推荐 Python
扩展词库秘籍:Python利用百度搜索引擎实现以词搜词
在这篇文章中,我将教你如何使用百度搜索引擎来实现以词搜词的目的。无论是为了拓展词汇量、进行主题扩展,还是进行学习和研究,这个技巧都会让你更加高效地获取相关信息。利用百度搜索的工作原理和搜索算法,以便更好地理解搜索结果的生成过程。接下来,我会分享一个简单而有效的方法,让你能够通过一个关键词或短语来搜索到与之相关的词汇。
扩展词库秘籍:Python利用百度搜索引擎实现以词搜词

热门文章

最新文章