排序模型一定要尝试的特征交叉技巧,多场景验证有效
今天给大家介绍两篇经典的工作,这两篇工作都是针对推荐系统中排序模型的优化,方法有一些相似之处,都是利用门控网络对底层特征进行交叉。最关键的在于,这类方法已经在很多真实业务场景中被验证效果显著,非常值得还没有应用这类方法的同学进行尝试。
1.MaskNet
论文标题:MaskNet: Introducing Feature-Wise Multiplication to CTR Ranking Models by Instance-Guided Mask
下载地址:https://arxiv.org/abs/2102.07619
MaskNet是2021年发表的一篇工作,引入instance-guided的mask,并使用该mask对embedding layer和hidden layer进行element wise乘法,实现bit-wise的注意力机制。本文在三个工业数据集上验证了MaskNet的有效性,证明了本文方法能够有效捕捉高阶特征交互。
MaskNet的核心模块是Instance-Guided Mask,结构如下图所示,由两层FC layer组成,第一层称为aggregation layer,第二层为projection layer。输入为feature embedding layer。注意第一层FC layer宽度较宽,第二层FC layer宽度相对较小,保持和输入维度相同。得到mask之后可以将其用于embedding层或者是隐层。
instance-guided mask可以认为是一种特殊的bit-wise的attention机制或者是门机制,使用instance中包含的global 上下文信息指导训练中的参数更新,有效捕捉复杂特征交互。mask中数值大的元素认为更重要,可以boost emb/hidden中的对应元素。mask中数值小的元素认为相对来说不重要或者认为是噪音,相应的 emb/hidden中的对应元素会被减小,达到弱化噪音,强化有用信号的目标。
基于Instance-Guided Mask可以组成MaskNet中的基础结构,MaskBlock,包含三个组件:layer normalization, instance-guided mask, feed-forward hidden layer,可以有两种输入,当输入为Feature Embedding时,计算方法如下:
当输入为上一层MaskBlock的输出时,多个MaskBlock可以堆叠形成一个更深的网络:
MaskBlock作为一个基本的构成单元,可以用于搭建Serial Model(SerMaskNet)和Parallel Model(ParaMaskNet),形成最终的MaskNet结构。其中SerMaskNet是类似于时间序列预估任务,ParaMaskNet类似于多专家网络/多头注意力机制。两种网络结构图如下所示:
本文在三个工业CTR数据集上验证了MaskNet的有效性,SermaskNet在Malware和Avazu数据集取得最优效果,在Criteo数据集上取得次优效果。ParaMastNet在Criteo数据集上取得最优效果,在Malware和Avazu数据集上取得次优效果。
2.PEPNet
论文标题:Kuaishou-PEPNet: Parameter and Embedding Personalized Network for Infusing with Personalized Prior Information
下载地址:https://arxiv.org/pdf/2302.01115
PEPNet是快手在2023年KDD发表的一篇工作,然而其在发表之前就已经在多个场景取得了显著效果,程维排序模型的基础组件之一。
传统推荐模型聚焦在单个领域单个任务的预估。但是现实中,推荐的数据分布在多个场景中,例如淘宝的猜你喜欢(购前),看了又看(购中),你可能还喜欢(购后)等场景。
不同的场景中,user和item有重叠,因此不同场景中存在共性。不同的task也存在依赖关系。为每个场景中的每个任务训练单独模型,开发成本和后续迭代成本较大,并且由于没有充分利用场景和任务之间的共性,只能得到次优解。而将所有数据混合训练会由于多个场景数据量和多个任务目标的稀疏性出现跷跷板现象。目前已有的解法包括以下两种:
multi-domain方法:将多个领域的特征对齐,但是忽略了多个target之间的依赖;
multi-task方法:拟合多个target的分布但是忽略了多个domain特征空间的语义差异;
现实中的推荐系统是一个multi-task && multi-domain问题,目前工业界缺乏在这种问题上的解法。
个性化建模始终是推荐系统的核心。multi-domain && multi-task任务可以认为是user和item在不同situation下的交互,因此个性化建模可以帮助缓解multi-task && multi-domain中的double seesaw问题。目前的很多做法在网络输入层使用个性化先验知识(如item_id, user_id等),但随着网络越来越深,这些个性化知识作用越来越小。因此本文提出了PEPNet, 在正确的地方以正确的方式加入用户个性化信息,通过增强个性化来消除multi task && multi domain任务中的预估偏差。模型结构如下图所示:
EPNet:注入领域特定的先验信息。使用domain-side特征作为输入,包括domain ID和domain特定的个性化数值特征,如用户行为/商品曝光的数值统计特征。℧𝑒𝑝 是gate nu function,不进行梯度回传
PPNet: 每个task tower中拼接user和item的个性化信息来获取个性化的gate scores,通过门机制,在多任务中根据用户兴趣不同对DNN网络参数进行动态化调整。传统任务在拟合multi-task任务时,使用DNN网络,网络的参数都是一样的,缺乏个性化。不可避免的带来seesaw问题。使用用户侧/商品 侧/作者侧的特征作为个性化先验知识,例如user_id/author_id和其他他正,构建DNN网络裁剪用户兴趣
之后使用element-wise乘法作用于DNN中的每一个隐层进行个性化squash,对参数进行个性化选择:
模型离线效果如下图所示,PEPNets在绝大多数的domain的task上取得了最优结果,在稀疏domain和稀疏task上效果更明显,说明PEPNet能较大幅度地缓解multi-domain和multi-task之间的double seesaw问题。
在线实验上,在Like, Follow, Forward, Watch Time上都取得了超过1%的提升。
本文转载自 圆圆的算法笔记,作者: Lumia