打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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就可以了。

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

class LOGO(nn.Module):
    def __init__(self, img_in, img_h, au_in, au_h, text_in, text_h, common_size):
        super(LOGO, self).__init__()
        self.ilstm = ImageLSTM(img_in, img_h)
        self.alstm = AudioLSTM(au_in, au_h)
        self.tlstm = TextLSTM(text_in, text_h)
        # map into the common space
        self.ilinear = MLP(img_h, common_size)
        self.alinear = MLP(au_h, common_size)
        self.tlinear = MLP(text_h, common_size)

    def forward(self, image, audio, text):
        # lstm + attention
        h_i = self.ilstm(image) # batch*img_h
        h_a = self.alstm(audio) # batch*au_h
        h_t = self.tlstm(text) # batch*text_h
        # map into the common space
        x_i = self.ilinear(h_i) # batch*common_size
        x_a = self.alinear(h_a) # batch*common_size
        x_t = self.tlinear(h_t) # batch*common_size
        # return three kind of features
        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进行融合,公式如下:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Dataloader有哪些使用方法
图像分类任务中的tricks总结
识别MNIST数据集之(二):用Python实现神经网络
轻松学Pytorch-使用卷积神经网络实现图像分类
TF Boys (TensorFlow Boys ) 养成记(二): TensorFlow 数据读取
轻松学Pytorch – 人脸五点landmark提取网络训练与使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服