点击下方卡片,关注“CVer”公众号
AI/CV重磅干货,第一时间送达
近些年深度学习持续发展,在视觉、自然语言处理、语音等各个技术方向都诞生了创新智能应用,例如智能识别医疗图像中的病灶,辅助医生做病情诊断;智能判别生产线上有质量问题的产品,减轻人工质检压力;对政务、金融等流程中的证件票据进行信息识别,加速审批并实现流程电子化;识别用户输入的语句,与知识库中相应的问答进行匹配,实现智能客服问答等。随着智能应用的爆发式发展,如何构建高精度的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开发精讲:高精度视觉模型定制与部署实战》系列课程,多位资深研发与产品经理深入探讨开发难点与解决方案,三节课重点全掌握!
扫描海报二维码或点击阅读原文,立即报名,获取直播提醒: