深度学习教程 | AI应用实践策略(上)

简介: 本节覆盖机器学习中的一些策略和方法,让我们能够更快更有效地让机器学习系统工作,内容包括:正交化方法,建立单值评价指标,数据集划分要点,人类水平误差与可避免偏差,提高机器学习模型性能总结等。

ShowMeAI研究中心

作者:韩信子@ShowMeAI
教程地址http://www.showmeai.tech/tutorials/35
本文地址http://www.showmeai.tech/article-detail/219
声明:版权所有,转载请联系平台与作者并注明出处
收藏ShowMeAI查看更多精彩内容


第3门课 结构化机器学习项目,第1周: 机器学习策略 1

本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在这里查看。

引言

ShowMeAI前一篇文章网络优化:超参数调优、正则化、批归一化和程序框架中我们对以下内容进行了介绍:

  • 超参数优先级与调参技巧
  • 超参数的合适范围确定
  • Batch Normalization
  • softmax回归
  • 深度学习框架

本篇下篇 主要对吴恩达老师第3门课《Structuring Machine Learning Projects》(构建机器学习项目)相关内容做总结梳理。内容主要覆盖机器学习中的一些策略和方法,让我们能够更快更有效地让机器学习系统工作。

为什么是ML策略?  Why ML Strategy?

对于一个已经被构建好且产生初步结果的机器学习系统,为了能使结果更令人满意,往往还要进行大量的改进。之前的内容部分介绍了很多改进的方法,包括:

  • 收集更多数据
  • 调试超参数
  • 调整神经网络的大小或结构
  • 采用不同的优化算法
  • 添加正则化

可选择的方法很多,也很复杂、繁琐。盲目选择、尝试不仅耗费时间而且可能收效甚微。想要找准改进的方向,使一个机器学习系统更快更有效地工作,就需要学习一些在构建机器学习系统时常用到的策略。

1.正交化

正交化 Orthogonalization

机器学习中有许多参数、超参数需要调试。通过每次只调试一个参数,保持其它参数不变,而得到的模型某一性能改变是一种最常用的调参策略,我们称之为正交化方法(Orthogonalization)

正交化的核心在于每次调整只会影响模型某一方面的性能,而对其他功能没有影响。这种方法有助于更快更有效地进行机器学习模型的调试和优化

在机器学习(监督学习)系统中,我们希望模型有4重评价:

  • ① 建立的模型在训练集上表现良好
  • ② 建立的模型在验证集上表现良好
  • ③ 建立的模型在测试集上表现良好
  • ④ 建立的模型在实际应用中表现良好

其中:

  • 对于第 ① 条,如果模型在训练集上表现不好,可以尝试训练更复杂的神经网络或者换一种更好的优化算法(例如Adam)。
  • 对于第 ② 条,如果模型在验证集上表现不好,可以进行正则化处理或者加入更多训练数据。
  • 对于第 ③ 条,如果模型在测试集上表现不好,可以尝试使用更大的验证集进行验证。
  • 对于第 ④ 条,如果模型在实际应用中表现不好,可能是因为测试集没有设置正确或者成本函数评估指标有误,需要改变测试集或成本函数。

每一种“功能”对应不同的调节方法。而这些调节方法(旋钮)只会对应一个“功能”,是正交的。面对遇到的各种问题,正交化能够帮助我们更为精准有效地解决问题。

在模型功能调试中并不推荐使用早停法early stopping。如果早期停止,虽然可以改善验证集的拟合表现,但是对训练集的拟合就不太好。因为对两个不同的“功能”都有影响,所以早停止法不具有正交化。虽然也可以使用,但是用其他正交化控制手段来进行优化会更简单有效。

2.单值评价指标

单一数字评估指标 Single Number Evaluation Metric

