如何提高深度学习模型的可解释性?极致的数据透出与多维可视化实战详解

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释神经网络的来龙去脉。迄今为止,深度学习不够透明,神经网络整体看来仍然是一个黑箱。因此,人们一直致力于更透彻地去理解其中复杂的过程,从而达到进一步优化的目的。

小叽导读:深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释神经网络的来龙去脉。迄今为止,深度学习不够透明,神经网络整体看来仍然是一个黑箱。因此,人们一直致力于更透彻地去理解其中复杂的过程,从而达到进一步优化的目的。由于人类对于世界的认知和感受主要来自于视觉,良好的可视化可以有效地帮助人们理解深度网络,并进行有效的优化和调节。

一. 背景


_

(图片引自 2018 AI predictions:8 insights to shape business strategy)


尽管业界对于图像和NLP领域,在可视化和可解释性等方向上已经取得了一些进展,但对于计算广告领域,目前还是空白,可以借鉴的平台或工具很少。而可视化的前提,是需要先对训练模型进行相关数据透出,从而进行可视化分析评估,最终使得神经网络从黑盒向白盒过渡,在一定程度上提高模型的可解释性。但现有深度学习框架对数据透出的支持力度不大,还不足以满足日常训练的所有需求,尤其是针对一些棘手问题,更加难以定位分析,乃至无从调试。
同时,随着网络复杂度的急剧提升,传统的机器学习评估指标,如欠拟合/过拟合/精准率(PR)/召回率(Recall),并不能够全面地评估一个深度学习网络模型的质量,而我们正在寻找一种途径或者说在摸索一种方式,尝试着去定义深度学习质量体系,从而帮助人们更好地理解并评估模型本身,即在一定条件下,通过提高深度学习的可解释性与可靠性,提升网络模型的可控性。
基于此,平台在完善训练任务生命周期管理的同时,致力于提供更加全面的数据透出方式(如本期新增的在线动态更新数据透出功能),并以深度学习特有的多维度可视化等方向作为核心功能演进。

二. DeepInsight系统架构
目前来看:数据科学负责见解;机器学习负责预测;人工智能负责行为。同时,这几个领域之间存在着很多重叠。数据科学与其他两个领域不同,因为它的目标跟人类的目标尤其接近:获得洞察力和理解力,这也是DeepInsight平台命名的由来。

_

DeepInsight是基于分布式微服务集群化部署的深度学习可视化评估平台,由前端WEB平台+后端微服务+深度学习组件等三个子系统构成,各个微服务实例之间是隔离的,互不影响;目前支持TensorflowRS及原生Tensorflow训练任务的生命周期管理。旨在通过数据透出及可视化等手段,解决模型调试及问题定位分析等系列问题,提高神经网络的可解释性;以生命周期管理的方式执行训练任务,从而提供一站式的可视化评测服务。平台在赋能业务的同时,业务也会将后期处理过的数据反馈给平台,从而构建以DeepInsight为基础数据核心的AI可视化生态圈。

_

三. 基于数据透出的多维度可视化分析
目前深度学习组件(TF-Tracer/TF-Profiler等)主要负责数据透出、实时监控和输出控制等,透出的数据主要是模型训练过程中的Raw Data(未经加工或计算统计);后端微服务(Tensorboard+/Notebook+)和前端WEB平台(高维可视化)负责相关数据的在线离线交互式等方面的可视化分析评估;以模型训练任务的生命周期管理(Lifecycle)贯穿始终,从而形成多维度可视化分析的生态循环。

_


3.1 深度学习组件
由于原生深度学习框架提供的功能有限,不能完全满足日常训练的调试分析需求。DeepInsight深度学习组件以透明的方式接入Tensorflow框架,支持本地和分布式模型训练,以第三方库方式的安装。
1)基于原生的深度学习框架Tensoflow API(tf.train.SessionRunHook)编写的即插即用组件,无需用户开发额外的代码,只需用户通过配置文件增加相应配置信息,即可使用对应的组件;
2)配置信息由组件开关和组件配置参数信息两部分组成:
打开相应组件开关后,组件功能不会对原有训练任务产生较大性能影响,从而保证线上训练效率;
关闭相应组件开关后,对原有训练任务无任何功能或性能上的影响;

