MLOps实践:机器学习从开发到生产
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 ML涉及的概念

通常认为ML是计算机科学叠加数学学科的一个子领域,它关注的是建立一些有用的算法,关于它的起源可以追溯到20世纪50年代,当时一些研究人员开始探索计算机是否可以学习、思考和推理,并将ML定义为通过以下方式解决实际问题的过程。

● 将任务目标转化成一个统计模型。

● 通过某种方式从实际应用交互中收集数据,并根据模型目标进行一定的处理。

● 在数据集的基础上,通过算法训练这个统计模型,假定该统计模型用于以某种方式解决实际问题。

用一句话总结,ML是一门通过算法和统计模型从数据中学习知识的学科。为了叙述方便,本书中的“学习”和“机器学习”(即ML)可以互换使用。出于同样的原因,“模型”也指的是“统计模型”。其中,ML可以是监督的、半监督的、无监督的和强化的。

当我们遇到的问题可以用一套可管理的确定性规则来解决时,这类问题便不需要使用ML。所谓“可管理”是指有可以显式表达的规则,且随着数据的变化并不需要变更规则。那么问题来了,哪些任务可以且应该由ML来解决呢?在我们的实际业务中,首先考虑从具体的业务角度确定是否需要ML,然后努力寻找可能可以解决该类问题的ML方法并进行快速迭代。我们将在本节中介绍这个过程,首先介绍哪些任务能够通过ML解决,哪些ML方法适合哪些产品目标,以及如何处理数据需求。

在ML的工作模式里,一切皆是概率,它在不需要人类给予手把手指导的情况下处理任务,这意味着ML可以比人类专家更适合处理一些复杂任务,比如将数百万篇文章推荐给数千万人,从实操角度,我们可以通过以下两个步骤来实现上述任务。

(1)将业务目标框定在一个ML范式中。

(2)评估该ML任务的可行性,根据评估结果,重新调整ML框架和算法,直到获取满意的结果为止。

ML中有很多常用模型,我们在此不对所有模型进行概述。为了界定不同类别模型及判断适用的实际问题,我们提出了一个简单的模型分类判别作为选择处理特定ML问题的方法指南。ML可以根据是否需要标签来分类,标签指的是可以收集到的数据中存在的一个期望输出,从这个维度出发,我们可以把ML划分为监督学习和无监督学习。监督学习从包含输入及标签的数据集中学习由输入到标签的映射关系;相对应地,无监督学习则不需要标签;弱监督学习使用的数据集中只有部分数据集含有标签。对于大多数应用来说,监督学习由于可以获取到实际发生的标签,使得其预测性能更容易验证。具体地,需要先确定业务系统可以产生哪些数据,目标输出是什么,然后界定哪些模型适合加工这类输入和输出,这将有助于大大缩小检索ML方法的范围。

1.1.1 监督学习

在监督学习中,数据科学家建模时使用的主要“素材”是一组含有标签的实例{(x1y1),(x2y2),…,(xNyN)}。N个实例中的每个元素xi被称为一个特征向量。在计算机科学中,向量是一个一维数组。一维数组又是一个有序的、有索引的值序列。假设每个特征向量的长度为D,即向量的维度,而yi表示上面说的输出标签。

每个特征向量都是向量,长度(维度)为D的特征向量中从1到D的每个维度j都包含一个值,我们将每个这样的值称为一个特征,并记为x(j)。例如,如果我们收集的数据中x代表特征向量(假设收集的是某网站上用户的数据),特征向量的第一个维度x(1)可以是以cm为单位的身高信息,特征向量的第二个维度x(2)可以是以kg为单位的体重信息,特征向量的第三个维度x(3)可以是性别信息,以此类推。需要注意的是,对于数据集中的所有实例,特征向量中位置j的特征对应的类型是相同的。这意味着,如果第i个实例xi的第二个维度是以kg为单位的体重特征,则对于1到N个实例中的任意一个实例xk的第二个维度也是以kg为单位的体重特征。

在监督学习中,预测输出标签为有限的离散值的问题叫作分类;而预测输出标签为连续实数的问题叫作回归。其中,由监督学习预测的标签值又被称为目标。在分类中,学习算法寻找的是一条线(或者更一般的说法,是寻找一个超平面),将不同类的实例彼此分开。在回归中,学习算法寻找的是一条线或一个拟合训练实例的超平面,如图1-1所示。

图1-1 分类和回归之间的区别

分类和回归相似的原因之一是,大多数分类模型并不是直接预测输入实例归属的类别,而是预测输入实例归属某一类别的概率值。然后,最终的分类则归结为根据所属概率值排序及根据相关阈值来决定如何将一个实例归入一个类别。因此,在一个高层次概念上,分类模型可以被看作对概率值的回归。例如,如果你的业务问题是用户流失预警,那么期望标签会有两个类:正常用户和流失用户。该示例通常被归为分类问题,而实际模型的处理上通常是预估给定用户及特征的流失概率。

模型的设计一般会将问题抽象映射到典型的数学函数,而在思考模型对输入特征的作用时,也可以方便地认为模型“看”到了输入中一些特征的值,并根据类似实例的经验来输出一个值。这个输出值是一个数字或一个类,与过去在特征值相似的实例中看到的标签“最相似”。统计上,我们把这种最相似称为极大似然,典型的如决策树和k-最近邻模型的工作原理也是如此。

