Press "Enter" to skip to content

【AI可解释性系列分享之二】基于特征、模型的可解释方案在蚂蚁安全风控的应用

引言: 可解释性相关算法作为蚂蚁集团提出的“可信AI”技术架构的重要组成部分,已大量应用于蚂蚁集团安全风控的风险识别、欺诈举报审理等场景,取得了一些阶段性的成果。 本系列文章,我们将以风控领域具体应用为例,尤其关注领域专家经验和机器学习方法的交互结合,介绍 蚂蚁集团特征可解释、图可解释、逻辑可解释等算法方案的探索和落地 。

 

专家点评:

 

李琦

 

清华大学副教授,博士生导师,ACM SIGSAC China副主席

 

AI可解释性是实现安全可信AI的关键技术,近年来得到学术界和工业界的广泛关注,具有非常好的研究与应用前景。蚂蚁集团在可解释AI上已有大量技术积累和应用,结合了最新的前沿学术研究工作和实际的业务场景要求,在不同的安全风控场景实现了基于特征可解释、图模型可解释、序列模型可解释、文本模型可解释等方法,相关方法也已落地实际业务场景,为可解释AI进一步的研究应用奠定了基础。

 

RART 01

 

基于特征的可解释

 

基于特征的可解释方法是目前业界最常用的, 这类方法的基础在于模型的输入特征本身是基于人工经验提炼加工的,因此特征本身具有可解释性(或者至少具有可读性) 。我们可以通过SHAP一类的方法对模型的输出给出相应的重要关联特征[1]。这类方法在安全领域被广泛地使用。

 

到目前为止,安全领域最高效的一类模型还是基于树的各种集成学习的方法,比如说lightGBM、XGB等,当我们有非常好的人工经验特征的时候,这些方法得到的模型作为baseline一般是很难被超越的,在整个风控还有其他各个领域里面也确实被广泛地使用。相对单一的决策树或者逻辑回归模型,这一类多棵树ensembling的模型如何给出最重要的特征作为可解释,常见方法有两种: 一是基于扰动,比如基于shapley value的方法,二是tree interpreter这些基于模型内部结构的方法 。SHAP的基本原理就是一种基于扰动的方法。当我们把若干特征遮住之后,如果对模型的效果产生下降,那我们认为这些特征对该样本是重要的,对它的结果是起到关键的解释性的,这是非常直观的一个方法。另外,像ELI5(这个缩写的意思是explain like I am five,很好玩的一个名字),它是基于这棵树本身的内部逻辑做一个加和,方法非常的直接和简单。蚂蚁集团的AI工程师对SHAP和ELI5做了两点优化:首先我们对两个算法做了分布式的改造,从而能够支撑产生大的业务量和调用量;其次,因为我们用的是基于树的集成学习,可以用tree-shap的方法对许多中间步骤完成预计算(对ELI5也做了相应的改造,因为对树结构确定训练样本决定之后是可以先提前预计算好,避免每一个样本都去重复计算,这样可以极大地提升可解释模块的时效性)。

 

 

目前这两个分布式可解释算法已经在蚂蚁集团内部反欺诈、反赌博、反洗钱、商户风险管理以及支付宝事业群生物识别等场景都有落地应用,收到不错的反馈 。比如,在反欺诈的智能攻防过程中,快速得到模型可解释结果对于模型效果监控和事件案例分析等非常重要,实际线上某个场景的lightgbm模型可能就需要基于百万事件的上千维特征实时计算可解释结果,目前的链路可以保障类似业务的需求。

 

综上,因为我们认为 底层的特征往往已经是人工构造的,具有可读性和可解释 。所以这一类可解释输出相对来说是比较标准化,也是比较容易被业务接受。

 

RART 02

 

基于模型的可解释

 

// 图模型可解释 //

 

