近些年深度学习在视觉、自然语言处理、语音等各个技术方向都诞生了不少创新应用,如智能识别医疗图像中的病灶,辅助医生做病情诊断;智能判别生产线上有质量问题的产品,减轻人工质检压力;对政务、金融等流程中的证件票据进行信息识别,加速审批并实现流程电子化;识别用户输入的语句,与知识库中相应的问答进行匹配,实现智能客服问答等。

随着智能应用的爆发式发展,构建高精模型成为每个企业都在持续探索的命题。然而,在构建深度学习模型的过程中,当遇到模型效果不能满足要求,需要进一步定位问题和调优效果时,由于深度学习模型是一个“黑盒”,开发者并不知道它做出错误决策的准确原因,因此很难采取有针对性的效果优化策略。这个时候就非常让人头疼了。

不用慌,本文就专门针对神经网络模型的黑箱特性,构建了一个模型debug神器,可以轻松帮助从业者“解释”模型的效果,甚至透视模型的决策。

针对这一诉求,百度飞桨企业版EasyDL零门槛AI开发平台在原有完善详实的模型评估报告基础上,进一步新增上线了  混淆矩阵CNN热力图 功能,即使大家对深度学习了解不多,也可以快速依据可视化评估结果制定更为精准的优化方案。下面将为大家逐一介绍模型指标、错误示例(BadCase)、混淆矩阵、CNN热力图等各个功能。

EasyDL模型评估提供多项指标,多角度展现模型效果信息

EasyDL基于飞桨开源深度学习平台,面向企业AI应用开发者提供零门槛AI开发平台,实现零算法基础定制高精度AI模型。EasyDL提供一站式的智能标注、模型训练、服务部署等全流程功能,内置丰富的预训练模型,支持公有云、设备端、私有服务器、软硬一体方案等灵活的部署方式。

目前,EasyDL通过百度智能云已经服务超过80万企业用户,在工业制造、安全生产、零售快消、智能硬件、文化教育、政府政务、交通物流、互联网等领域广泛落地。

在EasyDL完成模型开发后可以获得平台提供的各项详细的模型评估指标,以图像分类模型为例,除了整体的准确率之外,还可以看精确率、召回率、F1-score、TOP5准确率等。

除了模型整体的指标之外,还可以看每一项类别的F1-score值,从而帮助开发者发现具体哪一类别的识别效果较差。针对这些较差的类别,开发者可以有针对性地去看那些被预测错误的样本,也就是常说的BadCase。开发者可以检查这些类别是否样本量过少,需要补充数据;是否有脏数据存在,影响了模型学习。

在物体检测上也类似,整体指标上可以观测mAP、最佳阈值下检测的精确率、召回率等。因为检测模型会输出很多的检测框,而有相当一部分检测框的概率比较低,一般会设置一个阈值来过滤掉那些低概率的检测框。通过设置不同的阈值,模型便会有不同的精确率、召回率和F1-score。在模型预测时,通常取F1-score最高的阈值当做最佳阈值,这样能够较好地平衡精确率和召回率,尽量减少漏检、错检等问题。

与分类任务类似,在物体检测模型的评估中也可以查看各个类别的精度,来判断哪些类别的检测效果欠佳。找到这些问题比较大的类别之后,同样也可以查看BadCase。检测问题里的BadCase详细区分了“误识别”和“漏识别”这两种情况,从而方便开发者看检测出错的各类情况。开发者可以检查对应类别的标注框是否过少,是否有框标注错误需要修正。

新增混淆矩阵与热力图两大功能,高效展示模型效果问题

除了上面这些经典常用的方法外,为了更有针对性地比较易混淆的类别,EasyDL近期重磅上线了混淆矩阵的功能。在混淆矩阵中,开发者可以方便地看到具体哪两种类别之间容易产生混淆,例如,类别A较多地被识别成了类别B。根据这些信息,开发者可以发现是不是训练数据存在问题,例如相似类别的图片有标注错误;或是这些相似类别的图片太少,导致模型没有学习充分。开发者可以依据混淆矩阵提供的信息,对模型数据进行补充与调整。

看到这里,你会发现,EasyDL在评估模型效果时,通常是从数据的角度去发现现有模型的问题,通过优化数据来优化模型效果的。为什么会选择这样的策略呢?在深度学习领域有一句话很流行,“Garbage in , garbage out.”意思就是说如果开发者给了深度学习模型一堆标注质量差的“垃圾”数据,就会得到一个精度很低的“垃圾”模型,这句话时刻提醒开发者,数据质量与模型效果直接相关。因此,从数据角度进行模型效果的问题定位、并配合相应数据的调整,往往是最直接高效的。对于EasyDL的企业应用级开发者而言,从数据角度解决问题,不要求用户进行高深的算法研究,可以零代码快速提升模型精度。

除了上面这些方法外,还有一些更专业的透视模型手段,被业界称之为模型可解释性方法。飞桨开源了业界主流的可解释性方法在GitHub上,这里面既包括基于输入特征的方法(如Intergrated Gradients, SmoothGrad, LIME等),也包括基于中间特征的方法(如GradCAM,ScoreCAM等)。大家可以通过以下链接查阅:

https://github.com/PaddlePaddle/InterpretDL

在这些方法中,针对CNN网络有一个观察网络中激活情况的技术,可以更深入地了解模型的行为。这也是EasyDL模型评估热力图功能的技术基础。

