聊聊Meta近期的推荐系统大模型
最近,Meta发表了两篇和推荐系统相关的大模型工作,这类工作不是讲NLP等领域的大模型应用到推荐系统,而是直接使用推荐系统的数据训练大模型。一直以来,阻碍CTR预估等模型朝大模型发展的一个阻碍是,这类模型并不存在像NLP、CV领域模型中的scaling law,即模型的效果随着模型尺寸增大、训练数据增加而效果提升,单纯增加模型尺寸看起来并不能提升效果。
今天就跟大家讨论2篇近期Meta发表的大模型推荐系统工作,这两篇工作设计了不同的方法,建立了推荐系统模型的scaling law。
1.推荐系统中的Scaling Law
论文标题:Wukong: Towards a Scaling Law for Large-Scale Recommendation
下载地址:https://arxiv.org/pdf/2403.02545.pdf
这篇文章探讨了推荐系统中的模型为什么不遵循scaling law,并提出了一种新的模型结构,可以实现scaling law。从下图可以看出,本文提出的Wukong模型随着复杂度的提升,效果是持续提升的,而其他模型随着复杂度提升,效果提升缓慢或者不再提升。
Wukong的模型结构如下图所示,核心可以分为embedding层、Wukong Layer、深层网络搭建三个部分。
embedding层:底层category特征经过embedding table得到对应向量,dense特征使用MLP进行映射,所有embedding都做成unit的形式,每个embedding的维度相同。对于重要的特征使用多个unit,对于不重要的特征多个使用一个unit;
Wukong Layer:由于FMB和LCB组成。FMB就是factorization machine,进行特征间的二阶交叉,通过多层堆叠实现任意阶特征交叉;LCB就是全连接;FMB和LCB的输出embedding拼接到一起;
深层网络:多层Wukong Layer堆叠,使用残差网络和Layer Normalization提升网络训练的稳定性。
2.大模型生成式推荐系统
论文标题:Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations
下载地址:https://arxiv.org/pdf/2402.17152.pdf
这篇文章最近也比较火,研究并在业务上落地了第一个生成式推荐系统大模型,对整个建模方式、任务定义都进行了大幅度的修改,可以说是近期推荐系统最具颠覆性的工作之一。由于论文中一些细节并没有介绍,因此根据一些经验大致还原文中的建模方法。主要从数据组织形式、任务定义、模型结构等3个方面进行介绍。
数据组织形式:所有输入特征组织成序列的形式。选择一个最长的序列作为主序列,这里一般就是用户的历史行为item,比如历史观看的视频、历史点击或购买的商品。在每一个item后面,插入用户对这个item的行为,可能是点击、转化、未点击等。其他的序列作为辅助序列,也插入到主序列中,这些辅助序列变化比较缓慢,比如用户的关注列表、地理位置等,在有变化的时候才插入到序列里。最终生成一个长序列,记录了用户历史的所有交互行为、属性变化。对于userid等静态信息,后面通过类似position embedding的方式输入Transformer中。对于数值类型特征,文中直接忽略掉,让模型自动从长序列中学到相关信息。
任务定义:所有任务都嵌入到这个序列生成模型中。对于召回任务,利用自回归的方式预测用户下一个点击item的概率分布,选择topK个item;对于排序任务,在最后一个token上接不同的MLP head进行多个预估目标的多任务学习。每个位置的预测,都会利用到上面构建的历史全序列信息。
模型结构:模型主体采用Transformer,将长序列输入Transformer中进行信息交互。主要改动,一方面是将原来Transformer的softmax建模方法,修改为point-wise的方法,每个位置的Q*K内积结果后面接一个SiLU激活函数,得到非归一化的打分,再和V相乘。另一方面是在QKV作用的结果之后,增加了一个layernorm和与U的点积,U也是和QKV类似的生成方式,这比较类似于MaskNet的结构,用来实现特征的进一步交叉。
该方案在Meta已经落地到相应场景中,取得了比原来的推荐系统模式更优的效果。