1. 机器学习的基础知识

1.1 什么是机器学习?
在过去的几年里,你可能已经多次听到“机器学习”这个词,但它到底是什么? 和人工智能一样吗? 深度学习呢? 神经网络? 模型?

在深入研究工具、算法和可以构建的内容之前,让我们首先定义其中的一些术语,以便对机器学习是什么和不是什么达成共识。

人工智能、机器学习和深度学习都是术语。 然而,它们并不完全相同,它们更像是彼此的子集。


图1-1 此图表示人工智能、机器学习和深度学习之间的联系

人工智能是与计算机表达“智能”相关的所有事物的总称。这可以包括语音识别(对人类语音的理解)、自动驾驶汽车或战略游戏(计算机玩围棋或国际象棋等战略游戏的能力)。

机器学习代表了技术本身:所有实践和工具集,使计算机能够在没有明确编程的情况下在数据中找到模式。

这包括可用的不同类型的学习和算法,例如监督学习、朴素贝叶斯、K 最近邻等,我们将在接下来的几章中介绍。

该技术用于训练计算机根据对历史数据的深入理解做出自己的预测。

这意味着我们并没有告诉计算机确切地寻找什么;相反,我们为算法提供了大量以前收集的数据,让它们在这个数据集中找到模式和相关性,以便在给定新数据时得出未来的结论和概率。

例如,如果我们想使用机器学习来帮助我们根据一个人的 CT 扫描来计算他们患癌症的概率,我们将构建一个包含来自世界各地不同患者的数十万甚至数百万 CT 扫描的数据集.我们将在癌症患者的 CT 扫描和健康患者的扫描之间标记这些数据。然后,我们会将所有这些数据提供给机器学习算法,让它们在这些医学图像中找到模式,以尝试准确了解癌症扫描的样子。

然后,使用所有这些训练生成的模型,我们将能够在不属于训练数据的新扫描中使用它,并生成患者是否患有癌症的概率。

最后,深度学习是一种特定的工具或方法。它与您可能熟悉的另一个术语有关,称为人工神经网络。深度学习是机器学习的一个子集,它使用受大脑结构和功能启发的算法。

机器学习中的神经网络概念并不新鲜,但深度学习一词是最近出现的。

从本质上讲,这种方法允许训练大型神经网络,目的是在机器学习和人工智能方面取得革命性的进步。

深度学习在过去几年取得了飞速发展,这主要归功于计算能力的进步和我们现在收集的数据量。

与其他机器学习算法相比,深度学习算法的性能随着我们提供给它们的数据量的增加而不断提高,这使得它们在其他算法停滞不前的情况下更具可扩展性。

Andrew Ng 在 ExtractConf 2015 上发表的题为“数据科学家应该了解深度学习的内容”的演讲中,可以在这张幻灯片中找到对此的表示。


图 1-2 这张幻灯片展示了深度学习与其他机器学习算法相比的规模

正如您在上图中所看到的,深度学习算法的主要区别特征是它们能够用更多数据扩展和提高性能。

术语“深度”学习通常是指神经网络中使用的层数。如果现在这不完全合理,我们将在本书稍后部分介绍层的概念。

现在我们对这些术语之间的区别有了更多的了解,本书将主要关注机器学习,即技术。当我们研究不同的技术时,我们将深入研究深度学习,但我们也会涉及该技术的更广泛方面。

我们定义了不同的名称,有时可以互换用于谈论计算机表达的智能,但其他重要的习语如“神经网络”、“算法”和“模型”呢?

我们可能会在本书中提及它们,所以让我们用接下来的几段来定义它们。

让我们从算法开始,因为这是您可能最熟悉的算法,因为它已经在传统编程中使用了。

算法可以定义为解决特定问题或执行计算的一组规则或指令。

在软件工程中,您可能听说过或使用过的算法示例包括快速排序算法、Dijkstra 算法、二分搜索等。每个算法都是为了解决特定问题而创建的。

当谈到机器学习算法时,它们解决不同类型的问题,但概念是相同的;每种算法,无论是支持向量机 (SVM) 还是长短期记忆 (LSTM) 算法,都只是解决特定问题的数学函数。

