平衡相关性与多样性:推荐系统中的永恒博弈与 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.
相关推荐
对空六课14 分钟前
RFM分层边界变化的回溯计算
大数据·服务器·前端·数据库·人工智能·算法·数据分析
一勺思维21 分钟前
我为什么把 Agent 的核心逻辑从 LangChain 里搬出来手写
算法
碧海银沙音频科技研究院39 分钟前
基于炬芯ATS308X的LE aduio LC3编解码算法功能实现
算法
小蒋观天下41 分钟前
厂区人员徘徊游荡判别——基于时序轨迹速度的逗留行为分级算法落地
大数据·人工智能·深度学习·算法·机器学习·ai大模型
程序员清风1 小时前
堆与优先队列:从 Top K 到任务调度
java·数据结构·算法
shaibdoio1 小时前
瞬维AI技术拆解:AI获客智能体的双层漏斗算法原理
大数据·人工智能·算法
suhan1 小时前
【数据结构】四、串:串string、模式匹配BF\KMP、广义表
数据结构·后端·算法
hetao17338371 小时前
联盟场-提高组-R7 & ZYZSC-S-Round 11
c++·算法
啵啵啵鱼1 小时前
第二章 线性表
java·数据结构·算法
虾..1 小时前
计算机图形学:几何表示
算法