数据赋能,高效防控:蚂蚁数据智能如何守护金融安全
我是马希民,目前在蚂蚁金服消费金融事业群大消金技术部风管技术部贷中平台技术团队,今天我将和大家讨论高可用实时金融风控决策系统。
我们团队主要负责的是消费金融产品的实时风控,例如支付宝收银台中花呗、花呗分期、信用卡分期等贷记产品显示时,表示这笔交易已经通过了我们的实时风控系统,被视为无风险交易,我们实时的决策系统面临的主要问题有以下四方面。
第一,我们需要极速响应,实时风控的核心问题是面对海量的用户请求,基于海量数据做复杂计算,在极短时间内进行响应,在一些特殊场景例如大促、直播等请求量会被进一步放大,而响应时间的要求与日常相同。
与此同时,如果说实时风控的架构简单来说是数据 + 计算,那么这里数据和计算的维度是非常丰富的,就数据来说,数据来源各不相同,有离线基础数据、准实时数据、实时数据;就计算来说,计算的复杂度也各不相同,有简单的统计类指标,也有复杂的时序行为图计算,还有机器学习模型的打分,这样的复杂性也对极速实时风控提出了更高的要求。
第二,极致的安全生产。金融领域相比于搜索、广告、推荐等更加强调严谨性,任何的线上链路的变更必须经过充分的验证,而这里的变更不光有功能代码的变更,还要考虑到整体决策依赖的外部数据是非常多的,例如名单、处置限额、等级、量化规则等等。
整体决策树会因为数据不同而产生不同的决策路径,金融安全生产要求技术针对上述任何数据的可能变动,提供全局影响的洞察,来让上述变更生效前就能测算出整体的影响。
特别是我们做的是实时风控系统,风险政策同学无法在离线完全模拟出这种全局影响,更需要技术能力来满足这种诉求,确保风险政策同学所做的数据变动的影响是可以被感知的。
第三,实时系统的高可用性。花呗作为一款国民级产品,直接影响到大家的日常生活,同时一些大商户对 SLA 的要求也是非常高的。
因此,实时风控除了需要保障日常正常流量压力下的极速响应,还需要在面临一些特殊状态依然保持高可用,例如大促、直播的高峰流量,以及当风险规则因为数据等原因导致异常,进行了远超出预期的拦截,实时风控架构需要对上述特殊状态进行快速的自适应响应,来将实时风控的响应时间和拦截率始终维持在一个合理的水位。
最后是数据智能化的决策。整个花呗 / 信用卡的风控规则体系本质都是数据驱动演进,当风险政策同事基于离线数据研判出可能的风险模式、风险特征,并加工出相应的风险规则后,技术需要提供必要的对这些规则进行优化和快速验证的能力。
如果进行适当的抽象就是,围绕规则期望优化的特定目标进行局部最优的求解,例如降低套现率的同时至少维持通过率不变,并在这些规则上线后持续针对该目标进行策略调优推荐,防止规则劣化。
围绕着上述四个核心问题,我想简单介绍一下贷中实时风控更为具体的业务形态,以便让大家对我们所面临的问题有更确切的体会,以及技术需要针对这样的业务形态做怎样的抽象来进行保障。
简单来说,风险政策同事会根据业务场景、买卖家等级等维度划分出具体的风险场景,我们俗称为画格子,而具体格子的不同会导致决策树的形态不同,例如一个低风险买家在淘宝的大商户使用花呗和一个有异常关联的买家在疑似套现商家多次尝试,所依赖的决策数据和决策逻辑是全然不同的,体现在架构图上就是前者只需要跑特定场景的通用规则,而后者可能需要跑该场景的全部规则,同时结合一些图计算和模型打分判断花呗是否可用。
基于上述的业务抽象,我们将所有的决策流程和风险规则完全数字化,当一笔咨询流量到达时,我们根据该流量所属的具体的格子来动态的生成决策树,并基于生成的决策树获取所有必要的风险数据进行计算,而这样的抽象是我们解决上述核心问题的基础保障。
结合上述的业务抽象和数字化基础,简单讨论一下我们是如何解决上述四个核心问题的:
极速响应:除了自建的规则引擎进行常规的规则优化和 IO 合并之外,主要思路是提前计算和按需计算,特定流量只跑最必要的规则,只取最必要的数据。
极致安全生产:为了洞察风险政策相关数据变动对整个决策结果的全局影响,我们的核心思路是采集一部分的线上流量用做旁路流量,在基于变动数据生成的新决策树上重放这部分流量,达到不生效但是重现与线上等价影响的效果。
高可用:为了应对大促或者直播,我们会对不同风险场景的流量提前生成切换档位的降级方案,或者自适应的生成降级的决策树,来保障尖峰流量来到时响应时效不受影响。
而对策略异常态,风险政策同事会对风险规则给出预期的拦截率波动范围,如果实时采集的拦截率出现了预期之外的波动,那么系统会对该规则进行自动降级或者对拦截量进行盖帽。
数据智能化决策:风险规则在研发过程中,以及在上线后,我们通过完全自动化的周期任务来对该规则进行目标约束下的优化,同时并给出健康度评价,确保规则在全生命周期都有期望目标下的较优解,同时建设完整的 A/B 实验体系帮助风险政策同事快速的验证策略效果。
下面,我会逐一对每一个专题展开更详细的分享:
我们第一个架构抽象就是多级决策。上面我们说到,如果优质流量和风险流量执行完全相同的决策树,系统成本会非常大,因此我们在决策树上形成了一种流量漏斗。
我们的架构分为四层。第一层是快速决策,依赖的数据都是非常基础的,包括名单、准入、等级等,只做一些快速拦截或通过;第二层是量化决策,大部分流量都要经过,无论是优质流量还是风险流量,大部分规则都需要运行;第三层是深度决策,只有被认定为风险流量的才会进入,这一层运行的规则数据需求更大,可能包括图计算、模型打分等。
这里需要说明,前三层决策,即快速决策、量化决策和深度决策,都需要在百毫秒的时间窗口内响应。所以即使是深度决策,也受到响应时间要求的限制。例如,基于图特征的风险查询度数就会受到限制。
因此,我们有第四层异步决策,与前三层不同,这层的决策结果不是对当笔流量生效的,而是形成一个反馈回路,当同样的买家、卖家的下一笔流量再次来到我们的风险决策系统时,这个异步决策系统中的数据将反馈给前三层的某些风险规则,来进行风险流量的判定。
这一层的计算更复杂,依赖的数据范围也更大,例如基于更大规模数据集的图计算任务,或是进行多流 Join 的实时计算任务等等,从当笔流量进行异步决策到下一笔流量生效时延大约是秒级。
即使实现了上述的多级决策,在各个分层,特别是量化决策和深度决策两个分层,仍然会有一些必要的风险数据查询的 IO 瓶颈,而流量需要在百 ms 的窗口内作出响应,那么一个自然的想法是我们能否将这些慢查询进行前置,甚至提前对流量给出咨询结果。
基于这个想法,我们建设了预决策链路,这个链路得以实现依赖于支付宝收银台决策 – 花呗业务决策 – 花呗风控决策的架构。
简单来说支付宝的收银台渲染时,在调用花呗业务系统的同时,会生产一个消息,我们作为花呗的风控决策系统,通过监听这个消息,并利用花呗业务决策系统处理自身业务的时间挡板,通常在几十 ms,来做一些前置的工作,等咨询流量从花呗的业务系统调用过来的时候,这些前置工作可以被利用起来为快速响应创造更多的可能性。
这个架构简单讲可以分为三层:
第一层在离线,通过对线上日志和规则元数据的离线分析,预测出最具性价比的风险规则,这里的性价比有很多维度,包括读 IO 的时效、线上整体查询量、是否有利于整体决策树的裁剪、是否可以在预决策链路被查询和计算等等,然后通过天级别的生效方式将这些风险规则灰度弹出到第二层,也就是真正的预决策链路。
第二层是预决策链路,通过监听支付宝侧的消息,结合离线预测的风险规则元数据,提前进行必要的查询和计算,然后将这些前置计算的结果存入缓存,方便真正的线上链路使用。
第三层是在线链路,通过读取缓存获得部分前置计算结果来加速对花呗业务系统的响应,当然,我们还有一整套的机制来保障尽管预决策和线上链路的入参有差异,但是仍然会有一致的决策结果,否则不予生效,这里不做赘述了。
预决策通过提前计算高性价比规则的方式,让部分流量可以减少、甚至不需要在实时链路进行风险数据的查询和计算,大大加速了风控决策的响应。
风控引擎是实时风控系统的核心组件,也是我们完全自研的,一方面通过为风险政策同事提供类 SQL 的 DSL 编写方式,大大加速了他们对线上规则研发的参与度,风险规则的迭代效率得到显著提升,另一方面在风险数据都 ready 的情况下,风险规则的计算都在 ms 级别,是极速响应的基础保障。
不过实时风控作为一个更重 IO 的系统,其实压缩响应时间更多还是要靠降低不必要的 IO,前面讲到的多级决策和预决策其实也都是这个思路,而我们的引擎在设计以及产品态的包装时都沿着这个思路进行了拓展,下面简单介绍两个功能点,我自己称之为静态和动态的决策树剪枝。
前面提到过,我们会对流量进行风险维度的划分,即画格子执行最必要的规则。引擎的产品态设计也充分考虑了这一点,风险政策同事可以对特定场景定义自己需要进行画格子的特定维度,在线链路只需要基于这份静态数据先查询出必要的维度数据,就可以最大可能的对决策树进行裁剪,达到降低不必要数据查询的目的。
同时,并不是所有业务场景都适用于画格子来将风险规则的生效限定在一个特定的范围内,某些泛场景的规则依赖很多风险数据,例如行为时序异常,如果全部查询会对读 IO 有很大压力。
我们设计了一套方案来支撑对这些规则进行动态剪枝,简单来说就是发现决策树中的一些关键节点,不需要其他节点的结果也能大概率产生整体的决策结果,这里的其他节点也意味着更多的风险数据查询。
具体的实现分为两步,首先在离线基于线上日志分析具有倾斜数据分布的关键节点,将具有这样节点的风险规则弹出到预决策链路,之后预决策链路只查询这些关键节点的关键风险数据,有很大概率可以提前获取决策结果或者只需要查询其他节点的部分风险数据。
综合来看,决策引擎将数字化的规则执行控制在 1ms 以内,同时提供了很多降低 IO 成本的可能性,大大加速了风控决策的响应。
前面提到过,在日常的业务迭代中,风险政策同事会基于风险对抗的需要去调整一些风险数据,例如名单、买卖家等级、限额处置、风险规则等等,这些风险数据的的改变都会对整个决策树的决策路径产生影响。当一些影响比较大的变动上线前,风险政策同事需要对变动的数据对拦截率有多大影响有一个明确的感知,这是在离线无法完全模拟的。
因此我们提供了全链路 beta 的能力,建立在决策流程的完全数字化之上,任一决策流节点都有 release 和 beta 两个实现,对风险数据变动而言主要是获取数据的方式不同,任一变更的风险数据也会有 beta 版本,通过采样部分线上流量用做旁路流量,在 beta 版本决策流节点组成的决策树重放这部分流量,就可以实现洞察全局影响的效果。
如同 PPT 上的例子,调整卖家等级后,基于 beta 版本的决策流节点基于 beta 的卖家等级动态生成了新的决策树,不论是决策路径还是规则风险矩阵都产生了变化,那旁路流量在新的决策树上执行就有可能产生不一样的咨询结果,风险政策同事会根据这样的测算结果来评估整体的上线影响。
从这个例子也能看出,金融业务对严谨性要求是非常高的,而这也只是我们对安全生产所做的努力中比较有技术特色的工作,在这里抛出来与大家分享。
实时风控业务除了面临日常的流量压力以外,还会面临很多特殊状态,正常业务向的有大促、直播等,而异常向的有诸如风险规则异常拦截等等,如果对于上述特殊状态的保障都完全需要人工介入,特别是对于没有提前告知的特殊状态,势必无法满足快速的响应要求,造成线上故障。因此,在面临这样的特殊状态时,实时风控系统需要有一定的自适应能力进行保障。
这里举两个例子来解释我们如何通过建设系统的自适应能力来应对上述的特殊状态。
前面已经提到过,我们会对所有线上的风险规则进行健康度的监控,包括拦截率等等,同时结合风险政策同事在平台配置的风险规则健康度阈值。
如果全局视角来看风险规则的健康度指标与前述配置产生了预期外的严重差异,该差异是通过当前时间窗口的拦截率与时序数据库中存储的之前时间窗口的拦截率比较得到的,比较的规则和依赖的数据来自于平台配置,那么实时计算任务会将信息推送到所有线上机器,线上机器会对该风险规则进行熔断或者降级,并通知相关风险政策同事,从而达到系统的自适应降级。
另外,对可能出现的直播流量突增的风险场景,线上的单机会有对应场景的限流器感知秒级别的流量变化,如果流量增长有超出单机承载能力的趋势,那么会对该风险场景自适应的降级到事先配置好的降级方案,从决策树的视角看就是会裁剪某些节点,而从多级决策的视角看可能是原本需要深度决策的部分流量只跑前两层的规则,来保障系统不会被突增的流量压垮。
传统的风险规则研发主要集中在离线,由风险政策同事识别出可能的风险行为模式,与数据、算法同学配合形成风险规则后在离线进行仿真验证,这个模式存在一些问题,例如实时风控偏重解决欺诈问题,依赖的数据形态更多是实时化的,例如很多行为时序类的数据,这和授信、定价等使用离线模型为主的模式存在较大差异,因此存在离线无法完全仿真线上的情况。
同时,之前提到的旁路模式更偏重于安全生产的范畴,回放的流量是线上流量的采样,不真实对客生效,因此也没有实际的风险表现。最后,迭代效率也很慢,离线研发的规则需要等到全量在线生效后才能去看到该变更的实际风险影响。
我们期待实现一个由数据智能驱动的研发流程,既能帮助风险政策的同事更快地迭代策略框架,也能为风险政策同事优化甚至推荐策略框架。
首先,我们建立了一个 AB 实验体系。我们参考了 Google 的 AB 实验体系,通过分层解决了流量饥饿的问题。在同一层级中,我们根据风险规则的主键维度,进行流量分流,例如针对买家的规则和针对卖家的规则,分流因子是不同的。
这样,我们主要解决了旁路验证无实际风险表现的问题,可以帮助我们的风险政策的同事,根据切出的小部分流量,快速验证某项规则是否有效,加速他们的研发流程。
其次,我们有一个阈值优化的框架,即在目标约束下去优化现有的策略框架。举个简单的例子,在风险规则制定时,通常有一个预期的目标,比如他们想降低套现率,但在线上不能增加拦截率,因为增加拦截率意味着会影响 GMV。
在上述的策略框架中会有一些阈值,例如多大时间窗口内反复尝试多少次会被认定为一个异常行为,之前的策略研发经验这些阈值更多是专家直接定性然后离线大致测算的,我们提供了算法能力来调节这些阈值使之更接近该策略框架的预期目标,帮助风险政策同事优化他们的策略框架。
今天我主要分享了如何使实时风控决策系统实现极速响应和高可用性。实时风控决策系统的在性能方面的核心优化手段是降低 IO,我之前提到的多级决策、分层决策、预决策和规则精简,本质上都是为了减少 IO。
除此之外,我们还需要考虑金融领域的严谨性问题,进而衍生出来极致安全生产和高可用的要求。最后,就是我们期望在数据智能化的道路上进行一些更深入的探索,也希望我今天的分享能为大家带来一些收获,谢谢大家。
马希民,蚂蚁金服高级技术专家,本科和硕士就读于清华大学精密仪器系,硕士毕业后前往新加坡,期间主要从事大数据研发相关工作,2020 年回国后加入蚂蚁金服,目前带领团队致力于打造高可用、高并发、数据智能的在线实时风控决策系统。
FCon 全球金融科技大会将于 10 月在上海开幕,会议聚焦当前金融行业遇到的问题,围绕金融企业在数字化转型过程中的痛点,例如数据治理,智能化、数字化风控,数字化投研,数字化营销,IT 技术能力等方向进行深入交流,扫码或点击「阅读原文」可查看演讲专题。
目前 7 折特惠购票,咨询购票请联系票务经理瑞丽:18514549229(微信同手机号)。
微信扫码关注该文公众号作者