1.1.2 无监督学习

在无监督学习中,数据集是一组未标记的实例{x1x2,…,xN}的集合。同样,xi是一个特征向量,无监督学习算法的目标是创建一个模型,将特征向量xi作为输入,并将其映射为一个向量或可用于解决实际问题的数值。例如,在聚类中,模型会返回数据集中每个特征向量的聚类ID。聚类对于在图像或文本文档等大型对象集合中寻找相似对象的群体或者从大量样本中寻找异常群体非常有用。

无监督学习还有一个典型的应用场景,即降维,该类方法通常处于一个ML项目的中间环节,比如当一个ML项目中涉及的特征维度非常大时,基于模型训练和生产应用性能的考虑,通常会在特征侧先进行降维,这个过程的结果会以一个子模型呈现,此时模型的输出是一个比输入维度更小的特征向量。该降维模型的输出会保留输入的关键信息,但维度会小很多。

1.1.3 半监督学习

在半监督学习中,数据集同时包含有标签和无标签的实例。通常情况下,未标注实例的数量远远多于已标注实例的数量。半监督学习的目标和监督学习的目标是一样的。半监督学习的目标是,通过使用若干未标注实例和已标注实例,找到(这个过程也叫拟合或训练)一个更佳的模型。

1.1.4 强化学习

强化学习(Reinforcement Learning,RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(Agent)在与环境交互的过程中通过学习策略达成回报最大化或实现特定目标的问题。

强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process,MDP)。按给定条件进行分类,强化学习可分为基于模型的强化学习(Model-Based RL)和无模型强化学习(Model-Free RL),以及主动强化学习(Active RL)和被动强化学习(Passive RL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(Value Function)算法两类。此外,深度学习模型可以在强化学习中使用,形成深度强化学习。

强化学习的目标是,学习一个最优策略,这个最优策略是一个函数(类似于监督学习算法中的目标函数),它将一个状态的特征向量作为输入,并输出一个该状态下执行的决策,该决策是连续的,目标是长期的,如游戏流程、机器人行为、资源管理或物流管理。

1.1.5 何时使用ML

近年来,随着ML技术和算力的发展,几乎可以肯定的是,无论在哪个领域,ML都在为现有业务带来新的机会,ML也正在被用于推动如下这些看似不相关领域的突破。

● 图像处理,如人脸识别、智能安检等。

● 语音处理,如自动字幕、智能外呼等。

● 文本处理,如翻译、智能客服等。

● 信息处理,如信息推荐、搜索引擎等。

这些领域中的每一个领域都可以扩展更多的子领域(例如,用相同的算法可以推荐更多类别的商品,提高消费者的体验)。更重要的是,不同领域的业务场景和数据虽有差异,但适用的算法是相通的,这意味着一种算法的进步可以促进许多领域的进步。这几乎适用于所有领域,包括医学、农业、营销、金融及安全等。随着人们对数据的关注度越来越高,ML模型也会进一步改进,从而形成良性循环。

看得出,ML正在逐渐成为解决业务问题的强大工具。然而,像任何工具一样,它应该在正确的场景下使用,而不是任何场景中的任何问题都用ML技术来解决。比如,当实际场景所涉及的问题可以通过确定性规则及预先设定的步骤来满足需求时,就不需要使用ML技术了。所以,在使用ML技术之前,需要首先对当前场景做一些初步的判断,下面给出几类ML技术可能适用的场景。

● 无法通过经验给出规则。在业务问题非常复杂的情况下,无法枚举所有的规则来解决它,而局部的解决方案是可行和有效的,这个时候可以尝试用ML来解决这个问题。举例来说,人类几乎不可能根据像素值编写出一套确定的规则来自动检测图像中的动物及其所属类别,但通过向卷积神经网络(CNN)输入数万张经过标注的不同动物的图像,就可以构建一个比人类能更准确地执行这种分类任务的模型。类似这种场景就比较适合使用ML技术。

● 已经拥有很多干净的、结构良好的数据,而且当前业务已依赖这些数据来做决策。对数据的依赖是一个很好的迹象,表明业务可以从ML技术中获得价值。例如,在信用卡授信业务中,数据分析师手动探索消费者的行为和违约数据,试图从数据中获取规律,然后对新的申请者进行授信。

● 目标问题不断发生变化。在某些场景下,目标值会随着时间的推移不断发生变化,必须定期更新代码来重构规则,这样会增加错误的概率,因为人类通常很难通过记忆将“历史”与“现在”充分结合,类似这种场景就比较适合使用ML技术。

● 无法扩展。对于互联网营销领域,在业务发展初期,业务人员可以根据商品属性及个人经验来定义业务规则,实现对符合条件的用户进行运营。但当业务不断发展壮大,积累了大量的用户群和互联网日志时,业务人员根据经验对当前的业务进行分析和运营,就会显得很吃力。类似这种场景就可以让机器去学习日志中的隐藏模式,对用户行为进行总结和推断。

进一步地,这里有一个判断ML适用场景的简单流程图,如图1-2所示,该流程图可以帮助从业者弄清楚当前遇到的业务场景是否属于ML的使用范畴。

图1-2 判断ML适用场景的流程图