当前位置: 首页 > 科技观察

多任务学习在风控场景中的应用探索与案例分享

时间:2023-03-14 08:57:36 科技观察

本次分享的主题是多任务学习在风控场景中的应用探索。主要从多任务学习的角度讨论什么是样本选择偏差问题以及如何解决解决方案。也会分享我们团队在打捞和文本两个场景的应用案例,详细介绍我们如何结合风控场景的特点定制多任务学习方法来解决样本偏差问题.今天的介绍将按以下顺序进行:风控场景存在的问题多任务学习概述应用案例序贯多任务学习方法01风控场景存在的问题1.风控算法的瓶颈影响其发展的主要因素影响风控模型效果的因素包括:样本、标签、特征和算法。长期以来,商业模型主要关注前三个因素:如何选择客户群体样本,使模型更稳定;根据业务逾期率要求设计标签;开发第一和第三阶段模型;对数据进行特征工程;引入第三方数据等XGBoost、LightGBM等主流树模型是模型效果的标杆,深度模型往往难以超越树模型。近年来,风控算法通过GNN图神经网络取得了一些突破,但在实现上还存在一些问题。面对这么多瓶颈,难道风控模型的算法就没有改进的余地了吗?如果风控模型仅限于基于数值结构化数据的分类任务,可能确实很难改进,但是如果我们换个思路,是否可以针对风控场景存在的问题,设计相应的解决方案来改进模型影响?羊毛布?下面揭晓答案。2.样本选择偏差我们针对的问题是样本选择偏差。在金融信贷中,用户要先申请,再付款,最后出现逾期履约。在整个过程中,用户数量逐渐减少。一般来说,大部分用户的申请都会被拒绝,小部分获批的用户不会发起支付,最终逾期的用户就更少了。常规的建模方法只能利用这一小部分用户来训练模型,当模型在线使用时,是面向所有申请者的。这导致模型训练空间与在线预测和推理空间之间存在显着偏差。3、样本选择偏差的影响。模型适合局部,本身就存在偏差。当客户群体发生变化时,模型效应可能会衰减。举个简单的例子:如上图所示,左边是有偏样本得到的模型,分类超平面将好人和坏人分开。左边的绿色是好人,右边的红色是坏人。此时只有一个红色样本被错误分类。但是看右边的全样本空间,超平面左边有大量红点,属于好人,分类误差大,更好的模型可能是上新加的超平面正确的。现实中常用的树模型是非线性模型,是一种比较复杂的空间划分。没有原理图那么极端,误差也比较小。样本偏差将在迭代过程中继续累积。有偏差的样本会导致模型本身有偏差。用有偏差的模型筛选用户,下次再用这些用户重新建模,导致偏差不断累积,最后通过的用户越来越有偏差。样本选择偏差也可能导致建模样本过少,尤其是在一些新产品的冷启动阶段。我们以上图中的某款风控产品为例(数据已经脱敏)。大约有700,000名申请者。如果将训练集、验证集、OOT等进行分层次,则很难得到稳定有效的模型。4.解决样本偏差的方法解决样本选择偏差的传统方法是拒绝推理。例如硬截断法、模糊展开法、双记分卡法、自训练自训练等,综上所述,拒收样本的逾期标签是通过不同的方法得到的,整体提升相对有限。这本身就是一种无中生有的方法。使用这些没有过期标签的样本进行训练,任何方法得到的标签误差都比较大。有没有办法在不获取用户过期标签的情况下解决样本选择偏差问题?我们想到了从多任务学习的角度去解决。虽然被拒绝的用户没有过期标签,但他们有批准和拒绝标签,以及活跃的分支标签。这些标签本身与风险密切相关。如果将这些标签与过期标签一起训练,就构成了多任务学习。而且这些标签覆盖更全,偏差更小,用于辅助过期模型的训练,可以有效缓解样本选择偏差问题。02多任务学习概述1.多任务学习的定义多任务学习,简单来说就是将多个相关任务一起学习,通过共享和补充领域相关知识来提高泛化效果。多任务学习可以理解为知识迁移:单任务学习时,两个任务独立学习自己的模型参数;一些参数在多任务模型之间共享,以学习任务之间的共同部分,而一些参数不共享,用于学习任务之间不同的部分。图中右侧的多任务学习网络参数共享方式是硬共享,所有任务直接共享公共部分。2.多任务学习的优点多任务学习的优点是一个模型可以解决多个任务。比如第一期、第三期、第六期的风险预测建模,都可以用一个模型来解决。此外,利用任务之间的差异可以提高泛化能力并防止对单个任务的过度拟合。通过多任务模型,还可以进行知识迁移,提高主任务的效果。多任务学习可以解决冷启动问题和主任务训练难的问题。前面提到主任务样本小,有相关样本充足的辅助任务,可以解决主任务训练难的问题。3.多任务学习的常规方法多任务学习有几种优化方法。首先是共享层改进的MoE和MMoE方法。与上面提到的硬共享方法相比,图中的方法称为软共享,即不直接共享底层参数,而是增加了Expert和Gate两个模块,一般称为专家模块和门控结构.专家模块在任务之间共享,但每个专家学到的知识是不同的。可以理解为每个专家模块学习自己领域内的知识,多个专家意见通过门结构加权求和,得到综合意见。门结构可以理解为专家模块的信息过滤。如果0号专家的权重大,说明这个专家意见比较保留。MoE和MMoE这两种方式的区别在于,MoE是多个task共享的gate,而MMoE是每个task都有自己的gate,思想是控制sharedlayer。门控结构通过注意力机制进行训练。第二种优化思路是改进输出层。典型的方法是ESMM。ESMM是阿里针对转化率预估问题提出的,主要解决广告推荐场景下的样本选择偏差问题。简单介绍一下转化率预估问题:产品展示后,用户可能会点击,点击后,用户可能会购买(转化)。转化发生在点击之后,广告的点击率普遍偏低,估计模型的样本偏差非常严重。ESMM方法巧妙地将转化估算转化为点击和转化估算。用户的点击是无偏的,但转化是有偏的。点击和转化任务的引入被建模为点击率*转化率。通过训练clickandclickandconversion任务,间接训练了conversionrateestimationtask,解决了。转化率估计的样本偏差问题。click和click和conversion两个任务最终都带入了lossfunction。转化率预估任务没有直接放在损失函数中。除了MMoE和ESMM这两个思想之外,还有一些提高目标函数的多任务学习方法。不同的任务一起训练,具有不同的任务分布、重要性和难度。直接加上loss是不合适的。Artificialtrick,可以给主任务分配大的权重,给辅助任务分配小的权重;给困难的任务大的权重,给简单的任务小的权重。此外,还有一些自适应动态调整权重的方法或对目标函数添加约束的方法,这里不再介绍。03应用案例1.多任务打捞模型打捞模型是指对被主模型拒绝的部分用户进行打捞。在我们的常规实验中,我们发现无论是用打捞用户建模,还是主用户和打捞用户一起建模,实际模型都不是很稳定。我们想了想,做了一个生动但不严谨的描述:主模型就像图中的蓝色圆圈,打捞模型就是在这个外面找低风险的人,外面空间太大,有没有明确的方向性,能否利用主模型给打捞模型加上一些方向性的约束,让打捞模型大部分继承主模型的风险判断,同时向外扩散召回?我们设计了两个标签,pass标签和risk标签,利用了多任务的思想。主模型的通过和拒绝通过标签建模,用户逾期表现通过风险标签建模。我们使用XGBoost模型的叶子节点作为特征,通过神经网络训练多任务模型,可以类比XGBoost加LR的结构。该方法主要考虑到神经网络不擅长拟合数值特征,通过xgb预训练增强风险标签的拟合。中间是两个任务共享的全连接神经网络,用来训练多任务。这不是端到端的模型,是对任务的早期探索,但最终效果还是很不错的。右边是多任务恢复模型的在线效果图。一年上线期间,常规模型的效果衰减严重,而多任务模型的效果相对稳定。2.Transformer多任务模型我们的第二个应用案例是基于文本数据的多任务模型。该文本数据为非结构化数据,定义了十个标签,包括passrejection、loaninterval等,通过多任务学习,可以将不同的任务目标结合起来,实现信息互补。具体实现是通过图中的Transformer网络,其中Encoder部分的信息是共享的,Classifer部分是独立的,相当于上一题中的tower部分。最后,经过实验验证,Transformer分类模型可以将这些标签上的Auc提高2个点左右。04时序多任务学??习方法1.多任务场景分析接下来要说的是我们结合业务设计了哪些方法来解决样本选择偏差的问题。首先,风控业务中的场景分析包括三个阶段:申请、请求支付、风险绩效。这三个阶段按照时间顺序简化场景。实际上,在用户发起支付之后,还有支付的审批、资金的审批等阶段。申请阶段只有一个标签,即通过或拒绝;退出阶段可能有多个标签,根据用户激活时间和申请时间的间隔分为短间隔、中间隔、长间隔等。风险阶段也有多个标签,短期风险、中期风险或长期风险。有几个关键问题:风控建模预测风险,风险是主要任务,其他pass、reject和action是辅助任务,但是一般的多任务学习方法没有顺序关系,如何设计一个是关键指出网络结构可以有效地利用任务之间的时序关系。2.网络结构如图所示,网络结构从下到上依次为共享层、应用、动作、风险组成的顺序塔层,最后是输出层。和传统的多任务学习一样,共享层的参数是共享的,但是塔层的参数是不共享的。不同的是,我们创新性的提出了info信息桥部分,用来对stage之间的时序依赖进行建模,进行信息传递。3.HierarchicalattentionInfobridge是通过hierarchicalattention实现的。分层注意力分为两个步骤。第一步是阶段内注意力,它聚合了从内部任务标签(例如动作分支间隔)中学习到的表示向量。;第二步是inter-stageattention,就是对聚合的信息进行过滤,在任务之间传递有用的信息,丢弃无用的信息。4.半监督损失函数我们介绍了用于半监督学习的交叉熵正则化损失函数。交叉熵正则化是一种简单有效的半监督学习方法。目标函数中有标签的用户会计算交叉熵损失函数,没有标签的用户会计算交叉熵正则化。最终的损失函数是三个阶段通过不同权重的损失函数之和。5实验结果与主流方法相比,本文提出的时序多任务风险控制建模方法MSIS的Auc增益约为2%。同时,我们通过消融实验证明了每个网络的每个部分都是有效的。最后,我们做了一个参数灵敏度实验。在不同的参数下,本文提出的方法相对稳定有效。05小结综上所述,本文主要提出了几种解决风控场景下样本偏差问题的方法。一是用样本偏差小的任务辅助过期任务训练;二是通过设计网络结构实现多阶段多标签任务的联合训练;三是设计信息走廊,通过分层注意力机制实现信息汇聚和有效传递。06Q&A:当所有应用样本都用于定义标签后质量时,没有动态样本如何定义目标?A:对于没有移动和通过的样本,在风险阶段是没有好坏标签的,这种方法不需要给好坏标签。应用阶段,标签通过或拒绝,全样本用于训练;移动支持阶段,只用样本进行训练,移动支持标签是最近几天是否有移动支持发出;通过应用和移动支付的用户将进入风险阶段。生成过期的性能,带有好和坏的标签。没有标签的用户使用交叉熵正则化作为补充损失函数。Q:在应用阶段,如何用本文提出的神经网络方法来解释模型?A:LR和XGB树模型比较容易解释,而神经网络模型只能借助外部工具来解释。Q:本文提出的模型与AITM模型有什么区别?A:有两点不同:一是AITM的方法只是前后直接转移任务,每个阶段只有一个标签,而本文的方法在不同阶段可以有多个标签,引入多个标签可以更好的辅助风险任务训练。二是交叉熵正则化的损失函数不同。Q:如何设计不同任务损失函数的融合权重?A:根据任务的优先级,比如主任务是逾期任务,可以将任务权重设置高一些,辅助任务权重可以设置低一些。二是根据任务的难易程度。困难的任务可以设置得更大。例如动态支持应用的标签很容易训练,后两个任务就比较难训练。可以将第一阶段的权重设置得小一些,后续任务的权重设置大一些。.Q:能否详细介绍一下交叉熵正则化损失?A:最终的损失函数是多阶段损失函数的加权融合,对每一阶段的损失函数进行扩展,包括标记和未标记两部分。标注部分的损失采用交叉熵损失,未标注部分采用交叉熵正则化损失。交叉熵损失计算公式中的P为真实标签,交叉熵正则化中的P为模型预测的分数。最终训练的结果是稳定模型对未标记样本的评分。Q:申请、支出、风险三项任务的效果有没有提升?会不会有跷跷板效应?A:跷跷板效应是指在多任务学习中,某项任务的效果变好,而其他任务的效果降低。我们的主要任务是提高风险阶段的AUC。风险阶段的AUC较高,应用和支付的AUC稍弱,我们可以接受。今天的分享就到这里,谢谢大家。