QARM:Quantitative Alignment Multi-Modal Recommendation at Kuaishou
解决的问题
过往的推荐系统在使用多模态内容信息的时候都会遵循一种级联的结构:
- 首先预训练一个多模态的模型,为下游服务提供通用的内容embedding
- 下游的推荐模型使用这种通用表示作为额外的输入来适配user-item行为
这种方法带来两个问题:
- 表示不匹配:多模态模型和推荐模型的目标完全不同,多模态模型学习到的表示缺少与推荐目标的对齐
- 表示未学习:多模态表示通常都是存储在缓存中,作为推荐模型的一个fix的额外输入,并不会随着梯度下降更新,对下游任务并不友好
本文提出了一个量化的多模态框架QARM,旨在解决以上两个问题:
- 将原始的多模态表示转换为与真实的user-item行为匹配
- 将多模态表示转换成可训练的code ID,给下游任务进行训练
方法
上面的问题,以往的解决办法通常是在模型中增加额外的对比模块,然而这样的对比loss作用很弱并且容易过拟合。而我们的做法是首先构建一个纯的多模态表示,然后利用召回模型的知识来监督学习它,让它反映出真实业务的特性。
我们首先用以下方法生成一些高品质的item-item对:
- 对U2I模型,对每个用户点过的item,从他点击过的最近50个item中选择与当前item相似度最高的item
- 对I2I模型,用模型认为相似度高的稳定的item pair作为数据源
在稳定的高质量item2item数据集之上,我们用纯多模态表示训练一个与item2item对齐的模型。对一个batch的数据B∈DB \in DB∈D,有 Mtrigger=MLLM(Ttriggertext,Ttriggeraudio,Ttriggerimage),M_{trigger} = MLLM(T^{text}_{trigger}, T^{audio}_{trigger}, T^{image}_{trigger}),Mtrigger=MLLM(Ttriggertext,Ttriggeraudio,Ttriggerimage), Mtarget=MLLM(Ttargettext,Ttargetaudio,Ttargetimage),M_{target} = MLLM(T^{text}_{target}, T^{audio}_{target}, T^{image}_{target}), Mtarget=MLLM(Ttargettext,Ttargetaudio,Ttargetimage), Lalign=Batch−Contrastive(Mtrigger,Mtarget,B) L_{align} = Batch-Contrastive(M_{trigger}, M_{target}, B)Lalign=Batch−Contrastive(Mtrigger,Mtarget,B) 其中Ttriggertext,Ttriggeraudio,TtriggerimageT^{text}_{trigger}, T^{audio}_{trigger}, T^{image}_{trigger}Ttriggertext,Ttriggeraudio,Ttriggerimage是一个item在MLLM中的原始输入的文本、音频或图像token。LalignL_{align}Lalign是QARM的对齐loss。
在得到与业务信息对齐的多模态表示后,下一步就是通过MLLM的世界知识提升下游模型的准确率。然而相比起将预训练得到的embedding直接输入下游模型,推荐的模型其实更加适合利用id来进行端到端的训练。因此我们设计了两种简单但有效的量化机制,利用Vector-Quantized和Residual-Quantized code来对对齐后的多模态表示进行转换。
对MLLM表示进行量化的算法如上所示。首先利用k-mean将全部embedding聚成L个簇,然后对每个embedding,用与它距离最近的聚类中心来表示,并求出它与聚类中心点的残差。然后对全部embedding的残差执行相同的操作