共计 10747 个字符,预计需要花费 27 分钟才能阅读完成。
简介:多指标(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.
原文链接
本文为阿里云原创内容,未经容许不得转载。