除了树模型,在风控场景中图模型也是非常常用的一类方法。在支付宝的场景中,用户、商户、设备和资金流天然地构成了一张图。比如以用户账户或银行卡为节点,以他的资金流向(或设备关系、社交关系)作为边,这是非常常见的一类构图方法。这类基于资金和社交关系的图模型,对于团伙行为的挖掘,对于一些聚集风险比如羊毛党等等的挖掘,对于赌博、欺诈、洗钱这种有组织、有分工形态的风险识别,都有着较好的效果。蚂蚁安全业务广泛应用了图模型,因此对图模型的可解释性需求也就早早提上日程。但正如之前所说,可解释性在各个具体场景需求很不相同,缺乏定量的标准,因此,图模型的可解释我们一直在探索中。

 

目前,我们基于模型的输出,将图模型可解释分成三个维度来做: 包括节点可解释、路径(或者边)的可解释、子图可解释 。

 

节点可解释就是模型对图上的某一个节点做预测或者分类(比如判定某个账户为洗钱账户),需要相应的可解释 。业界有一些成熟的方法是像GNN explainer[2],它的思路其实是对图神经网络上面做的扰动,因为GNN本身最主要的输入就是相应的邻居节点以及相应的特征集合。所以GNN的思路很简单,就是随机地mask一些节点集合或者特征集合,然后来看loss上面的变化,从而反推出哪些节点和特征是对这个样本的结果预测更重要。从这个思路的描述上也可以看出来,它是一个计算复杂度非常高的算法。它需要对每个样本都做这样的一个mask的计算。2020年一篇NIPS的文章,提出了叫做Parameterized GNN explainer  (PG explainer) 的方法[3]。把这个从扰动之后寻优的问题变成一个预测的问题,来预测可能哪些节点和特征的子集合是对相应样本更重要,然后能够以更小的成本完成运算。在我们的场景其实这两个方法都做了尝试,但是效果不太好。因为整个风控场景的图算法,往往无法直接简单地复用GNN,即使用的就是GNN,它对业务本身理解的依赖度也很高,当我们纯粹只是去给出若干节点或者若干特征的时候,业务的反馈往往是比较零散,很多时候不构成一个完整的解释。

 

相反,一些简单的方法有的时候能够给到一些很直接的解释,或者说能够更有效地帮助业务 。比如在这个反洗钱动态图的场景,最终给到业务的可解释方法非常直接,用一个SSSP(Single Source Shortest Path)的方法,就相当于如果有这个红色的点是新预测出来的一个黑点,只要给出距离它最近黑点的一个路径,这往往在洗钱场景就能说明问题了。当然这个方法对很多其他场景也是远远不够的,我们后面还会再做更多的尝试。

 

 

第二类问题是基于路径的可解释或者边可解释 。这里举了一个知识图谱的例子,业务场景是在反洗钱履职中,我们需要对所有的企业最终受益人(ultimate beneficial owner,UBO)给出一个完整的录入和说明。由于历史原因,有一部分UBO的采集可能是不完整的,为了尽量减少对客户的打扰我们需要通过他的身份进行一些预测和关联。比如同时全中国有非常多的人名字叫做张三,那究竟哪个张三才是这个企业的最终受益人,我们关联了某个张三之后,就需要给出从这个企业到个人之间给出最具有说服力的路径解释。我们用的方法是KPRN的方法,是基于AAAI2019的一个文章实现的在图谱上的一个路径关联的方法[4]。目前我们可以用这个方法来实现占比83%的UBO路径解释。

 

路径可解释这里另外一个应用案例是资金流链路还原,还是以反洗钱为例,实际业务中资金流向是非常复杂的,比如有100块黑钱进入我们的体系,但这100块钱分分合合流转几次之后,如何知道这100块在谁那里,哪一笔是黑钱,哪一笔是白钱?我们尝试了不少方法,比如通过一个类似于背包算法的定义,结合金额相近和快进快出时间这两个特征一起,来还原尽可能真实的资金链路,然后再来匹配相应的黑点,最终给到业务方来辅助决策判断,这套方法也有效地提升了对相应黑灰产的覆盖。

 