神经网络是一组旨在模仿大脑工作方式的深度学习算法。

与大脑由连接神经元的巨大网络组成的方式相同,神经网络由称为人工神经元的互连节点层组成。

表示这些网络的可视化方式可能如下图所示。


图1-3

在神经网络中,通常有三个主要部分,一个输入层,表示您要为其生成预测的输入数据(例如,您要对其应用对象检测的图像,您要获取其情感的一段文本)等),一定数量的隐藏层,以及代表您的预测的输出层。

这是对神经网络如何工作的非常高级的解释,但要理解的最重要的部分是它们由大量互连的节点组成,按层组织,在训练过程中是否被激活取决于前一层神经元产生的结果,以类似的方式,大脑中的不同神经元在给定特定输入时会激发。

最后,模型。在机器学习中,模型代表训练课程的输出。当训练过程发生时,算法正在“学习”从它们在数据中发现的模式中得出结论;一旦完成训练步骤,输出就是一个模型。

模型是数学函数,可以将新输入作为参数并生成预测作为输出。

例如,图像分类模型已经用数以千计的标记图像进行训练,以识别数据中的模式并预测某些实体(例如猫、狗、汽车、人等)的存在。在新应用程序中使用图像分类模型时,您将能够向它提供一张可能不属于训练数据集的新图像,并让它生成对这张图像中它从未“见过”的内容的预测”之前基于从培训过程中学到的知识。

在训练过程结束时,您通常使用不属于训练数据集的新输入来测试模型,以测试生成的预测的有效性。

现在我们已经定义了一些您在深入研究机器学习时会遇到的重要术语,我认为快速了解机器学习不是什么很重要。

希望最后几段更清楚地表明,如果不提供一些预先收集的数据,机器学习就无法生成预测。

就像我们人类无法识别我们从未接触过的新对象或实体一样,算法也需要获得某种信息才能识别新输入。

例如,当我第一次听说 3D 打印机时,我很难想象它是什么。当我终于看到一个物体并与之互动时,我了解了物体是什么,并能够识别未来的物体。

大脑做这件事的速度非常快,但算法需要更多的数据来训练,然后才能理解物体是什么。

因为算法基本上是数学函数,所以重要的是要对您可以阅读的有关未来 AI 演变的内容持保留态度。

尽其所能,人工智能系统仍然需要根据我们之前必须收集的大量数据进行训练。因此,我相信机器学习应用的机会在于增强人类而不是取代人类。

一个例子是在医疗保健领域。我并不特别相信人工智能系统会取代医生,但我们已经看到机器学习如何通过能够处理大量医学图像并在 CT 扫描和 MRI 中识别和诊断疾病来帮助他们,有时甚至具有更高的准确度比医疗保健专业人员。

通过以这种方式依赖机器学习模型,我们可以希望更快地诊断和帮助人们。

同样重要的是要记住,计算机并没有真正了解它们正在处理的信息的上下文。从社会角度来看,我们需要解决的某些问题非常复杂,可能不应该仅使用机器学习来解决。在本书末尾,我们将更多地介绍道德和人工智能的主题。

1.2 机器学习的类型

使用机器学习解决的问题通常属于以下三个主要类别之一:监督学习、无监督学习和强化学习。

您可能还听说过半监督学习,但本书不会涵盖它。

了解您要解决的问题类型很重要,因为这将决定您要使用哪种算法、您将如何准备数据以及您将获得什么样的输出。

首先,让我们从最流行的监督学习开始。

1.2.1 监督学习
监督学习是使用特征和标签在数据中发现模式的能力。

在这里,我们刚刚介绍了两个新的数据相关术语,我们需要在继续之前定义。

使用数据集时,特征代表每个条目的特征,标签是您定义这些条目的方式。让我们用一个例子来实践一下。

假设您想出售您的房子,但不确定哪个价格在市场上最具竞争力,但您可以访问包含您所居住城市中所有房屋及其价格信息的大型数据集。

在这种情况下,特征将是每栋房屋的详细信息(卧室、浴室、楼层、房屋类型、是否有阳台、花园等),标签将是它们的价格。

