赞
踩
这次我选择观看由微软的Francesca Lazzeri 博士带来的关于机器学习模型可解释性和公平性的报告。链接:https://databricks.com/session_na20/the-importance-of-model-fairness-and-interpretability-in-ai-systems
报告的主要内容为介绍为机器学习模型带来公平和可解释性的重要性,以及微软的python InterpretML 包和 Fairlearn toolkit如何训练和解释一个模型。
报告首先提出了模型公平性和可解释性的重要性。在当今社会,机器学习模型已经在社会各个领域(例如,医疗,金融,人力资源)中发挥越来越重要的作用,也对个人产生很大的影响。例如是否会因为对女性产生工作能力歧视?个人隐私是否能得到保护?根据一份调查显示,9/10的社会组织面临了机器学习模型的道德问题( ethical issues in the implementation of AI systems)。
因此我们需要可依靠的,有责任心的AI( responsible AI)。
从这样的需求出发,微软在设计AI时有以下原则: fairness, reliability and safety, privacy, security, inclusiveness, transparency and accountability.
首先报告介绍了透明性(transparency)。本质就是解释性,模型本身要可解释,对一个数据做出判断时也要解释做出这样判断的原因。报告进一步分别在训练和推断部分分别举例说明了可解释性:例如数据科学家需要向用户解释模型,用可解释性调整模型,和先验知识匹配等等。用户也需要足够的理由来相信模型预测的结果好坏。所以可解释性既需要globally on data,也需要 on a specific data point 。
基于上述需求,微软自己开发并整合了些许第三方库(例如shap等),打造了自己的api和数据结构——interpretML 包。
其中,Interpret-Community 作为储藏(repository)为Interpret提供额外支持,,AzureML是微软推出的一款关于机器学习算法的图形界面实现工具,将Interpret和Interpret-Community进行封装。Interpret-text-contrib提供额外的文字处理功能。
Interpret 包主要支持两个模型:Glassbox Model和Blackbox Explanation。
Blackbox Explanation旨在为已有的模型提供解释。报告用房价预测举例(旁边有花园增值,不允许猫入内贬值,50平方米户型增值等)。常见包shap。InterpretML对shap支持。shap的实现方式是对一个数据,依次对每个特征进行改动,然后和其他数据进行比较。例如其他条件相同时旁边有没有花园等等。这样做可解释性是很强,但是可能会遇到特征过多导致比较时间过长,单个数据不可靠导致比较结果不可靠等问题。
Glassbox Model旨在**训练出可解释的模型。**支持的模型有线性模型,Boosting,决策树等等。例子如下图:
报告继续介绍了微软的Fairlearn toolkit。首先报告指出了AI模型中可能的不公平性,例如对性别和人种的歧视等。然后介绍toolkit的作用:分析识别模型中的不公平性,运用算法缓解模型中的不公平性。
接着报告给出了利用Azure搭建模型的框架。从数据源到模型部署都有提到。
以及该项目支持Databricks Runtime ML,部署更加方便。最后报告用肿瘤分类模型作为demo展示了interpret的使用。
为了完善学习体验,我依照视频和机器学习(十七)Microsoft的InterpretML可解释性 机器学习模型,官方Github进行学习体验。
包安装:
pip install interpret
建立模型:
import pandas as pd
#癌症模型
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn import svm
cancer = load_breast_cancer()
features = cancer.feature_names
X, y = pd.DataFrame(cancer.data, columns=feature_names), cancer.target
seed = 1
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=seed)
clf = svm.SVC(gamma=0.01,C=100,probability=True)
model = clf.fit(X_train,y_train)
查看模型ROC
from interpret import show
blackbox_perf = ROC(model.predict_proba).explain_perf(X_test, y_test, name='Blackbox')
show(blackbox_perf)
查看预测的单个数据
from interpret.blackbox import LimeTabular
lime = LimeTabular(predict_fn=model.predict_proba, data=X_train, random_state=1)
lime_local = lime.explain_local(X_test[:5], y_test[:5], name='LIME')
show(lime_local)
可以清楚看到每个特征对模型的预测结果产生的影响,可视化非常清楚。
模型的可解释性和公平性一直是机器学习模型发展的重点讨论对象。微软依托自身Azure平台做出尝试,值得深入学习。特别是fairness部分,比较微妙。最大的亮点是可视化部分,十分清晰。当然现在包支持的模型有限,但是随着进一步技术的支持,效果应该会越来越好。未来对神经网络进行解释也不是不可能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。