赞
踩
来源:https://zhuanlan.zhihu.com/
p/138446984
作者:一块小蛋糕
编辑:深度传送门
最近读完了王喆老师的新作--《深度学习推荐系统》,拿到书之前,期待了许久,看到京东上的目录说明,想着这么多内容怎么也得一大本,而到手之后发现不到300页。
读这本书之前,读过比较早的项亮-《推荐系统实践》,也读过近两年的高阳团-《推荐系统开发实战》和黄美灵-《推荐系统算法实践》,一直期待能有一本书把推荐领域中看着眼花缭乱的各类模型能全面且系统地梳理清楚,既能把推荐的各种工程问题描述明白又能紧跟业界前沿,《深度学习推荐系统》正是满足期待的一本书。
本系列将按照书中的行文结构谈谈自己的读后总结和感想,最后对比自己读过的这四本书的内容。
首先是引入推荐系统,介绍其在互联网中的地位和作用,以及推荐系统的主要架构。作者将推荐系统的架构分为两部分:数据部分和模型部分。数据部分即离线大数据平台,实时/准实时的流处理平台。模型部分则包含召回、排序、补充策略、离线评估、线上A/B test等。
这一章主要是传统推荐模型(机器学习类)的发展与演化。
传统推荐模型的发展主要经历了四个阶段:
协同过滤CF算法阶段:只需用户物品共现矩阵就可以构建推荐系统,根据相似度取值对象可分为itemCF和userCF两类,优势是简单易实现。CF的问题是泛化能力弱,无法应对稀疏矩阵,而矩阵分解作为协同过滤的进化版,克服了CF的缺点。
逻辑回归LR阶段:综合利用用户、物品、上下文等多种不同的特征,假设用户是否点击广告服从伯努利分布,将推荐问题转化为点击率预估(CTR)问题,预测正样本概率对物品进行排序。其数学形式是各个特征的加权和经过sigmoid函数,得到用户点击物品的概率。LR的优势是可解释性强、易于并行化、模型简单、训练开销小。其局限性在于表达能力不强,需要大量具有业务背景知识的人工特征筛选与交叉。
因子分解机FM阶段:为每个特征学习一个隐向量,在特征交叉时,使用两个特征隐向量的内积作为交叉特征的权重。虽然FM相比POLY2的完全交叉+单一权重记忆能力略弱,但解决了特征交叉过程中交叉特征对应的数据过于稀疏无法充分学习权重的问题。FFM引入特征域进一步增强了模型的表达能力,做特征交叉时,每个特征选择与对方域对应的隐向量的内积作为交叉特征的权重,但FFM的计算复杂度也由kn上升到kn*n。
组合模型阶段:这一阶段主要是为了进一步提高特征交叉的维度,同时融合多个模型的优点。GBDT+LR是组合模型的代表方案,GBDT自动进行特征筛选和组合得到新的离散特征向量输入LR模型。GBDT+LR的组合方式开启了特征工程模型化的趋势,真正实现端到端训练。
这一章的最后作者单独介绍了阿里巴巴曾经的主流推荐模型:大规模分段线性模型(LS-PLM),又称为MLR(Mixed Logistic Regression,混合逻辑回归)。该模型从淘宝的业务特性出发,对不同用户群体、不同使用场景下的样本单独进行CTR预估。具体方法是先对全量样本聚类,再对每个分类里的样本使用LR进行CTR预估。
LS-PLM模型的一大优势是端到端的非线性学习能力,样本聚类的方式能够让模型学习出数据中蕴藏的非线性模式,这里个人理解是LS-PLM模型的非线性学习能力强度还依赖于根据自身业务特性调节的超参“分片数”。LS-PLM因建模时引入了L1 和L2 范数,其中L1 范数使得模型具有较高的稀疏度,这样一来,模型服务过程仅需使用非零权重,在线推断的效率很高。
作者认为LS-PLM在推荐系统模型发展的历史中起到了承上启下的作用。LS-PLM可以看做一个加入了注意力机制的三层神经网络模型,其中输入层是样本的特征向量,中间层是m个神经元组成的隐层,其中m是分片的个数,最后一层是单一神经元组成的输出层。其中注意力机制应用在隐层和输出层之间,神经元之间的权重是由分片函数输出的概率值即注意力得分确定的。
推荐系统模型经过了机器学习阶段充分的发展后,终于进入了深度学习时代。与传统机器学习模型相比,深度学习模型具有表达能力更强,模型结构更灵活更贴合业务场景的优点。下图为深度学习阶段主流推荐模型的演化图谱:
正如图谱所示,深度学习阶段的推荐模型从多层感知机MLP出发,通过改变神经网络的结构,演变为各种各样的深度学习推荐模型。总结起来,有七个演变方向:
改变神经网络的复杂程度:增加深度神经网络的层数和结构复杂度。
丰富特征交叉方式:改变特征向量的交叉方式,如NeuralCF,PNN(Product-based Neural Network)。
组合模型:组合两种不同特点、优势互补的网络,主要是指Wide&Deep及其后续各种改进模型如Deep&Cross、DeepFM等。
FM模型的深度学习演化:对FM模型的各种改进,包括NFM(Neural Factorization Machine)使用神经网络提升FM二阶交叉部分的特征交叉能力、FNN(Factorization-machine supported Neural Network)利用FM的结果进行网络初始化、AFM(Attention neural Factorization Machine)在FM中引入注意力机制。
引入注意力机制:主要包括上述的AFM和DIN(Deep Interest Network, 深度兴趣网络)模型
融合序列模型:使用序列模型模拟用户行为或用户兴趣的演化趋势,如DIEN(Deep Interest Evolution Network,深度兴趣进化网络)
结合强化学习:主要是为了模型的在线学习和实时更新,包括DRN(Deep Reinforcement Learning Network, 深度强化学习网络)
首先直接在DNN上演变的模型有:
AutoRec:将自编码器(AutoEncoder)与协同过滤结合的单隐层神经网络模型,利用协同过滤中的共现矩阵,完成物品/用户向量的自编码,基于自编码的结果得到用户对物品的预估评分,进而排序。AutoRec模型结构和word2vec结构一致,相对简单,但优化目标和训练方法有所不同,AutoRec表达能力有限。
Deep Crossing:由微软于2016年发布,用于其搜索引擎Bing中的搜索广告推荐场景。Deep Crossing完善了深度学习在推荐领域的实际应用流程,提出了一套完整的从特征工程、稀疏向量稠密化、多层神经网络进行优化目标拟合的解决方案,开启了无需任何人工特征工程的时代。其模型结构如下:
NeuralCF:2017年的NCF用“多层神经网络+输出层”的结构替代了矩阵分解中的简单内积操作,让用户/物品向量做更充分的交叉,引入更多的非线性特征,增强模型表达能力。作者还提出一种“广义矩阵分解”(Generalized Matrix Factorization)模型融合了简单内积操作与多层神经网络两种特征交叉方式。NCF模型同协同过滤一样只利用了用户物品的共现矩阵,并没有融合其他特征信息。模型结构如下图:
PNN:2016年的PNN模型在Deep&Crossing的基础上使用乘积层(Product Layer)代替Stacking层。即不同特征的Embedding向量不再是简单的拼接,而是通过Product操作两两交互。这里的Product操作包含两种:内积操作和外积操作。PNN模型如下图所示:
如上图所示, , 其中乘积层由两部分组成,z来自于输入Embedding的线性变换,p来自于上述Product操作的结果,这里Product如果选择的是内积,则称为IPNN,若是外积,则称OPNN。经过反复比对,书中关于这一点的描述和论文是有出入的,这里以论文为准。PNN的出发点是丰富特征交叉方式,增强模型表达能力,而实际落地时,关于OPNN还是IPNN的选择以及各自对应的效率优化是需要根据业务场景权衡的。
Wide&Deep:Google于2016年提出Wide&Deep模型,模型使用单输入层的Wide部分处理大量稀疏的id特征,提升记忆能力;使用Embedding和多隐层的Deep部分处理全量特征,赋予模型泛化能力。Wide部分的输入特征除了原始的id特征(已安装应用和曝光应用)外,还包括转换后的特征,如叉乘变换(Cross Product Transformation),其实就是将单独的特征转换为组合特征,给模型增加非线性能力。
Deep&Cross:斯坦福和Google合作基于Wide&Deep的改进。主要思路是使用Cross网络替代Wide部分,目的是通过多层交叉(Cross layer)增加特征之间的交互力度;Deep部分则与Wide&Deep保持一致。模型结构如下图所示:
其中Cross网络的交叉方式与OPNN的外积操作十分类似, ,其中
表示第l层和第l+1层Cross网络的输出,
是第l层的权重和偏置。每一层Cross网络都会在特征交叉变换后加上该层的输入,即变换函数f拟合的是残差
。具体过程如上述右图所示。
Wide&Deep融合传统模型的记忆能力和深度模型的泛化能力,工程实现简单高效,在很多公司都成功落地,也正是从Wide&Deep之后,深度推荐模型开始朝着结构多样化复杂化发展。其中之一就是FM与深度学习结合产生出FM交叉特征系列的演变模型:
FNN:出自2016年伦敦大学论文《Deep Learning over Multi-field Categorical Data – A Case Study on User Response Prediction》,相比DNN,改进之处在于使用FM参数初始化其Embedding层的权重, ,下图Dense Real层中的各权重
与公式中是对应的,只是在训练FM的过程中,没有区分特征域,而FNN中特征被分成了不同的特征域,特征域内的Embedding是全连接,特征域之间无连接。论文中与FNN对比的是SNN(Sparse Feature层与Embedding层之间是全连接),此处不再赘述。
DeepFM:2017年由哈工大&华为提出,使用FM替换Wide&Deep的Wide部分,加强浅层网络组合特征的能力。DeepFM的改进目的和Deep&Cross的目的是一致的,只是采用的手段不同。
NFM:2017年新加坡国立大学提出NeuralFM模型,目的是使用表达能力更强的函数替换原本FM中二阶隐向量内积的部分,由 变为
。其中f(x)如下图所示。NFM在Embedding层和多层神经网络之间增加了交叉池化层(Bi-interaction Pooling layer),用于将一组Embedding向量转换成一个向量,具体操作是对所有的Embedding向量做两两元素积,再对所有的元素积向量取和作为池化层的输出,输入上次的全连接网络。
然后是Attention机制、序列模型与推荐系统的结合:
AFM:AFM既是FM系列模型的延续演化,也是Attention机制与推荐系统的结合发展。此处不再赘述。
DIN:阿里巴巴根据其典型的电商广告推荐场景,于2017年提出DNN结合Attention机制的DIN(Deep Interest Network)模型。利用候选商品和用户历史交互商品之间的相关性得出注意力权重,以此根据用户历史交互商品计算出用户的加权和Embedding, ,其中
是用户的Embedding向量,
是候选广告商品的Embedding向量,
是用户u的第i次互动行为的Embedding向量,
为注意力得分,即候选广告与用户第i次行为的相似度。模型中注意力激活单元的设计是输入两个Embedding向量,经过元素减操作(element-wise minus)后,与原Embedding向量拼接后送入全连接层得出注意力分值。如下图右上角所示。
DIEN:2019年阿里提出DIEN(Deep Interest Envole Network)在DIN的基础上融合了序列模型,用于模拟用户兴趣随时间的变化过程。在电商广告推荐场景中,序列信息加强了用户最近行为对下次行为预测的影响,能够学习用户的购买趋势。出于这样的目的,阿里巴巴在DIN的基础上引入了兴趣进化网络学习用户的兴趣Embedding。模型结构图如下:
DIEN的兴趣进化网络分为三层:行为序列(Behavior Layer)层,把原始的id类行为序列转换成Embedding行为序列;兴趣抽取(Interest Extractor Layer)层,抽取用户兴趣,模拟用户兴趣迁移;兴趣进化(Interest Evolving Layer)层,增加注意力机制,模拟与目标广告相关的兴趣进化过程。其中兴趣抽取层的基本结构是GRU(Gated Recurrent Unit),将用户的行为向量Embedding转换成兴趣状态向量。兴趣进化层也是通过AUGRU(GRU with Attentional Update gate)引入注意力机制的,在原GRU的更新门结构上增加了注意力得分。
MIND:DIEN之后,阿里天猫团队又提出使用胶囊网络提取用户的多样兴趣,再加上基于标签的注意力机制,提升召回的丰富度和准确度,此模型并未包含在书中,但笔者认为MIND模型还是有很多值得探究的地方,也有实际落地的效果和意义。关于胶囊网络的理解感兴趣的小伙伴可自行阅读相关论文,此处只解释MIND模型中的用法。用户交互的物品Embedding集合作为多样兴趣提取(Multi-interest Extractor Layer)层的输入,经过胶囊网络的动态路由算法生成一组用户兴趣Embedding(可以视为用户行为的软聚类)。用户基础画像属性的Embedding分别与用户兴趣Embedding拼接,经过两层全连接,得到一组用户Embedding。再根据label的Embedding与用户Embedding求相似度作为注意力权重。MIND网络结构如下图所示:
最后是强化学习与推荐系统的融合:
DRN:强化学习相比传统深度模型的优势在于强化学习模型能够进行“在线学习”,不断利用新学到的知识更新自己,及时调整和反馈。DRN(Deep Reinforcement Learning)框架中起决定作用的是DQN(Deep Q-Network), 对DQN感兴趣的小伙伴可以自行阅读相关论文,这里只说推荐系统中如何使用DQN。DQN把用户特征和环境特征归为和具体行动无关的状态向量,把用户-新闻交叉特征以及新闻特征归为与推荐内容这一行动相关的行动特征。DQN的网络结构如下图所示。用户特征和环境特征经过左侧多层神经网络拟合得到价值得分 ,利用状态向量和行动向量生成优势得分
,综合二者分值,得到最终的质量得分
。
DRN中使用的一种新的在线训练方法-竞争梯度下降算法(Dueling Bandit Gradient Descent Algorithm)是其能够在线学习的原因,其主要步骤如下:
- 1) 对于已经训练好的当前网络Q,对其模型参数W添加一个较小的随机扰动 ,得到新的模型参数
,这里
即为探索网络
.
- 2) 对于当前网络Q和探索网络 ,分别生成推荐列表L和
,用Interleaving方法将合并两个推荐列表后推送给用户。
- 3) 实时收集用户反馈,如果探索网络 的反馈好于当前网络Q,则用探索网络替代当前网络,进入下一轮迭代;反之则保留当前网络。
你点的每个“在看”,我都认真当成了喜欢
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。