它可能看起来像这样。


房屋价格数据表

一个真实的数据集会有更多的条目,会收集更多的特征,但这只是说明特征和标签概念的一个例子。

使用这些标记数据,我们可以使用机器学习来预测您的房屋应该以何种价格投放市场。

例如,根据前面的数据,如果您的房子有 1 间卧室、1 间浴室、没有阳台但有一个花园,那么其价格将比 1,000,000 美元更接近 750,000 美元左右。

在这个简单的例子中,我们可以通过查看数据手动完成,但在现实生活中,数据量会大得多,而使用机器学习将能够比人类更快地完成此计算。

监督学习问题的其他一些示例包括预测电子邮件是否为垃圾邮件、根据之前的比赛数据预测运动队获胜的概率、预测保险索赔是欺诈的概率。

总之,监督学习是基于标记数据创建预测。

1.2.2 无监督学习
另一种常见的学习类型称为无监督学习。与监督学习相反,无监督学习是基于未标记数据创建预测。这意味着我们只依赖于特征集。

如果我们考虑一下我们之前的房屋数据集,这意味着我们将删除“价格”列,最终只会得到关于每栋房屋特征的数据。

如果我们重复使用想要预测我们应该出售的房子的价格的场景,您可能会想,如果我们的数据没有标记(不包含任何价格),我们如何预测这个价格?

这就是思考您试图解决的问题并关注您拥有的数据的重要性的地方。

通过无监督学习,我们不是试图预测单一结果或回答特定问题,而是要确定趋势。

在我们的房子问题中,我们的问题是“我的房子能卖多少钱?”我们期望一个特定的价格作为结果。然而,正如本书前面提到的,如果机器学习算法在训练期间提供的数据集不包含任何价格,则它无法真正预测价格。

因此,这不是我们使用无监督学习的情况。

由于无监督学习是关于识别趋势并将数据分组,因此可能属于该领域的问题的一个很好的例子是预测客户行为。

对于这类问题,我们不是试图用特定的答案来回答问题;相反,我们试图将数据分类为不同的类别,以便我们可以创建具有相似特征的实体集群。

使用我们预测客户行为的例子,通过收集每个客户的数据,我们可以使用机器学习来找到客户之间的行为相关性,并找到有助于广告等应用的购买模式。

收集和使用有关您购物的地点、时间、每周次数、购买的商品等的数据,我们可以得出关于您的性别、年龄、社会经济背景等的结论,然后可以用于预测根据您所属的集群,您可能会购买什么。

如果您接触过 Spotify 上的音乐推荐或亚马逊上的产品推荐,您可能熟悉此类预测的实际应用。

公司会根据您的收听和购买习惯收集数据并使用机器学习将客户分组,并根据喜欢您的其他人听过的内容推荐您可能喜欢的歌曲或产品。
1.2.3 强化学习
第三种类型的学习称为强化学习。如果你正在阅读这本书,你可能只是开始接触机器学习,所以一开始你可能不会使用它。

强化学习主要用于自动驾驶汽车、AI 玩家游戏等应用,其中结果涉及更多行为或一组动作。

它依赖于奖励和惩罚的概念以及“代理”和“环境”之间的关系。

我们可以想象一个 Pong 游戏的场景,其中环境是游戏,代理是玩家。玩家的动作会改变游戏的状态。改变桨的位置会影响球的去向并最终导致玩家输赢。

当一系列动作导致玩家获胜时,系统会获得某种奖励,以表明这组特定的交互导致实现了训练过程的目标,从而创建了一个可以自己赢得游戏的 AI 玩家。

然后训练过程继续进行,迭代不同的交互集,获胜时获得奖励(+1 分),失败时获得惩罚(-1 分),并进行自我纠正以了解如何在与另一名玩家的比赛中获胜时间。

这种类型的学习不依赖于用于提供算法的预先存在的数据集。

相反,它使用一组目标和规则(例如,桨只能上下移动,目标是战胜其他玩家等)来自行学习正确的行为以优化其实现目标的机会目标。

