购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 基本的模型创建工作流

目前最广泛用于创建机器学习模型的基本过程(通常称为 监督式机器学习 )大概是这样的。

首先,可能会收集一大堆关于我们问题相关领域的历史数据。这可能是过去10年太平洋西北地区的所有大气传感器读数,或50万张图片的集合,或用户对在线 yarnit.ai 网站的浏览历史记录。我们从这些数据中提取一组 特征 ,或数据的特定、可量化的属性。特征以一种机器学习模型可以轻松识别的方式来表示数据的关键质量。如果是数值数据,这可能意味着缩小数值,以适用于特定的范围。对于结构化程度较低的数据,可能会设计特定的数值来识别特征并从原始数据中提取。例如,输入特征可能代表1000个传感器位置中每个位置的大气压力,或者一个给定的纱线球的具体颜色和尺寸值,或者对应于每个可能产品的一组特征,如果一个给定用户查看了该产品,则其值为 1 ;如果没有查看,则为 0

对于监督式机器学习,我们还需要某种 标签 ,显示已经发生的真实结果,我们希望自己的模型在未来看到类似的情况时会预测相同的结果。这可能是给定日期的天气结果,比如说,如果下雨了,就是 1 ;如果没有,就是 0 。这可能是一个评分,试图捕捉一个给定用户是否认为图像是美观的,例如,如果用户竖起一个“大拇指”,就是 1 ;如果没有,就是 0 。这也可能是一个数值,显示该给定纱线产品在给定月份的销售数量。这还可能是纱线的颜色和尺寸,等等。我们将为每个条目记录给定的标签,并称每个条目为 有标签样本

然后,我们将在这些历史数据上 训练 一个模型,使用选定的模型类型和选定的机器学习平台或服务。目前,许多人选择使用基于 深度学习 (也被称为 神经网络 )的模型类型,当给定非常大量的数据时(想想数百万或数十亿的有标签样本) [1] ,它特别有效。神经网络根据训练中使用的样本,在各层节点之间建立连接。

在其他情况下,像随机森林或梯度提升决策树这样的方法在遇到较少的例子时效果很好 。而无论是预测能力还是可维护性和可理解性,更复杂、更大的模型并不总是首选。那些不确定哪种模型的效果可能最好的人经常使用自动化机器学习(AutoML)这样的方法,它训练了许多模型版本,并试图自动挑选出最好的一个。即使没有AutoML,所有的模型也都有调整和设置( 超参数 ),需要通过一个称为 调参 的过程来为每项任务专门进行设置,这实际上只是试错的一个华丽名称。无论如何,在最后,我们的训练过程都将产生一个模型,它会接受新样本的特征输入并产生一个预测作为输出。模型的内部结构很可能被视为不透明的,无法直接检查,通常由数千、数百万甚至数十亿的,用于显示如何结合输入特征(并可能在许多进一步的中间阶段重新组合)以创建最终输出预测的学习 参数 组成。

从系统工程的角度来看,我们可能会注意到一些令人不安的事情。通常,没有人知道什么是“正确”的模型。我们不可能仅凭自己的知识就判定训练生成的模型是好是坏。我们能做的就是进行各种压力测试和验证,看看它的表现如何 ,并希望我们实行的压力测试和验证足以捕捉模型需要应对的各种情况。 3

最基本的验证方式是,从我们准备的训练数据中随机抽出一些数据,称之为 保留测试集 。我们不使用这些数据进行训练,而是等待训练完毕,使用这些数据对我们的模型进行压力测试,理由是由于模型在训练中从未见过这些被保留的数据,它可以很好地作为那种以前未见过的数据,我们希望其能做出有用的预测。因此,我们可以将这个测试集中的每个样本送入模型,并将预测与真实的结果标签进行比较,看看它的表现如何。最关键的是,这个验证数据确实是从训练中分离出来的,因为一个模型很容易出现 过拟合 ,这发生在模型完全记住了它的训练数据但不能很好地预测未见过的数据之时。

一旦我们对自己模型的验证感到满意,就是时候在整个生产系统中部署它了。这意味着要找到一种方法,在需要时为模型的预测提供服务。一种方法是预先计算所有可能输入的所有可能预测,然后将这些预测写入我们系统可以查询的缓存中。另一种常见的方法是创建一个来自生产系统的输入流,并将其转化为特征,以便在需要时将其送入我们的模型副本,然后将模型产生的预测结果送回系统中使用。这两个选项都可以在第8章得以理解。

如果从这里开始一切都完美地运作,我们就成功完成了。然而,世界充满了不完美,世界中的模型更是如此。在MLOps的世界里,即使是最小的不完美,也可能造成严重的问题,因此我们需要做好准备。让我们快速浏览一下其中一些可能引发问题的地方。 3FaXepaxllYrkdbQrN5pz9EosBhJQQBDpczsOGh4fW6ZfcVQD9rzoFvLUkNn1owG

点击中间区域
呼出菜单
上一章
目录
下一章
×