2020-02-26 21:52

导语:获取 TensorFlow 模型的局部和全局解释

图片来源于 Pixabay

现代机器学习和人工智能在解决复杂的问题方面取得了令人印象深刻的成果。然而,复杂的问题往往意味着复杂的数据,这必然导致更复杂的模型。真正理解一个模型为什么会做出某种预测,可能会和原来的问题本身一样复杂!

这可能是有问题的,因为这些 ML 系统中已经影响到从医疗、交通运输、刑事司法、风险管理和其他社会生活领域。在许多情况下,这些人工智能系统的有用性和公平性受到我们理解、解释和控制它们的能力的限制。因此,相当大的努力被投入到打开强大而复杂的 ML 模型的黑匣子,比如深度神经网络的工作中。

可解释的人工智能是指一系列使人们能够理解为什么一个模型会给出特定的结果的方法和技术。模型可解释性是我们在 Google 云高级解决方案实验室教给客户的一个关键话题,在本文中,我们将展示如何使用 Google 云的可解释性人工智能来部署可解释和包容的机器学习模型。

本文中使用的所有代码都可以在这里找到:https://github.com/GoogleCloudPlatform/training-data-analyst/tree/master/blogs/explainable_ai 。

可解释性方法分类

模型可解释性方法概述和不同技术的示例

大多数可解释性方法可以分为下面三类:

  • 内在的还是后组织的。所谓内在,我们指的是内在可解释的模型。也就是说,它们的结构足够简单,我们可以通过简单地观察模型本身来理解模型是如何进行预测的。例如,线性模型的学习权重或用决策树学习的分割可以用来解释模型做出预测的原理。

后组织方法包括使用经过训练的模型和数据来理解为什么要进行某些预测。在某些情况下,后组织方法也可以应用于具有内在可解释性的模型。

在这篇文章中,我们将重点讨论后自组织模型的可解释性,因为许多先进的方法,如梯度增强和神经网络,都是用这种方法最容易理解。

  • 模型不可知与模型特定。模型不可知意味着可解释性方法可以应用于任何模型,而特定于模型的方法只能用于特定的模型类型。例如,如果该方法只适用于神经网络,则将其视为特定于模型。相反,如果可解释性方法将训练的模型视为一个黑盒,那么它将被视为模型不可知的。

  • 本地与全局:局部可解释性方法旨在解释单个数据点或预测,而全局方法则试图全面解释模型在整体上的表现。通过使用本地结果的聚合,所有本地方法都可以转换为全局技术。

在 Google 云上部署可解释模型

你可以使用可解释的 AI 在 GCP 上部署可解释模型,并使用 gcloud beta ai-platform explain 命令进行预测。

训练、预测的步骤如下:

  • 训练模型并将其部署到 GCP 上。

  • 将包含基线特征值的 JSON 文件上传到云存储桶。

  • 使用此 JSON 文件创建模型版本并指定 explanation-method。

  • 请求 gcloud beta ai-platform explain 获取解释。

下面我们将更详细地展示这些步骤。

