关于人工智能:多任务多目标CTR预估技术

简介: 多指标(Multi Objective Learning)是MTL中的一种。在业务场景中,常常面临既要又要的多指标问题。而多个指标经常会有抵触。如何使多个指标同时失去晋升,是多任务多指标在实在业务场景中存在的意义。

作者 | 志阳、文静
起源 | 阿里技术公众号

一 背景

1 多任务多指标学习

多任务(Multi Task Learning)是深度学习时代十分广泛的建模形式。在NLP、CV、CTR诸多畛域有十分宽泛的利用。

多指标(Multi Objective Learning)是MTL中的一种。在业务场景中,常常面临既要又要的多指标问题。而多个指标经常会有抵触。如何使多个指标同时失去晋升,是多任务多指标在实在业务场景中存在的意义。如下图,视频举荐工作,既要点击率又要完播率;电商排序,既要点击率又要转化率。现在,CTR预估畛域采纳多任务多指标是十分支流的建模形式。值得咱们深入研究。

首先来厘清一些名词概念。如下图,解释了Multi-Task 与 Multi-Label等相干概念的关系。

Multi-Task learning:多任务学习建模多个工作之间的关联关系,工作输出能够是不同的feature/sample,如BERT的MLM预训练任务与NSP工作,两个工作先后训练,输出是不同的feature和sample。这是Multi-Input & Multi-Output (MIMO) 的类型,罕用的训练模式是pre-train+finetuning 和 多任务co-train交替训练。

Multi-Label learning:还有一种是Single-Input & Multi-Output (SIMO) ,就是十分常见的Multi-Label Learning,建模雷同feature、雷同Sample上多个label之间的关系。也常称之为多指标Multi-Objective。如CV畛域中,对同一image,能够同时对semantic classification,depth regression,instance regression等诸多经典工作指标独特学习。CTR畛域,对同一输出样本同时预估点击率、转化率多个指标。罕用的训练模式是Joint-train的模式,形式化地表白如下:

其中\theta^{sh}是多任务共享参数,\theta^{t}是工作t 的独享参数,Joint-train的总Loss是各个子工作对应Loss的带权求和。本文前面称的多任务多指标学习,默认是这种建模形式。

2 劣势&挑战

多指标独特学习的后果,有4种状态,如下示意图。“well done”: 最好的状态,所有share工作实现独特晋升。“还不错”:其次的状态,所有工作不升高,至多一个工作晋升。如果是主工作 + 辅助工作的搭配,可能实现就义辅助工作达到主工作晋升的成果,也是well done。“不现实”:跷跷板景象,工作有涨有跌。“无奈承受”:负迁徙景象,所有工作都不如从前。

多任务多指标学习的劣势:有后劲做到“还不错”和“well done”。

多任务多指标学习的挑战:

(1)如何把“无奈承受”和“不现实”两个状态往“还不错”和“well done”迁徙;

(2)最大限度激发“还不错”和“well done”的成果;

共享参数!1 + 1 > 2 【还不错/well done】

共享参数在成果 + 性能层面带来很多劣势。成果层面,多任务的劣势通过隐式数据加强达到。多个相干工作独特学习,参数共享,互相借鉴,缓解某些工作的样本稠密带来的过拟合景象,取得更好的泛化性能。在性能层面,多任务较N个单任务网络参数量总和显著升高,在实时预测场景下MTL模型效率也更高。

共享参数! 1 + 1 < 1 【无奈承受/不现实】

多任务多指标为了实现 1+1>2,在工作参数空间上设置了假如,例如:工作参数应该彼此凑近,w.r.t.一些间隔度量,共享一个独特的概率先验,或驻留在一个低维子空间或流形。当所有工作都是相干的时候,这些假如能够很好地工作,然而如果在不相干的工作之间产生信息共享,则大概率导致成果降落,呈现跷跷板、负迁徙景象。

因而,引出了畛域钻研的外围问题:如何可能利用好“共享参数”,让多个工作谐和共存、相辅相成、井水不犯河水?

二 多任务多指标计划概览

钻研上述外围问题,有两个方向,一个是Architectures,一个是Optimization Strategy,如下图所示。

Architectures从网络结构设计方向思考哪些参数共享,在什么地位,如何共享。

Optimization Strategy多指标优化策略从loss、Gradient的视角去思考工作与工作之间的关系。均衡loss体量(Magnitude),调节loss更新速度(velocity),优化Gradient更新方向(direction)。在宏观层面缓解梯度抵触,参数撕扯,在宏观层面达到多任务的balance。

1 多任务多指标网络结构设计

Architectures从网络结构设计方向思考哪些参数共享,在什么地位,如何共享。正当的共享网络结构设计对于成果晋升有无足轻重的作用。至今,多任务的钻研焦点仍然在于如何联合工作来设计共享构造。本文次要介绍CTR畛域的多任务构造。如上图,较为常见的构造有Share-Bottom【hard】,无需赘述。2018年google提出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 similarity
b.语言越相近,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 Gansbeke W, et al. Multi-task learning for dense prediction tasks: A survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2021.

原文链接
本文为阿里云原创内容,未经容许不得转载。