



做出决策或预测是生活的核心需求。这本质上需要接收一组感官或知识输入并对其进行处理,以生成决策或估算。
例如,猫的大脑经常需要在以下几个选项中做出选择:逃离面前的物体、忽略面前的物体,或是靠近面前的物体并发出呼噜声。猫的大脑通过处理感官输入来做出决策,比如感知前面的物体硬度、锋利度等。这是一个分类问题的实例,其中输出结果是一组可能类别中的一个。
以下是生活中分类问题的一些其他例子:
·依据某股票的历史价格以及近期价格的变动,来决定买入、持有还是卖出该股票。
·物体识别(基于图像):
■这是一辆车还是一只长颈鹿?
■这是不是人类?
■这是无生命物体还是有生命物体?
■人脸识别——这是汤姆、迪克、玛丽、爱因斯坦还是梅西?
·视频中的动作识别:
■这个人是否在跑步?
■这个人是否在捡东西?
■这个人是否在进行暴力行为?
·电子文档中的自然语言处理(NLP):
■这篇新闻属于政治领域还是体育领域?
■这个查询短语与存档中的特定文章匹配吗?
有时,生活需要的并非分类,而是 定量 估计。例如,狮子的大脑需要通过处理猎物的速度和与猎物的距离等输入,来估计需要跳多远才能够捕获猎物。定量估计的另一个实例是根据房屋所有者的当前收入、邻近地区的犯罪统计数据等输入,来估计房屋的价格。执行这种定量估计的机器被称为 回归器 。
以下是日常生活中需要定量估计的一些其他例子:
·从图像中定位物体:识别物体位置的矩形边界
·根据历史股价和其他全球事件预测股价
·计算两个文件之间的相似度得分
有时,分类输出可以通过定量估计来得出。例如,之前提到的猫的大脑,它可以结合各种输入(如物体的硬度、锋利度等),生成一个定量的威胁评分。如果威胁评分很高,猫就会逃跑;如果威胁评分接近于零,猫就会忽略它面前的物体;如果威胁评分是负数,猫就会靠近物体并发出呼噜声。
图1.1展示了许多类似的例子。在每个例子中,机器,或者说大脑,将感知或知识的输入转化成决策或定量估计。机器学习的目标就是模仿这种机制。
请注意,要达到人脑的处理水平,机器学习还有很长的路要走。人脑能够同时处理成千上万个此类问题。而按目前的技术水平,机器学习很难创造出一台能做出各种决策和估计的通用机器。因此,我们的主要目标是制造出能够解决特定任务(如股票选择或汽车识别)的专用机器。此时,你可能会问:“将输入转换为输出——这不正是计算机在过去30多年里一直在做的事情吗?你说的这个范式转变是什么?”是的,这的确是一种范式转变,因为我们不再通过向机器提供一套具体的操作步骤(也就是程序)来将输入转换为输出。取而代之的是,我们会为特定问题开发一个数学模型。
让我们用一个例子来说明这个概念。为了简化描述,我们假设猫的大脑只需做出一个决策:是逃离面前的物体、忽略它还是靠近它并发出呼噜声。这个决策就是我们将要讨论的模型输出。在这个示例中,决策仅依赖于两个定量输入(也称为特征):所感知物体的硬度和锋利度(见图1.1)。我们不会提供任何逻辑指令,比如“如果锋利度大于某个阈值,则逃跑。”相反,我们会尝试确定一个参数化的函数,该函数接收输入,并且将其转换为所需的决策或估计。这类函数最简单的是输入的加权和,因此,可以将该任务表示为
y( 硬度 , 锋利度 )=w 0 × 硬度 +w 1 × 锋利度 +b
权重 w 0 、 w 1 和偏置 b 是这个函数的参数。输出 y 可以被视为威胁评分。如果威胁评分超出阈值,猫就会逃跑;如果接近0,猫就会忽略物体;如果为负,猫就会靠近物体并发出呼噜声。对于更复杂的任务,我们将使用更复杂的函数。
清注意,初始权重是未知的,我们需要通过一个被称为 模型训练 的过程来估计它们。
总的来说,通过机器学习来解决问题包括以下几个阶段:
·设计一个包含未知参数(权重)的参数化模型函数(例如,加权和)。这构成了模型的架构。选择合适的模型架构是机器学习工程师专业技能的体现。
·通过模型训练来估计权重。
图1.1 生活中的决策制定和定量估计的示例
·一旦估计出权重,我们就得到了一个完整的模型。这个模型能够处理之前未见过的输入,并生成输出。一个经过训练的模型对任意实际输入进行处理,并且生成输出的过程被称为 推理 。
在最受欢迎的机器学习类型
——监督学习
中,我们需要在开始训练之前准备好训练数据。训练数据包含一系列的输入项示例,每个输入项都有它对应的期望输出
。训练数据通常需要手动创建:人工检查每个输入项并生成期望的输出(也称为目标输出)。这通常是机器学习过程中最烦琐的部分。
例如,在我们假设的猫脑示例中,一些可能的训练数据项如下所示:
输入 :( 硬度 = 0.01 , 锋利度 = 0.02 ) →威胁评分 = -0.90→决策 : 靠近并发出呼噜声
输入 :( 硬度 = 0.50 , 锋利度 = 0.60 ) →威胁评分 = 0.01→决策 : 忽略
输入 :( 硬度 = 0.99 , 锋利度 = 0.97 ) →威胁评分 = 0.90→决策 : 逃跑
其中,我们假定硬度和锋利度的输入值范围为0到1。
那么,在训练过程中到底发生了什么?答案是我们通过迭代的方式来处理训练数据中的输入项。对于每个输入项,我们都知道它对应的期望输出(也称为目标输出)。因此,在每次迭代中,我们都会调整模型的权重值,以使模型函数在特定输入项上的输出更加接近目标输出。例如,假设在某次迭代中,权重值为 w 0 =20, w 1 =10以及 b =50,当输入数据为硬度=0.01,锋利度=0.02时,我们得到的输出(威胁评分)为 y =50.3,这与理想的输出 y =-0.9相差甚远。之后,我们调整权重:例如,减少偏置,使得权重值变为 w 0 =20, w 1 =10以及 b =40。此时,得到的威胁评分为 y =40.3,尽管仍未达到期望值,但已经比之前的值更为接近期望值。在我们对多个训练数据项重复这一过程后,权重值将逐渐趋近于理想值。请注意,这里暂不讨论如何对权重值进行调整:这需要更深层次的数学知识,我们将在后续内容中进行讨论。
如前所述,这种迭代式地调整权重的过程被称为训练或者学习。在学习初期,权重值是随机设置的,因此机器产生的输出常与所期望的输出不匹配。但随着时间的推移,经过多次迭代训练,机器将“学会”生成正确的输出。此时,就可以将训练好的模型部署到现实世界中了。给定任意输入,模型将(有望)在推理过程中产生接近期望输出的结果。
仔细想想,这或许正是人类大脑运作的方式。大脑包含了执行各种任务的数学模型的等效机制。这里的权重可以对应为大脑中不同神经元之间连接(突触)的强度。开始时,这些参数未经过调整,大脑不断犯错。例如,婴儿的大脑在辨识食物时常常出错——有孩子的家长可能对此深有体会。然而,每次经历都会让大脑调整这些参数(比如,吃下带有$标记的绿白相间的长方形纸片会引来责骂——以后不应该再吃它们等)。最终,大脑调整其参数以产生更好的表现。
有一个细节点需要我们注意:在训练过程中,仅在输入的训练数据上,机器会调整其参数以产生期望的结果。当然,它在训练过程中看到的只是所有可能输入的一小部分,我们并不会构建一个从已知输入到已知输出的查找表。因此,当这台机器被投入实际应用时,它主要处理的是此前从未见过的输入数据。那我们该如何保证它在未知数据上产生正确的结果呢?坦率地说,没有办法保证。但在大多数实际问题中,输入并不是真正随机的,它们会遵循一定的模式。因此,我们希望机器在训练过程中,能够通过学习足够多的内容来捕捉到这种模式。这样它在未知输入上的输出将更接近期望输出。训练数据的分布越接近真实数据的分布,这个目标就越可能达成。