3.1.1 TF-Tracer:基于计算图的全面数据透出
数据透出组件TF-Tracer是基于Tensorflow 计算图(tf.Graph)开发的,可以全面透出计算图中的所有变量(tf.Variable),基于图数据集(tf.GraphKeys),通过正则表达式对变量集合进行匹配过滤,透出相应变量数据集合,同时也支持直接指定变量列表进行数据透出,支持NumPy/Bin两种数据格式输出。
对于非计算图中的变量,用户也可以通过回填的方式,添加到官方预置图数据集或自定义图数据集中;

_

TF-Tracer配置文件示例,具体详见TF-Tracer User Guide:

"trace": "true", //tf_tracer深度学习组件开关,如果为"false"或无此key的时候,会关闭此功能,同时对原有训练无任何功能或性能上的影响    "trace_config": {
    "graphkeys": "TRAINABLE_VARIABLES,<自定义Graph Key>", //支持自定义graph key, 多个key之间以逗号分隔        "scopes": {
        "TRAINABLE_VARIABLES": "^layer3.*" //可选参数,支持正则表达式(python.re)过滤, 详见文档底部;如不填写,则默认为graph key(s)中的所有tensor(s)
    },
    "every_steps": 5000, //每隔多少步,为local step        "every_secs": 60, //每隔多少秒        "step_range": { //步数区间,为local step            "start": 5000, 
        "end": 5010
    }, //输出模式三选一,当key同时存在时,优先级为:every_steps > every_secs > step_range        "save_config":{
        "dump_dir": "hdfs://ns1/data/xxx/tftracer/trace_output_dir",
        "data_format": "csv", //可选参数, 默认为csv,输出为numpy格式,包括global step,            "limit_size": 90000 //可选参数, 针对同一变量tag,每步输出数据的max size,默认100000
    },
    "chief_only": "false" //可选参数,在dist_train模式下,支持是否只有work0(为true时)输出数据        "logview_level": "detail" //可选参数,针对logview打印分级,默认为summary        "at_begin": "true", //可选参数, 会在session run之前trace输出一次,主要为非variable数据        "at_begin_config": { //含义和上述相同,会使用save_config中的参数作为存储配置(除limit_size)
        "graphkeys": "default_summary_collection",
        "scopes": {
            "default_summary_collection": ".*Relu.*"
        },
        "limit_size": 100000000 //可选参数,同上,输出数据的max size,默认100000000
    }
}

对于常量或训练过程中恒定不变的变量,支持以[AT BEGIN]方式只在训练开始时透出一次,从而提高性能,节省存储空间;

_

支持分布式多session输出,提供cheif_only配置选项,指定是否只有work0输出数据文件;

1

支持三种模式数据采样:
1)every_steps:基于步数采样;

2)every_secs:基于时间采样;

3)step_range:基于步数范围采样;

支持四种方式输出:
1)HDFS:以变量为最小颗粒度生成日志文件,为每个worker生成相应的文件夹,将数据实时透出到HDFS文件系统中,支持Text/Bin两种格式,目前默认以CSV的格式存储,支持ODPS直读;

_


2)ODPS:通过Swift Client的以Streaming的方式实时将数据透出到ODPS中,并提供相关UDF供参考;

_


3)Logview:将数据透出到前端WEB平台,数据实时刷新,针对日志信息量较大的情况,支持概要(具体信息可以通过上述HDFS或ODPS方式查询)和详细信息等多种日志级别;

_


4)Tensorboard+:支持将数据实时透出到TensorBoard+ Text plugin中,由于日志信息量较大,支持日志概要和文件存储路径两种日志级别;

_


多种可视化展示方式:

1)前端WEB平台支持高维数据可视化展示:支持多种模式(面积图/柱状图等)、支持不同时间轴(基于layer input/global step)、支持动态旋转和放大缩小展示,同时支持将数据(单一/批量)上传到ODPS;

_


_


_


2)使用在线工作台(微服务Notebook+)读取数据进行交互式可视化分析,提供TF-Tracer Reader读取HDFS数据,预装PyODPS/scikit-learn/Matplotlib等数据科学软件;

_


目前TF-Tracer已应用到线上训练任务中,如online learning,会实时透出数据到ODPS,性能测试结果如下:

_


3.1.2 TF-Tracer黑科技:在线动态更新数据集实时透出

现有深度学习框架的数据透出方式一般是静态的且不全面,尤其是分布式架构。用户在训练任务开始前指定透出数据集,任务开始执行后不能修改;修改的话,需要中断任务重新修改代码或配置。对于运行周期较长的模型训练,如Online Learning,在训练过程中发现异常的话,有时很难根据现有透出数据进行定位;而重启任务更新透出数据集的话,有些问题并不能复现(深度学习统计学特性)。