强化学习让系统探索环境并做出自己的决定。

这种类型的学习通常需要一个非常长的训练过程,涉及大量的步骤。问题之一在于,当因输掉一场比赛而受到处罚时,系统假设该回合中采取的整个动作序列导致它输了。因此,它将避免再次执行所有这些步骤,而不是确定操作序列中的哪些步骤导致失败。

1.2.4 半监督学习
最后,让我们简单地谈谈半监督学习。

半监督学习介于监督学习和无监督学习之间。如前几页所述,监督学习处理标记数据,而无监督学习使用未标记数据。

有时,当使用未标记数据的大型数据集时,我们可以继续标记其中的一个子集并使用半监督学习来执行所谓的伪标记。

这意味着我们将手动标记我们数据集的一部分,让算法标记其余部分,最终得到一个完全标记的集合。

例如,如果我们收集了数十万张尚未标记的猫狗图像,我们可以自己标记其中的一部分并将其提供给半监督学习算法,该算法将在这些图像中找到模式图像,并将能够将未标记数据集的其余部分作为输入,并将标签“猫”或“狗”附加到每个新图像上,从而对所有数据进行标记。

这种技术使我们能够比手动生成标记数据集快得多,因此我们可以继续对其使用监督学习。

了解您的问题属于哪种学习类型通常是第一步。

现在我们已经介绍了主要算法,让我们来看看一些最知名的算法。
1.3 算法
与标准编程一样,机器学习使用算法来帮助解决问题。

但是,在能够使用它们之前了解所有算法的实现并不是必不可少的。最重要的是了解它们属于哪种学习类型以及它们最有效的数据类型。

如果将其与 Web 编程进行比较,则有许多不同的 JavaScript 框架可用,并且您不一定需要了解它们的源代码才能使用它们构建应用程序。但是,您需要知道的是它们是否支持您需要的功能。

在机器学习的背景下,一些算法非常擅长处理图像数据,而另一些算法则更擅长处理文本数据。

让我们深入了解其中的一些。

1.3.1 朴素贝叶斯

朴素贝叶斯算法是一种监督学习分类算法。

它根据各种属性和先验知识预测不同类别的概率。

它主要用于文本分类和多类问题。它被认为是高度可扩展的,并且比其他算法需要更少的训练数据。

可以用朴素贝叶斯解决的问题的一个实际例子是拍摄电视剧。

除非所有的情节都发生在室内,否则节目的制作会受到天气、湿度、温度、风、季节等环境因素的影响。

由于电视节目的某些部分不是按顺序拍摄的,我们可以使用机器学习来帮助我们根据某些场景的要求,找到该节目某些部分应该拍摄的最佳日子。

收集天气属性数据集以及是否拍摄室外场景,我们将能够预测未来一天能够拍摄新场景的概率。

该算法被称为“朴素”,因为它假设数据集中的所有变量彼此不相关。

例如,下雨天不一定也有风,或者高湿度不一定与高温相关。

1.3.2 K-最近邻

另一种流行的算法称为 K 近邻。

该算法是一种分类算法,假设相似的事物彼此靠近,因此彼此靠近。

说明这一点的一个好方法是使用示例图。 在处理机器学习问题时,您可以像这样可视化数据。



在前面的可视化中,我们可以看到绘制的数据最终创建了某种有组织的集群。相似的数据点彼此靠近。

K 近邻算法 (KNN) 基于这种相似性思想来对新数据进行分类。

使用此算法时,我们需要为“K”定义一个值,该值将表示我们将考虑的最近数据点(邻居)的数量,以帮助我们对新条目进行分类。

例如,如果我们选择值 K = 10,当我们想要预测新条目的类别时,我们会查看 10 个最近的邻居及其类别。与我们的新数据点相邻的类别数量最多的类别是预测为正确类别的类别。

这方面的一个实际示例是预测客户行为或购买某些商品的可能性。

连锁超市可以访问人们购买的数据,并可以使用无监督学习根据顾客的购买习惯将顾客分组。

集群的示例可以是单身客户与有家庭的客户,或者属于特定年龄段(年轻与年老)的客户。

