机器学习的超能力是泛化。
我最近收到了一个问题:
“机器学习模型如何在它未见过的数据上做出准确的预测?”
答案是泛化,这也是我们在将机器学习应用于挑战性问题时所追求的能力。
在这篇文章中,你将了解泛化,机器学习的超能力
阅读本文后,你将了解:
- 即机器学习算法都在寻求学习从输入到输出的映射。
- 简单有效的机器学习模型更容易理解且更鲁棒。
- 机器学习只适用于需要泛化能力的问题。
让我们开始吧。

机器学习算法为何能在未见过的数据上奏效?
图片由 gnuckx 拍摄,部分权利保留。
机器学习算法做什么?
当我们拟合一个机器学习算法时,我们需要一个训练数据集。
该训练数据集包含一组输入模式和相应的输出模式。机器学习算法的目标是学习从输入模式到输出模式的合理映射近似。
以下是一些具体的例子:
- 在电子邮件垃圾邮件分类中,从电子邮件到是否为垃圾邮件的映射。
- 在房屋销售价格回归中,从房屋细节到房屋销售价格的映射。
- 在图片字幕生成中,从照片到描述照片的文本的映射。
这个列表还可以继续。
我们可以将机器学习算法学习的这种映射总结为一个函数 (f),它在给定输入 (X) 时预测输出 (y),或者说:
1 |
y = f(X) |
我们拟合机器学习算法的目标是获得我们所需的最佳 f()。
我们正在训练模型,以便在未来给出没有输出的输入的预测。在输出未知的情况下。这要求算法能够普遍地学习如何从领域中获取观测值并做出预测,而不仅仅是训练数据的具体细节。
这就是所谓的泛化。
泛化很难,但很强大
机器学习算法必须从训练数据泛化到该领域所有未见过观测值的整个领域,以便在使用模型时能够做出准确的预测。
这真的很难。
这种泛化方法要求我们用于训练模型的数据 (X) 是我们希望算法学习的映射中观测值的良好可靠的样本。质量越高,代表性越强,模型就越容易学习输入到输出的未知和潜在的“真实”映射。
泛化意味着从具体到广泛。
这是我们学习的方式,就像人类一样。
- 我们学习开车时,不会记住具体的道路;我们学会如何普遍地开车,以便能在任何道路或条件下行驶。
- 我们学习编程时,不会记住具体的计算机程序;我们学习如何以通用的方式使用代码解决问题,以应对可能出现的任何业务场景。
- 我们不会记住自然语言中特定的词序;我们学习单词的通用含义,并在需要时将它们组合成新的序列。
这个列表还可以继续。
机器学习算法是自动从历史观测中进行泛化的过程。而且它们可以比人类考虑更多的数据,并比人类考虑得更快地进行泛化。
正是这些自动化泛化机器运行的速度和规模,才使得机器学习领域如此令人兴奋。
我们偏爱更简单的模型
机器学习模型是称为机器学习算法的自动化泛化过程的结果。
可以说,模型是对训练输入到训练输出的映射的泛化。
对于特定问题,可能存在许多从输入到输出的映射方式,我们可以通过测试不同的算法、不同的算法配置、不同的训练数据等来探索这些方式。
我们事先无法知道哪种方法将产生最有技能的模型,因此我们必须测试一系列方法、配置和问题框架,以发现什么有效以及在选择最终模型供使用之前,该问题学习的局限性在哪里。
模型做出预测的技能决定了泛化的质量,并在模型选择过程中提供指导。
在数百万种可能的映射中,我们偏爱简单的映射而不是复杂的映射。换句话说,我们偏爱能够解释数据的最简单的假设。这是选择模型的一种方式,源自 奥卡姆剃刀。
更简单的模型通常(但不总是)更容易理解和维护,并且更鲁棒。在实践中,您可能希望选择性能最佳的简单模型。
机器学习并非万能
自动泛化学习的能力很强大,但并非适用于所有问题。
- 有些问题需要精确的解决方案,例如银行账户余额的算术运算。
- 有些问题可以通过泛化解决,但存在更简单的解决方案,例如计算正数的平方根。
- 有些问题看起来可以通过泛化解决,但数据中不存在可泛化的结构化底层关系,或者这种函数过于复杂,例如预测股票价格。
有效使用机器学习的关键在于了解它可以在哪里以及不能(或不应该)在哪里使用。
有时这是显而易见的,但通常并非如此。同样,您必须运用经验和实验来帮助辨别一个问题是否适合通过泛化来解决。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
总结
在这篇文章中,您了解了泛化,这是所有监督式机器学习算法的基础能力。
具体来说,你学到了:
- 即机器学习算法都在寻求学习从输入到输出的映射。
- 简单有效的机器学习模型更容易理解且更鲁棒。
- 机器学习只适用于需要泛化能力的问题。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
嗨,Jason,
又一篇精彩的文章。您会如何预测一组数字,或一对数字,例如体育比赛的结果?我在这里找不到示例。
此致,
Anton
像神经网络这样的模型可以为分类和回归输出多个值。
在时间序列中,您也有一些技巧。
https://machinelearning.org.cn/multi-step-time-series-forecasting/
Jason,您是传奇人物,我非常感谢您的所有帖子,非常简单,非常直观,非常有帮助,非常非常感谢!
Adam
谢谢 Adam!
Jason Brownlee,做得很好!!
我在此致以问候。我最喜欢以下几个部分:
1.) 您以提出问题开始文章?
2.) 我最喜欢的第二部分是您提到了读者在阅读完这篇文章后会得到什么。
3.) 您进入了“机器学习算法做什么”的部分,这相当合乎逻辑,并能激发读者的兴趣。
4.) 您将概念与现实生活(如人类)联系起来,这使得任何人都能更快地理解概念。
5.) 最后是建设性的结论。
我热衷于阅读,并且阅读了许多我喜欢的帖子。我在此分享另一个可以阅读的链接:http://bit.ly/2BTs7bv
致以最诚挚的问候
Sanpreet Singh
谢谢。
你好!
人类的信念能否被泛化?
祝好,
Aneta
那是什么意思?