针对上述问题,TF-Tracer在不重启训练任务的前提下,支持在线动态更新透出数据集:

支持在模型训练过程中,在线修改透出数据集合,并实时透出更改后的数据集;

_


_


提供本次模型训练计算图中所有变量列表,用户可以基于图数据集(tf.GraphKey),选择指定变量列表,同时支持多数据集变量去重;

针对于cheif_only等于False的情况,即所有worker都透出数据时,支持指定worker动态更新,非指定worker透出数据不变,便于双向对比;

worker0:


_


worker1:

_


在线修改实时透出实例:变量从layer2/biases:0和layer2/weights/part_0:0到变量layer1/weights/part_1:0和layer4/weights/part_0:0:

_


TF-Profiler:性能调优组件

由于当前Tensorflow timeline文件只支持展示一个session.run,不支持展示多个session.run,而线上训练都是基于分布式运行的,会产生多个session.run(每个worker至少产生一个)。而当分布式模型训练出现运行较慢的问题时,需要从整体上定位分析,即一个timeline展示多个session.run的集合,而Tensorflow不能满足此需求。

TF-Profiler是基于原生的深度学习框架中的性能采样接口,进行了二次开发,支持根据配置文件,自动化跨session生成性能数据、数据分层以及自动分析统计等功能,同时对Tensorboard+ Profile plugin也进行了二次开发,实现了对线上性能文件可视化展示。(TF-Profiler具体功能详见:DeepInsight深度学习评估平台 -- 性能调优组件)

_


3.2 后端Docker微服务

当前主要包括Notebook+(交互式可视化分析)和Tensorboard+(可视化工具)两类Docker化微服务,前端WEB平台负责容器编排,通过Nginx反向代理提供动态端口转发功能,支持多用户并发访问;容器实例以集群的方式部署在多个服务器上,同一服务器上的容器对不同用户而言使用不同端口访问,并做到进程间隔离,在高并发的同时保证系统的稳定性。

_


每个微服务实例支持资源自动释放,即满足相应条件后自动退出,并调用前端平台集群管理模块接口,更新容器状态;同时支持基于用户资源的鉴权服务,即当前用户只能访问平台分配给其的URL资源,用户之间不能互相访问其他人的URL(会强制跳转重新登录),做到数据隔离。另外,由于后端使用微服务的方式,后续新类型的服务可随时增加并在线扩展。

3.2.1 Notebook+:交互式可视化分析

基于Jupyter Notebook开源版本进行二次开发的Docker镜像服务,提供交互式可视化分析及线上本地调试等服务。

提供TF-Tracer Reader在线读取日志文件进行交互式可视化分析,支持HDFS/OSS/ODPS/GIT等方式读写数据;

_


支持TensorflowRS线上本地模型训练,支持iPython和Terminal两种运行方式;

_


和前端WEB平台实验室双向打通,本地调试完成后可以将脚本直接转储至前端WEB平台实验室,进行后续的分布式训练;当线上训练异常后,可以跳转至在线工作台(Notebook+)进行线上本地调试,从而提高效率节省资源;

支持Python2和Python3两种运行环境,其中Python2为TensorflowRS运行环境,Python3为最新版原生Tensorflow运行环境,预装Keras等深度学习框架及相关数据科学软件;

3.2.2 Tensorboard+ 2.0:高性能实时在线可视化

在原有版本上更新了Tensorboard+ core版本,从1.2.0rc更新到了1.5.0a,同时保持了原有1.0版本数据目录在线动态切换及数据报表聚合对比等功能(1.0版本功能详见:如何评估深度学习模型效果?阿里工程师这么做):

优化了数据加载模块,启动性能提升了3~5倍左右,解决了线上超大数据文件加载慢的问题,改善用户体验;

在性能不变的前提系,增加Scalar图加载数据点数,由原来的200点上升至1000点,图像精度更高,更加利于可视化分析;

_


3.3 前端WEB平台

基于Web UI和HTTP API等方式对外提供服务。其中前端UI主要面向终端用户;API接口主要面向第三方平台,如PAI和XDL等平台。平台前端主要包括集群管理、Dashboard、配置管理、权限管理和数据管理,以及和训练相关的生命周期管理模块,其包括:可视化管理、日志管理、工作台管理、实验室管理、组件管理等。

_


3.3.1 生命周期管理:可视化分析的生态基石

提供训练任务从TensorflowRS镜像发布、模型本地开发调试到线上分布式运行的全流程整体解决方案,覆盖模型训练全阶段生命周期管理。典型用户场景(user path)如下:

