ctr预估数据集(ctr预估算法)
ctr预估数据集(ctr预估算法),新营销网红网本栏目通过数据整理汇集了ctr预估数据集(ctr预估算法)相关信息,下面一起看看。
背景1多任务多目标学习
多任务学习是深度学习时代非常常见的建模方法。它被广泛应用于自然语言处理、CV和CTR。
多目标学习是MTL之一。在业务场景中,我们经常会面临既重要又多目标的问题。而且很多目标经常冲突。如何同时提高多个目标,是真实业务场景下多任务多目标的意义所在。如下图,视频推荐任务既要求点击率,又要求播出完成率;电商排序既需要点击率,也需要转化率。目前,多任务多目标是CTR预测领域非常主流的建模方法。值得进一步研究。
我们先明确一些名词概念。下图解释了多任务和多标签与其他相关概念的关系。
多任务学习:多任务学习对多个任务之间的关系进行建模。任务输入可以是不同的特征/样本,例如伯特的MLM预训练任务和NSP任务。这两个任务是连续训练的,输入是不同的特征和样本。这就是多输入多输出(MIMO)的类型,常用的训练方式有训练前微调和多任务协同训练交替训练。
多标签学习:还有单输入多输出(SIMO),这是一种非常常见的多标签学习。它对同一特征和同一样本上的多个标签之间的关系进行建模。它通常被称为多目标。比如在CV领域,对于同一个图像,可以借鉴语义分类、深度回归、实例回归等等很多经典的任务。在CTR领域,对同一输入样本同时估算点击率和转化率多个指标。常用的训练模式是联合训练模式,形式上表示如下:
其中,{ sh }是多任务共享参数,{ T }是任务T的独占参数,联合训练的总损失是每个子任务相应损失的加权和。本文所指的多任务多目标学习默认就是这种建模方法。
2优势和挑战
多目标联合学习的结果有四种状态,如下图所示。“做得好”:最好的状态,所有的分享任务一起推进。“还不错”:第二种状态,所有任务都不减,至少有一项任务提高。如果是主任务和辅助任务的搭配,可以达到牺牲辅助任务提升主任务的效果,也做得很好。“不理想”:跷跷板现象,任务有上有下。“不可接受”:负迁移现象,所有任务都不如以前。
多任务多目标学习的优势:有“不差”和“做得好”的潜力。
多任务多目标学习的挑战;
(1)如何将不可接受和不满意的状态转换为“还不错”和“做得好”;
(2)最大化“还不错”和“做得好”的效果;
共享参数!1 2[不错/做得好]
共享参数在效果表现层面带来很多好处。在效果层面,多任务的优势是通过隐式数据增强实现的。多个相关任务一起学习,共享参数,相互学习,缓解了部分任务样本稀疏导致的过拟合现象,获得了更好的泛化性能。在性能层面,多任务的网络参数之和显著低于N个单任务,MTL模型在实时预测场景下效率更高。
共享参数!1 1 1[不可接受/不满意]
多任务和多目标为了实现1 1 2,在任务参数空间上设置假设,例如3360任务参数应该彼此接近,w.r.t一些距离度量,共享一个共同的概率先验,或者驻留在低维子空间或流形中。当所有任务都相关时,这些假设可以很好地发挥作用,但如果不相关的任务之间发生信息共享,就会导致效果大概率下降,出现跷跷板和负迁移现象。
于是就引出了田野调查的核心问题:如何利用好“共享参数”,使多项任务和谐共存,相辅相成,相得益彰?
多任务多目标方案概述对上述核心问题的研究有两个方向,一个是架构,一个是优化策略,如下图所示。
架构从网络结构设计的角度考虑哪些参数是共享的,在哪里,如何共享。
优化策略多目标优化策略从损失和梯度的角度考虑任务之间的关系。平衡损失量(量级),调整损失更新速度(速度),优化梯度更新方向。在微观层面缓解渐变冲突和撕裂参数,在宏观层面实现多任务平衡。
1多任务多目标网络结构设计
架构从网络结构设计的角度考虑哪些参数是共享的,在哪里,如何共享。合理设计共享网络结构对提高效果起着重要作用。到目前为止,多任务的研究重点仍然是如何组合任务来设计共享结构。本文主要介绍CTR领域中的多任务结构。如上图所示,常见的结构是share-bottom [hard],这里就不用赘述了。2018年,谷歌提出了MMOE,结合了hard的参数
享变成多个expert,通过门控来控制不同loss对每个expert的影响,2019年google提出SNR,借助简单的 NAS(Neural Architecture Search),对 Sub-Network 进行组合,为不同目标学习各自的网络结构。2020年tencent提出PLE,在MMOE的基础上增加了各任务独有的Expert。
如下图,是Share Bottom、MMoE、PLE的网络结构和简单说明,细节不展开。
Shared Bottom- MMoE:MMoE将shared bottom分解成多个Expert,然后通过门控网络自动控制不同任务对这些Expert的梯度贡献。
MMoE- PLE:PLE在MMoE的基础上又为每个任务增加了自有的Expert,仅由本任务对其梯度更新。
演进是朝着一个更加灵活的参数共享方向,思考为什么这样的演进可以带来效果的提升?我们常看到效果提升对解释是:不同的expert负责学习不同的信息内容,然后通过gate来组合这些信息,通过不同任务gate的softmax的热力分布差异,来表明expert对不同的目标各司其责,从而提升了效果。如果将视角从宏观切换到微观,从“更加灵活的参数共享”这个角度来看,MMoE对参数使用了“化整为零”的策略,PLE则是“化整为零+各有所得”。
如下图,更加形象地理解,在Share Bottom的结构上,整个共享参数矩阵如同质量较大的物体,在梯度更新的环节,两个loss反向计算的梯度向量分别是g1和g2,是这个物体收到的两个不同方向不同大小的力,这两个力同时来挪动这个物体的位置,如果在多次更新中两个力大概率方向一致,那么就能轻松达到和谐共存、相辅相成。反之,多个力可能出现彼此消耗、相互抵消,那么任务效果就会大打折扣。在这样的背景下,使得“如何选取设计多个任务,考虑任务之间相关性”成为Share-Bottom MTL能够取得成功的关键因素。
MMoE做了一个聪明的事情,“化整为零”。把一个共享参数矩阵化成多个结合gate的共享Expert,这样不同的loss在存在相互冲突的时候,在不同的expert上,不同loss可以有相对强弱的表达,那么出现相互抵消的情况就可能减少,呈现出部分experts受某task影响较大,部分experts受其他task主导,这种“各有所得”的状态。但是MMoE并不保证“各有所得”,PLE增加了spcific experts,保障“各有所得”,能够在“共享参数”的撕扯争夺上,有了最基础的保障。
在我们自己的数据集上,做了一个简单对比。3个预估目标,CTR、CVR、R3。Share-Bottom出现了翘翘板现象,但是PLE能够实现多目标的共赢现象,下表展示了模对于single task的相对提升。
未来,CTR领域多任务多目标的升级,我认为依然会朝着“更加灵活的参数共享”来提升效果。“化整为零”的方式更加灵活(例如,根据任务任务之间的相似性来动态决定共享参数的多和少,相似的任务多share一些,不太相似的任务少share一些),“个有所得”的途径更加多样(例如,从expert视角来动态确定当前时刻受哪个task主导)。
2 多任务多目标优化策略
Optimization Strategy多目标优化策略从loss、Gradient的视角去思考任务与任务之间的关系。在微观层面缓解梯度冲突,参数撕扯,在宏观层面达到多任务的balance。如下表列出了目前常见的 【后文会详细介绍其中几种 的原理和推导】。
我们对相关文献的调研总结后,认为多任务多目标优化策略主要focus在三个问题:
Magnitude(Loss量级):Loss值有大有小,出现取值大的Loss主导的现象,怎么办?
Velocity (Loss学习速度): 任务有难有易,Loss学习速度有快有慢,怎么办?
不同任务因为样本的稀疏性、学习的难度,在学习过程中,存在学习速度不一样的情况。不加以调整,可能会出现某个任务接近收敛甚至过拟合的时候,其他任务还是欠拟合的状态。
Direction(Loss梯度冲突):多个Loss的反向梯度,更新方向冲突,出现翘翘板、负迁移现象,怎么办?
不同Loss对共享参数W_{sh}进行更新, 梯度有大小、方向,相同参数被多个梯度同时更新的时候,可能会出现冲突,导致相互消耗抵消。就会出现跷跷板、甚至负迁移现象。
后文,将分别从网络结构和优化策略两个方向,抽一些文章来分享一下。
三 多任务多目标网络结构
MMoE:Google KDD 2018,提出后就成为了CTR领域MTL的标配。
这个文章中,有一个非常有意思的做法:人工控制两个任务的相似度,然后观测不同网络结构在不同任务相似度的表现效果。得出一个结论:MMoE在多任务之间的的相关性( relatedness )比较低的时候,效果也能很不错。
如下图,首先OMoE 和 MMoE的效果都是明显好于Baseline,表明化整为零的Experts对效果提升有非常重要的作用。近一步,如果任务相关度非常高(Correlation = 1.0),则OMoE和MMoE的效果近似,但是如果任务相关度很低(Correlation = 0.5),则OMoE的效果相对于MMoE明显下降,说明MMoE中的Multi-gate的结构对于任务差异带来的冲突有一定的缓解作用。
SNR:Google AAAI 2019,对MMoE的改进,但没有找到官方开源,目前follow的相关工作不多。
这个文章的思路与网络自动搜索(NAS)接近。多任务各自采用哪些sub-network,动态学习出来。可见的收益主要寄希望于能够自动学习出来相似任务能够共享多一些。
PLE :Tencent RecSys 2020, 对MMoE的改进,结构简洁,效果显著。
在MMoE的基础上,为每个任务增加了自己的specific expert,上文中已经解释了为什么specific expert为什么有效。看下图右上角的子图,PLE是唯一做到多任务共赢“well done”。MMoE是唯一做到“还不错”【一平一涨】。其余 是跷跷板现象。Hard Sharing是负迁移。观察在不同相似度的多任务上,PLE都表现优秀。
四 多任务多目标优化策略
1 UncertaintyWeight
文章:《Multi-task learning using uncertainty to weigh losses for scene geometry and semantics》这个文章估计是多目标Loss优化策略中,最常被提及的 。但是目前在我们的任务上,没有取得明显的效果【ps. 据大多数使用过的同学反馈,都是没啥效果的】。文章希望直接建模单个任务中的uncertainty,然后通过uncertainty来指导权重的调节。
经验tips:loss大- uncertainty多- 权重小,loss小- uncertainty少- 权重大。这个在我们自己的实验中也得到了验证,甚至会出现loss小的那个任务的权重是其他loss大的任务的权重的几十倍情况(如CTR、CVR、Pay目标建模的时候,Pay的loss量级最小,这个 给了Pay目标非常大的权重,导致很快出现过拟合。)而且因为后面log项的存在,会使总的loss可能出现为负的情况。如果你的多任务设计,需要使用这个属性:loss大- uncertainty多- 权重小,loss小- uncertainty少- 权重大,那么这个 可以尝试套用一下(我们也尝试过分类 + 回归的多任务,回归任务Loss大,UncertaintyWeight给予小权重,整体效果正向)。
2 GradNorm
3 DWA
文章:《End-to-End Multi-Task Learning with Attention》
定义了一个指标来衡量任务学习的快慢,然后来指导调节任务的权重。
用这一轮loss除以上一轮loss,这样可以得到这个任务loss的下降情况用来衡量任务的学习速度,然后直接进行归一化得到任务的权重。当一个任务loss比其他任务下降的慢时,这个任务的权重就会增加,下降的快时权重就会减小。是只考虑了任务下降速度的简化版的Gradient normalization,简单直接。
经验tips:对最终能够达到的收敛状态,没有啥影响。
4 PE-LTR
文章:《A Pareto-Efficient Algorithm for Multiple Objective Optimization in E-Commerce Recommendation》
淘系主搜2019年的文章。首先需要白话一下问题建模。多任务的loss公式是可以建模为了多目标优化的,也就是优化可能冲突的目标的 。
满足这些条件的solution,被称之为一个 Pareto Stationary Point【所有帕累托最优都是Pareto Stationary Point,但反之不一定成立】。上述优化问题,可以转化成为
转化后的解释就是,找到一组w,能够尽量平衡各任务在共享参数部分的梯度。如果优化到0,就满足了KKT条件,没有优化到0,也能找到一个方向是降低全局所有任务的总Loss。
新优化目标仍然是一个难解的二次规划问题。论文提出一个两步求解算法来解这个问题。1、只考虑等式约束来放松问题,然后通过解析解来获得松弛后问题的解。但是此时得出的解可能是不满足不等式约束。2、投影步,从第一步获得可行解中获得一个满足所有约束条件的有效解。
经验tips:目前源码demo是开源的,但目前并非开箱即用的状态,我们优化适配到自己场景中,在每一轮迭代中,各个任务的w取值,颇为稳定,但目前还没有在我们的场景中取得理想的效果。
这个 是探索任务级别的平衡关系,求解w。WWW 2021年微信文章《Personalized Approximate Pareto-Efficient Recommendation》提出来在视频推荐任务中不同用户在意侧重的目标(视频点击率 vs 视频完播率)是不一样的,求解的w不应该是在任务维度,而是每个用户样本,都应当有自己的一组w。这个出发点是有价值的,但在我们的业务中,更有价值的可能是按照人群group来得到自己的一组w,如新用户更加注重引导点击,老用户更家注重引导交易,如消费品行业更加注重交易,非消行业着重引导询盘,实现多目标共同增长。国家/行业/用户分层等群体目标差异的优化,也是一个有意思有价值的点。
5 PCGrad GradVac
文章:PCGrad -《Gradient Surgery for Multi-Task Learning》,GradVac - 《Gradient Vaccine: Investigating and Improving Multi-task Optimization in Massively Multilingual Models》
这两篇文章是Google近期的研究,PCGrad投ICLR 2020被拒后,投中NIPS 2020。这个文章首次直面gradient冲突源头。采用简单、直接的方式做gradient调整。ICLR 2021 GradVac是PCGrad的改进,应用在多语种机器翻译任务上。
PCGrad指出MTL多目标优化存在3个问题:1. 方向不一致,导致撕扯,需要解决;2. 量级不一致,导致大gradients主导,需要解决;3. 大曲率,导致容易过拟合,需要解决。本文以方向不一致作为切入点,打破这个问题。怎样打破的? 白话一下首先通过cosine相似度来定义两个任务在共享参数上是否是冲突的,如下图,conflicting是夹角大于90度,non-conflicting是小于90度。如果两个两个梯度向量存在冲突,则把 gi 向量中与 gj 冲突的分量给减去。剩下的则是没有冲突的部分。这就是核心。
GradVac应用在机器翻译领域,给出了3个非常有意思的观察:
1.梯度的相似性 vs language相似性 = close tasks enjoy similar loss geometries, Gradient Similarities reflect language proximities
a.任务是翻译任务,不同的翻译语料共享一个大模型。如上图热力图,每一个格子的得分含义是:Baltic翻译成en的任务对应的gradient,与 Turkic翻译成en任务对应的gradient 之间的cosine similarityb.语言越相近,gradient的cosine similarity也越相似。
2.梯度的相似性与模型效果正相关
a.回答一个问题:相似性越高的任务进行joint trainnig,是否能够带来更好的效果?
i.答案是肯定的! 相似度越高的任务进行MTL的训练,效果是更好的。ii.有研究表明en-x相对于x-en是更加困难的,从下面的gradient similarity也可以观察到,x-en的梯度相似性更高。iii.以en-fr pair作为锚点,分别加入相似性更高的/更低的任务去联合训练得到不同的模型。然后都在相同的测试 en-fr上进行评估【以en-fr为主人物,其他语种对为辅助任务】,去对比gradient similarity更高的pair 和 更低的pair,观察他们在BLEU指标上的效果,添加相似性更高的语种作为辅助人物会有更好的效果。
3.梯度相似性随着训练步骤和网络层级(transformer的layer)在不断的演变
a.随着训练step的改变:gradient similarity会逐渐收敛到一个水位b.随着layer的改变:x-en【越靠近输出位置的layer,越相似】,en-x 【越低level相似】,因为都是从en出发的,这个容易解释,也make sense。
我觉得这些观察非常重要,GradVac本身怎样做,甚至都显得没那么重要了。白话一下GradVac的做法
PCGrad只是设置了一个下界。让两个任务的cosine相似度至少是大于等于0的,不能出现负数。这个下界非常容易达到。
基于上文提及的观察3,两个任务的真实相似度,其实是会逐渐收敛到一个水位。这个值可以认为是两个任务的真实相似度。
两个任务的Gradinet相似度,应当去靠近这个相似度,而不是只满足PCGrad设置的下界。
经验tips:改造代码,尝试中,目前没有可分享的经验。有后续再追加。
五 小结
多任务多目标出现跷跷板、负迁移现象,微观的梯度冲突是本质。不论是从Architecture 还是 Optimization strategy两个维度来优化升级,殊途同归,都是要缓解冲突,减少多任务间的内耗。
总结一下,从实践角度来看,要做一个共赢的多任务多目标模型,技术层面几点经验tips:
(1)网络结构backbone,目前优选PLE;
(2)多任务的设计和构造,要考虑任务间的相似性;如主 + 辅任务,辅助任务和主任务的关系需要考虑;
目前还没有一种权威的 或者指标来度量任务与任务之间的相似性,那么实操中,怎么办?【PS. 多任务间的相似性度量,应该也是一个有意思的研究点】
多任务两个Loss,只训练其中一个Loss,另一个Loss也在缓慢下降! = 任务相关(get)三个loss,ctr/cvr/contra loss, 仅仅 training ctr/cvr主任务loss,观察另一个辅助contra loss也会跟随下降。实验表明引入这个辅助loss一起train会带来很好的离线效果提升。
多任务两个Loss,只训练其中一个Loss,另一个Loss没有变化甚至波动增加! = 如果不是刻意而为之,慎重联合
(3)优化策略方面,留意多个Loss的量级,如果差异很大,注意约束和控制;上图contra loss 与 ctr cvr的loss,差了一个量级。
(4)梯度冲突的解决,一种技能是pareto,另一种是以pcgrad为代表的直接对梯度进行调整的 ,可选用。
多任务多目标的优化,有两种典型的方式:
主任务 + 主任务:解决业务场景既要又要的诉求;多个任务都要涨;
主任务 + 辅任务:辅助任务为主任务提供一些知识信息的增强,帮助主任务提升;
不同的业务诉求下,会有任务目标不同的侧重、关联、取舍。多任务多目标,有非常多的组合盲盒,等待打开。
Reference
本文中提及到的参考文献如下
Kendall A, Gal Y, Cipolla R. Multi-task learning using uncertainty to weigh losses for scene geometry and semantics[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7482-7491.
Rosenbaum C, Cases I, Riemer M, et al. Routing networks and the challenges of modular and compositional computation[J]. arXiv preprint arXiv:1904.12774, 2019.
Tang H, Liu J, Zhao M, et al. Progressive layered extraction (ple): A novel multi-task learning (mtl) model for personalized recommendations[C]//Fourteenth ACM Conference on Recommender Systems. 2020: 269-278.
Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery Data Mining. 2018: 1930-1939.
Chen Z, Badrinarayanan V, Lee C Y, et al. Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks[C]//International Conference on Machine Learning. PMLR, 2018: 794-803.
Liu S, Johns E, Davison A J. End-to-end multi-task learning with attention[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2019: 1871-1880.
Lin X, Chen H, Pei C, et al. A pareto-efficient algorithm for multiple objective optimization in e-commerce recommendation[C]//Proceedings of the 13th ACM Conference on recommender systems. 2019: 20-28.
Xie R, Liu Y, Zhang S, et al. Personalized Approximate Pareto-Efficient Recommendation[C]//Proceedings of the Web Conference 2021. 2021: 3839-3849.
Yu T, Kumar S, Gupta A, et al. Gradient surgery for multi-task learning[J]. arXiv preprint arXiv:2001.06782, 2020.
Wang Z, Tsvetkov Y, Firat O, et al. Gradient vaccine: Investigating and improving multi-task optimization in massively multilingual models[J]. arXiv preprint arXiv:2010.05874, 2020.
Sener O, Koltun V. Multi-task learning as multi-objective optimization[J]. arXiv preprint arXiv:1810.04650, 2018.
Ruder S. An overview of multi-task learning in deep neural networks[J]. arXiv preprint arXiv:1706.05098, 2017.
Vandenhende S, Georgoulis S, Van Gan eke W, et al. Multi-task learning for dense prediction tasks: A survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021.
ctr ctr相关文章
粤语歌曲网(经典粤语歌曲汇总)
北京奥特莱斯(来北京必逛的12个商场)
豪杰超级解霸(还记得豪杰超级解霸吗?)
龚自珍的资料(清代诗人龚自珍一生功绩简介)
象牙塔是什么意思(“象牙塔”里怎么了?)
水色风信子(水培风信子容易养)
婧字怎么读
虞姬是哪里人(古代著名美人虞姬到底是哪里人?)
公办三本院校(我们还有哪些“三本”?)
电子酒柜(酒柜最全选购指南)
德州景点(德州市景区景点62个)
玉兰油官方网(OLAY发布高端臻粹系列)
更多ctr预估数据集(ctr预估算法)相关信息请关注本文章,本文仅仅做为展示!