###好好好#####BOOM!推荐系统遇上多模态信息

2024-05-07 13:38

本文主要是介绍###好好好#####BOOM!推荐系统遇上多模态信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

推荐已经成为许多在线内容共享服务的核心组成部分,从图像、博客公众号、音乐推荐、短视频推荐等等。与传统推荐不一样的地方,就是这些项目内容包含着丰富的多媒体信息-帧、音轨和描述,涉及多种形式的视觉、声学和文本信息。

「那么如此丰富的多媒体、多模态信息如何融合到推荐中呢?」

最普通也是最直接的方式可能就是对多模态抽特征,然后多模态融合直接作为side Information或者item的representation之后参与到推荐中的。

本篇博文主要整理三篇整合多模态信息到表示中的文章,一篇是通用的融合结果,其他两篇中一篇涉及到了GCN,一篇涉及到了KG,可能需要补充相关基础知识可见博主以往整理过的系列文章[1]。还有其他关于多模态的+比较有意义的论文也欢迎在博文后面留言推荐。

LOGO

  • 论文:Hashtag Our Stories: Hashtag Recommendation for Micro-Videos via Harnessing Multiple Modalities

  • 地址:https://www.sciencedirect.com/science/article/abs/pii/S0950705120303798

  • 代码:https://tagrec.wixsite.com/logo

领域是短视频标签推荐。这篇文章就是使用比较直观的手段,分为三个步骤:

  • 「抽取特征:」 对视觉,声音,文本三个模态都用LSTM+Attention进行模态抽取。

  • 「共同空间投影:」 投影到Common space之后以弥合不同模态之间的表达gap。

  • 「NCF推荐:」 直接使用NCF推荐tag就可以了。

模型较为简单清晰,直接看代码结构

 
  1. class LOGO(nn.Module):

  2.     def __init__(self, img_in, img_h, au_in, au_h, text_in, text_h, common_size):

  3.         super(LOGO, self).__init__()

  4.         self.ilstm = ImageLSTM(img_in, img_h)

  5.         self.alstm = AudioLSTM(au_in, au_h)

  6.         self.tlstm = TextLSTM(text_in, text_h)

  7.         # map into the common space

  8.         self.ilinear = MLP(img_h, common_size)

  9.         self.alinear = MLP(au_h, common_size)

  10.         self.tlinear = MLP(text_h, common_size)

  11.     def forward(self, image, audio, text):

  12.         # lstm + attention

  13.         h_i = self.ilstm(image) # batch*img_h

  14.         h_a = self.alstm(audio) # batch*au_h

  15.         h_t = self.tlstm(text) # batch*text_h

  16.         # map into the common space

  17.         x_i = self.ilinear(h_i) # batch*common_size

  18.         x_a = self.alinear(h_a) # batch*common_size

  19.         x_t = self.tlinear(h_t) # batch*common_size

  20.         # return three kind of features

  21.         return x_i, x_a, x_t

UHMAN

  • 论文:User Conditional Hashtag Recommendation for Micro-Videos

  • 地址:https://ieeexplore.ieee.org/document/9102824

这个也是短视频标签推荐,旨在给出能够反映短视频主题或内容的标签,且满足用户的偏好。文章的motivation在于:大多数用户在看视频时只关注帧的某些特定区域和整个视频的某些特定帧。所以方法上是融合了用户信息+视频时空注意力最后得到结果。

完整模型如上,视频的时空两方面的信息都会在multi-head attention习得到融合,同时结合了很多用户信息,如性别、年龄、国家等等一起参与到模型预测中。

然后以上沿着这个经典线路,可以把多模态融合的很多技术手段拿进来做魔改,就不再单独展开。

MMGCN

  • 论文:Multi-modal Graph Convolution Network for Personalized Recommendation of Micro-video

  • 地址:http://staff.ustc.edu.cn/~hexn/papers/mm19-MMGCN.pdf

  • 代码:https://github.com/weiyinwei/MMGCN

出自MM2019,为了基于多媒体推荐,那么不仅要求能够理解User-item交互,还得考虑item内容本身多模态的特征。但是,目前的多模态推荐方法主要是利用item本身的多模态内容来丰富item侧的表示;但是很少会考虑用它来提升 user侧的表示,然而捕获这种表示是能够提高用户对不同模态特征的细粒度偏好的。主要涉及到有三点:

  • 不同模态的语义差异。如上图中,战争片和恐怖片在视觉模态空间很相似,但是在文本模态空间却并不相似,它们的主题并不一样。所以同时融合多模态对item的理解是有意义的。

  • 同一个用户对不同模态的不同偏好。有些人在意画面,而有些人却喜欢bgm。

  • 不同的模式可以作为探索用户兴趣的不同渠道。结合用户的交互,体现了多模态信息是能够加强用户特征理解的,即喜欢画面就多推画面精彩的item,喜欢bgm就多推相应的item就好。