Step1. 首先用户通过在线工作台(Notebook+)进行线上本地开发调试,并可以使用iPython进行交互式可视化分析,比如对TF-Tracer产生的日志数据进行在线分析;同时支持从实验室导入训练任务进行本地调试;

Step2. 当本地调试通过后,用户可选择相应文件存储至实验室中,执行分布式训练任务,同时应用深度学习组件,如TF-Tracer透出日志数据,供后续分析或二次消耗;支持基于配置文件的扩展服务,如Early Stop/GAUC等,通过Metaq和扩展服务通信,并将相关扩展结果在平台展示;其中实验室与本地工作台对于训练任务而言,是双向导通的;

Step3. 用户在本地工作台或实验室中,可以通过组件管理功能,引入或导出当前模型或组件,供后续个人或其他用户使用;

Step4. 在任务执行期间或结束后,用户通过日志管理模块(Logview)查询当前任务日志或执行结果,以及使用相关扩展服务;可以通过可视化管理模块在平台和Tensorboard+上查看相关数据可视化结果;

_


3.3.2 集群管理:在线扩容与可视化服务一键式部署

集群管理模块主要提供分布式微服务集群管理:

支持线上资源实时在线扩容、后端容器编排(作业调度&资源管理等)以及微服务一键式部署等功能;

_


支持在线创建、删除、停止,重启等容器管理操作,同步更新数据库容器状态,同时对后端Docker微服务提供相关接口,如容器资源自释放时的状态更新接口等;

_


3.4 对外可视化服务

DeepInsight平台目前主要通过两种方式对第三方平台提供服务:

镜像微服务:第三方平台平台现有镜像微服务或基于平台的镜像模版提供相应镜像与服务器资源,平台负责镜像发布、集群管理和容器编排等微服务一站式管理工作,通过HTTP API调用相关服务;

基础数据服务:第三方平台使用平台相关数据服务,通过HTTP API调用相关服务;

目前已对集团PAI平台、XDL平台和Lotus平台等提供相关服务:

对集团PAI平台提供Tensorboard+ 1.0服务,支持OSS直读日志文件:

_


对XDL平台提供Tensorboard+ 2.0服务,支持MXNet日志格式文件,同时提供Notebook+ 1.0服务:

_


对Lotus等平台提供基础数据服务等;

四. 小结

下一阶段,平台会继续扩展可视化的维度,同时也会把多种维度有序汇地总到一起,基于训练模型形成更加完善的可视化系统,即数据可视化的进阶版:模型可视化。当用户提交训练任务后,会以模型的方式映射到任务本身,训练数据实时透出并加以监控,同时以模型为骨架并辅以数据流向的展示,进行深度学习全链路多维度可视化分析,如:特征到权重的双向跟踪,从而可以更好地帮助用户理解模型,更准确地确定数据透出范围,以及更有效地对相关数据进行交互式分析。

另外,样本特征作为模型训练的输入,对训练的最终效果(过拟合/欠拟合)起到了重要的作用。目前Notebook+正在尝试通过嵌入Facets,帮助用户理解并分析各类深度学习数据集。用户可以在训练前通过可视化的方式,更好地理解数据集中所有特征的值分布(Facets Overview),探索数据集中不同特征数据点之间的关系(Facets Dive)。

Facets Overview:

_


Facets Dive:

_


由此,用户可以在模型训练的不同阶段(前/中/后),通过全链路模型可视化的方式,更加准确有效地调试分析,从而得到更好的效果。

