平衡相关性与多样性:推荐系统中的永恒博弈与 MMR 算法详解

平衡相关性与多样性:推荐系统中的永恒博弈与 MMR 算法详解

在信息过载的时代,推荐系统不仅要"猜对"用户想要什么,更要"给全"用户可能需要的一切。本文深入探讨相关性与多样性的权衡之道,并详解经典算法 MMR 的原理与实践。


一、为什么需要平衡?

1.1 推荐系统的双重使命

现代推荐系统面临一个根本性的矛盾:

  • 相关性(Relevance):衡量推荐结果与用户当前兴趣的匹配程度。高相关性意味着"精准"------用户看到的正是他想要的。
  • 多样性(Diversity):衡量推荐结果之间的差异程度。高多样性意味着"丰富"------用户能看到不同角度、不同类型的内容。

如果只追求相关性,系统会陷入信息茧房(Filter Bubble):用户越点击某类内容,系统越推送同类内容,最终视野越来越窄。反之,如果只追求多样性,推荐结果会变得杂乱无章,用户体验急剧下降。

1.2 真实世界的困境

想象一下这些场景:

场景 过度追求相关性 过度追求多样性
电商平台 购买手机后连续一周推荐手机壳 推荐完全无关的品类
视频平台 永远推送同一类型的短视频 推荐内容质量参差不齐
搜索引擎 返回多个几乎相同的网页 结果与查询意图偏离
新闻应用 只推送用户已认同的观点 信息噪音过大

正如诺贝尔经济学奖得主 Harry Markowitz 所言:"分散化是金融领域唯一的免费午餐。" 这一原则同样适用于推荐系统------在不确定性中分散赌注,才能最大化长期收益。


二、相关性与多样性的量化

2.1 相关性度量

相关性通常通过以下方式计算:

  • 协同过滤:基于用户-物品评分矩阵,计算用户与物品的匹配度
  • 内容匹配:使用余弦相似度、内积等度量查询与文档的相似性
  • 深度学习模型:通过神经网络学习用户和物品的隐式表示

2.2 多样性度量

多样性可以从多个维度衡量:

  • 基于项目的多样性:推荐列表中物品内容的差异程度(如电影类型、商品类别)
  • 基于用户行为的多样性:用户历史行为覆盖的广度
  • 基于语义的多样性:物品在嵌入空间中的分布情况

常用的数学工具包括:

  • Jaccard 指数:衡量集合间的差异
  • 信息熵:评估分布的均匀程度
  • Gini 系数:衡量推荐结果分布的不平等程度

三、MMR:最大边际相关性算法

3.1 算法起源

最大边际相关性(Maximal Marginal Relevance, MMR) 由 Carbonell 和 Goldstein 于 1998 年在 SIGIR 会议上提出,最初用于信息检索和文档摘要。如今,它已成为推荐系统、RAG(检索增强生成)和向量搜索中平衡相关性与多样性的标准工具。

3.2 核心思想

MMR 的核心洞察是:每次选择时,不仅考虑候选物品与查询的相关性,还要惩罚它与已选物品的相似性。

换句话说,MMR 问的不是"这个物品有多相关?",而是"这个物品有多相关,同时与已选物品有多不同?"

3.3 数学公式

MMR 的评分公式如下:

复制代码
MMR(d_i) = lambda * Sim(d_i, q) - (1 - lambda) * max_{d_j in S} Sim(d_i, d_j)

其中:

  • d_i:候选文档/物品
  • q:用户查询或用户画像
  • S:已选中的文档集合
  • Sim(d_i, q):候选文档与查询的相似度(相关性)
  • Sim(d_i, d_j):候选文档与已选文档的相似度(冗余度)
  • lambda:权衡参数,取值范围 0, 1

3.4 参数 lambda 的调节

lambda 是 MMR 的灵魂,控制着相关性与多样性的天平:

lambda 值 行为 适用场景
1.0 纯相关性,无多样性 用户意图非常明确(如查具体代码报错)
0.7 略微偏重相关性 一般搜索和推荐场景
0.5 均衡平衡 探索性浏览、首页推荐
0.3 偏重多样性 用户意图模糊,需要广泛覆盖
0.0 纯多样性 冷启动、发现新兴趣

原论文建议从 lambda = 0.5 开始,根据实际效果调整。

3.5 算法流程

MMR 采用贪婪迭代策略:

  1. 第一轮:选择相关性最高的物品(此时 S 为空,多样性惩罚为 0)
  2. 后续轮次 :对每个候选物品,计算 lambda*相关性 - (1-lambda)*与已选最大相似度,选择得分最高的加入 S
  3. 重复直到选出 K 个物品

关键细节在于公式中的 max :候选物品被惩罚的程度取决于它与已选物品中最相似的那个。这意味着:即使候选物品与 9 个已选物品都不同,只要与第 10 个高度相似,它就会被大幅惩罚。


四、MMR 的实践应用

