网站开发流程 图书,视频制作平台,lol福利wordpress,手机网站案列编#xff5c;王喆 源#xff5c;DataFunTalk导读#xff1a;大家好#xff0c;我是《深度学习推荐系统》的作者王喆#xff0c;很多同行可能读过这本系统性介绍推荐系统的书#xff0c;但大多数人可能不知道我职业生涯的头四年都在做广告系统#xff0c;之后才在推荐…编王喆 源DataFunTalk导读大家好我是《深度学习推荐系统》的作者王喆很多同行可能读过这本系统性介绍推荐系统的书但大多数人可能不知道我职业生涯的头四年都在做广告系统之后才在推荐系统方向工作了四年这两年又回到了广告方向。既然是重操旧业就不免想对计算广告这个方向做一次全面的再思考。深度学习浪潮如火如荼的这些年间计算广告到底发生了哪些深刻的变化相比于推荐系统广告系统有哪些独特的、又至关重要的模块在这个很多人认为深度学习的红利已经吃尽的大环境下计算广告整个领域还有哪些突破口搜广推行业的同行们又应该怎样规划未来的发展借这篇文章的机会就让我们再一起“深度”学习一下计算广告。01 计算广告系统在做一件什么事情广义的计算广告系统囊括的范围非常广分类也非常复杂。比如效果广告和品牌广告合约广告和不保量交付广告CPC、CPA、oCPM、oCPC广告等等。搞清楚这些复杂的分类固然重要但却不是重点因为这些知识肯定会随着你从业年数的增加一一理解清楚。这里我们只描述这些广告系统的一个超集从技术上只要搞清楚了这个“超集”的技术体系其他类型的广告系统通过补充一些枝节就可以比较快的熟悉。那么这个超集是什么呢我建议你就了解清楚oCPM广告系统是怎么工作的就完全足够了。oCPM的全称是 Optimized Cost Per 1000 Impressions就是优化后的千次曝光价格。广告主需要选定一个优化目标大多数时候是一个转化目标比如APP安装电商购买行为等但广告主还是按照CPM来付费。oCPM最早是由facebook提出的这种付费方式既满足了广告主追求优化目标的利益又保证了广告平台相比CPA付费比较可控的收入预期双方利益都能有效保证因此很快成为了效果广告行业的主流。那为什么说oCPM广告系统是最适合了解计算广告技术体系的“超集”呢我们看一看它的计费公式就知道了。一般来说oCPM广告要求广告主提供一个转化目标的出价即CPA那么一次广告展示的出价公式就是_CPA x pCTR x pCVR x pacingFactor_上面的公式中pCTR指的是系统预估的这次广告请求的点击率pCVR是预估转化率pacingFactor是进行广告预算平滑使用的pacing因子。从这几个变量就可以看到要做好oCPM广告就一定要把CTR模型CVR模型广告预算相关的pacing模块都做好才行而这几个模块就是计算广告系统最核心的模块。如果是其他类型的广告比如品牌广告缺少了CTRCVR模块如果是CPC广告缺少了CVR模块都不能算是广告系统的“超集”。明确了我们要研究的对象下面我们看一看一个经典的广告系统技术架构是怎样的。02 当前经典的广告系统架构是怎么样的下面两张图分别是当前推荐系统和广告系统的经典技术架构。不用多说大家粗略一看就能发现广告系统的复杂度远远大于推荐系统。事实也确实如此广告系统涉及到的模块数量与系统外的其他系统甚至不同公司交互的复杂度远远高于推荐系统。具体来说广告系统的复杂度主要是下面三个问题带来的① 广告系统往往需要跟Ad Exchange广告主的数据系统第三方计费度量系统数据采买和合作公司系统进行对接这些工作推荐系统一般不会涉及工程复杂度就高很多。② 广告系统中的模型相比推荐模型的要求更高推荐模型一般只要求把推荐物品的序排正确广告模型则要求预估的CTRCVR要非常准确具备物理意义因为这些都影响到出价和扣费这些直接和公司收入相关的模块。③ 广告系统需要处理广告计划需要合理匹配广告预算和流量因此催生了一大批推荐系统不具备的业务模块和相应算法包括pacing流量预估预算分配等等。推荐系统技术框架计算广告系统技术框架复杂的系统代表着更多的挑战当然也就意味着你要面对更多有意思的问题。如果说对推荐系统的改造是不断的打磨“推荐模型”这样一把利剑改进广告系统就更像是打造一把“火枪”只有把火枪上的各个零部件都打磨好装配好它才能发挥出最大的威力。那广告系统这把“火枪”上有哪些主要的零件呢如上面的架构图主要有四大部分① 数据工程部分。这部分其实跟推荐系统没有明显区别主要是在流式或batch的数据平台上处理广告模型/算法所用的样本、标签和特征。唯一有显著区别的是由于CVR模型需要第三方回传的转化数据作为label因此需要增加一个度量模块并在模型训练中处理label回传延迟的问题。② 算法流程部分。这个部分是指广告系统的主要逻辑流程。推荐系统的“召回、粗排、精排、重排”经典流程在这里被框定为Ad Ranking模块这仍然是广告流程中的核心部分。此外广告系统还前置了定向、预算规划后置了Pacing、对外竞价这些广告系统独有的模块。③ 基础模型部分。基础模型部分解决的是一个个比较独立的计算广告问题比如CTR、CVR模型就是要准确的预估出点击率和转化率Pacing算法就是要精确的控制广告计划的投放速度等这些基础模型被算法的主流程调用组装成为完整的广告投放逻辑。但一般来说基础模型的各模块都可以当作独立的问题单独迭代。④ 模型工程部分。这部分跟推荐系统也是一致的一般负责模型的在线/离线训练模型的分发和评估等功能。在学习广告系统的过程中我也建议大家心中先有系统框架脑海里再逐渐补充各模块的细节。希望上面的架构图能先印在你心中下面我们来看看深度学习时代各模块是怎么演进的。03深度学习时代广告系统各主模块的技术是怎样演进的1. Ad Ranking - 从大刀阔斧的革命到精雕细琢的改进深度学习时代对于广告系统最大的革命性影响还是在于Ad Ranking也就是架构图最中央的红色部分。而Ad Ranking的技术发展其实跟推荐系统的主流进展是高度一致的在2022年的KDD-DLP workshop上我与董振华唐睿明两位博士合作的文章《A Brief History of Recommender Systems》https://arxiv.org/pdf/2209.01860.pdf又重新更新了《深度学习推荐系统》的模型发展图这里也给大家分享一下相比于几年前阿里提出的DIN、DIEN等模型精排模型的发展其实有两个主要的趋势一是Transformer、Bert等NLP结构的进一步引入让模型具备更强的表达能力这里面典型的模型是BERT4Rec二是GCN等知识图谱领域的技术与精排模型的结合让模型对于复杂结构的知识有了更好的融合能力典型的模型有RippleNetKGAT。但关于深度学习模型的发展这里不希望展开太多这里有两个原因① 相关的信息已经过剩。大量paper、学术分析文章对这部分的关注已经过多大家肯定也不缺乏相应的信息源。② 过于复杂的深度学习模型已经被不少公司证明对业务指标的提升效果是微乎其微的。复杂结构对于稳定性的影响模型体积过大对于资源的过度浪费已经很难和模型带来的效果提升持平。因此不希望过分强调模型继续朝复杂化的方向发展。特别是对于数据质量比较低的公司盲目追求模型的复杂度只意味着盲目的投入和计算资源的浪费。可以这么说2016到2021年这段业界大刀阔斧的把原有传统模型替代为深度学习模型的时代已经过去了大家不约而同的开始对自己的模型方案进行精雕细琢这里面有两大机会① 保效果的前提下压缩模型体积降成本。这里面典型的工作是知识蒸馏在模型压缩上的应用。② 针对自己公司数据特点的模型微改造微创新。这里面最典型的工作是多任务学习也就是针对不同广告系统的优化目标不同自定义不同的任务融合在一个模型里学习。很多同行可能会说上面主要说的是CTRCVR这类比较重的精排模型吧召回和粗排的迭代难道也遇到同样的问题吗这里我推荐大家读另外一篇文章张俊林老师的两万字大作《推荐系统技术演进趋势从召回到排序再到重排》https://zhuanlan.zhihu.com/p/100019681文中不仅详细介绍了当前召回的经典框架而且覆盖了“用户行为序列召回”“用户多兴趣Embedding召回”“知识图谱召回”等多种新颖的召回手段这里也不再重复了。粗排领域近来给我比较深刻影响的工作是阿里的COLDComputing power cost-aware Online and Lightweight Deep pre-ranking systemhttps://arxiv.org/pdf/2007.16122.pdf它的主要思路是通过一系列的infra优化提升了深度学习模型中特定operation的计算效率从而能够在粗排阶段应用原来不具备应用条件的复杂模型。两年前我们的认知还认为粗排召回只能用双塔模型因为可以通过ANN的计算快速找到合适的备选。但COLD的提出让粗排层也能够进行复杂的特征交叉给人一种“合久必分分久必合”的感觉。事实也确实如此七八年前大家清一色用的是FTRL因为是线性模型计算速度非常快系统也没有必要分成召回粗排精排这么多层。四五年前随着深度学习模型的崛起排序模型做的效果越来越好但体积也越来越大延迟越来越长我们不得不把Ranking的过程拆分开来召回负责快速过滤候选集粗排负责高效的排序和截断精排最终进行精排序。近年来随着我们在model servingdeep learning infra上面投入的精力越来越多深度学习模型也可以用在粗排上甚至可以和精排模型合并。这也代表了Ad Ranking相关技术的下一步发展趋势几乎所有一线公司关注的方向都是类似COLD的Algorithm-System Codesign的方式。**在有限的资源下寻求“成本-效果”的综合优化远比让模型成为吞金巨兽来的实在一些。2. 联邦学习 - 隐私合规时代的新宠近几年在广告模型领域异军突起的一个方向是联邦学习。它的基本概念不难理解就是把原来集中式的模型学习过程分布到不同的数据拥有方的计算节点上不同的计算节点像“联邦”一样互相配合完成一个模型的学习。联邦学习的流行主要是由于大家越来越重视数据的作用和对用户隐私的保护特别是不同的数据巨头合作的时候互相不愿意分享原数据又希望发挥数据的作用来提升广告效果这就给了联邦学习生长的土壤。联邦学习的基本原理可以用一个“加密”版的分布式parameter server来解释。传统的parameter server是在同一个数据中心的很多计算节点上并行进行模型训练每个节点训练一部分数据然后把模型参数或者梯度上传至parameter server。如果把计算节点替换成不同的数据主体再把参数传递的过程进行加密就成为了联邦学习的一般方案。如下图所示计算节点变成了手机平板PC数据中心等等这些都可以成为能够独立保证数据隐私的数据主体。在完成本地数据的训练之后模型的参数或者梯度等可以通过差分隐私或者各种加密算法进行传输保证接收方无法解密出受保护的数据信息同时能够完成模型的更新。这几年来联邦学习方案在广告和金融领域应用越来越广主要是这两个领域特别依赖用户的隐私数据但又对隐私数据有很强的保护需求。比较典型的案例有微众银行在风控上的联邦学习应用https://aisp-1251170195.cos.ap-hongkong.myqcloud.com/wp-content/uploads/pdf/%E8%81%94%E9%82%A6%E5%AD%A6%E4%B9%A0%E7%99%BD%E7%9A%AE%E4%B9%A6_v2.0.pdf京东腾讯广告平台对联邦学习上的合作等等。近年来各大巨头也陆续推出了自己的联邦学习框架比如阿里的FederatedScope https://federatedscope.io/ 微众银行的FATE https://fate.fedai.org/但联邦学习也有它的弊端主要是对参与方的技术门槛要求比较高。如果是小的合作方、广告主没有技术能力其实很难玩的转联邦学习。所以目前来说联邦学习的方案还主要是大厂之间的游戏。如何提高它的易用性让小的合作方能够无门槛进入是当前的痛点。3. Pacing - 广告系统的隐藏核心这一小节我们来介绍Pacing这个模块Pace的意思是步伐调节步伐或者速度的意思。顾名思义Pacing就是指广告中调节广告投放速度的模块。其实广告系统的业界和学术界的同行们大多数的关注点都在CTRCVR预估这类“大模型”上Pacing这种非常偏实践偏工程模块的曝光度就比较低。但事实上Pacing在广告系统中的重要程度丝毫不亚于CTRCVR预估甚至可以称为广告系统的“隐藏核心”。因为Pacing做不好你的系统一分钟内把人家一天的预算都投完了怎么会有广告主敢在你的平台上投放呢更谈不上去观察投放效果了。这也是广告系统独有的魅力就是有很多工程问题是要切实的深入问题核心去解决的任何实验环境或者模拟环境都无法真正积累起最宝贵的广告系统工程经验。而对于一位广告系统工程师来说这样的经验才是你最深的技术护城河。那么如何做好Pacing模块其实是有经典答案的这里推荐三篇Pacing的经典论文(1)雅虎:https://arxiv.org/pdf/1506.05851.pdf (2)Turn:https://arxiv.org/pdf/1305.3011.pdf (3)Linkedin:http://wnzhang.net/share/rtb-papers/linkedin-pacing.pdf要设计一个好的Pacing模块一定要解决两个核心问题① 一个广告计划应该以什么样的预算分配曲线投出去② 预算曲线设定好了之后广告引擎应该如何投放广告让消耗符合预算曲线的趋势对于问题①广告预算的分配一般有下面几种情况。比如图a还没到全天结束就把预算花完了后面几个小时的流量没有利用上这显然浪费了流量。图b的预算像过山车让广告主投放的心惊胆战显然也不是好的分配方式。图c平均分配了预算虽然平滑但不高效。图d和图e分别按照流量波动和广告计划的效果波动来分配预算是两种经典的预算分配方式。按照效果分配预算的方式其实比较好理解就是看广告计划的历史投放效果晚上的转化效果好就晚上多分配一些周末效果好就周末多分配一些。按照流量分配预算的方式是现在流量分配的主流方式。要做好按照流量分配也分为两步一步是做好符合该广告计划的流量预估第二步是做流量和广告预算的配对分配。流量预估是一个特别偏实践的话题。大家也不用看什么太深奥的paper业界主流的做法就是用一些时序预估预估的方法https://souhaib-bentaieb.com/papers/2014_phd.pdf比如ARIMA去预估总流量的趋势。用一些机器学习模型去预估细粒度上的流量分布偏移量。比如影响流量的典型特征有是否节假日ios/android是否周末男性/女性等。用xgboostNN等比较通用拟合能力也比较强的模型进行学习即可。有了一个靠谱的流量预估模型那么剩下的就是做广告预算的分配能在全局上更好的把预算分配给对应的流量。简单的做法当然就是预估一条计划可投的流量趋势之后预算也按照这样的趋势分配就可以了。但这样的方式没有考虑全局条件下不同计划竞争的问题在流量比较稀缺的场景下如果要考虑全局分配的话这个问题就会变成一个经典的二部图匹配的问题。如何解这个问题其实是一个比较复杂的数学问题这里就不展开了推荐两篇老东家hulu的同事们写的经典blog分别用DualHigh Water MarkSHALE三种方法解决这个问题。https://mp.weixin.qq.com/s/JbPgHJaGKttEbtGeXgRiFghttps://mp.weixin.qq.com/s/I-xvNFl4A30LGfyD9zb9ww当然对于大多数广告系统能够做到比较准确的流量预估并按照流量去分配预算就已经是非常优秀的实现方案了。讨论进行到这其实刚完成了预算分配这第一步下一步我们要讲解Pacing模块如何设计才能让cost按照预算曲线投放。我们其实可以把Pacing模块当作一个水龙头我们通过调大和调小这个水流大小来达到控制投放的目的。如下图所示这个水龙头控制的经典变量有两个一个是概率控制一个是出价控制。前者是指通过控制随机drop广告流量的概率来控制广告投放的速度后者是指控制广告出价的高低来控制竞胜率来控制广告投放的速度。虽然两者的控制对象不一样但控制方法是相似的。大白话就是当实际消耗大于预算的时候拧紧一些这个水龙头反之放松一些这个水龙头。形式化的来说主要是下面这个公式其中pi,t-1是t-1时间片上的“水龙头概率”rt是一个调节参数si,t是t时刻的实际消耗ai,t是t时刻的预算。所以公式中rt的决定就至关重要了对于一个控制问题我们当然要搬出控制论中最经典的PID控制事实上用它解决pacing的问题也完全够用了。当然有不熟悉PID控制的同行们不难通过网上的资料熟悉它。至此我们介绍完了Pacing模块的经典方法几乎也是业界的统一解法。这也是一个可以不断打磨的模块比如启动期和结束期的平稳控制与出价、预估模块的复杂配合都考验着相关工程师的全面性和对细节的把控能力。4. 竞价 - 博弈的艺术下面要介绍的是计算广告系统中的另一个很有意思的模块就是竞价模块。竞价模块要解决的问题是用什么价格去购买外部的流量才是合适的。比如我是一家DSP流量全部来自于购买Ad Exchange的流量。那么如何用便宜的价格买到优质的流量就是非常重要的事情。否则你的整个生意就是赔钱的买卖。在竞价策略方向上我比较推荐大家参考上海交大的张伟楠副教授和任侃博士的研究。https://arxiv.org/pdf/1803.02194.pdfhttps://arxiv.org/pdf/1701.02490.pdf https://www.saying.ren/thesis/phd_thesis_Kan_Ren.pdf竞价策略的好玩之处在于它是一个与对手博弈的艺术。某种意义上来说广告交易所跟股票交易所是很接近的只不过它们一个交易的是广告流量一个交易的是股票实时竞价广告中竞价策略的开发与股票交易所中的高频交易策略也是很相似的。如果我们不以“博弈”的思路来优化竞价策略而是以流量采买的思路来定义竞价策略会发生什么事情呢我们就以系统算出的这条流量的ecpm来去竞价竞得到我们会以≤ecpm的价格拿到这部分流量竞不到我们也不亏总体上来说我们是有利可图的。但是“有利可图”并不代表着“利益最大化”。比如我们系统判断这条流量值1块钱但其实其他竞价方最高只出到1毛钱在越来越多的ad exchange改成1价计费的前提下我们其实亏了9毛钱。我们只考虑自己不考虑竞争对手这种竞价方式往往会让我们只能取得微薄的利润。但其实四五年前大部分的竞价方确实是这样做的。如果希望用更“贪心”的博弈策略来竞价就必须首先做到“知己知彼”而要“知彼”就要构建好你的竞争对手对某类流量的出价分布这就是所谓的bid landscape。下图就是针对某个广告位的整体出价分布和基于这个出价分布的竞胜率曲线。利用统计方法的bid landscape预估其实是实用的但却没有办法把更多流量特征放进来进行更为个性化的精准预估。如何融合更多的特征做准确的bid landscape预估呢下面就介绍一种把深度学习应用于竞价模型思路——DLFDeep Landscape Forecasting。DLF本质上是一个序列模型RNNLSTMGRU等都可以作为其模型结构。这里以RNN为例解释其原理。如下图所示搞清楚原理的关键是明白每个神经元的输入输出都是什么。以红框里的神经元Z为例它预估的是流量特征x下在价格区间z内竞得这条流量的概率hz并向右传递给下一个神经元一个状态隐向量rz。有了这样一个神经网络。我们就可以知道流量特征x条件下如果出价是b那么它竞价失败的意思就是在小于b的价格区间上全部无法竞胜也就是所有区间失败概率的乘积反过来说出价b的竞胜率就是在这套框架下我们就可以用深度模型解决bid landscape预估的问题从而大大提高原来统计方法对特征利用不足的问题。那么得到了bid landscape的预估曲线如何去制定竞价策略去参竞其实是一个更全局的问题。这里面就必须要考虑广告主侧的利益。如下图所示竞价模块最核心的部分是图中红绿蓝的三块。其中user response prediction其实就是我们常说的CTRCVR预估通过它得到系统对这条流量广告主获得价值的预估而bid strategy部分负责综合广告主的价值预估和这条流量的成本预估做出一个决定到底参与不参与这条流量的竞价到底以多高的价格去竞价。我们其实可以用一个非常朴素的但直击问题本质的模型来解决这个问题。基本的原则是我们应该竞得那些成本低但广告主价值高的流量这中间的差值越大我们越应该竞得它。所以竞价策略要解决的其实是在预算限制下去最优化广告主价值的利润max∑((advertiservalue - winprice)*winrate)但由于winrate和bidprice之间有关系winprice又受bidprice影响所以让这个问题变成了一个比较复杂的全局优化问题传统的方法是用贪心的策略去解决虽然做不到全局最优但起码能做到出价合理。要彻底解决这个最优化问题依赖非常复杂的数学理论我甚至认为在复杂多变的实际竞价环境下即使数学上设计的够严谨也无法做到最优的解决这个问题。所以实际竞价环境中我们更希望用比较实用的贪心策略或者控制策略来解决利润最大化的问题。5. Calibration我之前写过一篇介绍推荐模型和广告模型区别的文章https://zhuanlan.zhihu.com/p/430431149提到推荐模型的首要任务是要把排序做的更好而广告模型则要把CTRCVR估的更准。因为计算广告的ECPM出价公式中是一定要把CTRCVR预估的准确才能出好价才能不浪费钱。因此在广告系统中有一个独特的模块叫做Calibration就是要在训练出的CTRCVR模型预估的不太准确的时候用一个附加模块把预估值强制地纠偏到后验结果上去。就比如说我们把N个样本按照预估CTR值从左到右排列分100个桶每个桶N/100个再根据样本上的label算出后验的CTR下图中我们假设灰色的线就是后验CTR彩色的线是桶内的模型预估值CTR均值那么显然左边的黄色预估CVR曲线是不准确的因为在模型后段明显高估了。而绿色的线显然更为准确把黄色的线纠正成绿色线的过程就叫做Calibration。比较经典的Calibration方法是保序回归。就是说我们不改变按预估值排序的样本的顺序就通过改变预估值来让模型的输出更接近后验分布。事实上上图中把黄线纠正成绿线的过程就是保序回归的过程。我们并没有让黄线的趋势逆转只是把它“捋直了”让他更接近后验了。具体的保序归回方法是非常经典的统计方法大家可以很容易查到具体的资料。由于现在主流的CTRCVR预估模型都是深度学习模型所以针对深度学习模型本身的Calibration方法也是层出不穷比如做model ensemble模型中加一些bias模型里建一个专门用来calibration的tower等等。这里介绍一个Instacart工程师提出来的方法比较简单易用也可以一试。https://tech.instacart.com/calibrating-ctr-prediction-with-transfer-learning-in-instacart-ads-3ec88fa97525 他采用的方法是在广告请求中随机选出一部分流量作为无偏的随机流量当然它们产生的训练样本就是无偏的训练样本。当你用全量数据集训练好模型之后锁定模型较低层的参数再用这个无偏的小数据集训练最上面的1-2层把模型输出纠正为无偏输出。这个方法说好听点叫transfer learning说的直白点其实就是一个巧妙的纠偏技巧。这个方法的实用之处在于我们的数据本身大多数情况下都是有偏的因为我们经历了流量筛选模型排序等步骤投出去的样本大概率是被自己系统带偏的这时候保留无偏数据集做calibration就是非常重要的把模型带出“坑”的一步。否则整个广告系统有可能像一个不稳定正反馈系统一样越走越偏。6. 转化样本延迟问题最后我想谈一谈的是困扰了效果广告系统好多年的一个问题就是转化样本回传的延迟问题。我6年前做DSP的时候就被这个问题折磨的不行没想到这两年回到广告方向这个问题还是那么痛。我们看看这几年广告行业的工程师们有哪些奇思妙想来解决这个问题的部分内容引用自https://zhuanlan.zhihu.com/p/506476146转化延迟问题这么痛的原因是它让模型很难处理那些转化延迟很长的样本把它们当作正样本也不是负样本也不是如果一开始当作负样本训练未来转化回传回来样本翻正了之后也很难处理。2014年Criteo有一篇影响力很大的文章提出了一个经典的解法就是在CVR模型训练过程中加入一个预估转化延迟的模型DFMDelayed Feedback Model。这个DFM模型主要用来预测转化延迟在训练窗口外到来的概率p(dw0|y1)。于是CVR模型的loss function就可以改写成如下的形式。那么这个DFM模型如何训练呢是和CVR模型进行利用EM方法联合训练的先固定CVR模型训练DFM模型再固定DFM模型训练CVR模型直到二者收敛。DFM的方法虽然听上去很合理但真要去实现的话可能算法工程师们都会望而却步因为这种联合训练的方法不是标准的建模方法而且需要进行多轮的EM迭代费时又费力。比较实用的方法是通过延迟下发正样本Calibration的方案来解决。就是模型在收到点击样本的时候就当作负样本去训练在收到延迟转化样本的时候直接当作一个正样本去训练。那这样的话模型肯定是有偏啊那就在模型之后依赖Calibration模型去纠偏因为Calibration模块会考虑较长时间稳定的后验CVR因此可以把模型纠正到正确的后验上来。除此之外今年阿里在WWW上发表的一篇论文也挺有意思https://arxiv.org/pdf/2202.06472.pdf简单来说阿里提出了一种叫做Bi-DEFUSE的模型结构在shared base上分出两个头分别预估转化窗口内的CVR和转化窗口外的CVR。然后在预估最终CVR的时候再把二者加起来。这样的模型有什么好处呢站在一个工程师的角度就是模型的稳定性和准确性都能够得到保证。因为左边塔代表的窗口内CVR头完全不受转化延迟的影响可以认为预估值是准确的这个头保证了模型的稳定性。而右边的头则可以用一系列的纠偏方法专注于预估转化窗口外的延迟转化。比如原文中采用了一种叫DEFUSE的纠偏方法实际操作中我们也可以采用不同方法来实现这部分的设计甚至可以为这部分独立建模然后再跟窗口内CVR模型做bagging。独立建模之后我们可以彻底忽略转化延迟对左侧模型的扰动让转化回传的影响完全可控。04 对广告领域算法工程师未来发展的思考洋洋洒洒写了这么多说是“深度”学习计算广告其实也只是过了一遍当前广告系统面临的主要问题和相应的解决方法。之前写过一篇文章叫算法工程师的天地之间https://zhuanlan.zhihu.com/p/495479206说到系统架构是天数据和技术细节是地我们算法工程师们只有了解“天”才能不出方向性的错误而只有踏踏实实的踩在“地”上去分析数据的细节了解技术的具体实现才能真正做出实际的效果这一点在广告系统这种工程实践属性非常强的领域尤甚。这篇文章顶多让你了解一下广告系统的天而实际的工作都是基于对琐碎数据的观察工程和算法的联合优化带来的。实际工作中最欠缺的人才应该是广告系统体系烂熟于胸但却能躬亲入局查看算法和数据细节的人。工作中也无时无刻不在出现新的问题不可能是paper中包括的因此灵活地针对性地解决这些问题才是真正优秀的算法工程师。计算广告发展到今天已经度过了粗放型生长的阶段。业界大的红利也早已经被拿走。但相比推荐系统日益追求精深的推荐模型来说广告系统的各大模块极度依赖工作经验。没做过就是没做过做过了就是有不一样的思考和深度。当深度学习模型技能已经变成算法基本功的当下去踏踏实实地在一个领域做精做深学会主动思考主动去解决问题反而有可能成为业界不可多得的人才。大家在进入一个行业之前好多人咨询过我这个方向好不好那个方向火不火甚至几位应届生都咨询到是做召回还是做精排更有利于未来发展的程度。我想说的是大家大可不必为这样细节的选择焦虑任何一个方向都能锻炼人的主动思考能力在算法工程师的面试流程、面试内容都快成为明牌的现在如果你能对一个问题有自己合理且独到的见解我想所有的面试官都会眼前一亮“贪婪”的想从你身上得到点什么吧。。这些寻求一点点“不一样”的思考能力正是我对算法工程师未来发展的思考。后台回复关键词【入群】加入卖萌屋NLP、CV、搜推广与求职讨论群