原文发布时间为:2018-09-27
本文作者:孙凯
本文来自云栖社区合作伙伴“ 阿里巴巴机器智能”,了解相关信息可以关注“ 阿里巴巴机器智能”。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
7月前
|
机器学习/深度学习 自然语言处理 搜索推荐
【机器学习】揭秘!机器学习如何助力我们高效优化文本?
【机器学习】揭秘!机器学习如何助力我们高效优化文本?
93 0
|
3月前
|
机器学习/深度学习 数据可视化 JavaScript
探索机器学习模型的可视化技术
【9月更文挑战第23天】在数据科学中,理解和解释机器学习模型的决策过程是至关重要的。本文将介绍几种流行的可视化工具和库,如TensorBoard、D3.js等,帮助读者更好地理解模型内部工作原理及其预测结果。通过实例演示如何使用这些工具进行模型可视化,增强模型的可解释性。
|
5月前
|
机器学习/深度学习 数据可视化 TensorFlow
探索机器学习模型的可视化:从理论到实践
【7月更文挑战第31天】本文将深入探讨如何通过可视化技术来理解和解释复杂的机器学习模型。我们将介绍多种可视化工具和方法,并通过实际代码示例展示如何应用这些技术来揭示模型的内部工作原理。文章旨在为读者提供一种直观的方式来理解、调试和优化他们的机器学习模型。
57 0
|
7月前
|
机器学习/深度学习 数据采集 人工智能
构建高效机器学习模型:从数据预处理到模型优化
【5月更文挑战第31天】 在当今数据驱动的时代,构建一个高效的机器学习(ML)模型是解决复杂问题的关键。本文将引导读者通过一系列细致的步骤来搭建健壮且精确的ML模型。我们将重点讨论数据预处理的策略、选择合适的算法、模型训练的技巧以及性能优化的方法。通过实例和代码示例,本技术分享旨在为从业者提供实用的指导,帮助他们在面对实际问题时能够灵活应用机器学习技术,并达到提高预测准确率和模型泛化能力的目的。
|
6月前
|
机器学习/深度学习 算法
探索机器学习中的优化技术
优化是机器学习的核心环节,决定了模型的性能和应用效果。本文详细探讨了几种常见的优化算法,包括梯度下降、随机梯度下降和自适应优化方法。通过实际案例分析,展示了不同优化算法在处理数据集时的表现差异,以及如何根据具体需求选择合适的优化策略。
97 0
|
7月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从数据处理到算法优化
【4月更文挑战第28天】在数据驱动的时代,构建一个高效的机器学习模型是实现智能决策和预测的关键。本文将深入探讨如何通过精确的数据预处理、选择合适的学习算法以及进行细致的参数调优来提升模型的性能。我们将介绍一系列实用的技术和策略,包括特征工程、模型评估、超参数调整以及使用集成学习方法来增强模型的泛化能力。通过这些方法,读者将能够更好地理解并应用机器学习技术来解决实际问题。
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
构建高效机器学习模型:从特征工程到模型优化
【5月更文挑战第31天】 在数据科学领域,构建一个高效的机器学习模型是实现精准预测和数据分析的关键步骤。本文将深入探讨如何通过有效的特征工程技术增强模型的预测能力,以及应用先进的模型调优方法来提升算法性能。我们还将讨论避免过拟合的策略和评估模型的指标,以确保模型的泛化能力和实用性。
|
7月前
|
机器学习/深度学习 数据采集 传感器
深度学习在图像识别中的应用进展构建高效机器学习模型:从数据预处理到模型优化的洞见
【5月更文挑战第29天】 在人工智能领域,深度学习技术已经成为推动图像识别进步的核心动力。随着卷积神经网络(CNN)的不断发展和优化,以及大数据和计算能力的显著提升,图像识别的准确性和效率得到了极大增强。本文将探讨深度学习技术在图像识别领域的最新应用,分析其关键技术创新点,并讨论未来可能的发展趋势。 【5月更文挑战第29天】 在探索数据科学与机器学习的融合艺术中,本文将引导读者穿越数据处理的迷宫,解锁特征工程的秘密,并最终在模型优化的顶峰俯瞰效率与准确性的壮丽景色。我们将通过一系列经过实战验证的技术感悟,展现如何打造一个既健壮又灵敏的机器学习模型。文章不仅聚焦于技术细节,更注重于概念理解与实
|
7月前
|
机器学习/深度学习 数据采集 算法
构建高效机器学习模型:从特征工程到模型调优
【4月更文挑战第16天】 在数据驱动的时代,机器学习已成为解决复杂问题的关键工具。本文旨在分享一套实用的技术流程,帮助读者构建高效的机器学习模型。我们将重点讨论特征工程的重要性、选择合适算法的策略,以及通过交叉验证和网格搜索进行模型调优的方法。文章的目标是为初学者提供一个清晰的指南,同时为有经验的实践者提供一些高级技巧。
|
7月前
|
机器学习/深度学习 数据采集 算法
构建高效的机器学习模型:从数据预处理到模型优化
【2月更文挑战第30天】 在机器学习的实践中,构建一个高效且准确的预测模型是每个数据科学家的核心任务。本文将深入探讨如何通过一系列策略性步骤来提升模型的性能,包括数据预处理、特征选择、模型训练以及超参数调优。我们将讨论各种技术方法,并通过实例展示这些策略是如何在实际问题中应用的。目标是为读者提供一套实用的工具和思路,以应对机器学习项目中遇到的挑战。
下一篇
DataWorks