这个问题太适合我了。首先回答你,是存在的,并且还有很多研究员在致力这方面的研究。
最近在研究机器学习的可解释性,因为我服务的对象是银行,金融机构,他们需要我们提供的机器模型具有可解释性。原因是他们之前的系统都是Rule Based的,能很好的解释,如果我们提供的模型是个黑盒子,对于这些市值市值千亿级别的公司来说,风险难以评估。
银行和金融机构正在拥抱新时代,打算利用机器学习来打造反洗钱,资产管理,信用评分的系统。过去银行的这些系统都是Rule Based的,也就是设定一系列规则,例如对于顾客A,他的特征F1(存款额),F2(征信评分),F3(负债额)的值分别为S1,S2,S3,每个特征权重是W1,W2,W3。那么顾客A的评分就是S = W1*S1 + W2*S2 + W3*S3。至于这些权重怎么得到,相信聪明的读者从上面的公式可以看出来,就是线性回归。不可否认,线性回归是机器学习的一个算法,但是线性回归的预测能力有限,而且顾客信息随着大数据发展,维度越来越高,要很好的利用新的特征,就必须引入更复杂的模型。
其实每个模型都可以生成一条公式,只是复杂度已经远远超出人的理解力。所以可解释性的意思不是能不能列出模型公式,而是这个模型的决策能不能被人理解。
这里推荐一本我最近读的书,《Interpretable Machine Learning》,作者是Christoph Molnar,德国某大学的phD candidate,链接放在下方,是开源的,可以在线看,也可以免费转成mobi格式到kindle看,我还没看完这本书,所以本答案只提供简单解释,提供了必要资料,等我看完再用简单的易懂的语言来解释一遍。
目前human-understandable的模型有几种:
是否线性,是否有单调性(意思是某个参数变化,会导致输出结果的单向变化,不会出现某个参数在一直增加,模型输出结果却是偶尔大偶尔小)
深度学习模型的运作过程是难以解释解释清楚的,你可以说CNN运作原理是通过Conv,Pooling等层提取特征,但我给你一个新的测试数据,你可以看着你的CNN,说出这个测试数据会被提取出什么特征,哪些特征最重要吗?
这就是深度学习算法难以解释的地方。
对于复杂的模型,我们有几种解释方法:
1.对于表格数据X,我们用复杂模型Mc,得出预测结果y_pred。然后我们用上面提到的自解释模型来去fit X和y_pred。常用的是Decision Tree,毕竟能用到复杂模型的,肯定输入和输出间不是很线性的。
2.生成Feature Importance,进行排序,作为解释的一部分。
例如图像(事实也算是表格数据一种,毕竟那些能适应不同分辨率的模型也是要resize image的,所以最后也是一个fixed size array),一般使用LIME,详细解释在上书的5.7 Local Surrogate (LIME) | Interpretable Machine Learning。
引用Dwzb:译文|LIME-分类器预测结果的解释里的一段话来简短解释LIME
LIME(Local Interpretable Model-agnostic Explanations)表示对不可知模型的局部解释,它是一个帮助我们理解和解释复杂机器学习模型如何做出决策的一个工具。可以用于解释任何分类模型,包括随机森林、梯度提升树、神经网络等等。而且它可以应用于多种输入数据之中,比如表格数据(data frame)、图像数据或者文本数据。
LIME是开源的,源码在这个链接找到marcotcr/lime
目前我还没用到这个,还没太多个人体会,不过可以参考
Example and Feature importance-based Explanations for Black-box Machine Learning Models2.09044
或者上面那本书的第六章Chapter 6 Example-Based Explanations | Interpretable Machine Learning
此处留个坑给自己,等我好好研究下再展开这点。
解释方法有几类类
注:本文会持续更新,由于工作需要,未来会持续研究机器学习的解释性,最近打算把自己所学的写在专栏连载,希望大家多多交流。