以CAM算法为例,在CNN网络的最后一个特征图(Feature Map)上,哪些位置被激活是非常重要的信息,它直接影响后续网络中分类器的判断。但是这些特征图除了长宽两个维度外,还有一个通道的维度,开发者如何才能把不同通道的特征图叠加到一起呢?CAM提供一种加权的方法,即根据最后一个全连接层中的权重来加权。如上图示例,如果开发者想观察“狗”这个类别的激活情况,那么就把全连接层中各个通道到狗这个类别的权重W1, W2, …, Wn找出来,然后用这些权重对各通道特征图进行加权求和,就会得到一个两维的激活状态图。从这个状态图中,开发者可以看到原图里狗出现的位置被激活了,而其他区域(如人)则数值很小,没有对预测起作用。通过这样的“透视”,开发者可以更深入地了解模型内部的运作情况,一定程度地理解模型为什么得到了某个预测结果。根据这些信息,开发者可以选择通过补充、优化数据来引导模型学习地更好,也可以选择通过调整模型结构来优化模型的表现。

有些方法不仅适用于CNN的视觉模型,也适用于自然语言处理模型和传统机器学习模型。EasyDL也会不断集成相关能力。比如NLP的情感分类任务中,我们想知道为什么文本模型对一句话预测为正面或负面的评论。利用积分梯度(Integrated Gradients)的方法,在文本模型中把全零的嵌入向量作为基线,得到当前嵌入向量的积分梯度。从而反应不同输入词对预测结果的影响,可视化结果如下图:

使用EasyDL进行模型开发,在模型的评估中不仅可以参考各项详细指标来进行模型效果判断,还可以参考全新上线的混淆矩阵和热力图,以可视化、更精准的方式来定位模型效果不佳的原因,从而采取有针对性的效果提升策略。

后台回复关键词【入群

加入卖萌屋NLP/IR/Rec与求职讨论群

后台回复关键词【顶会

获取ACL、CIKM等各大顶会论文集!

拒绝暴力调参!推荐一个模型Debug神器!相关推荐

  1. 暴力调参——GridSearchCV、RandomizedSearchCV、贝叶斯优化

    https://blog.csdn.net/juezhanangle/article/details/80051256 http://www.360doc.com/content/18/0707/15 ...

  2. 拒绝日夜调参:超参数搜索算法一览

    拒绝日夜调参:超参数搜索算法一览 语言: CN / TW / HK 时间 2018-10-31 15:22:57 机器之心 主题 数据挖掘 数学 机器学习训练模型的过程中自然少不了调参,许多机器学习工 ...

  3. 手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二)

    手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二)

  4. ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略

    ML之R:通过数据预处理利用LiR/XGBoost等(特征重要性/交叉训练曲线可视化/线性和非线性算法对比/三种模型调参/三种模型融合)实现二手汽车产品交易价格回归预测之详细攻略 目录 三.模型训练 ...

  5. 手把手调参最新 YOLOv7 模型 推理部分 - 最新版本(一)

    手把手调参最新 YOLOv7 模型 推理部分 - 最新版本(一)

  6. 随机森林调参_机器学习-模型调参利器 gridSearchCV(网格搜索)

    在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就会出现欠拟合或者 ...

  7. 推荐一个Python GUI神器,双手彻底解放!

    今天给大家推荐一个非常牛X的Python GUI库,PySimpleGUI 可以说,有了它双手真的彻底解放了,做个GUI分分钟就能搞定. ▍什么是PySimpleGUI? PySimpleGUI是一个 ...

  8. 推荐一个免费下载神器!你还在付费下载百度文库、豆丁文档吗?

    推荐一个很厉害的神器:冰点文库助手.它可以免费下载百度文库.豆丁文档.道客巴巴等各种网站几亿份文档!!!甚至大部分付费文档都可以下载!逆天了有没有!电脑下载,把需要下载的文档网址复制到软件的输入框即可 ...

  9. [自动调参]深度学习模型的超参数自动化调优详解

    向AI转型的程序员都关注了这个号

最新文章

  1. Linux下的命令总结笔记(一)
  2. 在Docker中运行asp.net core 跨平台应用程序
  3. 登录失败时记住访问的地址
  4. C++是什么?怎么学?学完了能得到什么?
  5. windows下快速创建大文件
  6. ? extends T 与 ? super T
  7. 新兴IT企业特斯拉(九)——私有化风波
  8. php的vr视频教程,1分钟教会你:如何用手机观看VR视频
  9. 404两人互殴css3搞笑代码
  10. →箭头符号大全复制_特殊符号及名称大全,复制即用
  11. 运营之光:我的互联网运营方法论与自白学习总结(思维导图)
  12. 游戏:杀戮尖塔(Slay the spire)mod--拉格朗·月
  13. 十大跑步运动耳机品牌有哪些,质量比较好的运动耳机品牌推荐
  14. 【大数据】为什么要学习大数据
  15. AD使用中各个层的含义,阻焊层与驻焊层的区别;
  16. 微信小程序连接阿里云物联网平台——物联网远程控制开发1
  17. 正版方舟建服务器,《方块方舟》玩家自建服务器教程
  18. linux nas解决方案_畅快玩转NAS 篇一:Linux权限简单讲解
  19. elasticsearch 条件去重_Elasticsearch7.* + SpringBoot2.*根据中文和拼音分页去重搜索-Go语言中文社区...
  20. 用启动盘点击修复计算机没有反应,如何修复并还原故障/没有反应SSD固态硬盘...

热门文章

  1. Laravel框架开发规范-修订版
  2. mysql中ibatis的limit动态传参
  3. sql 查看Oralce 数据库连接状态
  4. C++中默认构造函数使用时的要点
  5. boost库在ubuntu下的安装
  6. 300来行代码实现最小Linux文件系统
  7. NILMTK——深扒组合优化(CO)和FHMM细节
  8. java socket oc_Java Socket编程(三) 服务器Sockets
  9. python 数据分析 实际案例_python实战案例:超市营业额数据分析
  10. 如何 给给软件开发 添加 代理_敏捷开发是如何被跑偏的