嘿,记得给“机器学习与推荐算法”添加星标
文章作者:王喆、付鹏
内容来源:知乎问答
文字编辑:DataFunTalk
这是个好问题,但两年前看到这个问题的时候还不太敢回答,总觉得对于两块业务理解的还不够,今天尝试着答一下。
我工作后最开始四年是做计算广告算法和系统的,最近两年逐渐转到推荐系统领域。感觉这两个领域的联系大于区别,区别的根本在于两个领域尝试解决的问题是不同的。
对于计算广告来说,本质上要处理的是三方利益的协调问题,这三方分别是广告主、用户和媒体。
对于推荐系统来说,本质上要处理的是用户体验的问题。
正是因为要处理问题的不同,导致了两个领域思考方式的不同。比如同样是构建一个CTR模型:
对于计算广告系统来说,站的角度更多的是用这个CTR模型产生更多的收益,那么在使用的时候就更偏向于将CTR高的广告全都排在前面。
而对于推荐系统来说,在使用CTR模型的时候,就不适宜全部按照CTR来进行内容排序。而是要兼顾内容的多样性,新颖性,和流行度。因为推荐系统的核心是用户体验,如果涸泽而渔的全部用根据用户行为历史生成的推荐内容,很容易让用户疲倦、透支用户的兴趣。那么为了照顾用户的整体体验并挖掘用户的长期兴趣,就要考虑用户在不同体验阶段的感受和行为特点。
再回到计算广告,由于广告系统处理的是一个三方利益的协调问题,那么为了"协调",就诞生了很多相关且必要的技术。比如,"协调"的本质其实一种博弈方式,广告主和媒体关于价格的博弈,广告主之间的价格博弈,正是这种博弈的存在,使得计算广告一定要去关注基于博弈论的bidding策略。而且为了"协调"广告主、媒体的相关操作,诞生了支持性的相应模块,去处理广告排期、定向、预算控制等模块,这里面当然涉及大量算法和模型,比如处理广告排期需要最优化理论的支持,定向需要各类预测模型,预算控制需要控制论的一些知识等等。这些都是推荐系统里不存在的。
如果列举出两个领域重点要考虑的技术问题,大家也能体会到二者的不同 ( 排名大致分先后 ):
计算广告:CTR模型,Bidding策略,yield optimization ( 也许可以叫排期优化 ),智能预算控制
推荐系统:CTR模型及其他推荐模型,探索与利用 ( exploitation & exploration ),冷启动问题,数据有偏问题
当然,具体的技术问题这里肯定会有遗漏,但大家肯定也能感觉出来计算广告问题涉及的方向更广、需要各模块相互配合,协调;而推荐系统则涉及的问题更细,需要把所有技术都糅合在最终的推荐列表中,但要同时照顾多方面的体验。
最后谈一下作为"计算广告算法工程师"和"推荐系统算法工程师"的区别。
我的答案是没有区别,都是那种领域知识学到死,业界更新快到飞,时刻游走在被淘汰和马上被淘汰边缘的职业体验。。。共勉。
听说由于涉及钱,大多数还都是简单用个LR,然后堆特征,真是这样吗?
来自付鹏老师的解答:
不是这样的。
这个说法从有NN开始一直说到今天,起初,它还有一定的道理,牺牲可解释性和稳定性带来的一点性能提升的trade-off是否值得在早些年是值得探讨的。然而,慢慢的,时代变了,NN的性能显著高于LR,这时再没有人管可解释性了,毕竟,能赚钱的model才是好model。
下面介绍一些模型,选取标准是:
由工业界提出的实战模型
一经发表即引发大量关注的”明星模型“
经过工业界考验,大家普遍认可的
文中提到的模型基本都是召回和排序的模型,计算广告领域的其他业务,如定价、匹配、流量分发等等,用到的技术会有区别。大体上来讲,神经网络大体有如下几个山头(并不严格正交):
DNN / Wide and Deep / 加入Attention 的 model / Multi-task 的 model
具体地,现在主流使用的模型和方法包括(部分久经考验、不需介绍的经典模型省略介绍):
1. 传统机器学习模型
LR:机器学习经典模型,详略。
FM、FFM:机器学习经典模型,详略。
GBDT+LR[1]:GBDT+LR是小公司、少数据、和对DNN有畏惧心理的公司和业务中应用最广泛的模型。它的非线性不需要人手工构造,由树模型学到,降低了特征工程的复杂度。模型结构简洁,加上近几年树模型开发充分,拥有xgboost和lightgbm这样训练速度和精度都惊人的工具,所以训练成本极低,是很强的baseline。
2. 深度学习模型
① 纯DNN模型:
DNN在CNN制霸ImageNet后,就不断有NN在排序模型的尝试,在Google放出自己youtube的排序模型是纯粹的DNN[2]之前,DNN就已经成为主流了,这篇工作放出来后,就更少有人和神经网络过不去了。
Youtube DNN(2016),简单的vector pooling加上手工特征工程concat直接送入DNN,是大多数工业界早期尝试DNN的通用做法
② 双塔系列模型:
DSSM及变种[3][4]:DSSM模型是微软发表的一篇工作,本用于语义匹配,后被移植至排序模型--这个intuition是很自然的,毕竟语义匹配本质上也是一类排序问题。双塔模型的最大特点就是user和item是独立的两个子网络,对工业界十分友好,两个塔可以各自缓存,线上infer只需要取出缓存做有限的运算即可。
朴素的DSSM双塔模型(2015),每个塔互相独立,可各自缓存
③ Wide and Deep 系列模型[5]:
Wide and Deep及后续的模型家族是现在业界应用最广泛的深度学习模型,其主要原因在于模型结构就融合了传统机器学习模型和DNN,从而能够既有LR的记忆性,又有DNN的泛化性,加上模型复杂度加强,其上限是远高于LR的。对于有DNN PTSD的人来说,有一个LR在模型中,也显得可靠许多。
Wide and Deep[5]:原始WDL,Deep部分是DNN,Wide部分是LR,WDL的开山之作,这篇文章和工作给后面的研究者非常大的启发,即机器学习和深度学习是可以在一个模型中共存,从而可以同时吸收两者的优势,后面的诸多工作灵感和原形皆出于此。
Wide and Deep(2016),清晰明了的模型图。有一说一,Google的网络结构图都画得很漂亮
DeepFM[6]:源自Wide and Deep,Wide端改成FM。以此文引申出去,在wide和deep两端各可做任意的修改,以达到增加模型拟合能力和自动特征工程能力的目的。
④ Deep Interest Network(DIN)[7]:
阿里妈妈的工作,是Attention风行以来较热门的一篇,简单地说,把DNN中的sum pooling/mean pooling的工作换成了自己的Attention实现。
⑤ 其他:
下面罗列一些思想值得借鉴,但因种种原因尚未广泛被采纳的模型:
Deep Cross Network(DCN)[8]:我很喜欢这篇文章的创意,源自Wide and Deep,deep端引入了类似resnet的残差结构,以及无限的特征交叉,带来了理论上任意高阶的特征交叉能力,但工作本身算不上经典,故不放图了,有兴趣可去参考文献自寻。
Deep Interest Evolution Network(DIEN)[9]:阿里妈妈在DIN上的后续工作把DIN中的attention + sum pooling部分换成了sequential model + attention,然而一个问题是,RNN是不能并行的,且参数量巨大的,所以截止2019年底,几乎所有的RNN based paper都沦为paper work,并没有大规模上线的能力,故不放图。
BST[10]:阿里手淘工作,Transformer 引入 recsys,详略。
强化学习模型:强化学习是不好评价的,在强化学习的一些工作中,我们无法明确,究竟是模型起了作用,还是精心构造的reward起了作用,更多的工作甚至无法说服自己满足MDP的基本假设。
Youtube的强化学习(2019)[11]:号称youtube近年最大提升,使用强化学习,网络结构十分简单。在bilibili上有youtube相关人员的分享,可以参考:https://www.bilibili.com/video/av47720781/,但是建议思考一下为什么Youtube的交互场景能够使用强化学习,自己的场景是否能够使用强化学习?
以上模型和工作,如果让我只挑选最经典的话,我选择:
GBDT+LR
DSSM
Wide and Deep
对工业界而言,这三个模型依次适用于从小到大的业务规模。
03
原文及参考链接
🧐分享、点赞、在看,给个三连击呗!👇