首先,你需要一个在 Google 云 AI 平台(CAIP)上经过训练和部署的模型。我们将查看纽约市出租车数据集(https://bigquery.cloud.google.com/table/nyc-tlc:yellow.trips?tab=details&pli=1)。你可以看看这篇博文(https://towardsdatascience.com/how-to-train-machine-learning-models-in-the-cloud-using-cloud-ml-engine-3f0d935294b3),看看如何在 CAIP 上轻松地训练一个模型。在编写本文时,AI 的解释性只支持 TensorFlow 1.x,因此无论你构建什么模型,请确保使用 TensorFlow 1.x。一旦你的模型采用 SavedModel 格式(https://www.google.com/search?q=tensorflow+model+format&oq=tensorflow+model+format&aqs=chrome.0.0l2j69i61j69i65j69i60l4.2431j0j7&sourceid=chrome&ie=UTF-8),我们将在 CAIP 上创建一个新模型:

gcloud ai-platform models create taxifare

在部署我们的模型之前,我们必须配置一个 explanations_metadata.json 文件并将其复制到模型目录。在这个 JSON 文件中,我们需要告诉 AI 解释我们的模型期望的输入和输出张量的名称。

另外,在这个文件中,我们需要设置 input_baselines,它的作用是告诉解释服务模型的基线,输入应该是什么。了解基线对于有效使用许多模型解释技术非常重要。这两种支持技术——Shapley 采样和梯度综合,将预测结果与基线特征值进行比较。选择适当的基线是很重要的,因为本质上,你是在对比模型的预测与基线值的比较方式。要了解更多关于基线的信息,请查看可解释的 AI 白皮书(https://storage.googleapis.com/cloud-ai-whitepapers/AI%20Explainability%20Whitepaper.pdf)。

一般来说,对于数字形式的数据,我们建议选择一个简单的基线,例如平均值或中值。在本例中,我们将使用每个特征的中值——这意味着此模型的预测基线将是我们的模型使用数据集中,每个特征的中值预测的出租车费用。

explanation_metadata = {

"inputs": {

"dayofweek": {

"input_tensor_name": "dayofweek:0",

"input_baselines": [baselines_mode[0][0]] # Thursday

},

"hourofday": {

"input_tensor_name": "hourofday:0",

"input_baselines": [baselines_mode[0][1]] # 8pm

},

"dropofflon": {

"input_tensor_name": "dropofflon:0",

"input_baselines": [baselines_med[4]]

},

"dropofflat": {

"input_tensor_name": "dropofflat:0",

"input_baselines": [baselines_med[5]]

},

"pickuplon": {

"input_tensor_name": "pickuplon:0",

"input_baselines": [baselines_med[2]]

},

"pickuplat": {

"input_tensor_name": "pickuplat:0",

"input_baselines": [baselines_med[3]]

},

},

"outputs": {

"dense": {

"output_tensor_name": "output/BiasAdd:0"

}

},

"framework": "tensorflow"

}

我们可以将此 Python 字典写入 JSON 文件:

# Write the json to a local file
with open(‘explanation_metadata.json’, ‘w’) as output_file:
   json.dump(explanation_metadata, output_file)
   # Copy the json to the model directory.

然后在 bash 中,我们使用 gsutil 将 JSON 文件复制到模型目录中。

$ gsutil cp explanation_metadata.json $model_dir

现在我们已经创建了 explaintations_metadata.json 文件,我们将部署新版本的模型。此代码与使用 gcloud 创建模型版本的一般过程非常相似,但有一些附加标志:

gcloud beta ai-platform versions create $VERSION_IG \
 -- model $MODEL \
 --origin $model_dir \
 --runtime-version 1.15 \
 --framework TENSORFLOW \
 --python-version 3.5 \
 --machine-type n1-standard-4 \
 --explanation-method ‘integrated-gradients’ \
 --num-integral-steps 25

使用「explanation method」标志指定解释方法——当前支持综合梯度和 Shapley 采样。

注:当在综合梯度和 Shapley 采样之间进行取舍时,我们引用白皮书上的内容:

对于神经网络和一般可微模型,推荐使用综合梯度。它提供了计算优势,特别是对于大的输入特征空间(例如,具有数千个输入像素的图像)来说很有用。对于不可微模型,我们推荐使用 Shapley 采样,这是由树和神经网络的元集合组成的 AutoML Tables 模型的情况。

此外,对于那些想知道 Shapley 抽样方法与流行的 SHAP 库有何不同的人,白皮书中有如下内容:

有很多方法可以应用 Shapley 值,它们在引用模型、训练数据和解释上下文的方式上有所不同。这导致了用于解释模型预测的 Shapley 值的多样性。考虑到 Shapley 的唯一性,这有点不幸。Mukund Sundararajan 和 Amir Najmi 在「 The many Shapley values for model explanation」中对此主题进行了深入的讨论。我们的方法属于基线 Shapley 类别,可以同时支持跨各种输入数据模式的多个基线。

现在我们的模型已经部署,我们可以从 Jupyter notebook 获取本地属性:

resp_obj = !gcloud beta ai-platform explain — model $MODEL \

— version $VERSION_IG — json-instances=’taxi-data.txt’

response_IG = json.loads(resp_obj.s)

# Analyze individual example.

explanations_IG = response_IG[‘explanations’][0][‘attributions_by_label’][0]

我们可以将这些内容加载到 Pandas DataFrame 中,并为各个示例绘制属性:

df = pd.DataFrame(explanations_IG)
df.head()

row = df.iloc[0] # First example.
row.plot(kind=’barh’)

最后,我们可以通过聚合本地属性来获得全局模型的可解释性:

df.mean(axis=0).plot(kind=’barh’, color=’orange’)

有关使用 Shapley 抽样全局属性的更多信息,请参阅这篇文章:https://arxiv.org/pdf/1908.08474.pdf。

结论

就到这里了!在本文中,我们展示了如何使用可解释的人工智能在 Google 云平台上部署可解释模型。可解释的人工智能工具允许用户从已部署的模型中获取本地解释。这些解释可以结合在一起,以提供全局解释性。除了上述步骤之外,你还可以查看 What-If 工具(https://pair-code.github.io/what-if-tool/index.html#features)来检查和解释你的模型。

via:https://towardsdatascience.com/how-to-deploy-interpretable-models-on-google-cloud-platform-8da93f2e131d

如何在谷歌云平台上部署可解释性模型相关推荐

  1. 在SAP云平台上部署和运行Docker应用

    容器技术,Docker,虚拟化,这些名词诞生尽管有很长一段时间了,但是在云原生开发领域仍旧热度不减.甚至连SAP赖以成名的ABAP Netweaver,如今也踏上了容器化的上云探索之路,比如下面这张来 ...

  2. SAP云平台上部署应用时遇到disk quota不够的问题

    我部署了一个应用到SAP云平台后,在控制台上看到这个应用的状态为CRASHED. 在Events区域看到这些日志: tar: Jdeps/bin/yarnpkg.cmd: Cannot creatsy ...

  3. 关于华为云平台上服务器虚拟机(银河麒麟服务器操作系统V10SP1)多网卡网络通信问题

    文章目录 一.问题背景 二.解决方法 1. 服务器虚拟机的网卡配置 2. 添加路由表和策略路由 3. 测试路由策略生效 4. 添加定时任务 5. 重启crond服务 一.问题背景 在某项目的华为云平台 ...

  4. 在谷歌云服务器上搭建深度学习平台

    2018年9月8日笔记 登录谷歌云控制台需要科学上网,连接云主机不需要科学上网. 阅读此文并进行操作的前提是已经成功申请谷歌云的使用资格,并获得300美元使用金额. 如何申请谷歌云的使用,请阅读另外一 ...

  5. 英特尔携手谷歌云加速最新虚拟机;谷歌云平台下调抽成比例;Hitachi Vantara推出全新云成本优化服务...

    NEWS 新闻回顾 GitLab 将上市 随着收入持续增长和亏损扩大,DevOps 宠儿 GitLab 终于申请了首次公开募股 (IPO). GitLab 一直致力于成为开发人员的一站式商店,与 Gi ...

  6. 谷歌云平台 (GCP) 入门培训: 核心基础架构 成都站

    改变从此刻开始,你准备好了吗? 谷歌云平台入门培训:核心基础构架 为期一天的谷歌云平台(GCP)入门动手培训课程里,你将收获GCP上核心基础架构的基础知识.我们希望通过重量级嘉宾讲解.DEMO演示和动 ...

  7. 谷歌云平台及其产品介绍

    谷歌云平台(Google Cloud Platform)是谷歌所提供的一套公有云计算服务.该平台包括一系列在 Google 硬件上运行的用于计算.存储和应用程序开发的托管服务.软件开发人员.云管理员和 ...

  8. 【邀请函】谷歌云平台 (GCP) 入门培训:核心基础架构

    [邀请函] 谷歌云平台 (GCP) 入门培训:核心基础架构  课程介绍  这是一个为期一天的谷歌云平台 (GCP) 入门动手培训课程,将重点介绍 GCP 上核心基础架构的基础知识.通过讲师讲解.DEM ...

  9. 如何在SAP云平台上使用MongoDB服务

    首先按照我这篇文章在SAP云平台上给您的账号分配MongboDB服务:如何在SAP云平台的Cloud Foundry环境下添加新的Service 然后从这个链接下载SAP提供的例子程序. 1. 使用命 ...

最新文章

  1. Datawhale x 科大讯飞 iFLYTEK A.I.开发者大赛重磅开启!
  2. 网站建设技术方案_企业网站建设解决方案
  3. 热泵精馏_精馏干货16 || 分子蒸馏
  4. ASP.NET MVC动态加载数据
  5. java samphore 连接池_ADOConnection数据库连接池
  6. uva297(quadtree)
  7. MongoDB命令学习
  8. # SUMO 仿真建模
  9. 自定义填充图案插件 cad_CAD软件中如何自定义CAD填充图案?
  10. chrome插件开发——option(选项页)的通信
  11. 996程序员办公室猝死?公司:没死,继续上班了
  12. 请教各位大虾:Delphi创建的ActiveForm上的SpeedButton在鼠标离开后没有重画为flat样式
  13. 家用计算机中PCB板材质,主流的PCB板材料有哪些分类?
  14. 两用物项许可证办理流程_办理两用物项和技术进口许可证流程
  15. Java实现百万并发(整理)
  16. Intel(R)Dual Band Wireless-AC 3165网卡驱动程序出现问题,WiFi,热点和以太网无法连接
  17. 关闭Pinterest通知
  18. dha哪里提取的好_孕妇吃什么dha好 藻油提取的DHA最适合
  19. HEVC代码学习18:运动估计和运动补偿总结
  20. python实现矩阵转化图像

热门文章

  1. 分段线性学习率extend_with_piecewise_linear_lr
  2. 列子御风 大道至简 心诚天人合一
  3. 如何轻松愉快地理解条件随机场
  4. PYTHON字典dictionary用法laurentluce技术博客
  5. SQL2005 BCP
  6. 指南:从学者到创业者
  7. 不扶好眼镜,请别打开这本挑战JS语言特性的书
  8. 这 23 道题,全世界的数学家花费 100 年时间,只解答了一半
  9. 创业,你准备好了吗?
  10. ubuntu 16.04 多个python版本切换