本文主要是介绍深度学习实用方法 - 性能度量篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
序言
在深度学习的广阔领域里,性能度量是连接理论与实践的桥梁,它不仅是评估模型效果的关键指标,也是指导模型优化与改进的重要依据。随着大数据时代的到来和计算能力的提升,深度学习模型在图像识别、自然语言处理、推荐系统等多个领域取得了突破性进展。然而,如何准确、全面地评估这些复杂模型的性能,成为了研究者们面临的重要挑战。性能度量不仅关乎模型预测的准确性,还涉及到稳定性、泛化能力、计算效率等多个维度,为深度学习的发展提供了不可或缺的评估体系。
性能度量
- 确定目标,即使用什么误差度量,是必要的第一步,因为误差度量将指导接下来的所有工作。同时我们也应该了解大概能得到什么级别的目标性能。
- 注意,对于大多数应用而言,不可能实现绝对零误差。即使你有无限的训练数据,并且恢复了真正的概率分布,贝叶斯误差仍定义了能达到的最小错误率。这是因为输入特征可能无法包含输出变量的完整信息,或是因为系统可能本质上是随机的。当然我们还会受限于有限的训练数据。
- 训练数据的数量会因为各种原因受到限制。
- 当目标是打造现实世界中最好的产品或服务时,通常需要收集更多的数据,但必须确定进一步减少误差的价值,并与收集更多数据的成本做权衡。
- 数据收集会耗费时间,金钱,或带来痛苦(例如,收集人体医疗测试数据)。
- 科研中,目标通常是在某个确定基准下探讨哪个算法更好,一般会固定训练集,不能收集更多的数据。
- 如何确定合理的性能期望?
- 在学术界,通常我们可以根据先前公布的基准结果来估计预期错误率。
- 在现实世界中,一个应用的错误率有必要是安全的,具有成本效益的,或吸引消费者的。
- 一旦你确定了想要达到的错误率,那么你的设计将由如何达到这个错误率来指导。
- 除了需要考虑性能度量之外,另一个需要考虑的是度量的选择。
- 我们有几种不同的性能度量,可以用来度量含有机器学习的应用的性能。
- 这些性能度量通常不同于训练模型的损失函数。
- 如在
学习算法篇 - 性能度量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% 的精度。
- 还有许多其他的性能度量。
- 例如,我们可以度量点击率,收集用户满意度调查,等等。
- 许多专业的应用领域也有特定于应用的标准。
- 最重要的是首先要确定改进哪个性能度量,然后集中提高性能度量。如果没有明确的目标,那么我们很难判断机器学习系统上的改动是否有所改进。
总结
- 深度学习中的性能度量是一个多维度、多层次的概念,它要求我们在追求高准确率的同时,也要关注模型的稳定性、鲁棒性、计算效率及可解释性等多方面因素。
- 通过设计合理的性能评估指标,我们能够更全面地了解模型的优缺点,进而指导模型的优化与改进。
- 未来,随着深度学习技术的不断演进,性能度量体系也将日益完善,为推动人工智能领域的进一步发展提供有力支撑。在这个过程中,研究者们需要不断探索新的评估方法,以适应日益复杂的任务需求,同时保持对模型性能的全面把控,确保深度学习技术能够在实际应用中发挥更大的价值。
往期内容回顾
应用数学与机器学习基础 - 学习算法篇
这篇关于深度学习实用方法 - 性能度量篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!