复杂的深度模型中,如果效果不好,是因为网络设计的欠缺?还是数据天然缺陷?是训练代码的bug?还是Tensorflow自身的问题?基于此,阿里工程师推出了DeepInsight深度学习质量平台,致力于解决当前模型调试和问题定位等一系列问题。接下来,阿里巴巴高级技术专家、DeepInsight深度学习质量平台技术负责人:孙凯(花名:路宸),带我们一起探索。

1. 背景

机器学习训练过程的调试、可视化以及训练效果的评估一直是业界难题。在数据较少,模型较简单,如LR、GBDT、SVM,超参不多的情况下,模型的可调性和可解释性都有一定保障,那么我们用简单的训练,再观察召回/精度/AUC等指标就可以应对。

而深度学习时代,模型的复杂性远远超乎想象,层层嵌套的网络结构,优化器和大量超参的选择,特征的连续化,一起构建了复杂的深度模型。如果效果不好,其原因是多样的,为了定位和解决这些问题,算法研发同学需要花费大量精力反复尝试,而且很可能得不到准确的答案。简单来说,网络模型近似于黑盒。

  1. DeepInsight

通过研究,我们发现训练和评估过程中大量中间指标与模型效果能产生关系,通过系统的分析建模张量、梯度、权重和更新量,能够对算法调优、问题定位起到辅助决策作用。而且,通过改进AUC算法,分析ROC、PR、预估分布等更多评估指标,能够更全面地评估模型效果。

通过2个多月的努力,我们推出了DeepInsight平台,致力于解决当前模型调试和问题定位等一系列问题。提交模型开始训练之后,用户可以通过DeepInsight平台,能一站式查看并分析训练过程,从训练中间指标到预测指标,再到性能数据,一应俱全。对于训练中明显的问题,平台也会高亮给予提示。未来,我们希望平台能更好地帮助用户发现和定位训练中的问题,并能给予适当提示(如更改某些子网络的最优化算法、更改学习率动量等),就如同GDB之于C++一样。

2.1 目标

沉淀并持久化训练数据。深度学习的数据非常宝贵,每次训练的网络拓扑、参数、训练中间过程、模型评估指标都会持久存储,方便后续人工分析和二次建模;

沉淀对模型训练的认识,提供分析调优手段,辅助决策,同时规避各类已知问题;

利用大数据分析建模,寻找中间过程指标的关系,更好地辅助决策,我们称这个目标为Model on Model,即利用新的模型来分析评估深度模型;

在大数据分析建模的基础上,尝试对已有模型进行深度强化学习(DRL),提高深度学习调试效率。

2.2 架构

系统主要分为四层:输入层、解析层、评估层、输出层;

同时包括五大组件:Tensorboard+可视化分析;TensorViewer日志展示对比;TensorDealer集成配置;TensorTracer数据透出;TensorDissection分析调优。

2.3 进展

2.3.1 高性能可视化组件TensorBoard+

Google的TensorBoard(简称为TB)是TensorFlow(简称为TF)的可视化组件,可以查看深度学习的网络结构、中间指标等。原生的TB是单机版命令行方式运行,无法多用户使用;易用性差,每次切换日志路径都需要kill掉当前进程;同时性能也很差,加载工业模型数据立即卡死;指标分层混乱,几千个指标全都罗列,无法查看;用法复杂功能较弱,不支持已展示图形的二次数据对比,不支持X轴浮点数据展示等。

因此,我们重构了TB的核心代码,支持GB级日志加载和数据分层,将整个服务改造成多用户版本,利用Docker灵活管理资源并自动回收。UI上支持了高亮自定义指标、分层展示、数据对比、日志上传等,具体如下:

支持在线更改TF日志路径:

支持图形数据在线聚合对比:

支持X轴浮点数值类型展示:

支持图形数据Hightlight分维度显示:

支持手动调整前端定时刷新时间,实时展示数据:

2.3.2 集成配置日志管理系统TensorViewer

TF的任务缺乏有效管理,用户无法按需查看和分析数据,更无法回顾历史数据。我们打通了TF与DeepInsight的通路,收集了所有任务的信息,用户可以查看每次训练的实时数据和所有历史数据,支持多任务对比分析;同时支持一键跳转到Tensorboard+,直接对当前日志数据进行可视化展示。

2.3.3 改进TensorFlow的可视化数据透出

我们定义了一套数据透出方式,可以把所有内部数据透出成统一的Summary格式,并被Tensorboard+处理。由于PS架构没有Master集中处理中间数据,再加上张量、梯度等指标的透出是极为消耗资源的,所以,如何透出数据是值得深入研究的。当前我们在Worker0上透出数据,能满足一般模型训练的要求,未来,会研究Snapshot数据透出方案,在大规模网络下也能取得较好效果。

当前,我们已经初步解析了Tensorflow透出的过程指标,正在这些海量指标上进行有监督和无监督的建模探索。

2.3.4 改进模型评估指标

Tensorflow自带的AUC计算方式分桶较少,计算精度有bug,在处理大量数据时性能不够,而且,仅仅能计算AUC,无法绘制ROC、PR等曲线。

我们改进了计算方式,引入更多桶,并提升计算效率,同时,绘制了更多新的指标。当前绘制的指标包括AUC、ROC、PR、波动率、正负样本分桶分布。通过观察正负样本的分布,我们发现Tensorflow异步计算的缺陷,导致某些桶的样本数量有误差,会带来AUC上极小波动,这个bug目前尚未解决。所有的预估指标都无缝接入DeepInsight平台。

2.3.5 研究模型训练中间指标

