机器学习系统性能不尽人意?吴恩达教你如何选择改进策略

选自towardsdatascience

作者:Kritika Jalan

机器之心编译

参与:陈韵竹、路雪

搭建机器学习系统好几周,性能却不尽如人意?Kritika Jalan 近日在 towardsdatascience 上发表文章,总结她从吴恩达的 Coursera 课程《Structuring Machine Learning Projects》中学到的相关经验。机器之心对此进行了编译。

如何选择策略以改进算法表现

你已经花了好几个星期构建机器学习系统。然而,它的性能却不能令你满意。你想到了许多方法来提高算法性能,比如收集更多数据、添加更多隐藏单元、增加更多层、改变网络架构、更改基本算法等。但是,哪种方案会给系统带来最大改善呢?你要么就得把这些方法都尝试一遍,投入大量的时间找出适合的方法。或者,你其实可以利用吴恩达的经验和技巧。

Source (http://pixabay.com/):Pixabay

正交化

构建机器学习系统的挑战之一是你有太多事情可以尝试、有太多事情可以改变。比如,你可以调整很多超参数。了解调整哪个参数能获得什么效果,这种方法叫作正交化(orthogonalisation)。因为正交化是一种系统属性,它确保了修改各个超参数不会对算法的其它部分产生影响。因此正交化令独立性地验证超参数与算法性能变得更加简单,减少了测试与调整的时间。

在监督学习中,机器学习系统需要在以下四项任务中表现较好。每一项任务都可以进行一系列调整来提升系统表现。

  • 拟合训练集
  • 拟合开发集
  • 拟合测试集
  • 在现实世界中表现良好

假设你的算法在训练集上表现不佳,你希望能调节一个或多个设置,以确保算法可以更好地与训练集拟合。你所调节的设置可能包括训练一个更大的网络、切换到更好的优化算法如 Adam 优化算法等。相反,如果你的算法在开发集上表现不佳,你可以调节关于正则化的某些设置,以满足第二个标准。因此,清晰地了解你所能调节的设置将帮助更快地改善你的系统。

单一数值评价指标

为你的项目准备一个简单的实数指标作为评价指标,以便知道调节某个设置是否有助于算法的改进。在测试多个场景时,该指标能够帮助你快速选择最有效的算法。有时,你可能需要两个指标来评估算法,比如查准率(Precision)和召回率(Recall)。但是如果有两个指标,就很难选出哪个算法更好。

将评价指标合二为一

因此,与其使用两个指标(查准率和召回率)选出一个分类器,不如找一个能将两者结合起来的新评估指标。在机器学习文献中,结合查准率和召回率的标准方法是 F1 分数(F1 score)。实际上,你几乎不需要自己设计新的性能评估指标,因为根据你的系统要求,通常能在机器学习文献中找到一个合适的指标。

F1 分数的计算式。

满意度量和优化度量

在某些情况下,不是只有一两个指标,而是 n 个。假设需要你创建一个最高准确率的分类器,且有着最低的时间复杂度和空间复杂度。然后你创建了以下 4 种 分类器,你会选择其中的哪种呢?

在这种情况下,你可以选择一个度量作为优化度量(optimizing),其他 n-1 个作为满意度量(satisficing)。在这个例子中,我们可以最大化测试准确率(optimizing),也就是将其作为优化度量;同时保证运行时间(Runtime)少于 10 秒,内存(Memory)要求小于 10MB,也就是将这两者作为满意度量,达到阈值即可。这样,你就为团队设立了一个目标。

机器学习领域中,人人都知道吴恩达。即使大家了解他,也会知道他在 Coursera 上有一个 Deep Learning Specialization 系列课程,该课程可以帮助你入门人工智能领域。其中一门课是《Structuring Machine Learning Projects》,从中你可以了解到如何诊断机器学习系统中的错误,并了解如何优先考虑某些方向以减少这些错误。本文正是基于这个课程而写的。

训练集/开发集/测试集的分布

始终保证你的开发集和测试集来自同样的分布,且是从全体数据中随机获取的。例如,假设你正在制作一个猫类分类器,且你有来自美国、英国、南美、印度、中国和澳大利亚的数据。使用前三个区域的数据作为开发集、使用后三个区域的数据作为测试集的做法是不正确的。你应该打乱这些数据,并将它们随机放入两个集中。

选择一个开发/测试集以反映你期望得到的以及重要的数据。

更改开发集/测试集和评估指标

如果项目进展到一半时,你意识到选择了错误的开发集或错误的性能评估指标,请更正。毕竟,机器学习的成功取决于:

1. 清晰了解目标(选择正确的开发集和评估指标)

2. 努力达到目标(在这些指标上表现良好)

如果系统在你的指标和开发/测试集上的性能与在应用上的性能并不匹配,你应该改变他们。因为你没有正确的设置目标。

前面主要是了解机器学习算法的应用、据此收集相应的数据,并随机分成训练/开发/测试集。此外,选择单一的优化评估指标,并且通过调整设置来改善这个指标也是提高系统性能的关键点。后面一部分主要关注的是如何令机器学习模型达到人类级别的性能与避免高偏差,这些经验同样都是基于吴恩达在 Coursera 上的课程。

与人类性能的对比

近年来,越来越多的机器学习团队对比机器学习系统和人类的性能。其原因在于:

1. 由于深度学习的进步,算法的性能突然变好,在机器学习的多个应用领域中具备更强的可行性。

2. 尝试做人类也能做的事情时,设计和构建机器学习系统的工作流程会更加高效。

如果你一直训练算法,它的性能就会快速提升,直到超越人类。尽管它无法超越一些理论限制,如贝叶斯最优误差(理论上的最优误差)。换言之,任何函数中从 x 到 y 的映射都无法超越一定的准确率。

通常,人类和贝叶斯误差非常接近,尤其是自然感知问题,因此超越人类性能后,系统就没有了很大的提升空间,学习过程也会相对减缓。

只要你的算法性能不如人类,就可以遵循以下方法来提升性能:

  • 获取人类标注的数据
  • 获取手动误差分析见解,如理解为什么人类认为某项是对的
  • 更好的偏差/方差分析

避免高偏差

我们希望算法在训练集上能有出色的表现,但又不希望它拟合地太完美,出现过拟合现象。因为我们知道人类级别的性能是怎么样的,所以我们可以判断模型在训练集上的拟合情况是不是很好、太好或者不够好。如下对于分类任务来说:

通过将人类级别的性能作为贝叶斯误差的代理(对于图像识别),我们可以大致了解是否需要关注偏差与方差之间的均衡从而提升系统的性能。

若人类级别的性能和训练误差之间差距比较大,那么模型的偏差可能就比较大。若测试集误差与训练集误差间的差距比较大,那很可能方差就会比较高,且模型出现了过拟合现象。

如果高偏差问题大于高方差问题,那么我们需要注意避免高偏差。

在上图场景 A 中,算法在训练集上拟合地并不好,因为人类级别的性能要远比训练集上的误差低,所以这个问题就是模型的偏差太高。一般解决办法是采用更大规模的神经网络、使用更好的优化方法、训练更多的迭代数或干脆修正神经网络的架构。

在上图场景 B 中,算法需要降低高方差,因为它在训练集拟合的情况要远比在测试集拟合的情况好。一般的解决办法是使用正则化技术、使用更大的训练数据集或干脆选择稍微浅层的神经网络架构。

原文链接:https://towardsdatascience.com/how-to-improve-my-ml-algorithm-lessons-from-andrew-ngs-experience-i-551ca1a32634

本文分享自微信公众号 - 机器之心(almosthuman2014)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端桃园

知识体系解决迷茫的你

最近在星球里群里都有小伙伴说道自己对未来的路比较迷茫,一旦闲下来就不知道自己改干啥,今天我这篇文章就是让你觉得一天给你 25 个小时你都不够用,觉得睡觉都是浪费...

22340
来自专栏腾讯社交用户体验设计

ISUX Xcube智能一键生成H5

51420
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

30140
来自专栏钱塘大数据

理工男图解零维到十维空间,烧脑已过度,受不了啦!

让我们从一个点开始,和我们几何意义上的点一样,它没有大小、没有维度。它只是被想象出来的、作为标志一个位置的点。它什么也没有,空间、时间通通不存在,这就是零维度。

34430
来自专栏怀英的自我修炼

考研英语-1-导学

英二图表作文要重视。总体而言,英语一会比英语二难点。不过就写作而言,英语二会比英语一有难度,毕竟图表作文并不好写。

12110
来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.2K20
来自专栏微信公众号:小白课代表

不只是软件,在线也可以免费下载百度文库了。

不管是学生,还是职场员工,下载各种文档几乎是不可避免的,各种XXX.docx,XXX.pptx更是家常便饭,人们最常用的就是百度文库,豆丁文库,道客巴巴这些下载...

44730
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

18230
来自专栏腾讯高校合作

【倒计时7天】2018教育部-腾讯公司产学合作协同育人项目申请即将截止!

16020
来自专栏钱塘大数据

中国互联网协会发布:《2018中国互联网发展报告》

在2018中国互联网大会闭幕论坛上,中国互联网协会正式发布《中国互联网发展报告2018》(以下简称《报告》)。《中国互联网发展报告》是由中国互联网协会与中国互联...

13750

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励