1. 前言
基于 ID Embedding 主导的传统深度推荐系统,在新冷内容推荐上由于新冷内容用户行为非常稀疏,ID Embedding 欠学习导致经常表现不佳。因此,对于这部分新冷内容,业界一般会更多地结合内容(如本文讨论的多模态信息)本身来做推荐。
将多模态信息应用于推荐系统可能会面临两个主要挑战:
- 表征空间不一致问题:推荐系统的 ID Embedding 是用户行为(协同过滤)驱动的,而一般的多模态表征(如使用 BERT 的文本表征)是基于内容本身来学习的,它们的表征空间是不一致的,存在 Gap。这也是业界大家一般不会将 ID Embedding 与多模态原始表征直接 Concat 的主要原因。
- 用户对多模态的偏好不一:不同用户对不同模态的敏感度不同。例如,有些人喜欢一首歌曲是因为歌曲动听的旋律,而有些人喜欢一首歌曲可能是因为歌曲的歌词让人共情。快手这里则提出要显式建模用户对内容的不同模态(文本、视觉和音频)的不同偏好。
为了克服这两个问题,快手提出了 M3CSR 方法,下面详细介绍。
2. 方法
快手所提方法的整体框架如下图所示,其主体框架是双塔结构,在 User 塔和 Item 塔都引入了多模态信息以提升新冷内容推荐上的效果。

2.1 预处理
快手这里的多模态推荐遵循着业界的一般实践,也是一种 Two-Stage 方案。即对于新内容,会先提取出多模态表征存下来,然后再使用这预先提取的多模态表征用于下游推荐任务的学习。
快手所提方法在预处理阶段,主要处理两个事情:
2.1.1 多模态表征提取
对于新内容,快手这里会基于内容的三种模态提取出三种模态表征:
- 文本模态:使用 Sentence-BERT 提取文本表征,记为 $v_t$。
- 视觉模态:使用 ResNet 提取视觉表征,记为 $v_v$。
- 音频模态:使用 VGGish 提取音频表征,记为 $v_a$。
2.1.2 多模态聚类
在获取视频的多模态表征后,快手这里还会做 K-means 聚类处理以得到新视频的聚类 ID 信息。具体地,作者将多模态表征都 concat 起来,再使用数千万的多模态表征做 K-means 聚类,共 1000 个聚类中心,每个新视频都可以得到对应的聚类中心标签。
2.2 模态 Encoder
模态 Encoder 包含两个操作,如下图所示:

2.2.1 降维映射
对于每种模态表征,单独过个映射网络函数,实现模态空间到用户行为空间的映射,记映射后对应模态的表征为 $\hat{v}_m$。这种方式旨在解决前述的表征空间不一致问题,使多模态特征能够与 ID 特征在同一空间内有效交互。
2.2.2 多模态聚类处理
前面提到,每个短视频都对应着一个聚类 ID,这样可以再过个 embedding layer,将聚类 ID 转换成低维的可学习的隐向量,这种方式的好处是它的聚类 ID Embedding 是可学习的,以克服原始多模态 Embedding 不可学习的缺点。
然后,再将这两个表征做 Fusion(其实就是直接 Concat 起来)作为内容最终的多模态表征,形式化描述如下:
$$ v_{item} = [\hat{v}_t; \hat{v}_v; \hat{v}a; E{cluster}] $$
其中,$W_m$ 和 $b_m$ 是模态的映射矩阵参数。