4.1 在 RAG 中的应用

在检索增强生成(RAG)中,MMR 能有效解决上下文冗余问题:

当你搜索"评估和监控 LLM"时,普通向量搜索可能返回 5 篇内容几乎相同的博客。MMR 则能确保每篇检索到的文档都提供独特视角,让 LLM 获得更全面的上下文,生成更丰富的回答。

4.2 在推荐系统中的应用

以视频推荐为例:

  • 无 MMR:用户搜索"篮球",返回 10 个同一比赛的精彩集锦
  • 有 MMR:返回比赛集锦、篮球教学、球员访谈、历史经典战役等,覆盖用户可能的多重兴趣

4.3 代码实现示例

以下是 MMR 的伪代码实现:

python 复制代码
def mmr_select(query, candidates, k, lambda_param=0.5):
    selected = []
    remaining = candidates.copy()

    while len(selected) < k and remaining:
        best_score = -float('inf')
        best_item = None

        for item in remaining:
            relevance = cosine_similarity(item.vector, query)

            if selected:
                max_similarity = max(
                    cosine_similarity(item.vector, s.vector) 
                    for s in selected
                )
            else:
                max_similarity = 0

            score = (lambda_param * relevance - 
                    (1 - lambda_param) * max_similarity)

            if score > best_score:
                best_score = score
                best_item = item

        selected.append(best_item)
        remaining.remove(best_item)

    return selected

4.4 主流框架支持

如今,MMR 已被众多框架原生支持:

  • OpenSearch:通过 mmr_rerank_factory 提供向量搜索 MMR 重排序
  • Qdrant:支持 diversity 参数直接配置 MMR
  • LangChain:MaxMarginalRelevanceExampleSelector 用于少样本示例选择
  • Azure AI Search:支持 MMR 增强 RAG 检索

五、MMR 的局限与进阶

5.1 局限性

  1. 贪婪策略非最优:MMR 是贪婪算法,无法保证全局最优解
  2. 相似度度量敏感:结果高度依赖于相似度函数的选择
  3. lambda 参数需调优:不同场景需要不同的 lambda,缺乏自适应机制
  4. 仅考虑成对差异:未充分利用物品间的高阶关系

5.2 进阶方法

针对 MMR 的不足,研究者提出了多种改进:

  • xQuAD / RxQuAD:引入"意图感知"多样化,考虑用户的多个潜在兴趣方面
  • 多目标优化:将相关性和多样性同时纳入损失函数,寻找 Pareto 最优前沿
  • 矩阵补全框架:利用用户评分和物品元数据,通过凸优化统一平衡两者
  • LLM 重排序:使用大语言模型理解语义层面的多样性,进行更智能的重排序

六、总结

平衡相关性与多样性是推荐系统的永恒命题。MMR 以其简洁优雅的数学形式和广泛的适用性,成为这一领域的经典解决方案。

核心要点回顾

  1. 相关性 解决"对不对"的问题,多样性解决"全不全"的问题
  2. MMR通过 lambda*相关性 - (1-lambda)*冗余度 的公式实现动态平衡
  3. lambda 参数是关键调优点,需根据场景灵活配置
  4. 贪婪迭代策略简单高效,但存在局部最优风险
  5. 现代框架已原生支持 MMR,落地门槛大幅降低

在实际应用中,没有放之四海而皆准的"最佳平衡点"。理解业务场景、用户意图和系统目标,才能找到属于你的最优 lambda。


"在不确定性中,分散你的赌注。" ------ Harry Markowitz


参考资料:

  • Carbonell, J., & Goldstein, J. (1998). The Use of MMR, Diversity-Based Reranking for Reordering Documents and Producing Summaries. SIGIR.
  • OpenSearch Vector Search with MMR Reranking Documentation
  • Qdrant MMR Implementation Guide
  • Agrawal, A. (2025). Beyond Accuracy: Using Maximal Marginal Relevance to create more diverse and engaging recommendations.
相关推荐
青梅橘子皮1 小时前
Linux---进程控制(2)(进程程序替换)
linux·c++·算法
Shan12051 小时前
经典问题——验证栈序列
数据结构·算法
2501_906565122 小时前
勾股定理证明
算法
Shan12052 小时前
无向图的Hierholzer算法流程(二)
算法
gihigo19982 小时前
基于蒙特卡洛的异常值剔除(RANSAC + MC置信区间)—MATLAB实现
开发语言·算法·matlab
Asize3 小时前
数组数据结构底层:从灵活到陷阱
前端·javascript·算法
hairenwangmiao3 小时前
B4041 [GESP202409 四级] 区间排序
算法·排序
人道领域3 小时前
【LeetCode刷题日记】47.全排列Ⅱ
java·开发语言·算法·leetcode
漂流瓶jz3 小时前
UVA-1606 两亲性分子 题解答案代码 算法竞赛入门经典第二版
数据结构·算法·向量·aoapc·算法竞赛入门经典·atan2·浮点