多模态和跨模态的文章博主在之前的都整理过了,最近对多样性比较感兴趣,但是发现做这个方向的人确实太少了(虽然在推荐里面做的人还是挺多的)。暂时把目前看到觉得还不错的文章整理一下。


Diversity
在推荐系统的目标主要是Exploitation 和 Exploration。每一模块如上图,多样性在用户体验中还是十分重要的部分。其中的多样性可分为:

  • 个体多样性:从单个用户的角度来衡量的推荐系统多样性,主要考察系统能够找到用户喜欢的冷门项目的能力。(衡量方法仍然是item之间)
  • 总体多样性:主要强调对不同用户有不同的推荐。可以通过长尾理论考察推荐系统多样性对产品销售的影响。多样性程度高的系统可以带动不太流行的商品的销量。(主要侧重user list之间的差异)
  • 时序多样性:推荐随着用户偏好(随时间)变化而改变

D i v e r s i t y = 1 − ∑ s ( i , j ) 1 2 ∣ R ( u ) ( ∣ R ( ) u ∣ − 1 ) Diversity=1-\frac{\sum s(i,j)}{\frac{1}{2} |R(u)(|R()u|-1)} Diversity=121R(u)(R()u1)s(i,j) D i v e r s i t y = 1 ∣ U ∣ ∑ D i v e r s i t y ( R ( U ) ) Diversity=\frac{1}{|U|}\sum Diversity(R(U)) Diversity=U1Diversity(R(U))

不过在检索方面,由于不存在用户和时序这种,更多是偏向于item的总体多样性,即返回的list要尽可能的多样化。

特别是在检索过程中,用户并不总是对自己的需求有一个明确的想法。当他们的目标不属于大多数相似结果所处的主要类别时,检索效率将急剧下降。多样性图像检索,以保证检索结果不仅与查询相关,而且尽可能涵盖查询的各个方面。



[WSDM2014] Latent Dirichlet Allocation based Diversified Retrieval for E-commerce Search
对于普通的检索系统来说,在不优化多样性的情况下会导致属于同一产品的冗余项杂乱,即比如搜苹果,将全部得到同样的结果,而不能识别其多样的语义。

年限比较早了,这篇论文作者的主要想法是使用LDA模型发现查询query的隐藏用户意图,然后通过在相关性+信息新颖性之间进行权衡来对用户意图进行排序(即MMR,两者之间的λ线性组合,一方面需要检索到相关的内容,另一方面需要保证多样性),最后为每个用户意图选择最具代表性的项目来显示。

Maximal Marginal Relevance,公式中S是已经被选中的集合,Sim是计算相似度。前项指的是不在S中的文档即多样性,后项是在S的文档即相关性,两者通过λ来平衡重要程度。

def MMR(itemScoreDict, similarityMatrix, lambdaConstant=0.5, topN=20):s, r = [], list(itemScoreDict.keys())while len(r) > 0:score = 0selectOne = Nonefor i in r:firstPart = itemScoreDict[i]secondPart = 0for j in s:sim2 = similarityMatrix[i][j]if sim2 > second_part:secondPart = sim2equationScore = lambdaConstant * (firstPart - (1 - lambdaConstant) * secondPart)if equationScore > score:score = equationScoreselectOne = iif selectOne == None:selectOne = ir.remove(selectOne)s.append(selectOne)return (s, s[:topN])[topN > len(s)]

最后对于多样性的度量方式:一般使用平均满意度。用户的意图出现在了list中则为1,没有则为0,用户多次点击的结果作为最后的度量。另外带topic标记的指标(后面的论文会有很多集中在主题topic上的文章)主要有三个:

  • MAP-IA:基于用户查询意图的评价指标。在MAP的基础上单独计算每个子主题用户意图的MAP再加权。
  • alpha-nDCG:在DCG的指标上扩展的,该方法奖励发现新主题惩罚主题冗余,alpha是惩罚因子。
  • ERR-IA@k:在评价结果的某文档时,根据排在前面文档的相关性计算。与MAP-IA相似,也是单独对每个主题算然后加权。

也有人使用对子主题的Precision-IA and Subtopic Recall等等。