考虑到人们通常与同一集群中的人有相似的购买习惯,使用 K 近邻算法将有助于预测人们可能购买的产品类型并将此信息用于广告。

1.3.3 卷积神经网络

卷积神经网络,也称为 ConvNet 或 CNN,是一种在图像分类方面表现非常出色的算法。 可用于物体检测、人脸识别等问题。

与人类不同,计算机将图像处理为像素数组,其长度等于高度 * 宽度 * 尺寸。 16x16 像素的 RGB 图像将被解释为 16163 的矩阵,因此是一个包含 768 个值的数组。

使用 CNN 解决问题的一个经典示例是使用手写数字的 MNIST 数据集。



上图说明了卷积神经网络如何预测输入图像中手写的数字。

它首先将图像转换为 2352 个值 (28283) 的数组,以将 3D 输入转换为 1D 输入。然后它将数据运行到神经网络的不同层和过滤器中,最终得到 10 个选项的输出层,因为要预测的数字将在 0 到 9 之间。

预测的输出将是输出层每个条目的概率,具有最高概率的条目将是正确的条目。

如果您尝试解决的问题涉及图像数据集,您可能想尝试使用 CNN 算法。

这三种算法属于不同的类别。朴素贝叶斯属于贝叶斯算法,K-最近邻属于基于实例的算法,卷积神经网络 (CNN) 属于深度学习算法。

还有更多类别和算法需要探索;然而,涵盖所有这些并不是本书的目标。当您更深入地研究机器学习并构建自己的应用程序时,您绝对应该在实验时研究更多。问题的解决方案并不总是单一的,因此了解不同的算法将使您能够找到最适合您想要实现的目标的算法。

1.4 应用

本书的最后几页在试图用例子说明概念时提到了一些应用程序;然而,在各个领域还有更多的机器学习用例。

1.4.1 医疗保健

当我谈到如何使用系统在 CT 扫描中检测疾病时,介绍了在医疗保健中使用机器学习的一个例子。

除了通过图像分析进行诊断外,该领域的其他应用还包括治疗个性化和个人记录的“数据整理”。

临床数据并不总是数字化的,很多表格和处方仍然是手写的;如果它是数字化的,每个卫生系统都会定制他们的电子健康记录 (EHR),使在一家医院收集的数据与在其他医院收集的数据不同。

数据整理是捕获、组织和分类数据的概念。使用光学字符识别 (OCR),系统可以扫描手写文档、解析单词并使用称为“实体提取”的技术来理解它们及其彼此的语义关系。

通过这种方式,医疗文件可以自动保存在数据库中,遵循相同的格式,这使得将来更容易搜索、分析或使用。

一些最大的科技公司将其研究中心的一部分专门用于开发该领域的创新解决方案。

例如,微软正在开展一些研究项目,如 InnerEye 项目,旨在将放射图像转化为测量设备。该项目的目标是使用机器学习算法自动检测 3D 放射图像中的肿瘤,并生成精确的手术计划和导航。

IBM 有一个名为 IBM Watson for Oncology 的项目,可帮助医生识别患者病历中的关键信息,以帮助探索个性化治疗方案。

Google 为快速医疗互操作性资源 (FHIR) 标准开发了一个协议缓冲区,旨在统一医疗数据的存储方式,因此开发人员可以构建可供任何医疗机构使用的机器学习系统。



前面的可视化表示患者健康记录数据的时间线。每个灰点是存储在开放数据标准 FHIR 中的一段数据。然后,深度学习模型可以分析这些数据以进行预测。

1.4.2 家庭自动化

您可能最熟悉的机器学习应用是家庭自动化。

您可能听说过,甚至可能拥有一些使用机器学习的物联网设备,例如 Amazon Alexa 或 Google Home。

这些设备使用语音识别算法和自然语言处理 (NLP) 来识别您所说的词、分析意图并提供尽可能准确的响应。

值得一提的是,“连接”设备和“智能”设备之间存在差异。物联网可以定义为连接“事物”的网络,这意味着设备通常通过 Wi-Fi 或蓝牙相互连接。

