[推荐系统]粗排之FSCD
1 引言
众所周知:
召回阶段需要尽可能覆盖用户感兴趣的各种类型物品;
粗排模型要求计算快,
精排模型要求计算准确,
重排考虑业务规则、多样性等。
在粗排用的最广泛的就是DSSM双塔模型,其会将用户特征、广告特征分别用两个shallow-dnn的结构计算,得到embedding,线上serving时候通过dot-product或者简单dnn的模式计算得分;如粗排模型-从双塔到全链接DNN:COLD & FSCD中所述,这种模型有以下不足
效果:无法学习用户和item的交叉特征,模型表达能力弱
更新频率:一般会离线计算item-embedding,推送线上服务器内存中,请求来的时候仅计算user-embedding,因而item-embedding的更新频率会相对慢,影响线上效果
版本管理:双侧embedding必须要相同版本才能做匹配计算,模型更新时存在版本维护、版本替换等问题
因此,COLD、FSCD都期望打破这种双塔的模型结构,在粗排引入交叉特征,同时优化模型结构、计算逻辑等,在效果和性能上形成折中;这两种方法思考的方向比较类似,COLD通过特征筛选、计算逻辑优化来达到目标,FSCD通过特征筛选、LOSS优化来实现
2 FSCD
2.1 交互特征和表征特征结构
如图所示
具有RF(表征特征)结构的简单粗排模型会存在表达能力受限的问题。目前工业界的粗排模型通常采用基于向量点积的双塔模型,它是一种典型的RF结构,优点是在线复杂度低,可以实现多个内容的打分,但缺点也很明显:缺少显式的内容侧交叉特征和隐式的交叉语义信息,而这些信息对效果的提升有很大的助力。具有RF结构的粗排模型过于关注效率的优化,与IF(交互特征)结构的模型效果差距非常大。在实际在线服务过程中,以阿里搜索广告为例,特征的生成和模型推断几乎各占用了一半的在线时延,因此同时考虑效率和效果来进行粗排模型的特征选择可以显著改善在线效率,从而为基于IF结构的粗排模型提供了可能。
最左边的:基于表示的粗排模型仅使用少量特征,计算效率高,但表达能力有限;
最右边的:基于复杂特征交互的精排模型使用完整的特征集,精度高,但计算效率低
中间的:这篇文章提出的模型希望对两者做一个权衡,使用少部分特征交互(多于粗排模型,少于精排模型)。
1.通过继承精排模型结构,粗排阶段成功采用了IF结构的模型,解决了RF结构的效果不足的问题;
2.提出了一种基于特征复杂度和variational dropout的可学习特征选择方法(FSCD),可以学到一组效率和效果都优越的特征集合提供给粗排模型进行训练;
3.实验结果显示,采用提出的粗排模型后,整个系统在效率持平的情况下获得了显著的在线效果提升
2.2 FSCD的主要内容
如SIGIR 2021 | FSCD-PreRank:面向效率和效果更加均衡的交互式粗排模型所述
受到传统的Dropout FR方法的启发,提出了特征选择的FSCD方法来同时考虑特征的效率和效果,具体流程可见上图。在提出的FSCD方法中,特征的效果通过损失函数的交叉熵来进行优化,同时特征的效率通过特征维度的正则化来进行保证。FSCD方法可以通过一次端到端的训练来提取既有效果又有效率的特征集合。因此,应用这个特征集合的粗排模型的表达能力相比于基线模型可以获得显著增强。具体的推导过程如下:
为了选择出既有效果又有效率的特征集合,我们希望给每一个特征域\(f_j\)都设置一个可学习的抛弃(dropout)因子\(z_j\in\{0,1\}\),以此来表示特征被抛弃(\(z_j=0\))或者被保留(\(z_j=1\))。\(f_j\)的embedding向量\(v_j\)会乘以\(z_j\)来组成新的embedding层。因子\(z_j\)满足参数为\(\theta_j\)的伯努利分布,即
其中超参\(\theta_j\)是特征域\(f_j\)获得保留的先验概率,建模为特征复杂度\(c_j\)的函数:
1): 其中\(\sigma(\cdot)\)是sigmoid函数。\(\theta_j=1-\sigma(c_j)\)是建模\(\theta_j\)和\(c_j\)的一种方式,在实际应用中表现不错;
2): 特征复杂度\(c_j\)衡量第\(j\)个特征的存储和计算复杂度,包括但不限于在线计算复杂度\(o_j\)、embedding维度\(e_j\)、embedding取值的个数\(n_j\)等等。会根据特征类型来进行设置。
3): 线性组合\(c_j=\gamma_1 o_j+ \gamma_2 e_j + \gamma_3 n_j\)是实现函数\(G(\cdot)\)的一种可行的方式,同时需要考虑超参\(\gamma_1,\gamma_2,\gamma_3\)的设置。
4): 根据上述公式可知,具有较高复杂度的特征会拥有较小的保留先验概率\(\theta_j\),反之亦然。
给定训练样本\(D=\{(x_i,y_i)|i=1,2,...,N\}\),其中\(N\)是样本总数,可学习的特征选择损失函数为:
其中\(\alpha_j\)是\(z_j\)的正则化权重,可以写作(详细推导过程见原文附录):
\(\alpha_j\)是\(\theta_j\)的减函数,是\(c_j\)的增函数。因此,具有较大复杂度\(c_j\)的特征在训练中会受到较大的惩罚\(\alpha_j\),因此有更大的可能被舍弃掉。通过这种方式,FSCD方法引入了特征复杂度的建模,具笔者所知,这是传统特征选择方法所不具备的。
由于\(z_j\)满足伯努利分布,因此它是离散且不可导的,这与基于梯度下降的训练过程相违背。为了解决这个问题,伯努利分布被松弛成如下的可导函数:
其中\(u_i \sim Uniform(0,1)\)满足0-1之间的均匀分布,在训练过程中始终是随机变化的,\(t=0.1\)是常数,且在阿里搜索广告的实验中表现很好。对于绝大多数的\(\delta_j\),\(F(\delta_j)\)都是接近于0或1的,因此可以作为伯努利分布的连续函数近似。相比于保留先验概率\(\theta_j\),\(\delta_j\)扮演了保留后验概率的角色,因此可以作为特征重要性被模型学习出来。
以上就是FSCD的特征选择方法,主要的可学习的变量有\(v,w,\delta\),它们在训练中会同步更新。在\(\delta\)达到收敛之后,粗排模型的特征子集就可以按照从大到小进行选取。
2.3 粗排模型的微调
在完成FSCD方法的特征选择之后,不在粗排特征集合中的特征会被抛弃,粗排模型会基于FSCD方法的\(v\)和\(w\)参数进行模型初始化,从而进行微调。具体地,粗排模型会基于如下的损失函数进行训练:
其中\(x_i^{'}\)是包含选取特征的样本,\(v^{'}\)和\(w^{'}\)分别是选取特征相关的embedding和网络权重。\(v^{'}\)和\(w^{'}\)由\(v\)和\(w\)进行初始化,可以加速粗排模型的收敛。伯努利因子仅在FSCD方法中使用,而在微调过程中不再考虑。
2.3 资源复用
图3给出了提出的粗排模型应用于阿里搜索广告架构后的资源复用情况。由于粗排模型的特征集合是精排模型特征集合的子集,因此粗排模型的样本链路可以完全复用精排模型,无须重新生产样本,节省了大量的离线样本生成的资源。对于模型训练,粗排和精排相互独立,而由于粗排模型特征量远小于精排模型,因此训练资源的消耗也显著低于精排。对于模型校验和产出,粗排模型可以完全复用精排模型产出链路,做到零成本搭建链路。在线服务阶段采用阿里集团的RTP的打分服务,粗排模型由于体积小,可以和精排模型混部在同一个在线分组当中,无需额外存储设备,存储开销增长接近于零。综上,提出的粗排模型在离线样本产出、模型训练、模型产出、在线服务等阶段都最大程度地复用精排模型链路,整个架构呈现存储零新增、计算微增长,以及搭建成本低的特点。
参考文献:
SIGIR 2021 | FSCD-PreRank:面向效率和效果更加均衡的交互式粗排模型
粗排模型-从双塔到全链接DNN:COLD & FSCD
粗排阶段性能与效率的权衡:基于可学习特征选择的方法
SIGIR’2021|粗排模型性能与效率的权衡