[NIPS02018] Fast Greedy MAP Inference for Determinantal Point Process to Improve Recommendation Diversity
说到MMR,自然就有DPP了,Determinantal Point Process,即基于行列式点过程的方法。DPP通过最大后验概率估计,找到商品集中相关性和多样性最大的子集,从而作为推荐给用户的商品集,即寻找离散集合中每一个子集出现的概率。

但是建模所有子集的概率太麻烦,所以需要将复杂的概率计算转换成简单的行列式计算,并通过核矩阵的行列式计算每一个子集的概率,这样做不仅减少了计算量,而且提高了运行效率。


DPP简单来说就是建模点间斥力,让子集上的分布能够使得选择两个相似项的概率是(反)相关的。即把每个item都是向量,向量长就是item与用户的相关度,夹角是item内的相互独度,DDP认为任意k个围成的面积最大即为最优。实际操作中只需要每次加item使L行列式最大就行。

而L是在z中所有元素构成的半正定矩阵,其构造方法如下:

因为半正定,所以行列式中的各个列向量自然就是的平行多面体体积的平方了。L越大,商品与用户之间相关性越大,且商品之间多样性越丰富。伪代码中的c和d是Cholesky优化后的求解解法,推导可参照知乎。

import numpy as np
import mathclass DPPModel(object):def __init__(self, **kwargs):self.item_count = kwargs['item_count']self.item_embed_size = kwargs['item_embed_size']self.max_iter = kwargs['max_iter']self.epsilon = kwargs['epsilon']def build_kernel_matrix(self):rank_score = np.random.random(size=(self.item_count))  # 用户和每个item的相关性item_embedding = np.random.randn(self.item_count, self.item_embed_size)  # item的embeddingitem_embedding = item_embedding / np.linalg.norm(item_embedding, axis=1, keepdims=True)sim_matrix = np.dot(item_embedding, item_embedding.T)  # item之间的相似度矩阵self.kernel_matrix = rank_score.reshape((self.item_count, 1)) \* sim_matrix * rank_score.reshape((1, self.item_count))def dpp(self):c = np.zeros((self.max_iter, self.item_count))d = np.copy(np.diag(self.kernel_matrix))j = np.argmax(d)Yg = [j]iter = 0Z = list(range(self.item_count))while len(Yg) < self.max_iter:Z_Y = set(Z).difference(set(Yg))for i in Z_Y:if iter == 0:ei = self.kernel_matrix[j, i] / np.sqrt(d[j])else:ei = (self.kernel_matrix[j, i] - np.dot(c[:iter, j], c[:iter, i])) / np.sqrt(d[j])c[iter, i] = eid[i] = d[i] - ei * eid[j] = 0j = np.argmax(d)if d[j] < self.epsilon:breakYg.append(j)iter += 1return Ygif __name__ == "__main__":kwargs = {'item_count': 100,'item_embed_size': 100,'max_iter': 100,'epsilon': 0.01}dpp_model = DPPModel(**kwargs)dpp_model.build_kernel_matrix()print(dpp_model.dpp())

原文code:https://github.com/DamianStraszak/FairDiverseDPPSampling


[Neurocomputing2019] Diversified textual features based image retrieval
对于跨模态(主要讨论文本,图像)来说,对于查询的query,系统需要返回对应语义上的尽可能广泛的图片。本文作者发现文本中的许多单词被大多数图像共享,即不同的对象可能共享类似的文本特征,那么基于这些词的文本特征将淹没图像的个体属性,这将阻碍文本特征准确地反映图像之间的关系。

这篇文章就是主要在主题上进行挖掘了。模型架构如上图,作者也是用LDA构造视觉主题,然后利用文本信息来提高主题的一致性(值得注意的是这里会分为,不同图像描述的公共词和特殊词),最后构建相似图之后完成重排序。结果如上图,经过重排序后可以使检索的图像的主题更加的多样化。

[CIKM2020] Diversifying Search Results using Self-Attention Network
现有的监督方法大多贪婪地将每个候选文档与选定的文档序列进行比较,并选择下一个局部最优文档,但每个候选文档的信息效用并不相互独立,于是作者想建模文档间的关系。

但用户的query是短的,需要通过返回不同信息需求的多样化文档列表来解决上述问题。但现有方法需要贪婪的选择,忽视了关系将导致次优的排序。于是作者提出用自注意力来建模关系,并通过这种match的方法,不用再依赖贪婪的选择。

