首页 > 其他分享 >深度学习实用方法 - 性能度量篇

深度学习实用方法 - 性能度量篇

时间:2024-08-26 12:53:37浏览次数:7  
标签:学习 错误率 text 性能 实用 深度 精度 度量

序言

在深度学习的广阔领域里,性能度量是连接理论与实践的桥梁,它不仅是评估模型效果的关键指标,也是指导模型优化与改进的重要依据。随着大数据时代的到来和计算能力的提升,深度学习模型在图像识别、自然语言处理、推荐系统等多个领域取得了突破性进展。然而,如何准确、全面地评估这些复杂模型的性能,成为了研究者们面临的重要挑战。性能度量不仅关乎模型预测的准确性,还涉及到稳定性、泛化能力、计算效率等多个维度,为深度学习的发展提供了不可或缺的评估体系。

性能度量

  • 确定目标,即使用什么误差度量,是必要的第一步,因为误差度量将指导接下来的所有工作。同时我们也应该了解大概能得到什么级别的目标性能。
  • 注意,对于大多数应用而言,不可能实现绝对零误差。即使你有无限的训练数据,并且恢复了真正的概率分布,贝叶斯误差仍定义了能达到的最小错误率。这是因为输入特征可能无法包含输出变量的完整信息,或是因为系统可能本质上是随机的。当然我们还会受限于有限的训练数据。
  • 训练数据的数量会因为各种原因受到限制。
    • 当目标是打造现实世界中最好的产品或服务时,通常需要收集更多的数据,但必须确定进一步减少误差的价值,并与收集更多数据的成本做权衡。
    • 数据收集会耗费时间,金钱,或带来痛苦(例如,收集人体医疗测试数据)。
    • 科研中,目标通常是在某个确定基准下探讨哪个算法更好,一般会固定训练集,不能收集更多的数据。
  • 如何确定合理的性能期望?
    • 在学术界,通常我们可以根据先前公布的基准结果来估计预期错误率。
    • 在现实世界中,一个应用的错误率有必要是安全的,具有成本效益的,或吸引消费者的。
    • 一旦你确定了想要达到的错误率,那么你的设计将由如何达到这个错误率来指导。
  • 除了需要考虑性能度量之外,另一个需要考虑的是度量的选择。
    • 我们有几种不同的性能度量,可以用来度量含有机器学习的应用的性能。
    • 这些性能度量通常不同于训练模型的损失函数。
    • 如在学习算法篇 - 性能度量P中所述,我们通常会度量一个系统的准确率,或等价的错误率。
  • 然而,许多应用需要更高级的度量。
  • 有时,一种错误可能会比更一种错误更严重。例如,垃圾邮件检测系统会有两种错误:将正常邮件归为垃圾邮件,将垃圾邮件归为正常邮件。阻止正常消息比通过可疑消息更糟糕。不去度量垃圾邮件分类的错误率,我们希望度量某种形式的总损失,其中拦截正常邮件比通过垃圾邮件的代价更高。
  • 有时,我们需要训练检测某些罕见事件的二元分类器
    • 例如,我们可能会为一种罕见疾病设计医疗测试。假设每一百万人中只有一人患病。
    • 简单地让分类器一直报告没有患者,我们就能在检测任务上实现 99.9999 % 99.9999\% 99.9999% 的正确率。
    • 显然,正确率很差地体现了这种系统的性能。
    • 解决这个问题的方法是度量精度 ( precision \text{precision} precision) 和召回率 ( recall \text{recall} recall)。 精度是模型报告的检测是正确的比率,而召回率则是真实事件被检测到的比率。检测器一只报告没有患者,可能会有一个很高的精度,但召回率为零。而报告每个人都是患者的检测器可能有很高的召回率,但是精度很低(在我们的例子是 0.0001 % 0.0001\% 0.0001%,每一百万人只有一人患病)。
    • 当使用精度和召回率时,通常会画 PR \textbf{PR} PR 曲线, y \text{y} y 轴表示精度, x \text{x} x 轴表示召回率。
      • 如果检测到的事件发生了,那么分类器会返回一个比较高的值。
      • 例如,我们将前馈网络设计为检测一种疾病,估计一个医疗结果由特征 x \text{x} x 表示的人患病的概率为 y ^ = P ( y = 1 ∣ x ) \hat{y}=P(y=1|\boldsymbol{x}) y^​=P(y=1∣x)。
      • 每当这个值超过某个阈值时,我们报告检测结果。
      • 通过调整阈值,我们能以精度换召回率。
      • 在很多情况下,我们希望用一个数而不是曲线来概括分类器的性能。
      • 要做到这一点,我们可以转换精度 p p p 和召回率 r r r 为 F-score \textbf{F-score} F-score: F = 2 p r p + r F=\displaystyle\frac{2pr}{p+r} F=p+r2pr​ — 公式1 \quad\textbf{---\footnotesize{公式1}} —公式1
        另一种方法是报告 PR \text{PR} PR曲线下方的总面积。
  • 在一些应用中, 机器学习系统可能会拒绝做出判断
    • 机器学习算法能够估计对判断的确信度,会是非常有用的,特别是在错误判断会有严重危害,而人工操作员能够偶尔接管的情况下。
    • 街景转录系统可以作为这种情况的一个示例。该任务是转录照片上的地址号码,以关联到地图上拍摄照片的位置。因为如果地图是不精确的,那么地图的价值会严重下降。因此只在转录正确的情况下添加地址十分重要。
    • 如果机器学习系统认为它不太能像人一样正确地转录,那么最好办法当然是让人来转录照片。当然,我们有必要让机器学习系统大量降低需要人工操作处理的图片,这样它才是有用的。在这种情况下,一种自然的性能度量是覆盖率 ( coverage \text{coverage} coverage)。
    • 覆盖率是机器学习系统能够产生响应的样本所占的比率。有可能以覆盖率换精度。一个系统总可以通过拒绝处理任意样本的方式来达到 100 % 100\% 100% 的精度,但是覆盖率降到了 0 % 0\% 0%。对于街景任务,该项目的目标是达到人类转录的精度,同时保持 95 % 95\% 95% 的覆盖率。这项任务的人类级别性能是 98 % 98\% 98% 的精度。
  • 还有许多其他的性能度量
    • 例如,我们可以度量点击率,收集用户满意度调查,等等。
    • 许多专业的应用领域也有特定于应用的标准。
  • 最重要的是首先要确定改进哪个性能度量,然后集中提高性能度量。如果没有明确的目标,那么我们很难判断机器学习系统上的改动是否有所改进

