机器学习是一种构建软件的方法:软件从示例或反馈中学习模式,并利用这些模式,对此前未见过的案例做出有用的预测、决策或输出。它是人工智能的一种方法,并不是所有人工智能的同义词。
重要的词不是模式,而是有用。数据集包含无数规律。机器学习系统需要一个明确的任务,以及一种判断哪些规律有助于完成该任务的方法。
基本概念
想象一下要构建一个垃圾邮件过滤器。
使用普通的基于规则的编程时,你可能会写出这样的指令:“如果一条消息包含这个短语且链接超过三个,就将其标记为垃圾邮件。”垃圾邮件发送者会改变措辞,正常消息有时也会符合这些规则,而且规则列表会越来越难以维护。
使用机器学习时,你需要提供经过审核的垃圾邮件和正常邮件示例。你还要选择一种模型,以及一个用于评估错误的分数。随后,学习算法会调整模型,使其输出更符合经过审核的示例。
最终结果仍然是软件。区别在于,它的部分行为来自哪里。程序员编写学习过程及其边界;训练过程决定这些边界内的许多设置。
因此,常见的“无需明确编程”这一说法可能会产生误导。系统确实经过编程,但它完整的决策规则并没有针对每个案例逐一写出。
“学习”意味着什么
识别机器学习问题的一种有效方法,是确定以下四个要素:
- 任务。系统应该做什么?例如,对电子邮件进行分类、估计配送时间、将相似客户分组,或选择一个行动。
- 经验。系统可以从哪些信息中学习?这些信息可能是带标签的示例、未标记的观察结果、过去的交互,或试错过程中获得的奖励。
- 成功标准。什么样的结果更好?它可能是预测误差、分组质量,或累计奖励。
- 具有可调整部分的模型。学习过程可以在多大范围的可能规则中进行搜索?
当经验以改善所选指标的方式改变这些可调整部分时,学习就发生了。经过训练得到的结果称为模型。使用模型处理新案例,与学习模型是两个不同的过程。
这种区分很重要。大多数已部署模型不会从每个新请求中自动学习。除非有人再次运行训练或更新过程,否则模型已经学习到的设置会保持不变。
机器学习如何运作
具体细节各不相同,但典型项目会遵循以下循环:
- 定义任务,以及现实世界中真正重要的结果。
- 收集并准备能够代表模型使用环境的示例。
- 选择输入的表示方式,以及允许使用的模型形式。
- 定义目标:一种为候选模型评分的数值方法。
- 运行学习算法,搜索能够取得更好目标分数的设置。
- 使用单独的数据进行选择,并使用未参与选择的测试集来估计模型在新案例上的表现。
- 部署训练好的模型,监控其行为,并在数据或要求发生变化时重新训练或替换它。
流程如下:
historical examples + a success measure
|
v
learning algorithm
adjusts model settings
|
v
trained model <----- held-out examples test generalization
|
new input
|
v
prediction, decision, or output学习算法和训练好的模型不是一回事。算法是拟合过程;模型是经过拟合、能够处理新输入的结果。
对于许多监督式模型,拟合过程就是反复纠正。模型会对训练示例进行预测。损失函数将错误转换为一个数值。优化方法会改变模型的设置,以减少该损失。重复这一过程可以提升训练表现。
较低的训练损失并不是最终目标。模型可能会记住训练示例的细节,却无法处理新示例。这称为过拟合。机器学习成功的标志是模型能够泛化:也就是在来自其预期处理环境、与任务相关的新案例上表现良好。
这就是为什么评估数据必须不参与训练。如果测试示例影响了特征选择、预处理或反复的模型选择,信息就会跨越这一边界发生泄漏。由此得到的分数可能看起来高于模型的真实表现。
示例:垃圾邮件过滤器
假设你有 1,000 封经过人工审核的电子邮件:其中 500 封是垃圾邮件,500 封是正常邮件。
在做出模型决策之前,你先拿出 200 封邮件。这些邮件构成测试集。剩余的 800 封作为训练材料。对于每条消息,系统可以表示其中包含的词语、链接数量,以及发件人是否曾经出现过等信号。
起初,模型的可调整设置没有什么用处。训练期间,学习器会预测每个训练示例的标签,衡量错误并调整设置。与许多垃圾邮件相关的短语可能会获得更大的影响力;一个已知发件人可能会使分数倾向于正常邮件。这些是学习到的关联,而不是普遍适用的规则。
训练和模型选择完成后,你在这 200 封未被使用过的邮件上对最终模型进行一次评估。假设结果如下:
- 正确拦截 90 封垃圾邮件
- 正确放行 94 封正常邮件
- 漏掉 10 封垃圾邮件
- 错误拦截 6 封正常邮件
它正确分类了 200 封邮件中的 184 封,因此在这个示例测试中的准确率为 92%。
但这个数字并不能结束分析。拦截 6 封正常邮件的代价可能高于漏掉 10 封垃圾邮件。你可以调整决策阈值,减少对正常邮件的误拦截,同时接受漏掉更多垃圾邮件。正确的权衡取决于任务,而不只是数据。
现在一封新邮件到达,并获得 0.82 的垃圾邮件分数。生成这个分数属于使用训练好的模型。模型不一定会从这封邮件中学习。如果人们之后审核了新消息,这些审核结果可能成为未来训练过程的经验。
92% 的结果也是有条件的。只有当测试集足够大,并且与未来的邮件相似时,它才能估计未来表现。如果语言、发件人或攻击方式发生变化,昨天的模型可能就不再那么有用。
模型获得学习信号的主要方式
机器学习的类别彼此有重叠,但以下三种广泛的学习设置很有用:
- 监督学习使用与期望答案配对的示例,例如标记为垃圾邮件或正常邮件的电子邮件。
- 无监督学习不会为每个示例提供答案,而是优化一个能够揭示结构的目标,例如将相似项目分组。
- 强化学习利用在环境中采取行动所获得的奖励或惩罚进行学习,通常一个行动会影响接下来发生的事情。
其他术语描述的是混合形式或不同维度。半监督学习结合带标签和不带标签的示例。自监督学习从数据本身构造训练目标。生成模型学习生成新样本,但它们可以采用不止一种学习设置进行训练。
这些类别是描述系统的工具,并不是一种所有来源都以完全相同方式使用的严格划分。
机器学习为何重要
当目标行为更容易通过示范或衡量来表达,而不是通过一整套完整规则来描述时,机器学习就很有用。
给语音示例贴标签,比写出将声波与词语联系起来的每一条规则更容易。记录行程时间,比手动编码交通、天气、道路施工和一天中时段之间的每种交互更容易。你可以收集欺诈交易和正常交易的示例,即使没有一份简短的清单能够清晰地区分二者。
学习并不会消除人类的工作,而是改变工作的内容。人们需要决定要预测什么、谁的数据得到代表、哪些错误最重要,以及输出是否足够安全可以使用。他们还要维护周边软件,并监控部署后的实际情况。
当普通规则清晰、稳定且容易验证时,机器学习并不适合。对于具有明确法律规则的税务计算,不应仅仅因为机器学习可用,就把它变成统计猜测。
常见误解
模型像人一样学习
“学习”描述的是由经验引起的、可衡量的变化。它并不意味着意识、理解能力或人类式的学习过程。模型可能会在某项狭窄任务上变得更加准确,却并不知道其输入意味着什么。
数据会教会模型一切
数据本身不会选择任务、目标、表示方式或可接受的错误。每个学习系统都包含关于它能够发现哪些模式、偏好哪些模式的假设。这些选择会塑造最终结果。
良好的训练表现意味着模型有效
模型可能会记住训练材料。在经过适当分离且具有代表性的数据上的表现,才是判断模型是否学到了可复用内容的更好依据。
更多数据总能解决问题
更多相关且测量良好的数据可能有所帮助。但更多重复、有偏差、标记错误、过时或无关的数据,也可能强化错误行为。除了数量之外,覆盖范围和质量同样重要。
预测能够解释因果关系
模型可能会发现两个信号同步变化,并利用其中一个预测另一个。这并不说明改变其中一个就会导致另一个发生变化。因果论断通常需要更强的假设或受控实验。
人工智能和机器学习可以互换
机器学习是构建人工智能系统的一种主要方式,但规则、搜索、规划和其他技术也能产生被称为人工智能的行为。现代产品可能将学习模型与大量非学习软件结合起来。
机器学习在人工智能系统中的位置
机器学习是生成或更新学习模型的过程。模型只是其中一个组件。应用程序还会在模型周围添加数据收集、界面、业务规则、安全检查、存储和监控等功能。
神经网络是一种可能的模型设计,并不是机器学习的另一种名称。训练是学习过程拟合模型的阶段。推理是训练好的模型处理新输入的阶段。将这些部分区分开来,可以更容易地评估产品声明。
下一步阅读
阅读什么是神经网络?,了解一种广泛使用的机器学习模型。然后阅读什么是人工智能训练?,了解拟合过程;再阅读什么是人工智能推理?,了解训练好的模型被使用时会发生什么。