机器学习算法(原书第2版)
上QQ阅读APP看书,第一时间看更新

1.1 简介——经典机器和自适应的机器

自古以来,人类通过使用工具和机器来简化工作、减少完成许多不同任务所需的工作量。虽然不知道任何物理规律,人们还是发明了杠杆(阿基米德首次正式描述)、仪器和更复杂的机器来执行更长和更复杂的程序。使用简单的技巧可以使锤击钉子变得更容易和更省力,同样,移动重的石头或木头时使用推车可以更加省力。但是,这两个例子有什么区别?可以看出,第二个例子使用了简单的机器,允许单人执行移动重物这样的综合任务,而不必考虑其中的步骤。基本的机械定律使得水平力能够有效地对抗重力,即使古人不了解这个原理,仅仅通过观察到的技巧(轮子)就可以改善他们的生活。

因此,一台机器如果不能进行实际应用,就不会有高效或新潮之说。当用户知道用特定的机器可以省力或全自动完成某项任务时,那么这个机器是有用的,而且会不断得到改进。在对机器改进的过程中,开始对齿轮、轮子或轴等部件附加一定的智能,因此出现了自动化的机器或程序,并使用能源来实现特定的目标。以风、水磨坊等这种基本工具为例,能够实现以最少的人力控制(与直接活动相比)来完成特定任务。

图1-1是一个通用的经典系统表示方法,通过接收输入元素、处理并产生输出的结果。

图1-1 经典/非自适应系统交互图

自从相关技术出现以来,人们一直试图将智能转移到自己的工具中。河水和风都表现出流动的特性,这种特性具有一定的能量并且是免费的,但机器需要具有一些意识来使用这些能量。车轮可以绕固定轴转动数百万次,但是需要风推动表面。水磨坊成功的关键是什么?答案似乎很明显,但对于没有任何相关知识或经验的人,可能是不自知地采用了一种全新的技术方法。如果对“智能”这个词定义的话,可以说是从工具开始,先过渡到简单的机器,然后再到更智能机器的过程。

进入现代社会后,对于机器不需要任何中间步骤(但不意味着不重要),也不需要改变使用的范围。计算机的应用正在变得越来越广泛、灵活和强大,同时网络使得人们能够以最小的代价共享软件应用程序和相关信息。我们现在使用的文字处理软件、电子邮件客户端、网络浏览器以及其他工具都体现了这种特性。不可否认的是,IT革命大大改变了人们的生活和工作,但是如果没有机器学习及其所有的应用程序,计算机将难以完成很多任务。仅仅是垃圾邮件过滤、自然语言处理、通过网络摄像头或智能手机进行视觉跟踪以及预测分析等应用就创造了人机互动并增强了人们的期望。在很多情况下,机器学习将电子工具转变为实际的认知延伸,通过填补人类的感觉、语言、推理、模型和人造工具之间的差距,正在改变人类与许多日常活动的交互方式。

图1-2是一个自适应系统的示意图。

图1-2 自适应系统交互图

以上自适应系统不是基于静态或永久结构的(指模型参数和架构),而是具有能够适应外部信号(数据集或实时输入)以及像人类一样使用不确定和零碎的信息来预测未来的能力。

在进行更具体的讨论之前,让我们简要地定义不同类型的可执行的系统。这些技术通常被构造为一系列特定操作,其目标是增加整体领域知识并回答特定问题,但是,在某些情况下,可以将流程限制为单个步骤以满足特定业务需求。我总是建议简要地考虑它们,因为许多特定的操作只有在需要某些条件时才有意义,清楚地理解问题及其影响是做出正确决策的最佳方式,同时也需要考虑未来可能的发展。

1.1.1 描述性分析

在尝试任何机器学习的解决方案之前,需要创建一个有关上下文的抽象描述。实现这一目标的最佳方法是定义一个数学模型,其优点是任何人都可以很快理解这个模型,特别是当人们具有一定基础知识的时候。然而,描述性分析的目标是找出所观察到的现象的准确描述并验证所有假设。让我们假设任务是优化大型商店的供应链。首先收集有关购买和销售的数据,在与经理讨论后,一般假设销售量在周末前一天增加。这意味着我们的模型应该基于一定的周期性。描述性分析的任务是验证该假设,并发现最初被忽略的所有其他特别的特征。

在这个阶段结束前应该能够发现,例如该时间序列(假设只考虑一个变量)是周期性的,并具有一定趋势,是否有可能找到一组标准规则等。更多的步骤(我更倾向于将这些视为一个整体)是能够定义一个将所有结果与精确的原因联系起来的诊断模型。这个过程似乎不是这样,但其目标非常接近于描述性分析。事实上,当描述一种现象时,自然会找到一个理性的理由来证明每一个特定的步骤。假设在观察了时间序列中的周期性之后,发现了一个不遵守这个规则的序列。诊断分析的目标是给出一个合适的答案(如商店周日开放)。这条新的信息丰富了我们的知识并使其专业化:现在,可以判断只有在休息一天时系列才是周期性的,因此可能不希望增加一个工作日之前的销售数据,显然这是一个很小的例子。由于许多机器学习模型具有特定的先决条件,因此描述性分析使我们能够立即了解模型是否表现不佳或者考虑到所有已知因素是否是最佳选择。在将要看到的所有示例中,将通过定义每个数据集的特征以及可以观察到的内容来执行简要的描述性分析。由于本书的目标是专注于自适应系统,因而没有足够的空间来进行完整的描述,但请读者想象新的可能的场景,在定义模型之前执行描述性分析。

1.1.2 预测性分析

机器学习的目标几乎与这个精确的过程有关。实际上,一旦定义了系统的模型,需要在给定一些初始条件的情况下推断其未来状态。该过程以发现现象之下的规则为基础,以及时推进这些规则(如在时间序列下)并观察下一步的结果。当然,考虑到所有可能的干扰因素,预测模型的目标是最小化实际值和预测值之间的误差。

以大型商店为例,一个好的模型应该能够提前预测当天的峰值和其他的常规的行为。此外,一旦定义和训练了预测模型,就可以用作决策过程。在这种情况下,将预测转化为建议方案。例如,自动驾驶汽车的物体检测器可以非常精确并且及时检测障碍物。但是,什么是为实现特定目标而应该执行的最佳操作?根据预测(位置、大小、速度等),模型必须能够选择最小化车辆损坏风险的动作并最大化安全行车的可能性。这是强化学习中的一项常见任务,当决策者需要在包含很多因素的环境中做出决策时也是非常有用的。因而最后得到的一个原始数据作为输入,而得到的单个结果作为后续模型的输入。回到原来的例子,商店经理对发现隐藏的规律并不感兴趣,他关注的是每天必须订购的商品数量。因此,第一步是预测性分析,第二步是指定性分析,需要考虑先前模型丢弃的许多因素,包括不同的供应商有长短不同的交货时间或供应商根据数量给予不同折扣等。

因此,经理可能将目标定义为最大化(或最小化)一个函数,同时模型必须找到最佳订货量以满足经理的要求,当然要求应该是可达到的,这也取决于对销售量的预测。在本书的其余部分,将讨论针对特定问题的许多解决方案,重点关注预测过程,但首先我们需要定义学习的含义以及为什么它在越来越多不同的商业环境中如此重要。