本专栏由机器之心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
您正在阅读的是其中的第 1 期。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。
本期收录模型速览
模型 | SOTA!模型资源站收录情况 | 模型来源论文 |
DSSM | https://sota.jiqizhixin.com/project/dssm-2 收录实现数量:3 支持框架:PaddlePaddle、PyTorch |
Learning Deep Structured Semantic Models for Web Search using Clickthrough Data |
Youtube_DNN | https://sota.jiqizhixin.com/project/youtube-dnn 收录实现数量:4 支持框架:TensorFlow、PyTorch |
Deep Neural Networks for YouTube Recommendations |
SASRec | https://sota.jiqizhixin.com/project/sasrec 收录实现数量:4 支持框架:TensorFlow、PyTorch |
Self-Attentive Sequential Recommendation |
PinSAGE | https://sota.jiqizhixin.com/project/pinsage 收录实现数量:3 支持框架:TensorFlow、PyTorch |
Graph Convolutional Neural Networks for Web-Scale Recommender Systems |
TDM | https://sota.jiqizhixin.com/project/tdm 收录实现数量:2 支持框架:PaddlePaddle |
Learning Tree-based Deep Model for Recommender Systems |
MIMD | https://sota.jiqizhixin.com/project/mimd 收录实现数量:3 支持框架:PaddlePaddle、TensorFlow |
Multi-Interest Network with Dynamic Routing for Recommendation at Tmall |
推荐系统是指利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程的系统。在广告、电商、信息流分发等业务场景中,推荐系统发挥了至关重要的作用,是帮助用户快速获得感兴趣的信息的关键,也是改进产品以吸引用户、提高用户粘性的关键。推荐系统把用户模型中的兴趣需求信息和推荐对象模型中的特征信息匹配,同时使用相应的推荐算法进行计算筛选,找到用户可能感兴趣的推荐对象,然后推荐给用户。为了实现精准推荐,首先要对用户进行画像。对用户画像打标签后,生成多维度、丰富、全面的用户标签,这些标签就是推荐系统中的特征,而这些特征就是推荐系统中的推荐算法/模型的输入数据。利用特征对推荐算法/模型进行离线训练,然后进行A/B测试后,获得最终的推荐算法/模型。后续还包括算法/模型的部署、冷启动等流程。
具体到推荐算法/模型部分,一般包括两大环节:召回和排序。
- 召回主要是指“根据用户的兴趣和历史行为,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品”。召回方法主要要求具备处理数据量大、处理速度快的能力。经典的召回方法包括基于统计的启发式召回和基于深度学习的向量召回方法。本报告主要聚焦于基于深度学习的召回方法。
- 排序则是指根据多类特征,使用模型进行个性化的推荐。排序环节还可以进一步细分为粗排、精排和重排。
推荐算法/模型在工业场景中应用主要面对下面这些问题:数据量庞大、训练环境低效、在线和离线环境的不一致、上线部署的困难等等。因此,一个好的推荐系统中一般会应用多个推荐算法/模型,而每个推荐算法/模型的最佳效果需要工程师在实践中摸索调试出来的,每个基础模型又有很多改良版本,针对不同的问题效果也可能不同。
我们在这篇报告中总结的是能够在推荐系统中应用的必备的TOP基础推荐算法/模型。
一、召回模型
1、 DSSM
DSSM(Deep Structured Semantic Models)也叫深度语义匹配模型,最早是在微软2013年发表的一篇应用于 NLP 领域中计算语义相似度任务的文章中提出的。DSSM是适用于广告推荐领域中的模型,其目的是从广告维度为广告主推荐一定数量的人群,从数量上看是从数亿级别人群中找出百万级人群用于投放广告,所以是召回模型。DSSM 原理很简单:获取搜索引擎中的用户搜索 query 和 doc 的海量曝光和点击日志数据,训练阶段分别用复杂的深度学习网络构建 query 侧特征的 query embedding 和 doc 侧特征的 doc embedding,线上 infer 时通过计算两个语义向量的 cos 距离来表示语义相似度,最终获得语义相似模型。这个模型既可以获得语句的低维语义向量表达 sentence embedding,还可以预测两句话的语义相似度。
图1. DSSM使用DNN将高维稀疏的文本特征映射为语义空间中的低维密集特征。第一个隐藏层有3万个单元,用于完成word-hash。然后,通过多层非线性投影,将word-hashed特征进行投影。最后一层的神经活动在这个DNN中形成了语义空间的特征
如图1所示,DSSM使用一个DNN架构将原始文本特征映射到语义空间中的特征。DNN的输入(原始文本特征)是一个高维的术语向量,例如,查询或文档中的术语的原始计数,而DNN的输出是一个低维语义特征空间的概念向量。DNN模型用于网络文档的排名,具体包括:1)将术语向量映射到其相应的语义概念向量;2)将文档和查询之间的相关性分数计算为其相应语义概念向量的余弦相似度。
对于输入是英文的输入层,可以通过 Word Hashing 方式处理,该方法基于字母的 n-gram,主要作用是减少输入向量的维度。而对于输入是中文的输入层,还要增加额外的分词处理步骤。给定一个词(例如:good),首先在该词上添加词首和词尾的标记(例如:#good#)。然后,将该词分解为字母n-grams(例如,字母trigrams:#go, goo, ood, od#)。最后,用一个字母n-grams的向量来表示这个词。
DSSM 模型表示层使用的是 BOW(bag of words)词袋模型,没有考虑词序的信息,由图1可见,最下面的 Term Vector 到 Word Hashing 将词映射到 3W 维的向量空间中。然后分别经过两层 300 维度的隐藏层,最后统一输出 128 维度的向量。
最后,将 query 和 doc 统一转换成了两个 128 维的语义向量,接下来通过 cos 函数计算这两个向量的余弦相似度,公式如下:
其中,y_Q和y_D分别是查询和文档的概念向量。在网络搜索中,给定查询,文件按其语义相关性分数进行排序。使用点击数据对模型进行训练以获取参数,目的是使得点击概率最大(即最小化损失函数)。条件概率如下:
根据极大似然估计法,得出损失函数:
当前 SOTA!平台收录 DSSM 共 3 个模型实现资源。
项目 | SOTA!平台项目详情页 |
DSSM | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/dssm-2 |
2、 Youtube_DNN
Youtube_DNN是Youtube推出的一个视频推荐模型,属于一个应用场景驱动的模型。视频推荐任务中面临的问题包括:数据规模超大、视频(数据)更新速度快且对响应速度要求高、用户行为预测难度大(用户隐式反馈多、显式反馈少)。如图2所示,Youtube_DNN主要包括三个阶段:(1)召回层:从百万级视频中筛选出小部分视频;要求速度快;召回层根据用户历史观看、搜索等记录进行召回,以满足用户泛化的兴趣。(2)排序层:为了更精准地推荐给用户,这阶段需要更加复杂的模型和特征进行排序。(3)线下评估:评估指标有precision、recall、ranking loss;最终线上做A/B测试(指标:点击率、观看时间)。
图2. Youtube_DNN推荐模型架构
在召回层,YouTube把推荐问题看作是一个超大规模多分类softmax问题,给定用户历史行为和上下文,学习用户嵌入,然后输入softmax生成召回层的候选集结果。完整的召回模型如图3所示。
图3. YouTube候选集生成模型架构
YouTube_CNN输入的特征包括用户历史观看视频的嵌入向量、搜索词的嵌入向量、用户地理特征、用户设备特征和example age、人口属性特征。example age可以理解为视频的年龄:初始值设为0,随着时间的增长,记录视频的年龄。
然后,将输入的特征通过concat层连接起来,输入到三层ReLU神经网络中训练。使用常见的塔状设计,底层最宽,往上每层的神经元数目减半,直到 Softmax 输入层是 256 维(1024ReLU→512ReLU→256ReLU)。利用softmax层进行分类,定义为基于特定用户U 和其上下文 C,在时刻t,将视频库 V中指定的视频 w_t划分为第 i 类的概率:
softmax输出层不是做点击率预估,而是预测用户会点击哪个视频,即用softmax对视频进行分类,然后按照概率进行从大到小的排序,选取topN。输出层的维度和视频ID的嵌入向量维度相同,最终得到用户向量u。
图4. Youtube_DNN排序模型架构
图4是 Youtube_DNN的推荐模型架构。排序模型的作用是引入更多描述视频、用户以及二者之间关系的特征,达到对候选视频集合准确排序的目的。图4与图3的整体结构非常相似,主要的区别在于特征工程部分。排序模型中用到的特征包括:(1)impression video ID embedding: 当前要计算的video的embedding;(2)watched video IDs average embedding: 用户观看过的最后N个视频embedding的average pooling;(3)language embedding: 用户语言的embedding和当前视频语言的embedding;(4)time since last watch: 自上次观看同channel视频的时间;(5)#previous impressions: 该视频已经被曝光给该用户的次数。
当前 SOTA!平台收录 Youtube_DNN 共 4 个模型实现资源。
项目 | SOTA!平台项目详情页 |
Youtube_DNN | 前往 SOTA!模型平台获取实现资源:https://sota.jiqizhixin.com/project/youtube-dnn |