但是,某些设备只需连接即可,例如飞利浦 Hue 灯泡,您可以通过手机远程控制它们。它不使用任何机器学习算法来产生任何输出;它只会打开和关闭或改变颜色。

另一方面,像 Nest 恒温器这样的设备将属于“智能设备”类别。它实现了更复杂的功能,因为它会随着时间的推移真正从您的行为中学习。当您在一段时间内(有时甚至在同一天)改变房屋的温度时,它会学习您的习惯并自动适应。

就像飞利浦 Hue 一样,它还可以让您使用手机从任何地方控制它,但额外的学习部分是在家庭自动化中使用机器学习的一个例子。

一些研究中心正致力于改进 Google Home 等设备,以从语音识别转向活动识别。

利用设备的麦克风,您可以使用机器学习算法和声音数据来预测用户当前正在做什么或他们在哪个房间。访问这些信息将使我们能够构建更加个性化的智能系统。你可以想象一下使用 Google Home 听菜谱,一步一步地跟随,当设备识别出你正在切东西或使用搅拌器等时,它能够根据声音中的模式自动暂停它正在接收的数据。



1.4.3 社会公益
人们越来越担心使用机器学习解决某些问题的后果,例如在司法系统中;然而,将其用于社会公益的潜力也很大。

无论是为了动物保护还是为了防止森林砍伐,机器学习在这个领域的应用都非常令人兴奋。

一些项目旨在保护濒临灭绝的物种,例如从不列颠哥伦比亚省到华盛顿州的萨利什海的虎鲸(也称为逆戟鲸)。只剩下大约 73 只,谷歌与加拿大渔业和海洋局 (DFO) 以及 Rainforest Connection 合作,使用深度神经网络跟踪和监控逆戟鲸的行为。

教机器学习模型识别逆戟鲸的声音,然后它可以检测动物的存在并实时提醒专家。例如,这种类型的系统可以帮助监测动物的健康状况并在发生石油泄漏时保护它们。

Rainforest Connection 的另一个项目旨在使用机器学习和二手手机防止非法砍伐森林。

这些设备全天 24 小时监控森林的声音,将所有音频数据发送到云端,并使用 TensorFlow 对其进行实时分析,以识别链锯、伐木卡车和所有非法活动的声音,以提醒当地人。



还有更多有趣的项目专注于利用机器学习的可能性来帮助社会事业。尽管这不是本书的重点,但如果您想为之做出贡献,我鼓励您做进一步的研究。

1.4.4 艺术

当想要更多地了解机器学习时,艺术可能不是您的首要考虑;然而,我真的认为它的重要性在技术领域被严重低估了。

艺术经常比任何其他领域更快地尝试最新的技术创新。

监控机器学习如何以创造性的方式使用可以让我们了解技术可以走多远。

不仅让自己接触艺术家的作品很重要,而且我还建议您尝试自己构建创意应用程序。

花一些时间以创造性的方式为您的项目实施某种技术,这将使您有机会探索您以前可能从未想过的工具部分。



创造力可以帮助您识别您正在使用的工具的新用例、机会和限制。

尤其是在像机器学习这样的领域,很多事情仍然是未知的,因此提出可能的新想法的潜力巨大。

以创造性方式使用机器学习的一些例子出现在 Memo Akten 等艺术家的作品中。在他的项目“Learning to See”中,他使用深度神经网络和实时摄像机输入,试图在它之前看到的背景下理解它所看到的。

已经用海洋图像训练了一个模型。它从摄像头馈送(左侧)中获得新输入,对其进行分析,并尝试根据其馈送的训练数据理解其含义。结果是它“看到”的东西,即模型如何在它所知道的上下文中理解新输入。

另一个例子是谷歌 Magenta 团队的工作,致力于构建可以自己生成音乐片段的机器学习模型。这样的工作可以彻底改变人类在音乐制作中使用技术的方式。

1.5 总结

在介绍了机器学习的一些一般理论概念之后,是时候开始深入研究一些更实用的内容,并讨论如何以前端开发人员的身份开始构建 AI 项目。

你可能感兴趣的:(1. 机器学习的基础知识)