通过深入观察和建模大规模Embedding子网络的训练指标,我们发现权重(偏置)值的变化可以反应出相关网络结构是否被有效训练。权重(偏置)值变化微弱的区域即为训练的“盲区”—该部分网络没有被训练起来。通过观察权重(偏置)的梯度,可以帮助我们诊断梯度弥散或梯度爆炸等问题,分析了解训练该部分网络的难易程度,有针对性地调整优化器以及学习率等设置。通过全面考察整个网络各部分的激活以及梯度,可以帮助我们深入了解整个网络前后向多路信息相互耦合、协同传导的复杂机制,从而更有效地进行模型结构的设计调优。

对中间指标的研究会沉淀回流到DeepInsight,在训练指标产出后,对用户给予提示,做到辅助决策的作用。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

如何评估深度学习模型效果?阿里工程师这么做 1相关推荐

  1. 如何评估深度学习模型效果?阿里工程师这么做

    小叽导读:复杂的深度模型中,如果效果不好,是因为网络设计的欠缺?还是数据天然缺陷?是训练代码的bug?还是Tensorflow自身的问题?基于此,阿里工程师推出了DeepInsight深度学习质量平台 ...

  2. 数据,模型,算法共同决定深度学习模型效果

    数据,模型,算法共同决定深度学习模型效果 2020/4/20 FesianXu ∇\nabla∇ 联系方式: e-mail: FesianXu@gmail.com QQ: 973926198 gith ...

  3. 本地没有环境跑深度学习模型? 阿里云天池实验室它不香吗

    一.前言 前几天做深度学习模型训练使用 Google 的 colab 总是掉,搞得很烦.然后那天我队友 "叶伏天" 和我说有一个类似于 Google colab 的平台,可以训练, ...

  4. 图像Resize方式对深度学习模型效果的影响

    在基于卷积神经网络的应用过程中,图像Resize是必不可少的一个步骤.通常原始图像尺寸比较大,比如常见监控摄像机出来的是1080P高清或者720P准高清画面,而网络模型输入一般没有这么大,像Yolo系 ...

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

    小叽导读:深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释神经网络的来龙去脉.迄今为止,深度学习不够透明,神经网络整体看来仍然是一个黑箱.因此,人们一直致力于更透彻地去理解 ...

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

    小叽导读:深度网络对机器学习研究和应用领域产生了巨大的影响,与此同时却无法很清晰地解释神经网络的来龙去脉.迄今为止,深度学习不够透明,神经网络整体看来仍然是一个黑箱.因此,人们一直致力于更透彻地去理解 ...

  7. 【深度学习模型的训练与评估】一个实例:Iris多分类

    文章目录: 1 评估深度学习模型1.1 自动评估1.2 手动评估1.3 k折交叉验证 2 在Keras中使用Sklearn 3 深度学习模型调参数 4 Iris多分类4.1 数据集分析4.2 代码 1 ...

  8. 手动/自动/交叉验证评估Keras深度学习模型的性能

    Keras是Python中一个的强大而易用的库,主要用于深度学习. 在设计和配置你的深度学习模型时,需要做很多决策.大多数决定必须通过反复试错的方法来解决,并在真实的数据上进行评估. 因此,有一个可靠 ...

  9. 5大关键步骤!如何构建深度学习模型?

    深度学习的关注度正持续上升,它是机器学习的一个子领域,基于人工神经网络的概念来执行特定任务.然而在理论上,人工神经网络与人类大脑的运作方式并不相同,甚至都不相似! 它们之所以被命名为人工神经网络,是因 ...

最新文章

  1. mysql 解除安全模式
  2. 全球及中国陶瓷承烧板行业发展态势及运营前景研究报告2021-2027年版
  3. codeigniter详细笔记
  4. ACCESS SQL语法参考
  5. 速读训练软件_记忆宫殿记忆力训练教程-第八天
  6. python3爬虫学习笔记
  7. 2008下php上传文件崩溃,php – 当用户反复尝试上传无效文件类型时,网站崩溃
  8. 测试 第七章 循环结构进阶 1205 草稿
  9. java单分支结构,java基础语法分支结构
  10. 怎么锁定计算机不让其他人安装,win10如何锁定电脑不让别人打开
  11. 值得借鉴:360推荐系统架构演进
  12. 语音转写和语音听写_如何在Windows 10上使用语音听写
  13. 淮安市第八届计算机比赛,淮安市科学技术协会
  14. exls表格搜索快捷键_excel搜索快捷键 常用的excel快捷键有哪些
  15. 如何解决——打印出的纸张黑底白字?
  16. mysql全部加两岁,mysql数据库课堂笔记2
  17. 数字逻辑·逻辑代数【运算、函数】
  18. Tesseract(识别验证码)
  19. 专题·置换【including 置换,置换快速幂,洛谷·[HNOI2001]洗牌机
  20. 【漏洞学习——沙盒跳出】————7、某银行自助查询终端可绕过权限控制

热门文章

  1. 【学习笔记】第二章——线程与多线程模型
  2. java计算器 运算符优先级_跪求大神帮忙,怎样在java 计算器中实现,四则运算优先级;...
  3. channelsftp 上传文件为空_SpringBoot文件上传下载篇(九)
  4. mysql事件循环执行,Node.js MySQL连接,查询顺序和事件循环
  5. linux配置redis服务,记一次linux下安装redis, 设置redis服务, 及添加环境变量
  6. quill鼠标悬浮 出现提示_「超逸酷玩」VT300S RGB电竞游戏鼠标支持云同步自定义设置...
  7. 用java做一个截图工具_Java制作屏幕截图软件(还可以保存到剪切板内)
  8. python解压_python解压
  9. pytorch-LSTM的输入和输出尺寸
  10. jqc3ff继电器引脚图_单片机控制继电器驱动电路图原理分析