模型图如上,图中的relevance是因为文章还是做的检索文档,所以还是加入BM25等等的特征,但是思路用来做跨模态同样是可以的。最后值得注意的是这篇文章是有监督的(有理想的list标定lable)。


[ICIP2020] GRAPH PATTERN LOSS BASED DIVERSIFIED ATTENTION NETWORK FOR CROSS-MODAL RETRIEVAL
模型架构如上,图片和文本都被处理成k个特征,这里是用不同的注意力得到的k。文章主要的贡献在于,与其应用昂贵的计算整个实例空间中的所有距离(即相似度的计算),作者使用图模式loss(只是叫这个名字,实质上并不会用到Graph算法)来优化模型,即: L = L p d l + α L u d p + β L m d p L=L_{pdl}+\alpha L_{udp}+\beta L_{mdp} L=Lpdl+αLudp+βLmdp

  • Loss的第一项是成对损失反映图像-文本的相似性。 L p d l = l p ( v i , t i ) L_{pdl}=l_p(v_i,t_i) Lpdl=lp(vi,ti)
  • 第二项是未配对距离,不配对包括统一模态也包括不同模态的“不匹配”。即如果是i和j的序号意味是不是匹配的对。 l u n p = 1 n ∑ ( l p ( x i , y i ) − d ) l_{unp}=\frac{1}{n} \sum (l_p(x_i,y_i)-d) lunp=n1(lp(xi,yi)d) L u d p = l u n p ( v i , T ) + l u n p ( v i , V ) + l u n p ( t i , T ) L_{udp}=l_{unp}(v_i,T)+l_{unp}(v_i,V)+l_{unp}(t_i,T) Ludp=lunp(vi,T)+lunp(vi,V)+lunp(ti,T)
  • 第三项是相互距离保持损失,即三种未配对的之间的距离保持一致,以进一步强调跨模态实例之间的关系。 L m d p = ∣ l p ( v i , t j ) − l p ( v i , v j ) ∣ + ∣ l p ( v i , t j ) − l p ( t i , t j ) ∣ + ∣ l p ( v i , v j ) − l p ( t i , t j ) ∣ L_{mdp}=|l_p(v_i,t_j)-l_p(v_i,v_j)|+|l_p(v_i,t_j)-l_p(t_i,t_j)|+|l_p(v_i,v_j)-l_p(t_i,t_j)| Lmdp=lp(vi,tj)lp(vi,vj)+lp(vi,tj)lp(ti,tj)+lp(vi,vj)lp(ti,tj)

常用数据集


[TNNLS2022] Keyword-Based Diverse Image Retrieval with Variational Multiple Instance Graph
补一篇TNNLS2022的多样性图像检索的文章。作者们提出了Variational Multiple Instance Graph(VMIG)方案,尝试从语义层面上就学习query-image的一对多分布,而不是一对一的单点嵌入来建模多样性,因此引入了多实例学习。

把多样性学习的问题抽象为多实例学习问题,这意味着每个查询/图像都被视为一个实例包,而其不同的语义特征们将被视为包中的多个实例。该任务十分适合多实例学习的原因在于,文本和图像的多语义中,只要有某一对语义实例是匹配的,那么两者将会是匹配的,即被认为是正例包对。这对于用户的泛查询来说,只要有某个语义是对应了用户期待,那么应该被呈现给用户。


模型架构如上图,包括主要包括三个组件:1)语义特征投影器;2)跨模态多样性生成器;3)语义空间约束器。语义特征投影器提取图像特征并投影到语义空间中。跨模态多样性生成器通过学习一对多语义的分布以产生多个实例,并执行跨模态多实例图。语义空间约束器则设计了多种损失函数来约束跨模态语义空间。

paper: https://ieeexplore.ieee.org/document/9764824

