🌟 因果关系与关联关系有什么区别?为什么需要因果关系呢?
🌟 如何教AI学会因果关系,实现大数据因果推理?AI学会因果推理后与现在会有什么不同?
🌟 浙大90后博导如何与AI结缘?为何选择因果推理作为研究方向?
浙大90后博导况琨带你深入了解2021年AI最热方向——因果推理,内容硬核,干货满满,全文共计12202字。
《追AI的人》第8期况琨老师分享《模型不可解释,预测不稳定?不妨将因果推理融入机器学习试试》!
🔻直播简介:
2021年最热方向之因果推理能改变下一代AI研发吗?《追AI的人》第8期来咯!
浙江大学计算机学院副教授,博士生导师,人工智能系副主任。2019年获得清华大学计算机科学与技术专业博士学位,2017-2018年访问美国斯坦福大学。获第七届中国科协青年人才托举工程项目支持,2021年度中国电子学会科学技术奖(科技进步)一等奖,2020年度中国人工智能学会优秀博士学位论文提名奖。主要研究方向包括因果推理、人工智能、因果指导的可信机器学习,关注机器学习的可解释性、稳定性、公平性和可回溯性。在数据挖掘和机器学习领域已发表近40余篇顶级会议和期刊文章,包括KDD、ICML、MM、AAAI、TKDE、TKDD、Engineering等。
一、因果关系与关联关系的区别,为什么需要因果关系
二、机器学习如何赋能因果推理实现大数据因果推理
本次分享内容为如何将因果推理应用到到机器学习当中。针对算法模型可能存在的不可解释性、不稳定性,我们提供一个思路:把因果推理应用到机器学习当中。
现阶段,机器学习尤其是深度学习发展非常迅速,近些年取得了丰硕的成果,2018年图灵奖就是授予了深度学习的三位领军学者。回过头来看,现阶段深度学习主要的特点有哪些?主要有三个:· 数据驱动。当我们去训练模型,往往需要大量的数据。
· 关联学习。当有了数据之后,我们会去建立一个模型,模型当中存在的逻辑关系其实就是在挖掘变量之间的关联关系。
· 概率输出。如图我们给出了例子:在已确定好的神经网络当中输入一张熊猫的图片,通过关联学习之后输出的概率为是93%;当对输入的图片加入一定的随机噪声,输出结果就会发生很大的变化,如图输出已变成99.3%的概率为长臂猿。根据这个例子我们就能看出,模型存在不可解释性,并且模型对于不同样本、不同环境的数据集,输出结果非常不稳定。那么如何去解决这些问题呢?我们可以从关联学习的维度去突破,我们希望把传统的深度学习从关联分析跨越到因果推理,使得模型不仅知道这个图片是熊猫,还要知道这个图片为什么是熊猫,也就是知其然并知其所以然。
AI模型出现这些问题的主要根源在于因果机制还没有融入到机器学习当中。Judea Pearl也提出了人工智能的三种模型:关联学习、干预模型、反事实推理。现阶段的机器学习模型大部分都停留在第一阶段关联学习,这也导致模型存在着这些不可解释、不稳定的问题。比如公鸡打鸣跟太阳升起存在关联,当听到公鸡打鸣就知道太阳马上就要升起来了。假设说某一天某人不想让太阳升起来,就把所有的公鸡杀死,这会发生作用吗?很明显不会发生作用,太阳还是会照常升起。我们可以用公鸡打鸣来预测太阳升起,但是它并非太阳升起的原因。现阶段的机器学习其实还停留在关联阶段,要实现突破或者解决第一阶段存在的不可解释、不稳定的问题,我们希望从关联阶段跨越到因果推理,也就是说将因果推理引入到机器学习里面来。前文提到输入一张熊猫的图片,加入一定随机噪声就会识别成长臂猿,这个是机器学习里面研究比较多的一个内容。当我们加入的随机噪声,它可能使得数据里面变量之间的关联发生变化,致使虚假关联的产生。这些虚假关联可能正好就是模型去识别长臂猿的关联,这使得算法会去把图片识别为长臂猿。关联驱动和因果启发的本质区别在哪?准确来说因果是关联的一个子集。关联共有三种来源:因果,混淆偏差以及选择偏差。两个变量之间如果存在因果关系,两个变量则一个是原因,一个是结果。比如我们常说下雨导致地面湿,下雨就是地面湿的原因。也就是说下雨和地面湿是变量,它们之间其实就是一种因果关系。这种因果关系有什么好处?· 可解释性。当有人告诉你今天地面湿是因为下雨,你会觉得是逻辑自洽的。
· 稳定性。比如说今天杭州下雨了,地面会变湿;同样北京下雨了,地面也会变湿。如果我们能够发现类似的因果关系,它不会随着环境、时间、地域的变化而变化。
· 可决策性。比如说如果我们知道某些地方会发生干旱,我们就可以采取人工降雨的方式来缓解干旱的问题,这就是因果关联。混淆偏差可以这样理解:t和y没有任何直接的关系,t不是y的原因,y也不是t的原因。但是如果两个变量存在一个共同原因x,这时如果忽略掉了变量x,t跟y就关联了。同样还是下雨导致地面湿的例子,下雨会导致地面湿,下雨同样也会导致人们撑伞。如果我们进行数据收集就会发现,地面湿和撑伞十分相关,但是这种关联往往不能使人信服,撑伞和地面湿并不形成因果关系。类似的这种关联我们称之为虚假关联,它会随着时间、环境的变化而变化。关联的第三种来源称之为选择偏差。两个变量之间本身没什么关系,但是收集数据的时候可能会发生一些偏差。如上图中我们去做去识别图片中是否有狗,如果训练模型的数据集是很多狗在草地上的图片,那么在该数据集上,狗跟草地就变得十分相关了。两个变量之间会存在一个共同的孩子节点,比如说T表示的就是草地,Y表示的是标签为狗的图片,S表示的就是故意去选那些狗在草地上的图片,如此就可以发现狗跟草地就相互关联了,这其实也是一种虚假相关。上述三种来源实际上只有因果关联是我们想要的,因为因果观念具备很好的属性,包括可解释性、稳定性和可决策性。而混淆偏差导致的关联和选择偏差导致的关联则并不是很好,也是因为这些关联的存在导致现阶段机器学习模型出现了诸多问题。我们现阶段的模型大多数都还是关联驱动,并不能区分出因果关联,如果我们能够把将因果关联加入到机器学习模型中,就能够做出更多机器学习的成果。
用传统的关联分析模型去做一些任务的时候会面临什么问题?黑盒一直是大家都知道的现阶段机器学习模型的诟病。机器学习模型最后只是一个概率输出,它并不能告诉你缘由。比如应用在医学领域判断癌症,算法并不能告诉你为什么,它只能告诉你概率,最多给你进行可视化展现。这就导致我们很难参与到跟机器的互动中去,当我们在医疗、司法等很多实践过程中,肯定不能完全依靠算法。举个例子,如图黑线表示美国肯塔基州的结婚率,红线表示划船的致死率,当把两个变量放在同一个坐标轴里面,我们会发现两个变量非常相关,基本上可以用一个变量去预测另一个变量了。但是这无疑非常不可解释,从逻辑上来说,划船的致死率跟结婚率并不能直接关联。但这就是大数据关联挖掘,大数据关联分析能够帮我们挖掘出潜在的关联关系。上图给到了另一个例子,从数据中可以发现,太阳镜的销售量和冰淇淋的销售量十分相关,太阳镜的销售量提升,冰激凌的销售量也随之提升。但是这两个变量并没有直接的因果关系,并不是说太阳镜卖的好导致冰淇淋卖的好,也不是说冰淇淋卖的好导致太阳镜卖的好,它背后有个共同的原因——天气炎热/夏天。如果用关联驱动的模式方法去完成一些任务的时候,可能会面临的不可解释的问题。现阶段很多机器学习模型都蕴含着一个假设,就是训练数据集和测试数据集是均服从IID分布,独立同分布有假设的情况下,我们才能说在训练数据集上训练出一个表现非常好的模型。但是在我们实际应用中假设其实很难满足,比如说用阿里双11大促的数据集训练一个推荐算法,和平时使用的数据分布差异就很大了。还是识别这个图片中有没有狗的例子。假设提供的图片都是狗在草地上的图片,于传统关联驱动的机器学习方法去学的话,我们会发现狗和草地非常相关,大概率会把草地这个特征加入进来去预测狗。当拿这个模型去做测试时,测试数据集如果也是类似的狗在草地上的图片,模型能够很好的识别出来;但测试数据集如果是狗在沙滩上、在树林里甚至在水里,就会有很大的可能会识别不出来。本质问题就是草地跟狗之间的虚假关联,如果用草地去预测狗的话,会导致模型的预测结果非常不稳定。传统关联可能不一定能帮我们去做决策。如图横轴是表示运动量(自行车),纵轴表示人体内胆固醇的含量。一般来说,当你胆固醇含量偏高,医生会建议你多运动。而在数据集中则相反,运动量越高胆固醇含量反而会越高。这里本质的问题在于它只是一种关联,它并不一定对于决策有帮助。从数据中我们会发现运动量跟胆固醇含量是正相关的,这其实与在数据中可能忽略掉的其他特征有关,如患者的年龄,如果是40岁的患者,运动量跟胆固醇含量确实是会呈现负相关的。再举一个例子,当在电商平台推广某一个商品的时候或者给消费者提供一些折扣的时候,需要去比较刚开发出的新算法和平台原本的算法哪一个效果更好。如图使用老算法A和新算法B测试了1000个用户。A算法中1000个用户里有50个用户最后点击打折链接并购买了商品,成功率为5%;B算法中1000个用户里有54个人点击打折链接并购买了商品,成功率为5.4%。从这个角度上来说,新的算法B会比旧算法A要好,毕竟5.4%比5%要高。但这个时候,能不能断定算法B要比算法A更好呢?实际上并不能。首先我们不能确定算法A和算法B测试的1000个用户是否一样,其次,这1000个用户并不一定能代表整体的用户群,因此我们并不能简单地凭借关联关系去做决策。如果想要提升模型的可决策性,我们可以对这1000个用户去做划分。比如我们知道用户的收入情况,便可以根据用户的收入情况把用户分成两部分:高收入人群以及低收入人群。测试A算法时,1000个用户中有400个是低收入人群,600个是高收入人群。400个低收入用户中有10个点击打折链接并购买了商品,即算法A对于低收入群体的成功率是2.5%;600个高收入用户中有40个点击打折链接并购买了商品,即算法A对于高收入群体的成功率是6.6%。测试B算法时,1000个用户中有200个是低收入人群,800个是高收入人群。200个低收入用户中有4个点击打折链接并购买了商品,即算法A对于低收入群体的成功率是2%;800个高收入用户中有50个点击打折链接并购买了商品,即算法A对于高收入群体的成功率是6.2%。从数据上来看,无论是对低收入人群还是高收入人群来说,旧算法A的效果都更好;但是整体来看,新算法B又要比算法A好——这个时候你能去决策哪个算法好吗?如此我们就可以发现,如果我们只是去看关联,当加入一个变量来,关联就会变得混乱。这个现象在因果推理当中叫做辛普森悖论,如果大家有兴趣的话可以去了解一下。如果我们用因果去解释为什么算法B整体上来说效果更好,就可以得出:算法B测试的人群更多是高收入人群,高收入人群相对于低收入人群来说接受打折链接的概率会更高。高收入人群和低收入人群整体的广告成功率为6%对2%,就是说收入会影响你用户对广告的接收率,同时会影响算法推广时用户群的选择,比如我们算法B会更多的去推给高收入,这样就导致算法跟最后用户他去用户的一个成功率之间会存在一个虚假关联,这样就会导致整体上来看是算法变好。但是对于不同的用户群体来去看,其实反而是算法A好。现阶段很多成熟的机器学习算法,在各个领域都会存在一些不公平问题。如图,在NLP做文本翻译的时候,就出现了不公平的问题。输入土耳其语:“他/她是医生”和“他/她是护士”,土耳其语中不管是男性还是女性,“他/她”都是同一个单词;但是当把它翻译成英语时,护士会翻译成“she”,医生会翻译成“he”。护士并不一定非是女性,医生也并不一定非是男性,这是一个在性别方面的不公平问题。不公平问题在人脸识别领域也有体现。人脸识别的过程中,黑色人种的人脸识别准确率相对于黄色人种和白色人种会更低一点,这里也是对于不同的肤色算法公平性问题的体现。做推荐算法或预测算法时,也会出现这样的问题。Google预测犯人假释后再犯罪的概率,会将用户的肤色考虑在内。即使黑人的犯罪率确实比白人的犯罪概率高将近一倍,但是不能因为这一点将将肤色作为参考的标准。为什么会存在这些问题?从算法角度去分析,本质的问题其实是我们偏差的问题。这种偏差可能来自于数据偏差、算法偏差或者用户行为偏差。如数据偏差:为什么马赛克图片恢复时,奥巴马人脸会被恢复成白人人脸?原因就是数据中的样本选择偏差,因为我们训练模型的数据大部分都是白人人脸,导致我们模型会更倾向于生成白人人脸。为什么预测系统会用肤色来预测犯罪率呢?可能的原因是数据中存在忽略变量偏差,由于我们忽略掉了数据中犯人经济水平的特征,而肤色跟犯人经济水平相关,所以肤色跟犯罪率会相关,导致模型用肤色来预测犯罪率。既然知道了因果和关联之间的区别,我们是否能从三种关联来源里把真正我们想要的因果关系找出来去实现大数据因果推理?机器学习赋能因果推理将会面临什么挑战?这是这部分需要讲解的内容。到底什么是因什么是果?从亚里士多德到罗素,历史先哲对于它早有讨论。哲学上把现象和现象之间那种“引起和被引起”的关系叫做因果关系,其中引起某种现象产生的现象叫做原因,被某种现象引起的现象叫做结果。从技术的角度,关于因果的定义如下:当保证其他所有变量都不变的情况下,只去改变变量T,最后变量Y发生了变化,这时我们就有理由相信T是导致Y变化的原因。因果是这样一个定义,因果效应如何定义呢?即假设已知T是原因,T对于结果的有多大程度的影响。从这个定义我们可以发现,如果要去评估因果效应的话,我们至少要做到两点:假设要去评估感冒药的因果效应,T=1表示吃药,T=0表示不吃药,与之对应的就是Y(T=1)表示吃药的结果,Y(T=0)表示不吃药的结果。因果效应𝐴𝑇𝐸=𝐸[𝑌(𝑇=1)−𝑌(𝑇=0)]就是指所有的患者都吃药的平均结果减掉所有患者都不吃药的平均结果,这就是药物的一个因果效应。从这个因果效应定义当中,我们会发现一个反事实逻辑的问题:如果患者吃了药,我们能够观测到吃药后的结果,如此就观测不到不吃药的结果。也就是说不可能让患者吃药的同时又不吃药。所以从横向来看,我们没办法去评估感冒药的因果效应。从纵向来看,可以改变T是因为我们观测到了吃药的结果,也观测到了不吃药的结果。但是纵向来看,我们又会发现没办法保证其他所有的变量是一样的,因为吃药的患者之间的特征分布是不一样的比如说这个药物很贵,部分患者因为收入问题吃不起药,就会选择不吃药,这样就导致吃药的患者和不吃药的患者,至少在经济收入这一块的特征分布就不一样了,如此就没办法满足其他所有因素都是一样的先决条件,因此我们从观测数据当中很难直接去评估因果效应。怎么去解决这个问题?前文说道判断因果效应有两个关键点,第一个关键点是要去改变原因变量,第二个关键点是要保证其他所有的变量都不变。这里我们可以进行这样的假设:假设存在平行宇宙,真实世界里患者吃药了,而平行世界该患者则没有吃药,这样就保证了只改变T而其他所有变量都是一样的。我们将这两个世界的结果相减,其实就是最终的因果效应。而在实际应用中最常用的就是随机对照实验,上文所述的判断新冠疫苗因果效应的实验,包括双盲实验跟三盲实验,本质上就是一个随机实验。比如说要去评估药物的因果效应,我们可以从患者里面去随机选出两拨用户,或将药物随机让患者吃药或者不吃药。由于大数定理,在保证参与实验的患者足够多的情况下,我们就有理由相信大量数据能够帮我们保证,患者的整体分布其实是完全一样的。这就相当于保证了一个条件——其他所有的变量都不变;一群人吃药了,而另一群人没有吃药,则保证了另一个条件——改变了T。药物的平均因果效应可以如下定义:即所有患者吃药的结果的期望减掉所以患者都不吃药的期望。在历史数据里面我们会发现什么?我们会发现有那么一群人他吃药,有那么一群人他没吃药,对吧?那么能不能直接让吃药的那群人的结果均值减掉没吃药那群人的结果均值来作为平均因果效应呢?这个要看你数据是怎么来的,如果你这个数据是通过随机对照实验来的,那么你可以直接这么做。因为你一段时间保证了吃药跟不吃药这两群人他特征分布是完全一致的。如果这个数据不是来自于随机对照实验,你就不能直接这么去比了,为什么?就是因为他这两群人他们特征分布可能不一样,对吧? 在观测数据下,我们其实是能够保证第一个条件,也就是说改变T,因为我们在观测数据下能够观测到吃药的那群人和不吃药的那群人。但是我没办法保证其他所有的变量都是一样的,没办法保证这个条件。因此,观测数据下进行因果推理,核心挑战就在于如何满足第二个条件,即如何保证其他所有的变量都不变。假设treatment是二值的,即保证其他变量在T=1和T=0两群人之间的分布是一致的,也就是我们说的混淆变量平衡。怎们去实现混淆变量平衡呢?其实有很多方法。最简单的就是匹配法,第二类方法是基于倾向得分的方法,第三类方法就是直接的一个混淆变量平衡。因为吃药跟不吃药这两群人,他们的特征分布可能是不一样的,那么怎么去保证它特征分一样呢?简单的就是做匹配,对吧?比如说对于小明,我们发现他吃药了,就去找一个没吃药的跟小明特征差不多的来进行匹配;如果小明没吃药,那么就找一个吃了药的且跟小明特征差不多的患者来进行匹配。这样,在已经匹配好的数据里面,吃药跟不吃药这两群人的特征分布就几乎相似了,对吧?这是匹配法的核心思想。但是匹配方法受限于特征维度,当特征维度很高时,我们很难找到特征完全一样或近似的样本。因此,就有学者提出了倾向得分的概念和基于倾向得分的一系列方法,包括倾向得分匹配方法、基于倾向得分倒数加权法、和双稳健算法等。混淆变量平衡的目标是去平衡两群人特征的分布,其实在统计学或者数学那边其实是这么一个指标,我们叫矩(moments),比如说一阶矩是均值,二阶矩就是方差。变量的矩,可以唯一决定变量的分布。因此第三类方法就是通过矩来度量变量的分布,通过学习样本权重,来调整和控制吃药和不吃药两群人特征的矩是一样的。在实际应用过程中,发现只平衡一阶矩就能够达到非常好的效果。但是在做混淆变量直接平衡时,我们是不是要对所有的变量都进行平衡呢?答案是不需要,我们只需要针对混淆变量即可。而且不同的混淆变量带来的混淆偏差也是不一样的, 因此我们需要区分平衡。为了解决之前的算法中将不同的混淆变量同等对待的问题,我们提出了混淆变量区分性平衡算法,具体推导如下图:直接估计的ATT hat实际上是由真实的ATT(average treatment effect on the treated)加上一部分误差组成,而这个误差又由confounding bias和confounding weights两部分决定,不同confounder的confounding weights不一样,并且该confounding weights是M对f(x)的回归系数。所以在我们提出的混淆变量区分性平衡算法中我们通过学习两个参数beta(区分哪些变量是混淆变量及对应的weight)和W(样本权重)来达到区分不同的混淆变量的目的。因此,我们在做混淆变量平衡时,首先需要对混淆变量进行选择,其次要对不同的混淆变量进行区分,实现混淆变量区分性平衡。接下来,我们总结一下大数据因果推理这块的一些进展和挑战:
首先先介绍一下怎么用因果实现稳定学习。基于偏数据集的方法预测的结果其实非常不稳定:一方面是因为数据的原因,传统机器学习是要假设训练数据集跟测试数据集分布是独立同分布的,但上图这个例子中狗在水里的图片在训练数据里压根就没见到过,因此分布就有差别。另一方面,我们在实际应用中没有办法去控制数据的产生,这是模型的另一个问题。前文我们提到只有因果关联才是稳定不变的,它不会随着时间、环境的变化而变化,而其他两种关联则会随着环境和时间的变化发生变化,所以我们称之为虚假观点。如果从数据出发无法下手的话,我们可以考虑从模型角度去做切入,看看能不能把传统的关联驱动模型跨越到因果启发,这就提出来了因果约束的稳定学习的概念。什么叫稳定预测?假设训练数据集是服从分布,然后从该数据里面学习到了模型,这个模型能够保证测试数据集不管是什么分布,都能实现比较稳定地预测结果。如果我们对测试以及有一些相应知识,比如说我就知道测试数据集一定会服从分布1,这个时候我们测试的数据集的分布跟训练数据集的分布其实就一样了,就是我们传统 IID learning的方法,就可以用传统机器学习方法去解决,或者说我们也有先验知识,比如说我知道测试数据集一定会服从某一个分布,比如说服从分布n,它好像跟训练数据集分布一是不一样的。这个时候我们其实可以通过transfer learning,或者说domain adaptation的方法,我们把我们可以把训练数据集给它转换成分布n,再用IID learning的方法去解决。这里也想强调一个比较实际的问题,就是模型在训练的时候,其实很难知道它未来会面向一个什么样的测试数据集。这边我们想强调就是对于这种未知的测试数据集,能不能去实现稳定预测。本质上是因为模型学习到了一些虚假关联。具体来讲的话,假设用X表示图片的特征,用Y来表示图片的标签,Y=1表示图像中有狗,Y=0表示图像中没有狗。图像中有狗还是没狗,其实只跟狗的特征有关系, f(S)就表示这个特征,我们也称之为因果特征。至于其他的特征其实就是非因果特征,比如草地。为什么模型会预测不稳定的,本质上的原因是草地作为非因果特征V跟结果变量Y之间是不独立的,因此模型会学习草地这种虚假关联,把草地当做一个重要的预测特征去预测。那么怎么解决这个问题呢?因为我们知道本质原因是因为那些草地跟标签相关,如果我们能够使得那些比如说草地、背景灯非因果特征跟结果变量y独立就能够解决这个问题。关键是你怎么去使得它独立,因为在数据集中我们其实不知道哪一个是因果特征,哪一个是非因果特征。我们可以从因果特征跟非因果特征的一个本质区别入手,就是说因果特征它其实是会影响y的产生的,y是等于f(s)的,也就是说如果保证其他变量不变,我们去改变变量s,比如把狗的腿给它遮掉,这样可能就会影响我们人类去识别到底还是不是狗,也就是说因果特征s跟这个标签y之间其实是有因果效应的。反过来想一下也是一样的,如果只把草地遮掉,会不会改变我们结果?答案是不会,不管遮掉草地还是不遮掉草地我们其实都会认为这张图片里面有狗,也就是说草地这些非因果特征对结构变量是没有因果效应的。也就是说因果特征与结果变量之间有因果关联,而非因果特征与结果变量之间没有因果关联。因此,我们的想法是如果我们去恢复所有变量x,包括因果特征s和非因果特征v,与结果变量之间的因果关联,那么就只有因果特征跟结果变量相关,而非因果特征跟结果变量则相互独立。因此我们提出了causal regularizer,其主要思想是学习一个样本权重,用它对样本做re-weighting,使得re-weighting之后的变量之间相互独立,以此帮助我们评估单个变量对结果变量的因果关系,并且在理论上可以证明这样的样本权重是存在的。基于causal regularizer和logistic regression学习一个加权的logistic regression,得到的系数从某种意义上可以被称为因果系数,基于这样的系数给出的预测结果具备可解释性和稳定性。实验结果如下图,可以看到无论测试数据的分布如何变化,我们提出的方法的RMSE都是比较稳定的。第三章节最核心的思想其实就是针对传统深度学习关联学习的特点,提出了如何从关联学习跨越到因果推理,使模型做到知其然并知其所以然。而有了因果关联机制之后,我们去做一些包括因果约束的逻辑回归模型、因果约束的深度学习模型以及用因果公平性做的预测模型,确实能够提升机器学习模型的可解释性和公平性。 PPT原件获取,请联系AAIG课代表⬇️
更多AI治理干货,请关注AAIG公众号
技术干货+产业实践分享
点击下方名片关注和星标
【阿里巴巴人工智能治理与可持续发展实验室】