(关于本节涉及到的机器学习应用中的评估指标详解,推荐阅读ShowMeAI文章 图解机器学习 | 模型评估方法与准则

构建与优化机器学习系统时,单值评价指标非常必要。通过设置一个量化的单值评价指标(single-number evaluation metric),可以使我们根据这一指标比较不同超参数对应的模型的优劣,从而选择最优的那个模型。

例如,对于二分类问题,常用的评价指标是精确率(Precision)召回率(Recall)

单值评价指标

假设我们有 equation?tex=Aequation?tex=B 两个分类器,其两项指标分别如图。但实际应用中,我们通常使用综合了精确率和召回率的单值评价指标 equation?tex=F1-Score 来评价模型的好坏。equation?tex=F1-%20Score 其实就是精准率和召回率的调和平均数(Harmonic Mean),比单纯的平均数效果要好。我们计算出两个分类器的 equation?tex=F1-%20Score,对比会发现 equation?tex=A 模型的效果要更好

除了 equation?tex=F1-%20Score 之外,我们还可以使用平均值作为单值评价指标来对模型进行评估。

单值评价**加粗样式**指标

如图所示,equation?tex=Aequation?tex=Bequation?tex=Cequation?tex=Dequation?tex=Eequation?tex=F 六个模型对不同国家样本的错误率不同,可以计算其平均性能,然后选择平均错误率最小的那个模型(equation?tex=C模型)。

3.优化指标和满足指标

满足和优化指标 Satisficing and Optimizing Metric

有时候,要把所有的性能指标都综合在一起,构成单值评价指标是比较困难的(比如在上面例子的基础上加入模型效率即运行时间)。这时,我们可以将某些指标作为优化指标(Optimizing Metric),寻求它们的最优值;而将某些指标作为满足指标(Satisficing Metric),只要在一定阈值以内即可。

我们以猫类识别的分类器为例,有 equation?tex=Aequation?tex=Bequation?tex=C 三个模型,各个模型的Accuracy运行时间(Running time)如下表中所示:

优化指标和满足指标

我们可以将 Accuracy 作为优化指标(Optimizing metic),将 Running time 作为满足指标(Satisficing metic):给 Running time 设定一个阈值,在其满足阈值的情况下,选择 Accuracy 最大的模型。

如上例中设定 Running time 必须在 100ms 以内:

  • 模型 equation?tex=C 不满足阈值条件,首先剔除
  • 模型 equation?tex=B 相比较模型 equation?tex=A 而言,Accuracy 更高,性能更好

总结一下:优化指标(Optimizing metic)是需要优化的,越优越好,满足指标(Satisficing metic)只要满足设定的阈值就好了。上例中,准确率就是优化指标,因为我们想要分类器尽可能做到正确分类;而运行时间就是一个满足指标,如果你想要分类器的运行时间不多于某个阈值,那最终选择的分类器就应该是以这个阈值为界里面准确率最高的那个。

4.动态改变评价指标

对于模型的评价标准优势需要根据实际情况进行动态调整,以让模型在实际应用中获得更好的效果。

例如,有时我们不太能接受某些分类错误,于是改变单纯用错误率作为评价标准,给某些分类错误更高的权重,以从追求最小错误率转为追求最小风险。

5.训练 / 验证 / 测试集划分

训练集、开发集、测试集的划分 Train / Dev / Test Distributions

ShowMeAI在前面的文章 深度学习的实用层面 中提到了,我们会将数据集分为训练集、验证集、测试集。构建机器学习系统时,我们采用不同的学习方法,在训练集上训练出不同的模型,然后使用验证集对模型的好坏进行评估,确信其中某个模型足够好时再用测试集对其进行测试。

训练集、验证集、测试集的设置对于机器学习模型非常重要,合理的设置能够大大提高模型训练效率和模型质量。

5.1 验证集和测试集的分布

开发集和测试集的大小 Size of the Dev and Test Sets

验证集和测试集的数据来源应该相同(来自同一分布)、和机器学习系统将要在实际应用中面对的数据一致,且必须从所有数据中随机抽取。这样,系统才能做到尽可能不偏离目标。

训练集 / 验证集 / 测试集划分

如果验证集和测试集不来自同一分布,那么我们从验证集上选择的“最佳”模型往往不能够在测试集上表现得很好。这就好比我们在验证集上找到最接近一个靶的靶心的箭,但是我们测试集提供的靶心却远远偏离验证集上的靶心,结果这支肯定无法射中测试集上的靶心位置。

5.2 验证集和测试集的大小

过去数据量较小(小于1万)时,通常将数据集按照以下比例进行划分,以保证验证集和测试集有足够的数据:

训练集 / 验证集 / 测试集划分

  • 无验证集的情况:equation?tex=70%20%5C%25 / equation?tex=30%20%5C%25
  • 有验证集的情况:equation?tex=60%20%5C%25 / equation?tex=20%20%5C%25 / equation?tex=20%20%5C%25

现在的机器学习时代数据集规模普遍较大,例如 100万 数据量,这时将相应比例设为 equation?tex=98%20%5C%25 / equation?tex=1%20%5C%25 / equation?tex=1%20%5C%25equation?tex=99%20%5C%25 / equation?tex=1%20%5C%25 就已经能保证验证集和测试集的规模足够。

训练集 / 验证集 / 测试集划分

5.3 何时改变开发/验证集和评价指标

什么时候改变开发集/测试集和评估指标 When to Change Dev / Test Sets and Metrics

算法模型的评价标准有时候需要根据实际情况进行动态调整,目的是让算法模型在实际应用中有更好的效果。

依旧以猫类识别的分类器为例。初始的评价标准是错误率,算法 equation?tex=A 错误率为 equation?tex=3%20%5C%25,算法 equation?tex=B 错误率为 equation?tex=5%20%5C%25,从错误率评价指标上看显然 equation?tex=A 更好一些。但是,实际使用时发现算法 equation?tex=A 会通过一些色情图片,但是 equation?tex=B 没有出现这种情况。从用户的角度来说,他们可能更倾向选择 equation?tex=B 模型,虽然 equation?tex=B 的错误率高一些。

这时候,我们就需要改变之前单纯只是使用错误率作为评价标准,而考虑新的情况进行改变。例如增加色情图片的权重,增加其代价。


原来的cost function

equation?tex=J%3D%5Cfrac1m%5Csum_%7Bi%3D1%7D%5EmL%28%5Chat%20y%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29


更改评价标准后的cost function

equation?tex=J%3D%5Cfrac%7B1%7D%7Bw%5E%7B%28i%29%7D%7D%5Csum_%7Bi%3D1%7D%5Emw%5E%7B%28i%29%7DL%28%5Chat%20y%5E%7B%28i%29%7D%2Cy%5E%7B%28i%29%7D%29

equation?tex=w%5E%7B%28i%29%7D%3D%20%5Cbegin%7Bcases%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%201%2C%20%26%20x%5E%7B%28i%29%7D%5C%20is%5C%20non-porn%5C%5C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2010%2C%20%26%20x%5E%7B%28i%29%7D%5C%20is%5C%20porn%20%20%20%20%20%20%20%20%20%20%5Cend%7Bcases%7D

综上,总体来说机器学习可分为两个过程:

  • ① 定义一个合适的评价指标
  • ② 基于上述指标评估当前模型的表现。

也就是说,第1步是找靶心,第2步是通过训练,射中靶心。但是在训练的过程中可能会根据实际情况改变算法模型的评价标准,进行动态调整。

还有一种情况下,我们需要动态改变评价标准:我们的验证集/测试集与实际使用的样本分布不一致。比如猫类识别分类场景下样本图像分辨率差异。

训练集 / 验证集 / 测试集划分

6.比较人类表现水平

为什么是人的表现 Why Human-level Performance?

很多机器学习模型的诞生是为了取代人类的工作,因此其表现也会跟人类表现水平作比较。下图展示了随着时间的推进,机器学习系统和人的表现水平的变化

比较人类表现水平

一般的,当机器学习超过人的表现水平后,它的进步速度逐渐变得缓慢,最终性能无法超过某个理论上限,这个上限被称为贝叶斯最优误差(Bayes Optimal Error)

贝叶斯最优误差一般认为是理论上可能达到的最优误差。换句话说,其就是理论最优函数,任何从 equation?tex=x 到精确度 equation?tex=y 映射的函数都不可能超过这个值。例如,对于语音识别,某些音频片段嘈杂到基本不可能知道说的是什么,所以完美的识别率不可能达到 equation?tex=100%20%5C%25

因为人类对于一些自然感知问题的表现水平十分接近贝叶斯最优误差,所以当机器学习系统的表现超过人类后,就没有太多继续改善的空间了。而当构建的机器学习模型的表现还没达到人类的表现水平时,我们会使用各种方式来提升它:

  • 采用人工标记过的数据进行训练
  • 通过人工误差分析了解为什么人能够正确识别
  • 进行偏差、方差分析

当模型的表现超过人类后,这些方法的作用就微乎其微了。

6.1 可避免偏差

可避免偏差 Avoidable Bias

实际应用中,要看人类表现(误差)训练误差验证误差的相对值。以猫类识别分类为例:

  • 如果人类误差为 equation?tex=1%20%5C%25,模型训练误差为 equation?tex=8%20%5C%25,验证误差为 equation?tex=10%20%5C%25。由于前两者相差 equation?tex=7%20%5C%25,后两者之间只相差 equation?tex=2%20%5C%25,所以目标是尽量在训练过程中减小训练误差,即减小偏差 bias
  • 如果图片很模糊,肉眼也看不太清,人类表现(误差)提高到 equation?tex=7.5%20%5C%25。此时,由于训练误差与其只相差 equation?tex=0.5%20%5C%25,验证误差与训练误差相差 equation?tex=2%20%5C%25,所以目标是尽量在训练过程中减小验证误差,即方差 variance

所以这个过程,我们看的更多是相对的数据。

模型在「训练集上的误差」与「人类表现水平」的差值被称作可避免偏差(Avoidable Bias)

比较人类表现水平

可避免偏差低便意味着模型在训练集上的表现很好,而训练集与验证集之间错误率的差值越小,意味着模型在验证集与测试集上的表现和训练集同样好。

如果可避免偏差大于训练集与验证集之间错误率的差值,之后的工作就应该专注于减小偏差;反之,就应该专注于减小方差。

6.2 理解人类表现水平

理解人类的表现  Understanding Human-level Performance

我们说了很多时候会用人类水平误差(Human-level Error)来代表贝叶斯最优误差(或者简称贝叶斯误差)。对于不同领域的例子,不同人群由于其经验水平不一,错误率也不同。一般来说,我们将表现最好的作为人类水平误差。但是实际应用中,不同人选择人类水平误差的基准是不同的,这会带来一定的影响。


吴恩达老师的课程里,以医疗影像场景举例说明了,这个场景下不同人群的识别 error 有所不同:

  • 普通大众人群:equation?tex=3%20%5C%25 错误率
  • 普通医生:equation?tex=1%20%5C%25 错误率
  • 有经验的医生:equation?tex=0.7%20%5C%25 错误率
  • 有经验的医生团队:equation?tex=0.5%20%5C%25 错误率

理解人类表现水平

上例中不同人群的错误率不同。一般来说,我们将表现最好的那一组,即「有经验的医生团队」作为「人类水平」,即human-level error就为 equation?tex=0.5%20%5C%25。但是实际应用中,不同人可能选择的「人类水平」基准是不同的,这对我们后续会带来一些影响。

假如该模型训练误差为 equation?tex=0.7%20%5C%25,验证为 equation?tex=0.8%20%5C%25

  • 如果选择「有经验的医生团队」,即人类水平误差为 equation?tex=0.5%20%5C%25,则此时 bias 比 variance 更加突出。
  • 如果选择「有经验的医生」,即人类水平误差为 equation?tex=0.7%20%5C%25,则 variance 更加突出。

大家可以看到,选择什么样的人类水平误差,有时候会影响 bias 和 variance 值的相对变化。当然这种情况一般只会在模型表现很好,接近 bayes optimal error 的时候出现。越接近 bayes optimal error,模型越难继续优化,因为这时候的人类水平误差可能是比较模糊难以准确定义的。

7.超越人类的表现

超过人类的表现 Surpassing Human-level Performance

对于自然感知类问题,例如视觉、听觉等,机器学习的表现暂时还不及人类。但是在很多其它方面,机器学习模型的表现已经超过人类了,包括:

  • 在线广告(计算广告)
  • 商品推荐
  • 物流时间预估等
  • 贷款申请审批

机器学习模型超过人类水平是比较困难的。但是只要提供足够多的样本数据,训练复杂的神经网络,模型预测准确性会大大提高,很有可能接近甚至超过人类水平。而当算法模型的表现超过人类水平时,很难再通过人的直觉来解决如何继续提高算法模型性能的问题

8.总结

改善你的模型表现 Improving Your Model Performance

提高机器学习模型性能主要要解决两个问题:avoidable bias和variance。训练误差与人类水平误差之间的差值反映的是avoidable bias,验证误差与训练误差之间的差值反映的是variance。

基本假设

  • 模型在训练集上有很好的表现
  • 模型推广到开发和测试集啥也有很好的表现

提高模型性能总结

8.1 减少可避免偏差(avoidable bias)

当我们发现模型的主要问题是「可避免偏差」时,我们可以采用如下方式优化:

  • 训练更大的模型
  • 训练更长时间、训练更好的优化算法 (Momentum、RMSprop、Adam)
  • 寻找更好的网络架构 (RNN、CNN)、寻找更好的超参数

8.2 减少方差(variance)

当我们发现模型的主要问题是「方差」时,我们可以采用如下方式优化:

  • 收集更多的数据
  • 正则化 (L2、dropout、数据增强)
  • 寻找更好的网络架构 (RNN、CNN)、寻找更好的超参数

参考资料

ShowMeAI系列教程推荐

推荐文章

ShowMeAI用知识加速每一次技术成长

目录
相关文章
|
4天前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
|
4天前
|
数据采集 人工智能 前端开发
Playwright与AI智能体的网页爬虫创新应用
厌倦重复测试与低效爬虫?本课程带您掌握Playwright自动化工具,并融合AI大模型构建智能体,实现网页自主分析、决策与数据提取,完成从脚本执行到智能架构的能力跃升。
|
4天前
|
人工智能 运维 安全
聚焦 AI 应用基础设施,云栖大会 Serverless AI 全回顾
2025 年 9 月 26 日,为期三天的云栖大会在杭州云栖小镇圆满闭幕。随着大模型技术的飞速发展,我们正从云原生时代迈向一个全新的 AI 原生应用时代。为了解决企业在 AI 应用落地中面临的高成本、高复杂度和高风险等核心挑战,阿里云基于函数计算 FC 发布一系列重磅服务。本文将对云栖大会期间 Serverless+AI 基础设施相关内容进行全面总结。
|
6天前
|
设计模式 机器学习/深度学习 人工智能
AI-Native (AI原生)图解+秒懂: 什么是 AI-Native 应用(AI原生应用)?如何设计一个 AI原生应用?
AI-Native (AI原生)图解+秒懂: 什么是 AI-Native 应用(AI原生应用)?如何设计一个 AI原生应用?
|
6天前
|
人工智能 负载均衡 API
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
大家好,我是Immerse,独立开发者、AGI实践者。分享编程、AI干货、开源项目与个人思考。关注公众号“沉浸式趣谈”,获取独家内容。Vercel新推出的AI Gateway,统一多模型API,支持自动切换、负载均衡与零加价调用,让AI开发更高效稳定。一行代码切换模型,告别接口烦恼!
64 1
Vercel 发布 AI Gateway 神器!可一键访问数百个模型,助力零门槛开发 AI 应用
|
9天前
|
边缘计算 人工智能 算法
AI在智慧能源管理中的边缘计算应用
AI在智慧能源管理中的边缘计算应用
77 13
|
9天前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
机器学习/深度学习 人工智能 算法
|
9天前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
176 12
|
11天前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC技术深度解析:生成式AI的革命性突破与产业应用实战
蒋星熠Jaxonic,AI技术探索者,深耕生成式AI领域。本文系统解析AIGC核心技术,涵盖Transformer架构、主流模型对比与实战应用,分享文本生成、图像创作等场景的实践经验,展望技术趋势与产业前景,助力开发者构建完整认知体系,共赴AI原生时代。