生成式排序 —— 美团 MTGR 精读笔记

文章链接:https://arxiv.org/pdf/2505.18654

机构:美团

发布时间:2025.05

Copyright (c) Wang-Luning. All Rights Reserved.

MTGR认为很多生成式推荐模型丢弃了传统DLRM中精心构建的交叉特征,即使能把参数scale上去也会损失性能。因此,MTGR在HSTU的基础上建模,其在输入中保留传统DLRM中丰富的特征和交叉特征,并在这个前提下进行scaling,从而结合DLRM和GR的优势

另外,MTGR通过用户级别的压缩来提升训练和推理效率(像GenRank那样一次推理预测多个候选物品的CTR)。MTGR还提出了Group-Layer Normalization(GLN)来提升在不同语义空间内的编码效果(防止来自不同domain的tokens的尺度差距过大相互影响),还提出动态mask策略来避免时序信息和各个候选物品之间信息的泄露。

 

从下文中可见,MTGR的核心思想是把HSTU模型当成一个超强的序列建模器来优化排序问题,其重点关心丰富的输入特征的保持+使用HSTU架构来达到超大的模型参数量。和HSTU与GenRank不同,它没把action当成一种新模态token加到输入中,且只使用了如CTR loss等排序任务中的判别式loss来进行训练,没有使用NTP loss来让模型学习自回归地拟合下一个物品/action。

所以宏观来看它的输入特征体系和loss都和传统DLRM其实没什么区别,整个模型的训练优化目标都是围绕CTR等判别式任务设计和优化的。相比于生成式推荐模型来说它更像传统DLRM的扩展,比起GenRank等相对更保守。

"保留传统深度学习推荐模型(DLRM)丰富特征的同时,获得生成式架构的可扩展性优势"

 

 

传统DLRM排序场景的基本架构:

在传统DLRM排序场景下,对于1个用户和K个要排序的候选物品,它们构成K个用户-候选物品对(“样本对”)D=(D1,,DK)。第i个用户-候选物品对(第i个“样本”)可以写成:

Di=[U,S,R,Ci,Ii]

其中:

image-20260208132828866

样本集D中的特征会被转化为稠密的embedding。其中,每个样本的U,C,I中的静态特征们都会被转化成一个向量(由各个特征的向量连接而成),K个样本就会产生K个向量:

EmbURK×dUEmbCRK×dCEmbIRK×dI

对于S,R历史交互列表(后文方便起见有些地方以S为例,R的处理也是同样的),每个历史交互物品Si的各个特征也类似地被映射成embedding并将各个特征的embedding连接得到每个物品的embedding向量EmbSiRdSNS个历史交互物品产生NS个向量:

EmbSRNS×dSEmbRRNR×dR

进一步,使用类似SIM中的target attention的方法来提取候选物品和用户历史交互物品之间的兴趣关联。具体而言,使用候选物品特征EmbI生成Query,对于历史交互序列EmbS生成的Key, Value做attention,从而为每个候选物品得到“经过历史交互序列调整偏移后”的FeatSi。这些含有历史交互信息的表征后续会被用来代替原始的历史交互序列embedding EmbS

FeatS=Attention(EmbI,EmbS,EmbS)RK×DS

SIM中使用的target attention代替了处理历史交互序列的最原始的做法:将各个历史交互物品的embedding直接做加和或平均来得到表示历史的一个定长向量。这里通过attention来得到候选物品感知的历史交互信息表征向量。总之都是希望将不定长的历史交互序列信息压缩到一个定长向量中。

最后,将所有embedding和表征连接起来得到样本集中K个物品各自的总表征向量:

FeatD=[EmbU,FeatS,FeatR,EmbC,EmbS]RK×(dU+dS+dC+dI)

这些总表征向量会被输入MLP进行特征交叉,从而进行CTR预测等任务。

 

每个“样本”都是独立处理的,也即用户和每个候选物品之间的关系都是单独建模的,不同候选物品之间不存在相互影响。因此,在传统DLRM中,每个样本都会被单独输入模型进行一次推理,总推理开销随候选物品数量增大而线性增长。

在传统DLRM下想要scale模型参数时,通常是在用户模块和交叉模块处进行scale,而这种scale具有明显的劣势:

 

 

MTGR的数据组织形式和模型架构:

MTGR的数据组织形式中和传统DLRM的不同在于,其把用户和候选物品的交叉特征C也作为候选物品特征I的一部分:

Di=[U,S,R,[Ci,Ii]]

而用户侧的特征,包括用户画像和交互历史特征(U,S,R),可以被不同的候选物品重复利用。因此,对于K个候选物品来说,可以将它们的表征依次连接到用户表征上,从而把样本集合成一个输入张量:

D=[U,S,R,[C1,I1],,[CK,IK]]

这样只要在交叉模块中设置合理的mask防止各个候选物品之间的信息泄露,即可做到一次推理给多个候选物品打分,从而大幅提升训练和推理效率。这部分和GenRank的处理思路是一样的。

进一步,将输入信息进行token化。对于用户画像U中的每个特征,都将其转为一个单独的token(如上图分别有age token,gender token);对于历史交互序列S,U,其中的每个交互物品都被转为一个token(每个物品各个特征的embedding连接后再通过一个MLP转为一个token维数的向量,从而得到该物品的token表征);对于每个候选物品的处理类似,也是每个候选物品的信息[Ci,Ii]经过embedding连接和维数转换后转为1个token。将上述所有tokens构成一个token序列后即可输入HSTU模块进行处理:

image-20260208151553328

从图中可见,MTGR训练的loss应该只有判别loss(如CTR loss),而不像GenRank和HSTU那样有NTP loss。也即MTGR并没有想拟合下一个token的概率分布,而是将HSTU架构当成了一个强大的序列建模器,通过判别性的优化目标来训练模型。

 

在具体模型架构上,MTGR提出了Group Layernorm和Dynamic Mask两种优化。

由于输入序列中的tokens来自几个不同的domain,例如有的是用户画像的特征token,有的是历史交互物品token,这些来自不同domain的tokens的数值分布区别很大,和NLP中所有token都属于语义词的情况不同。如果像NLP transformer中一样对于所有的token都使用同一组(γ,β)参数做layernorm的话,会使得结果非常不稳定(例如有的domain的token数值很大,如果把它们和其他尺度不同的tokens一起用来学习layernorm参数的话会使得均值也很大,导致那些数值较小的token在norm完后数值几乎消失)。因此Group Layernorm使得来自同一个domain的tokens共享一组layernorm参数,不同domain有一套自己的layernorm参数。这样就可以对不同token类型建立各自的尺度感知,避免参数被一种token模式主导,使得做attention时更稳健。

image-20260208154330654

另外,MTGR并未直接使用causal mask,其针对各种token的特点设置了如下mask机制:

下图中,seq表示历史交互物品token,rt表示最近交互token,target表示候选物品token,数字越小表示发生越晚,例如rt1出现的比rt2更晚。可见,rt1可以看到rt1、rt2的信息,但rt2不能看到rt1的信息。设rt和target出现的时序顺序是:target3-rt2-target2-rt1-target1,可见各个target也只能看到比它们更早发生的rt tokens以及它们本身,但看不到其他候选物品tokens:

image-20260208161321981