总结

  • 深度学习中的性能度量是一个多维度、多层次的概念,它要求我们在追求高准确率的同时,也要关注模型的稳定性、鲁棒性、计算效率及可解释性等多方面因素。
  • 通过设计合理的性能评估指标,我们能够更全面地了解模型的优缺点,进而指导模型的优化与改进。
  • 未来,随着深度学习技术的不断演进,性能度量体系也将日益完善,为推动人工智能领域的进一步发展提供有力支撑。在这个过程中,研究者们需要不断探索新的评估方法,以适应日益复杂的任务需求,同时保持对模型性能的全面把控,确保深度学习技术能够在实际应用中发挥更大的价值。

往期内容回顾

应用数学与机器学习基础 - 学习算法篇

标签:学习,错误率,text,性能,实用,深度,精度,度量
From: https://blog.csdn.net/benny_zhou2004/article/details/141494020

相关文章

  • 2024 Datawhale X 李宏毅苹果书 AI 夏令营第5期——跟李宏毅学深度学习(入门)
    本方向学习目标本方向的核心学习目标是——通过《深度学习详解》和李宏毅老师21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践(选修)。相关学习链接......
  • LeetCode 690. 员工的重要性(哈希表、深度优先搜索dfs)
    题目:690.员工的重要性思路:先用哈希表map将每个员工的信息映射到员工ID对应的下标位置。接着使用深度优先搜索dfs,来记录总和即可。细节看注释/*//DefinitionforEmployee.classEmployee{public:intid;intimportance;vector<int>subordinates;......
  • 计算机毕业设计Hadoop+Hive地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计
    目录1绪论2 相关技术与工具2.1 大数据技术概述2.2 hadoop介绍3地震数据分析3.1数据收集与处理4地震数据可视化4.1可视化技术概述4.2可视化设计原则4.3可视化实现与评估5系统设计与实现5.1登录页面5.25.3地震数据分析页面5.4地......
  • 掌握时间的艺术:Python的sched库深度解析
    文章目录掌握时间的艺术:Python的sched库深度解析背景:为何选择sched?什么是sched库?如何安装sched库?简单库函数使用方法1.创建调度器实例2.安排事件3.取消事件4.运行调度器5.检查事件是否在队列中场景应用1.定时提醒2.定时备份3.定时关闭程序常见Bug及解决方案1.......
  • 深度学习 vector 之模拟实现 vector (C++)
    1.基础框架这里我们有三个私有变量,使用_finish-_start代表_size,_end_of_storage-_start代表_capacity,并且使用到了模版,可以灵活定义存储不同类型的vector,这里将代码量较小的函数直接定义在类的内部使其成为内联函数namespacebit{ template<classT> classv......
  • 推荐2款实用的持续集成与部署(CI&CD)自动化工具
    前言最近DotNetGuide技术社区交流群有不少同学在咨询:持续集成与部署(CI&CD)自动化工具有什么好用的推荐?今天大姚给大家推荐2款实用且免费的持续集成与部署(CI&CD)自动化工具,希望可以帮助到有需要的同学。持续集成与部署工具的作用持续集成(CI)和持续交付/部署(CD)自动化工具是用于实现......
  • 【深度学习】文本张量表示方法
    1文本张量表示将一段文本使用张量进行表示,其中一般将词汇为表示成向量,称作词向量,再由各个词向量按顺序组成矩阵形成文本表示.举个例子:["人生","该","如何","起头"]==>#每个词对应矩阵中的一个向量[[1.32,4,32,0,32,5.2],[3.1,5.43,0.34,3.2],[3.21,......
  • [深度学习]了解常见优化方法的问题及解决方案
    传统的梯度下降优化算法中,可能会碰到以下情况:碰到平缓区域,梯度值较小,参数优化变慢碰到“鞍点”,梯度为0,参数无法优化碰到局部最小值对于这些问题,出现了一些对梯度下降算法的优化方法,例如:Momentum、AdaGrad、RMSprop、Adam等.1.指数加权平均我们最常见的算数平均指......
  • Objective-C 中的系统调用术:NSTask 深度解析
    标题:Objective-C中的系统调用术:NSTask深度解析在Objective-C开发中,有时我们需要执行外部程序或命令行工具来完成特定的任务,如运行脚本、调用系统服务或执行自定义命令。NSTask是Foundation框架中一个用于创建和管理系统命令的类,它允许开发者在应用中启动和控制外部......
  • 【pytorch深度学习——小样本学习策略】网格搜索和遗传算法混合优化支持向量机的小样
    最近需要根据心率血氧数据来预测疲劳度,但是由于心率血氧开源数据量较少,所以在训练模型时面临着样本数量小的问题,需要对疲劳程度进行多分类,属于小样本,高维度问题。在有限样本的条件之下,必须要需要选择合适的深度学习算法同时满足模型的泛化能力和学习精度。其次,由于小样本学习的......