Wide&Deep、DCN、xDeepFM、DIN、GateNet、IPRec…你都掌握了吗?一文总结推荐系统必备经典模型(三)
机器之心 2023-04-02 12:31 发表于北京
以下文章来源于机器之心SOTA模型,作者机器之心SOTA模型
机器之心专栏
本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本文将分 3 期进行连载,共介绍 18 个在推荐系统任务上曾取得 SOTA 的经典模型。
- 第 1 期:DSSM、Youtube_DNN、SASRec、PinSAGE、TDM、MIMD
- 第 2 期:PinnerSAGE、ENSFM、MHCN、FFM、FNN、PNN
- 第 3 期:Wide&Deep、DCN、xDeepFM、DIN、GateNet、IPRec
您正在阅读的是其中的第 3 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
第 1 期回顾:DSSM、Youtube_DNN、SASRec、PinSAGE…你都掌握了吗?一文总结推荐系统必备经典模型(一)
第 2 期回顾:PinnerSAGE、ENSFM、MHCN、FFM…你都掌握了吗?一文总结推荐系统必备经典模型(二)
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
Wide&Deep | https://sota.jiqizhixin.com/project/wide-deep 收录实现数量:12 支持框架:TensorFlow, Pytorch, PaddlePaddle |
Wide & Deep Learning for Recommender Systems |
DCN | https://sota.jiqizhixin.com/project/dcn-2 收录实现数量:15 支持框架:TensorFlow, Pytorch, PaddlePaddle |
Deep & Cross Network for Ad Click Predictions |
xDeepFM | https://sota.jiqizhixin.com/project/xdeepfm 收录实现数量:6 支持框架:TensorFlow,PaddlePaddle, Pytorch |
xDeepFM: Combining Explicit and Implicit Feature Interactions for Recommender Systems |
DIN | https://sota.jiqizhixin.com/project/din-2 收录实现数量:17 支持框架:TensorFlow, Pytorch |
Deep Interest Network for Click-Through Rate Prediction |
GateNet | https://sota.jiqizhixin.com/project/gatenet 收录实现数量:1 支持框架:Pytorch |
GateNet:Gating-Enhanced Deep Network for Click-Through Rate Prediction |
IPRec | https://sota.jiqizhixin.com/project/iprec 收录实现数量:2 支持框架:PaddlePaddle |
Package Recommendation with Intra- and Inter-Package Attention Networks |
推荐系统是指利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程的系统。在广告、电商、信息流分发等业务场景中,推荐系统发挥了至关重要的作用,是帮助用户快速获得感兴趣的信息的关键,也是改进产品以吸引用户、提高用户粘性的关键。推荐系统把用户模型中的兴趣需求信息和推荐对象模型中的特征信息匹配,同时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。为了实现精准推荐,首先要对用户进行画像。对用户画像打标签后,生成多维度、丰富、全面的用户标签,这些标签就是推荐系统中的特征,而这些特征就是推荐系统中的推荐算法/模型的输入数据。利用特征对推荐算法/模型进行离线训练,然后进行A/B测试后,获得最终的推荐算法/模型。后续还包括算法/模型的部署、冷启动等流程。
具体到推荐算法/模型部分,一般包括两大环节:召回和排序。
- 召回主要是指“根据用户的兴趣和历史行为,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品”。召回方法主要要求具备处理数据量大、处理速度快的能力。经典的召回方法包括基于统计的启发式召回和基于深度学习的向量召回方法。本报告主要聚焦于基于深度学习的召回方法。
- 排序则是指根据多类特征,使用模型进行个性化的推荐。排序环节还可以进一步细分为粗排、精排和重排。
推荐算法/模型在工业场景中应用主要面对下面这些问题:数据量庞大、训练环境低效、在线和离线环境的不一致、上线部署的困难等等。因此,一个好的推荐系统中一般会应用多个推荐算法/模型,而每个推荐算法/模型的最佳效果需要工程师在实践中摸索调试出来的,每个基础模型又有很多改良版本,针对不同的问题效果也可能不同。
我们在这篇报告中总结的是能够在推荐系统中应用的必备的TOP基础推荐算法/模型。
一、排序模型
1、 Wide & Deep
Wide & Deep的核心思想是:Wide模型用来从训练数据中学得出现频率高的特征或者特征组合,即模型的 memorization能力;Deep模型则用来从训练数据中学得出现频率低或者没出现过的特征组合,即generalization能力。通过将Wide模型和Deep模型进行联合训练,能够实现高效的推荐,特别是对于输入数据稀疏的场景。
图1. Wide & Deep模型结构
如图1的模型结构图,左侧是wide模型(memorization),使用基础的线形模型,包括基础特征 x 和交叉特征 ϕ(x) ,其中,
上式含义为将feature共同出现作为一个新的特征,c_ki 表征x_i 是否目标feature的组合集合中,如 "AND(gender=female,language=en)",那么c_ki 包括gender=female、language=en两个属性(x_i 一般是one-hot之后的一个维度),那么当x_i 为上述两个时,取值为1,其余为0,这样就可以统计出该feature组合是否共同出现过,并将该值作为新的feature。
图19右侧为deep net,就是一般的Deep Nerual Network,首先将feature 嵌入到一个低维向量,然后接入MLP:
Wide和deep部分输出后加权和,再输入一个共同的logistic loss function用于联合训练:
联合训练不同于ensemble,ensemble是各个模型独立训练,同时汇总它们的预测结果,而联合训练则同时优化所有模型参数。在实验中该论文使用在线学习算法(Follow-The-Regularized-Leader)FTRL算法,F1正则化项作为wide部分的优化算法,AdaGrad作为deep部分的优化算法(optimizer)。
当前SOTA! 平台收录Wide&Deep共12个模型实现资源。
项目 | SOTA!平台项目详情页 |
Wide & Deep | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/wide-deep |
2、 DCN
在Wide&Deep 之后,2017年Stanford与Google联合推出了Deep&Cross Network(DCN)。该模型提出了Cross network,用于特征的自动化交叉编码。传统DNN对于高阶特征的提取效率并不高,Cross Network通过调整结构层数能够构造出有限阶(bounded-degree)交叉特征,对特征进行显式交叉编码。DCN 的全称是Deep & Cross Network,网络架构如图2。最开始是Embedding and stacking layer,作用是把Sparse feature 转化为Embedding Vec和 Dense feature 组合起来共同作为输入;然后是并行的Cross Network和Deep Network,其中,Cross Network只做特征的交叉,输入和输出的维度相同,Deep Network就是普通的网络;最后是Combination Layer,作用是把Cross Network和Deep Network的结果组合得到一个长向量,最后用sigmoid做二分类。
图2. DCN架构
Embedding and Stacking Layer
首先针对原始特征进行预处理,其中,类别特征(Sparse feature)可以通过二值化处理,然后进行特征嵌入,将高维稀疏特征转化为低维稠密的实值向量(Embedding vec),再拼接其他连续特征(Dense feature)作为模型的输入。
Cross Network
Cross Network的核心如下式:
其中,X_l、X_l+1∈Rd 分别代表Cross Network的第l、l+1 层的输出,W_l、b_l∈Rd分别为该层的参数与偏置项。因为
f(X_l, W_l, b_l)=X_l+1−X_l ,所以函数f:Rd↦Rd 拟合X_l+1 与X_l 的残差,这个思想与Deep Crossing一致。
图3. 一层cross layer的可视化
Cross Layer的特点包括:1) 每层的神经元个数都相同,都等于输入 x_0 的维度 d,也即每层的输入输出维度都是相等的;2) 受残差网络(Residual Network)结构启发,每层的函数拟合f 的是 x_l+1−x_l 的残差,残差网络有很多优点,其中一点是处理梯度消失的问题,使网络可以“更深”。
Combination Output Layer
将Cross Network与Deep Network部分的输出进行简单拼接,通过激活函数作为最后的输出:
模型使用的Loss函数为log loss,并且加入了正则项:
当前SOTA! 平台收录DCN共15个模型实现资源。
项目 | SOTA!平台项目详情页 |
DCN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/dcn-2 |