热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

最全模型效果评估报告上线,百度飞桨企业版EasyDL助力模型效果快速优化

最全模型效果评估报告上线,百度飞桨企业版EasyDL助力模型效果快速优化-近些年深度学习持续发展,在视觉、自然语言处理、语音等各个技术方向都诞生了创新智能应用,例如智能识别医疗图像

近些年深度学习持续发展,在视觉、自然语言处理、语音等各个技术方向都诞生了创新智能应用,例如智能识别医疗图像中的病灶,辅助医生做病情诊断;智能判别生产线上有质量问题的产品,减轻人工质检压力;对政务、金融等流程中的证件票据进行信息识别,加速审批并实现流程电子化;识别用户输入的语句,与知识库中相应的问答进行匹配,实现智能客服问答等。随着智能应用的爆发式发展,如何构建高精度的AI模型成为每个企业都在持续探索的命题。
构建深度学习模型的过程中,当遇到模型效果不能满足要求,需要进一步定位问题和调优效果,由于深度学习模型又是一个“黑盒”,开发者并不知道当它做出一个错误预测的准确原因,因此很难采取有针对性的效果优化策略。这个时候就非常让人头疼了。
其实,碰到模型效果不佳时不用慌,虽然模型“黑盒”,但是通过一些技术积累和功能设计,可以从多个角度去了解它到底怎么“想”,为模型优化特别是在数据上如何优化提供思路和指导。
在企业AI开发中,快速对模型效果进行评估、定位模型问题,高效完成模型效果优化是AI应用落地中的重要环节。针对这一诉求,百度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进行模型开发,在模型的评估中不仅可以参考各项详细指标来进行模型效果判断,还可以参考全新上线的混淆矩阵和热力图,以可视化、更精准的方式来定位模型效果不佳的原因,从而采取有针对性的效果提升策略。
近期,为帮助开发者从数据处理、模型训练、服务部署这三步来迅速掌握模型定制开发技能,百度EasyDL携手CSDN打造《AI开发精讲:高精度视觉模型定制与部署实战》系列课程,多位资深研发与产品经理深入探讨开发难点与解决方案,三节课重点全掌握!
扫描海报二维码立即报名,获取直播提醒:


推荐阅读
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 利用50行Python代码打造经典游戏,既是休闲娱乐,也是编程学习的利器
    Free Python Games 是一个适合学生和初学者的项目,它不仅提供了高度的组织性和灵活性,还极大地激发了用户的探索与理解能力。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 本文详细介绍了如何在 EasyUI 框架中实现 DataGrid 组件的分页功能,包括配置方法和常见问题的解决方案。 ... [详细]
  • 深入解析Java并发之ArrayBlockingQueue
    本文详细探讨了ArrayBlockingQueue,这是一种基于数组实现的阻塞队列。ArrayBlockingQueue在初始化时需要指定容量,因此它是一个有界的阻塞队列。文章不仅介绍了其基本概念和数据结构,还深入分析了其源码实现,包括各种入队、出队、获取元素和删除元素的方法。 ... [详细]
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了一个Web工程项目的需求,即允许用户随时添加定时任务,并通过Quartz框架实现这些任务的自动化调度。文章将介绍如何设计任务表以存储任务信息和执行周期,以及如何通过一个定期扫描机制自动识别并加载新任务到调度系统中。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 本文探讨为何Request对象的外观设计被认为是精妙的,重点在于其如何利用门面模式确保数据安全,同时保持系统的高效交互。 ... [详细]
  • IA64架构下常见编程陷阱探讨
    本文深入探讨了IA64架构中常见的一个编程错误案例,该案例揭示了当开发者试图绕过编译器的某些限制时可能遇到的问题。通过具体分析IA64架构的特点及其对全局变量处理的方式,本文旨在为开发者提供避免此类问题的有效建议。 ... [详细]
author-avatar
润滑油一_576
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有