和谐共存:相关性与多样性在MMR中共舞
推荐系统【多样性算法】系列文章(置顶)
1.推荐系统重排:MMR 多样性算法
2.推荐系统重排:DPP 多样性算法
引言
在信息检索和推荐系统中,提供既与用户查询高度相关的文档或项目,同时确保结果的多样性是一个关键挑战。最大边际相关性(Maximum Marginal Relevance, MMR)是一种旨在解决这一问题的算法。本文将深入探讨MMR的工作原理、公式解析、实现细节,并通过具体案例说明其应用价值。
一、 背景
最大边际相关性(Maximum Marginal Relevance, MMR)算法是由Jaime Carbonell 和 Jeffrey Goldstein 在 1998年 提出的。Carbonell 是卡内基梅隆大学计算机科学系的教授,而 Goldstein 当时是他的博士生。
在1990年代末期,随着互联网的迅速发展和数字内容的爆炸式增长,信息检索系统面临着一个新的挑战:如何在提供大量相关结果的同时避免冗余和重复。传统的信息检索方法主要关注于提高结果的相关性,即返回尽可能多的与用户查询匹配的内容。然而,这种方法可能会导致结果中存在大量相似度极高的项目,从而降低了用户体验。
此外,在文本摘要生成领域,研究者们也遇到了类似的问题——自动生成的摘要中可能包含过多重复的信息,无法有效地传达文档的主要观点。为了解决这些问题,Carbonell 和 Goldstein 提出了MMR算法,旨在平衡相关性和多样性,以提升信息检索和自动摘要的质量。
MMR最初被设计用于解决文本摘要中的重复问题,但其理念很快就被推广到更广泛的领域,如搜索引擎优化、社交媒体内容推荐、在线广告投放等。通过MMR算法,不仅可以确保推荐或检索的结果高度相关,还能增加结果的多样性,使得提供的信息更加丰富和个性化,满足用户的多样化需求。
二、算法介绍
1. 相关背景补充 – 相对补集
1.1 定义
在集合论中,相对补集(也称为差集)是指从一个集合 A A A中移除所有属于另一个集合 B B B的元素后剩下的元素组成的集合。换句话说,它包含那些仅属于集合 A A A但不属于集合 B B B的元素。如果集合 A A A和集合 B B B是两个给定的集合,那么 A A A相对于 B B B的相对补集通常记作 A ∖ B A \setminus B A∖B或 A − B A - B A−B。
1.2 表示方法
- 符号表示: A ∖ B A \setminus B A∖B
- 读法:A减去B 或 A相对于B的相对补集
- 数学定义: A ∖ B = { x ∣ x ∈ A and x ∉ B } A \setminus B = \{ x | x \in A \text{ and } x \notin B \} A∖B={x∣x∈A and x∈/B}
1.3 具体例子
考虑以下两个集合:
- A = { 1 , 2 , 3 , 4 , 5 } A = \{1, 2, 3, 4, 5\} A={1,2,3,4,5}
- B = { 3 , 4 , 6 } B = \{3, 4, 6\} B={3,4,6}
根据相对补集的定义,我们可以计算 A ∖ B A \setminus B A∖B:
- A ∖ B = { 1 , 2 , 5 } A \setminus B = \{1, 2, 5\} A∖B={1,2,5}
这是因为1、2和5是唯一存在于集合 A A A中但不在集合 B B B中的元素。
同样地,我们也可以计算 B ∖ A B \setminus A B∖A:
- B ∖ A = { 6 } B \setminus A = \{6\} B∖A={6}
这是因为6是唯一存在于集合 B B B中但不在集合 A A A中的元素。
2. MMR算法
2.1 公式
这个公式是用于最大边际相关性(Maximum Marginal Relevance, MMR)的计算,常用于信息检索和自然语言处理中,以实现搜索结果的多样化。以下是公式的详细解释:
MMR = def arg max D i ∈ R ∖ S [ λ ⋅ Sim 1 ( D i , Q ) − ( 1 − λ ) ⋅ max D j ∈ S Sim 2 ( D i , D j ) ] \text{MMR} \stackrel{\text{def}}{=} \underset{D_i \in R \setminus S}{\operatorname{arg\,max}} \left[ \lambda \cdot \text{Sim}_1(D_i, Q) - (1 - \lambda) \cdot \max_{D_j \in S} \text{Sim}_2(D_i, D_j) \right] MMR=defDi∈R∖Sargmax[λ⋅Sim1(Di,Q)−(1−λ)⋅Dj∈SmaxSim2(Di,Dj)]
2.2 公式解读
-
MMR \text{MMR} MMR:
- 这表示通过最大化MMR得分选择的文档 D i D_i Di。
-
arg max D i ∈ R ∖ S \underset{D_i \in R \setminus S}{\operatorname{arg\,max}} Di∈R∖Sargmax:
- 这部分从集合 R ∖ S R \setminus S R∖S (2.2.1中的相对补集)中选择文档 D i D_i Di。这里 R R R 是所有文档的集合, S S S 是已经选择的文档集合。 arg max \operatorname{arg\,max} argmax 操作符找到使括号内表达式最大化的文档 D i D_i Di。
-
λ ⋅ Sim 1 ( D i , Q ) \lambda \cdot \text{Sim}_1(D_i, Q) λ⋅Sim1(Di,Q):
- λ \lambda λ 是一个介于0和1之间的权重因子。
- Sim 1 ( D i , Q ) \text{Sim}_1(D_i, Q) Sim1(Di,Q) 是文档 D i D_i Di 和查询 Q Q Q 之间的相似度分数。这部分确保选择的文档与查询相关。
-
( 1 − λ ) ⋅ max D j ∈ S Sim 2 ( D i , D j ) (1 - \lambda) \cdot \max_{D_j \in S} \text{Sim}_2(D_i, D_j) (1−λ)⋅maxDj∈SSim2(Di,Dj):
- ( 1 − λ ) (1 - \lambda) (1−λ) 是另一个权重因子,与 λ \lambda λ 互补。
- max D j ∈ S Sim 2 ( D i , D j ) \max_{D_j \in S} \text{Sim}_2(D_i, D_j) maxDj∈SSim2(Di,Dj) 是文档 D i D_i Di 与集合 S S S 中任意文档 D j D_j Dj 之间的最大相似度分数。这部分确保选择的文档与已选文档之间有足够的差异性。
敲黑板,划重点
- MMR 的目标是在确保文档与查询相关的同时,增加文档之间的多样性。
- λ \lambda λ 参数控制了相关性和多样性的平衡:
- 如果 λ \lambda λ 接近1,则公式更侧重于相关性。
- 如果 λ \lambda λ 接近0,则公式更侧重于多样性。
2.2.3 举个 🌰
假设我们有一组文档 R = { D 1 , D 2 , D 3 , D 4 } R = \{D_1, D_2, D_3, D_4\} R={D1,D2,D3,D4} 和一个查询 Q Q Q。假设 S = { D 1 } S = \{D_1\} S={D1} 是已经选择的文档集合。我们需要选择下一个要添加到 S S S 中的文档。
- 计算每个 D i ∈ R ∖ S = { D 2 , D 3 , D 4 } D_i \in R \setminus S = \{D_2, D_3, D_4\} Di∈R∖S={D2,D3,D4} 与查询 Q Q Q 的相似度 Sim 1 ( D i , Q ) \text{Sim}_1(D_i, Q) Sim1(Di,Q)。
- 计算每个 D i ∈ R ∖ S D_i \in R \setminus S Di∈R∖S 与集合 S S S 中的文档 D 1 D_1 D1 的相似度 Sim 2 ( D i , D 1 ) \text{Sim}_2(D_i, D_1) Sim2(Di,D1)。
- 使用公式计算每个 D i D_i Di 的 MMR 得分。
- 选择 MMR 得分最高的文档。
这个过程确保了选择的文档既与查询相关,又与其他已选文档具有足够的差异性,从而提供了一组平衡的结果。
三、案例分析:电影推荐系统
假设我们正在构建一个电影推荐系统,用户喜欢科幻片,但不希望看到太多来自同一个导演的作品。我们的目标是使用MMR算法来挑选出既符合用户偏好的几部电影,同时确保这些电影出自不同的导演,以提供多样化的内容。
给定数据:
- 查询(Query, Q Q Q):用户偏好为“科幻”。
- 候选文档集合(Candidate Set, R R R):包含10部不同导演的科幻电影。
- 已选文档集合(Selected Set, S S S):开始时为空集 S = { } S = \{\} S={}。
- 相似度函数(Similarity Function, s i m ( x , y ) sim(x, y) sim(x,y)):衡量两部电影之间的相似性,基于导演、演员、类型等因素。
- 相关性函数(Relevance Function, s i m ( Q , i ) sim(Q, i) sim(Q,i)):衡量每部电影与用户偏好的匹配程度。
- 平衡参数(Lambda, λ \lambda λ):设定为0.7,意味着更重视相关性,但仍保留一定多样性。
MMR公式:
[ MMR(i) = \lambda \cdot sim(Q, i) - (1-\lambda) \cdot max_{j \in S} sim(i, j) ]
步骤 1:初始化
- S = { } S = \{\} S={},即尚未选择任何电影。
步骤 2:计算每个候选项的MMR得分
对于 R ∖ S R \setminus S R∖S中的每一部电影,根据上述公式计算其MMR得分。假设计算结果如下(简化版):
电影编号 | s i m ( Q , i ) sim(Q, i) sim(Q,i) | m a x j ∈ S s i m ( i , j ) max_{j \in S} sim(i, j) maxj∈Ssim(i,j) | MMR得分 |
---|---|---|---|
1 | 0.9 | N/A | 0.63 |
2 | 0.85 | N/A | 0.595 |
… | … | … | … |
10 | 0.7 | N/A | 0.49 |
注意,在第一次迭代中,由于 S S S为空,所以 m a x j ∈ S s i m ( i , j ) max_{j \in S} sim(i, j) maxj∈Ssim(i,j)对所有候选项都为N/A,因此MMR得分仅由相关性决定。
步骤 3:选择最优项
从表中可以看到,电影1的MMR得分最高,因此我们将它加入到 S S S中: S = { 1 } S = \{1\} S={1}。
步骤 4:迭代更新
重复步骤2和3,直到满足特定条件,如达到预设的结果数量或者没有合适的候选项为止。在每次迭代中,重新计算 R ∖ S R \setminus S R∖S中每个候选项的MMR得分,并考虑它们与 S S S中已有电影的相似性。例如,第二次迭代可能如下所示:
电影编号 | s i m ( Q , i ) sim(Q, i) sim(Q,i) | m a x j ∈ S s i m ( i , j ) max_{j \in S} sim(i, j) maxj∈Ssim(i,j) | MMR得分 |
---|---|---|---|
2 | 0.85 | 0.3 | 0.525 |
… | … | … | … |
10 | 0.7 | 0.2 | 0.44 |
最终,通过多次迭代,我们可以得到一组既与用户喜好高度相关又具有多样性的电影推荐列表。
四、总结
-
平衡相关性和多样性:MMR算法的核心在于它能够平衡信息检索或推荐系统的两个关键方面——相关性和多样性。这使得推荐内容不仅贴合用户的兴趣,还能覆盖更广泛的领域。
-
相对补集的应用:通过从未选集合 R ∖ S R \setminus S R∖S中挑选最佳候选项,MMR确保了每次推荐都是新颖且未见过的内容,避免了重复推荐的问题。
-
灵活性:MMR允许调整平衡参数 λ \lambda λ,以便根据具体应用场景的需求来权衡相关性和多样性的比重。当 λ \lambda λ接近1时,算法更加注重相关性;而当 λ \lambda λ接近0时,则更强调多样性。
-
广泛适用性:尽管最初是为了文本摘要生成而设计,MMR已经被成功应用于搜索引擎优化、社交媒体内容推荐、在线广告投放等多个领域,证明了其广泛的适应性和有效性。
-
简单易实现:MMR算法概念清晰,实现起来相对简单,只需要定义好相似度和相关性度量方法即可应用到各种信息检索和推荐任务中。