第三类问题是子图的可解释,在安全场景最常见的子图和社群发现问题就是团伙挖掘 。比如今天有一个薅羊毛的团伙,他的内部结构里有羊毛党、有相应的资金汇集方、相应的返款、打钱的账户等等,对这样复杂的一个网络结构,怎幺来做具备可解释性的团伙挖掘模型呢?我们基于2019年的一篇论文开发了一个叫做Risk-alike的方法。为了找到类似图结构的子图,它的基本思路就是如果子图A和子图B是相似的,那他的A和B上做采样得到的更小的子图,然后做embedding之后,它的分布应该是近似的。比如通过这个方法,基于现在已知一个可疑羊毛党团伙或者赌博团伙,我们能够把相似的团伙给挖掘出来,然后给出可视化的展示,这是基于同构图的做法。异构图上来说,我们也还在继续尝试中,这里举的例子是针对二部图的方法,相对来说还是比较简单地基于ranking的方法。比如,在二部图的左边是账户,右边是银行卡,在银行卡里面有一张是有问题的银行卡。我们通过类似的相似度计算,能够给出可疑账户的一个排序,然后同时具备一定的可解释。这些模型在蚂蚁集团的风控产品上做了落地,能够实现包括快速展示、染色等等这样的功能。

 

 

总体来说,因为业务的复杂性,图模型的可解释方法还有很大的探索空间。在风控场景,我们会继续深耕,尤其是对于无监、异构、动态图,希望能结合安全业务给出更多有价值的产出。

 

// 序列模型的可解释 //

 

随着整个数据的复杂度的提升,风控现在也在广泛地使用着深度学习的模型。 风控深度学习和CV、NLP还是很不一样的,它的底层的原子级输入数据最常见的就是所谓的事件数据,往往表现为以行为序列的形式。 举例来说,一个常见的用户的行为序列,从注册、登录、信息修改、支付行为到各种浏览行为等等,在每一个事件上,它又会带着丰富复杂的属性数据,比如时间戳、金额、设备信息等等。对这样一个非常复杂的数据结构做行为序列的建模,我们用过很多的构思和尝试,包括早期比较常见的像RNN、LSTM,以及现在更多使用的比如多任务的架构、wide&deep的架构等等。图中举例的是应用factorization machine的方法[5],在FM的基础上也可以加入一些静态特征的融合,最后形成一个较完整的、较大的模型架构。

 

所以对于可解释性来说它的挑战是很大的:首先,它有非常复杂的数据形态,它既包括事件信息,也包括静态的行为特征,每个行为中间又有很多的属性,它可能是离散的,也可能是连续的;第二,在我们的场景数据量非常大;第三,又回到最开始提到的问题,就是业务方很多时候对所谓的可解释没有明确定义,需要我们去努力对焦需求,包括给到关键的特征、可能需要一些关键的序列,可能给到一些热力图,甚至直接用文字的报表的形式来给出我们为什幺有这样的判断等等,需要探索的地方是非常多的。

 

 

这里我们做一个简化的讲解,比如说在类似于wide and deep这样的一个模型架构,既包括一些表征,也包括静态特征。可解释的方案也有多种:像最简单的如most relevant first,就是给出最可能导致这个打分相关的单一事件;稍微复杂一点的,它可能是若干事件(“关键子序列”)导致的,比如有一个快速的注册、登录、转账这样的行为,可能是一个比较可疑的行为;更复杂的是,在序列的基础上还要加上一些关键属性,例如他在半夜多笔的给同一个人转账,并且是一些整十整百或者吉利数字类似888元这种,可能是一些赌博行为的特征。当我们把这些序列及特征给它挖掘出来的时候,业务方能够认同这种解释。

 