Diversified Retrieval(多样性检索,MMR,DPP,VMIG)相关推荐

  1. 最大边缘相关多样性算法MMR的学习和实现

    最大边缘相关多样性算法MMR的学习和实现 MMR算法原理 Python 实现 算法思路总结 在做毕业设计的时候,导师推荐了篇经典的关于推荐多样性重排的算法的论文,所以在这里记录一下学习的历程.本文介绍 ...

  2. Semantic Models for the First-stage Retrieval(检索召回技术综述)

    Semantic Models for the First-stage Retrieval: A Comprehensive Review 今天整理一篇来自TOIS 21'的First-stage R ...

  3. 推荐系统:最大边缘相关多样性算法(MMR)(python实现)

    MMR论文 Q:用户 R:待排序商品集合 S:已排序商品集合 D:商品 Maximal Marginal Relevance(MMR)主要通过结合用户对于商品的喜爱程度与商品间的相似度加权做差值,重新 ...

  4. 聊聊如何提升推荐系统的结果多样性

    文 | 洪九(李戈) 源 | 知乎 个性化推荐系统的出现为处理信息过载问题提供了一个有效的工具,已经成为互联网各大平台(电商.信息流等)的标配,并在技术(个性化召回.个性化排序等)上取得了长足的发展, ...

  5. 多样性算法在58部落的实践和思考

    导读:本文在明确"推荐系统个体多样性优化"主题后,由整体架构出发,清楚阐述了在召回层.规则层.多样性层的优化细节.在MMR和DPP算法部分既有原理也有实践,最后用图表方式展示出了效 ...

  6. Global Context Assisted Structure-Aware Vehicle Retrieval

    Global Context Assisted Structure-Aware Vehicle Retrieval 车辆检索中的问题: 对车辆进行局部化处理,去除不相关的背景信息 负样本比正样本更普遍 ...

  7. 计算机检索技术与技巧的检索式为,第四章计算机检索技术和数据库检索方式.ppt...

    第四章计算机检索技术和数据库检索方式 第四章 计算机信息检索的基本技术与方法 一.计算机信息检索的基本技术: 布尔逻辑.截词检索.加权检索,位置算符等. 在进行计算机检索时,有时有一些比较复杂的课题, ...

  8. 图神经网络用于检索问题(GraphCM,FNPS,GRAPH4DIV)

    本篇文章继续整理这个系列的文章,以前博主整理过的系列可以见: 图神经网络用于推荐系统问题(PinSage,EGES,SR-GNN) 图神经网络用于推荐系统问题(NGCF,LightGCN) 图神经网络 ...

  9. 计算机检索逻辑关系,计算机检索技术 ppt课件.ppt

    文档介绍: 计算机检索技术 计算机检索技术及中文数据库使用方法 一.计算机信息检索的基本技术: 布尔逻辑算符.截词算符.位置算符.字段限定检索等等. 在进行计算机检索时,有时有一些比较复杂的课题,如: ...

最新文章

  1. SOA标准之----SCA架构思想
  2. HTML的a标签置灰不可点击
  3. gsoap使用心得!
  4. linux ded编译,重新编译deb包
  5. Linux之CPU物理核与逻辑核
  6. 广东哪所大学计算机专业好,准备考研,广东哪所大学的计算机专业最好?除了985,这所大学性价比很高...
  7. WPF RichTextBox自动调整高度
  8. 8-1 数据结构图的主要遍历实验流程图_ReactDOM渲染流程图
  9. Site-Site Ipsec ×××配置和验证
  10. 机电工程系计算机网络技术,我院物联网工程专业3+1及计算机网络技术专业2+1项目正式开营...
  11. 射频识别(RFID)技术与ETC技术简介
  12. Bug解决-IndentationError:expected an indented block
  13. 拼多多砍价群大王:砍价界的扛把子
  14. 内存报错:Cannot allocate memory
  15. 阿里云认证是什么?报考要什么条件?
  16. MT6737 PCB设计指南资料分享
  17. C#笔试面试宝典值得收藏1
  18. c# 开发winform控件
  19. TestNG测试报告美化buid.xml配置
  20. 滚球法(Ball Pivoting)三维表面重建论文笔记

热门文章

  1. 古希腊就有象形文字为什么西方人却用字母文字?
  2. python抓取视频违法吗,科学网—【python爬虫】抓取B站视频相关信息(一) - 管金昱的博文...
  3. amber中生成小分子模板
  4. win10备份为wim_Win10 也能玩转一键还原
  5. NSString 遇到的坑
  6. 搭建个人网站(2):Github和Vercel建站以及配置DNS
  7. 大数据入门学习之环境搭建
  8. 【Linux】Linux 中 man 1、man 2 和 man 3 的区别
  9. ETL工具 鱼龙混杂,如何甄选?(开源、包开源、包数据库辅助功能、商用)
  10. Inno Setup入门(十六)——Inno Setup类参考(2)