作为机器学习研究人员,我们几乎每天都会被问到这样一个问题:

“机器学习如何解决我的问题?”

在本书中,我们将通过实例来回答这个问题。我们不仅仅列举机器学习技术和概念,而是通过一系列案例研究,从问题陈述到工作解决方案的全过程来说明。在解决每个问题的过程中,我们会逐步解释所涉及的机器学习概念。我们展示的案例研究都是来自微软的真实例子,以及一个介绍核心概念的初始案例研究。我们还会探讨在每个案例研究中遇到的实际问题,以及它们是如何被发现、诊断和解决的。我们的目标不仅是解释机器学习方法是什么,还要说明如何创建、调试和改进它们来解决你的问题。

基于模型的方法如何提供帮助?

当试图用机器学习解决问题时,最根本的挑战是将机器学习的抽象数学与具体的现实世界问题领域联系起来。在本书中,我们采用了一种称为"基于模型的机器学习"的方法,它着重于理解这种联系。这种理解有助于开发有效的机器学习系统,解释它们的行为,并解决过程中出现的各种问题。

基于模型的机器学习的核心思想是,将问题领域的所有假设都以模型的形式明确表达出来。实际上,一个模型就是由这些假设组成的,以精确的数学形式表达。这些假设有效地构建了一个对世界的描述,然后可以用它来学习或推理。例如,在下一章中,我们将构建一个模型来帮助我们解决一个简单的谋杀之谜。该模型的假设包括嫌疑人名单、可能的凶器,以及不同嫌疑人对特定武器的偏好倾向。

模型与推理的关系图

图 0.1:在基于模型的机器学习视角中,通过组合模型和推理方法来创建定制算法。这里,模型中的彩色形状代表了该特定模型的假设。即使保持推理方法不变,改变假设也会产生不同的机器学习算法。

在基于模型的机器学习中,模型被用来创建一个定制的算法,以回答关于问题领域的特定问题,比如进行预测或执行推理。基于模型的机器学习几乎可以应用于任何问题,而且它的通用方法意味着你不需要学习大量的机器学习算法和技术。

模型与算法

让我们更仔细地看看模型和算法之间的关系。我们可以把机器学习算法想象成一个整体的黑盒,它接收数据并产生结果。算法必然要做出假设,因为正是这些假设使得一个特定的算法区别于其他算法。然而,如果只给出算法,这些假设就是隐含的和不透明的。

现在考虑基于模型的方法。模型包含了我们对问题领域所做的一系列假设。要从模型得到预测,我们需要利用数据来计算那些我们想要知道的变量的值。这个计算过程称为推理。有几种可用的推理技术,我们将在本书中讨论。模型和推理过程的结合共同定义了一个机器学习算法。

深度学习示例

近年来,深度学习已经成为机器学习的主导方法,以至于对许多人来说,深度学习就是机器学习。但鲜为人知的是,深度学习也是基于模型的机器学习的一个例子,其中使用的模型是神经网络。关于问题领域的假设被编码在神经网络的架构和神经元的激活函数的选择中。无论选择什么样的神经网络模型,都可以应用相同的推理方法。

深度学习示例图

图 0.2:在深度学习中,不同的神经网络模型对它们要用于的任务编码了不同的假设,这里用每个模型中的不同图标来说明。例如,用于物体识别的神经网络架构编码了一个假设:无论物体出现在图像中的什么位置,它们看起来都是相似的。尽管不同任务的神经网络模型不同,但可以应用相同的推理方法。这里,随机梯度下降(SGD)可以用来训练任何这些模型。由于模型相似且推理方法相同,深度学习可以快速应用到新的问题领域。

基于模型的机器学习工具

将算法分解为模型和单独的推理方法还有另一个强大的结果。只需给出模型的定义和推理方法的选择,就可以创建一个能够自动生成机器学习算法的软件框架。这使得应用开发人员可以专注于创建特定领域的模型,而不需要成为推理过程内部工作原理的专家。

在微软研究院,我们已经开发了这样一个软件框架超过十五年,叫做 Infer.NET。由于模型仅仅由一组假设组成,它可以用非常简洁的代码表达,这些代码相对容易理解和修改。相应的算法代码通常要复杂得多,但是可以自动生成。本书中的所有模型都是使用 Infer.NET 创建的,相应的模型源代码可以在线获取。

概念回顾

  • 基于模型的机器学习:一种机器学习方法,其中所有关于问题域的假设都以模型的形式明确表达。这个模型然后用于创建特定于模型的算法来学习或推理问题域。这个过程的算法创建部分可以自动化。

  • 模型:关于问题域的一组假设,以精确的数学形式表达,用于创建机器学习解决方案。

  • 算法:用于解决问题或执行计算的一系列指令。通常将算法应用于输入数据以产生输出。

  • 推理:使用机器学习模型来执行给定数据任务的过程。例如,可以对模型应用推理来进行预测或从数据中学习或推理。

  • 深度学习:一种使用多层神经网络模型的机器学习方法。

  • 随机梯度下降:一种用于训练神经网络模型的常见推理方法。

参考文献

  1. [Krizhevsky et al., 2012] Krizhevsky, A., Sutskever, I., and Hinton, G. (2012). ImageNet Classification with Deep Convolutional Neural Networks.
  2. [Sutskever et al., 2014] Sequence to Sequence Learning with Neural Networks.
  3. [Minka et al., 2014] Infer.NET 2.6, Microsoft Research Cambridge.
  4. [Abadi et al., 2016] TensorFlow: A system for large-scale machine learning.
  5. [Paszke et al., 2019] PyTorch: An Imperative Style, High-Performance Deep Learning Library.

下一章:谋杀之谜