具体的做法,这里也仅做一个思路上的分享。思路一就是把序列当做文本来看,这些事件可以认为就是文本里面的词,把关键词通过attention或者其他的方法把它找出来,就是找出了相关的重要的序列。当然这有很多的问题,比如说究竟定义多少个序列,这个数字是比较不确定的,很难预先指定。所以思路二的角度就是直接从可解释的基本方法论来入手,通过扰动的方法来确定一个不定长度的关键子序列。这里也借鉴了近期的一篇论文,叫VMASK[6]。核心思想就是通过扰动的方法,生成0/1向量M,用M和序列做一个同数位的相乘,乘到0的部分就是被mask了,来看对最后结果的影响。这里需要用到gumbel soft max这个技巧,主要是用来解决softmax函数本身不可导的这样一个问题。

 

 

但是,在我们的场景里面,没有办法直接地使用VMASK这个模型。因为VMASK这个方法,是直接在训练过程中对embedding就能够做扰动,这个模型结构是嵌入式的。在我们的场景中,比如有一个现有的模型它是LSTM、transformer或者factorization machine这样已有较好效果的模型,我们不希望去改动它,但是我们需要一个add hoc的解释模块。所以我们借鉴了VMASK的思路,来对模型做一系列扰动。这个黑色的方框意味着我们原有的模型是一个黑盒,给它扰动之后,初始的X序列进入到黑盒模型之内,然后给出mask或者不mask的loss的差,从而得到最优的一个子序列,能够尽可能地拟合原有的一个结果(同时对M的秩做一个限制比如用L1正则)。这个方法也是刚开发的,目前还只是在一些场景做了初步应用,也需要更多探索。而且就具体的业务场景来说,子序列的可解释也只是其中的一块。很多时候他需要结合其他的,比如说静态特征,属性值等等。

 

// 文本模型的可解释 //

 

简单介绍一下在文本可解释方面的一些工作。文本可解释这块的工作是比较直观和好理解的。 因为文本本身具有很好的可读性,所以常见的方法就是在文本中高亮关键词的方式 ,比如BERT本身就自带attention的方式,而informer的方法通过对attention做一些限制可以得到更稀疏、往往也更精准的结果。

 

 

另外我们也尝试了基于序列标注的,基于QA的,基于多任务的一些方法,这里就不展开了。通过高亮关键词的方式,既可以用作对运营的辅助,也可以用作模型自身的诊断。比如一个文本被错误地认为是一个涉黄文本,通过看其中高亮的解释部分可以快速分析原因(比如“大吉大利今晚吃鸡”这些易被分错的词)。

 

// 小结 //

 

综上,我们根据安全风控场景的模型种类,介绍了几类基于模型的可解释方法。这些方法,不管是我们找到的可资借鉴的论文,或是我们自己开发的算法,解决思路大致还是会归于之前介绍的基于扰动、基于模型结构等方法论。需要再三强调的是,这些问题本身仍旧是极具挑战性的,真正有意义的可解释产出需要大量AI工程师和业务团队的密切合作和沟通来实现。在此过程中,我们也深刻认识到,专家经验和机器学习应该有更好的结合方式,来从根本上更好地保障AI可解释性。 下一期文章将会从“基于逻辑的可解释”这个角度,介绍蚂蚁集团的一些思考和探索。

 

// 参考文献 //

 

[1] https://github.com/slundberg/shap

 

[2] Ying R, Bourgeois D, You J, et al. Gnnexplainer: Generating explanations for graph neural networks[J]. Advances in neural information processing systems, 2019, 32: 9240.

 

[3] Luo D, Cheng W, Xu D, et al. Parameterized explainer for graph neural network[J]. arXiv preprint arXiv:2011.04573, 2020.

 

[4] Xiang Wang, Dingxian Wang, Canran Xu, Xiangnan He, Yixin Cao, and Tat-Seng Chua. 2019. Explainable Reasoning over Knowledge Graphs for Recommendation. AAAI 2019.

 

[5] Xi D, Zhuang F, Song B, et al. Neural Hierarchical Factorization Machines for User’s Event Sequence Analysis. SIGIR 2020.

 

[6] Hanjie Chen, Yangfeng Ji. Learning Variational Word Masks to Improve the Interpretability of Neural Text Classifiers. 10.18653/v1/2020.emnlp-main.347. 2020.

 

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注