所以作者提出用User-item交互来引导模态表示,并反过来捕获在特定模态内容下用户的偏好。具体的实现如下图,在User-item二部图上按视频,音频,文本各自可得到三个图,然后先item聚合,再user聚合得到表示,其中这里的每步都会额外加入id和content一起,最后得到预测结果。

  • Aggregation Layer。user从item聚合,item从user聚合,这和以往GNN在推荐中的用法一致。这里作者提到了两种聚合机制,平均和最大,看一下公式:

    值得注意的是,因为分成了三个模态的图,所以这里是需要按modal-specific来汇聚邻居,jm表示对应模态m下的表示,然后用leakyrelu线性变换,最后用平均池化汇聚,平均是假设了所有领域节点的影响是等价的。另一个就是max聚合,

    好处是不同的邻域结点的影响力不同。

  • Combination Layer。融合三个信息,结构化信息hm(前一层消息传递后的特征),自有信息um(各模态原始特征表示原内容特征)和模态间信息uid(所有模态共享的id信息)。具体操作是先融合um和uid,然后再和hm进行融合,公式如下:

其实代码实现比文章更好理解。做了三个gcn之后得到平均的表示再预测就行:

 
  1. #gcn部分的forward

  2. def forward(self, features, id_embedding):

  3.         temp_features = self.MLP(features) if self.dim_latent else features

  4.         x = torch.cat((self.preference, temp_features),dim=0)

  5.         x = F.normalize(x).cuda()

  6.         h = F.leaky_relu(self.conv_embed_1(x, self.edge_index))#equation 1

  7.         x_hat = F.leaky_relu(self.linear_layer1(x)) + id_embedding if self.has_id else F.leaky_relu(self.linear_layer1(x))#equation 5 

  8.         x = F.leaky_relu(self.g_layer1(torch.cat((h, x_hat), dim=1))) if self.concate else F.leaky_relu(self.g_layer1(h)+x_hat)

  9.         h = F.leaky_relu(self.conv_embed_2(x, self.edge_index))#equation 1

  10.         x_hat = F.leaky_relu(self.linear_layer2(x)) + id_embedding if self.has_id else F.leaky_relu(self.linear_layer2(x))#equation 5

  11.         x = F.leaky_relu(self.g_layer2(torch.cat((h, x_hat), dim=1))) if self.concate else F.leaky_relu(self.g_layer2(h)+x_hat)

  12.         h = F.leaky_relu(self.conv_embed_3(x, self.edge_index))#equation 1

  13.         x_hat = F.leaky_relu(self.linear_layer3(x)) + id_embedding if self.has_id else F.leaky_relu(self.linear_layer3(x))#equation 5

  14.         x = F.leaky_relu(self.g_layer3(torch.cat((h, x_hat), dim=1))) if self.concate else F.leaky_relu(self.g_layer3(h)+x_hat)

  15.         return x

  16. #模型部分的forward

  17. def forward(self):

  18.         #得到三个模态的表示

  19.         v_rep = self.v_gcn(self.v_feat, self.id_embedding)

  20.         a_rep = self.a_gcn(self.a_feat, self.id_embedding)

  21.         # # self.t_feat = torch.tensor(scatter_('mean', self.word_embedding(self.words_tensor[1]), self.words_tensor[0])).cuda()

  22.         t_rep = self.t_gcn(self.t_feat, self.id_embedding)

  23.         

  24.         representation = (v_rep+a_rep+t_rep)/3

  25.         self.result = representation

  26.         return representation

MKGAT

  • 论文:Multi-modal Knowledge Graphs for Recommender Systems

  • 地址:https://zheng-kai.com/paper/cikm_2020_sun.pdf

出自CIKM20,作者提出了多模态知识图关注网络(MKGAT)。这篇文章通过利用多模态知识图谱来更好地增强推荐系统。看起来很不错,首先需要考虑的是如何构建一个多模态知识图谱呢?

作者认为多模态信息实质是对原实体信息的补充,所以整个图将会存在四种节点:user,item,entity,mm(多模态补充信息将会一起处理,如上图所示,tail的multimodl表示包含了tag,image,sentence等等,他们会统一抽特征然后表示)。

然后根据这个MMKG,模型主要可以做:

  1. 实体信息聚合,将实体的邻居节点信息聚合起来,丰富实体本身

  2. 实体关系推理,通过三重(例如TransE)的评分函数构造推理关系)

模型的构建如下图,就模型设计上主要是加了层次GAT。

  • Propagation layer。实体嵌入用transE,关于KG的部分博主做过整理了,不做赘述,传送门[2]。公式如下:

  • Aggregation layer。聚合层是得到关于实体的新表示,也是有多种表示方法,如加和和拼接:

  • 然后可以得到训练KG的公式:

    再利用score对三元组进行训练:

  • 推荐部分直接内积就行,其中e会合并所有层的表示:

这篇关于###好好好#####BOOM!推荐系统遇上多模态信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967505

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的