机器学习 - 快速指南



机器学习 - 简介

如今的人工智能 (AI) 已经远远超越了区块链和量子计算的炒作。这是因为巨大的计算资源很容易为普通人所用。开发人员现在利用这一点来创建新的机器学习模型,并重新训练现有模型以获得更好的性能和结果。高性能计算 (HPC) 的易用性导致对拥有机器学习技能的 IT 专业人员的需求突然增加。

在本教程中,您将详细了解:

机器学习的核心是什么?

  • 机器学习有哪些不同类型?

  • 开发机器学习模型有哪些不同的算法?

  • 开发这些模型有哪些工具?

  • 编程语言选择有哪些?

  • 哪些平台支持机器学习应用程序的开发和部署?

  • 有哪些可用的 IDE(集成开发环境)?

  • 如何快速提升你在这个重要领域的技能?

机器学习 - 如今的 AI 能做什么?

当你在 Facebook 照片中标记面部时,背后运行的是 AI,它可以识别图片中的人脸。面部标记现在已在许多显示有人脸的图片的应用程序中普遍存在。为什么只有人脸?有许多应用程序可以检测物体,例如猫、狗、瓶子、汽车等。我们的道路上行驶着自动驾驶汽车,它们可以实时检测物体以操纵汽车。当您出行时,您会使用 Google 地图来了解实时的交通状况,并遵循 Google 在那时建议的最佳路线。这是另一种实时物体检测技术的实现。

让我们考虑一下我们通常在访问外国时使用的 Google 翻译应用程序的例子。您手机上的 Google 在线翻译应用程序可以帮助您与说您不懂的语言的当地人交流。

我们今天实际上使用了许多 AI 应用程序。事实上,我们每个人都在生活的许多方面使用 AI,甚至在我们不知情的情况下。如今的 AI 可以以极高的准确性和速度执行极其复杂的工作。让我们讨论一个复杂任务的例子,以了解您今天将为客户开发的 AI 应用程序中需要哪些功能。

示例

我们在日常通勤或城际旅行中,都会在城市中的任何地方旅行时使用 Google 地图。Google 地图应用程序会建议当时到达目的地的最快路线。当我们遵循这条路线时,我们观察到 Google 的建议几乎 100% 正确,我们节省了宝贵的旅行时间。

您可以想象开发这种应用程序所涉及的复杂性,因为到达目的地有多条路线,并且应用程序必须判断每条可能路线的交通状况,才能为您提供每条路线的行程时间估计。此外,请考虑 Google 地图覆盖全球的事实。毫无疑问,此类应用程序的幕后使用了大量的 AI 和机器学习技术。

考虑到对开发此类应用程序的持续需求,您现在就会理解为什么对拥有 AI 技能的 IT 专业人员的需求突然增加。

在下一章中,我们将学习开发 AI 程序需要什么。

机器学习 - 传统 AI

AI 的历程始于 20 世纪 50 年代,当时的计算能力只是如今的一小部分。AI 最初是通过机器进行预测,方式与统计学家使用计算器进行预测的方式相同。因此,最初的 AI 开发主要基于统计技术。

在本章中,让我们详细讨论这些统计技术。

统计技术

如今的 AI 应用程序的开发始于使用古老的传统统计技术。您肯定在学校里使用过直线插值来预测未来值。还有许多其他此类统计技术已成功地应用于开发所谓的 AI 程序。我们之所以说“所谓的”,是因为我们今天拥有的 AI 程序要复杂得多,并且使用的技术远远超出了早期 AI 程序使用的统计技术。

以下列出了一些在当时用于开发 AI 应用程序并且仍在实践中的统计技术的示例:

  • 回归
  • 分类
  • 聚类
  • 概率论
  • 决策树

这里我们只列出了一些入门 AI 的主要技术,足以让您开始学习 AI,而不会因为 AI 的广阔性而感到害怕。如果您基于有限的数据开发 AI 应用程序,则可以使用这些统计技术。

但是,如今数据丰富。对于我们拥有的海量数据,统计技术并没有太大帮助,因为它们本身也有一些局限性。因此,开发了更先进的方法,例如深度学习,以解决许多复杂的问题。

随着我们继续学习本教程,我们将了解什么是机器学习以及如何将其用于开发此类复杂的 AI 应用程序。

机器学习 - 什么是机器学习?

考虑下图,该图显示了房屋价格与其面积(平方英尺)的关系图。

House Prices Versus

在 XY 图上绘制各种数据点后,我们绘制一条最佳拟合线来预测任何其他房屋的价格,前提是知道其面积。您将向机器提供已知数据,并要求它找到最佳拟合线。一旦机器找到最佳拟合线,您将通过输入已知房屋面积(即上述曲线中的 Y 值)来测试其适用性。现在,机器将返回估计的 X 值,即房屋的预期价格。该图可以外推以找出面积为 3000 平方英尺或更大的房屋的价格。这在统计学中称为回归。特别是,这种回归称为线性回归,因为 X 和 Y 数据点之间的关系是线性的。

在许多情况下,X 和 Y 数据点之间的关系可能不是直线,而可能是具有复杂方程的曲线。您的任务现在是找出最佳拟合曲线,该曲线可以外推以预测未来值。下图显示了一个这样的应用程序图。

Predict Future Values

来源

https://upload.wikimedia.org/wikipedia/commons/c/c9/

您将使用统计优化技术来找出此处最佳拟合曲线的方程式。这就是机器学习的真正含义。您使用已知的优化技术来找到问题的最佳解决方案。

接下来,让我们看看机器学习的不同类别。

机器学习 - 类别

机器学习大致分为以下几类:

Categories Machine Learning

机器学习如上图所示从左到右发展。

  • 最初,研究人员从监督学习开始。这就是前面讨论的房屋价格预测的情况。

  • 接下来是无监督学习,机器在没有监督的情况下自主学习。

  • 科学家们进一步发现,当机器以预期的方式完成工作时给予奖励可能是个好主意,于是强化学习诞生了。

  • 很快,如今可用的数据变得如此庞大,以至于迄今为止开发的传统技术无法分析大数据并为我们提供预测。

  • 于是,深度学习出现了,它在我们的二进制计算机中创建的人工神经网络 (ANN) 中模拟人脑。

  • 现在,机器利用当今可用的强大计算能力和巨大的内存资源自主学习。

  • 现在观察到,深度学习已经解决了許多以前无法解决的问题。

  • 通过为深度学习网络提供奖励作为激励,这项技术得到了进一步发展,最终产生了深度强化学习。

现在让我们更详细地研究这些类别中的每一个。

监督学习

监督学习类似于训练孩子走路。你会牵着孩子的手,给他示范如何向前迈步,自己走给他看,直到孩子学会自己走路。

回归

同样,在监督学习中,你会向计算机提供具体的已知示例。你会说,对于给定的特征值 x1,输出为 y1,对于 x2,输出为 y2,对于 x3,输出为 y3,等等。基于这些数据,你让计算机找出 x 和 y 之间的经验关系。

一旦机器通过足够数量的数据点以这种方式训练完毕,你就可以要求机器预测给定 X 的 Y。假设你已知此给定 X 的 Y 的真实值,你将能够推断出机器的预测是否正确。

因此,你将使用已知的测试数据来测试机器是否已经学习。一旦你确信机器能够以所需的精度(例如 80% 到 90%)进行预测,你就可以停止进一步训练机器。

现在,你可以安全地使用机器对未知数据点进行预测,或者要求机器预测你不知道 Y 的真实值的给定 X 的 Y。这种训练属于我们之前谈到的回归。

分类

你也可以将机器学习技术用于分类问题。在分类问题中,你将性质相似的对象分类到单个组中。例如,在一组 100 名学生中,你可能希望根据他们的身高将他们分成三组——矮、中等和高。测量每个学生的身高,你将把他们放在合适的组中。

现在,当一个新学生进来时,你将通过测量他的身高将他放入合适的组中。通过遵循回归训练中的原则,你将训练机器根据他的特征(身高)对学生进行分类。当机器学习到组是如何形成的时,它将能够正确地对任何未知的新学生进行分类。再次,你将使用测试数据来验证机器是否已经学习你的分类技术,然后再将开发的模型投入生产。

监督学习是人工智能真正开始其旅程的地方。这项技术已成功应用于多个案例。你在机器上进行手写识别时就使用了此模型。已经为监督学习开发了几种算法。你将在接下来的章节中学习它们。

无监督学习

在无监督学习中,我们不会向机器指定目标变量,而是问机器“关于 X 你能告诉我什么?”。更具体地说,我们可能会问诸如给定一个巨大的数据集 X,“我们可以从 X 中做出五个最佳组?”或“哪些特征在 X 中最常一起出现?”之类的问题。为了得到这些问题的答案,你可以理解机器需要推断策略的数据点数量将非常大。在监督学习的情况下,机器甚至可以用几千个数据点进行训练。然而,在无监督学习的情况下,合理接受用于学习的数据点数量从几百万开始。如今,数据通常非常充足。理想情况下,数据需要整理。然而,在社交网络中持续流动的许多数据中,数据整理在大多数情况下是不可能的任务。

下图显示了由无监督机器学习确定的黄色和红色点之间的边界。你可以清楚地看到,机器能够以相当高的精度确定每个黑点的类别。

Unsupervised Machine Learning

来源

https://chrisjmccormick.files.wordpress.com/2013/08/approx_decision_boun dary.png

无监督学习在许多现代人工智能应用中取得了巨大成功,例如人脸检测、物体检测等等。

强化学习

考虑训练宠物狗,我们训练宠物将球带给我们。我们将球扔到一定距离,然后让狗把它捡回来。每次狗做对时,我们都会奖励它。慢慢地,狗学会了正确地完成工作会得到奖励,然后狗将来每次都会以正确的方式完成工作。正是这个概念应用于“强化”类型的学习中。这项技术最初是为机器玩游戏而开发的。机器会得到一个算法来分析游戏每个阶段的所有可能移动。机器可能会随机选择其中一个移动。如果移动正确,则奖励机器,否则可能会受到惩罚。慢慢地,机器将开始区分正确和错误的移动,并且在多次迭代后将学会以更高的精度解决游戏难题。随着机器玩的游戏越来越多,获胜的准确性也会提高。

整个过程可以用下图表示:

Game Puzzle

这种机器学习技术与监督学习的不同之处在于,你不需要提供标记的输入/输出对。重点在于在探索新解决方案和利用已学习的解决方案之间取得平衡。

深度学习

深度学习是基于人工神经网络 (ANN),更具体地说,是基于卷积神经网络 (CNN) 的模型。深度学习中使用了多种架构,例如深度神经网络、深度信念网络、循环神经网络和卷积神经网络。

这些网络已成功应用于解决计算机视觉、语音识别、自然语言处理、生物信息学、药物设计、医学图像分析和游戏等问题。深度学习积极应用的领域还有很多。深度学习需要巨大的处理能力和海量数据,而如今这些通常很容易获得。

我们将在接下来的章节中更详细地讨论深度学习。

深度强化学习

深度强化学习 (DRL) 结合了深度学习和强化学习的技术。现在将 Q 学习等强化学习算法与深度学习相结合,以创建一个强大的 DRL 模型。这项技术在机器人技术、电子游戏、金融和医疗保健领域取得了巨大成功。许多以前无法解决的问题现在都通过创建 DRL 模型得到了解决。这方面的研究很多,并且正被各个行业积极地追求。

到目前为止,你已经对各种机器学习模型有了一个简短的介绍,现在让我们更深入地探讨这些模型下可用的各种算法。

机器学习 - 监督学习

监督学习是机器学习中重要的模型之一。本章详细讨论了这一点。

监督学习算法

监督学习有多种算法可用。一些广泛使用的监督学习算法如下所示:

  • k 近邻算法
  • 决策树
  • 朴素贝叶斯
  • 逻辑回归
  • 支持向量机

在本章的后续内容中,让我们详细讨论每种算法。

k 近邻算法

k 近邻算法,简称为 kNN,是一种统计技术,可用于解决分类和回归问题。让我们讨论使用 kNN 对未知对象进行分类的情况。考虑如下图像中所示的对象分布:

Nearest Neighbours

来源

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

该图显示了三种类型的对象,分别标记为红色、蓝色和绿色。当你在上述数据集上运行 kNN 分类器时,每种类型的对象的边界将如下所示:

Dataset boundaries

来源

https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm

现在,考虑一个你想将其分类为红色、绿色或蓝色的新未知对象。这在下图中显示。

Depicted Figure

正如你直观地看到的那样,未知数据点属于蓝色对象的一类。在数学上,这可以通过测量该未知点与数据集中每个其他点的距离来得出结论。当你这样做时,你会知道它的许多邻居都是蓝色的。到红色和绿色对象的平均距离肯定大于到蓝色对象的平均距离。因此,这个未知对象可以被分类为属于蓝色类别。

kNN 算法也可以用于回归问题。kNN 算法在大多数 ML 库中都可随时使用。

决策树

下面显示了流程图格式的简单决策树:

Flowchart Format

你会编写代码来根据此流程图对输入数据进行分类。流程图是不言自明的并且很简单。在这种情况下,你试图对传入的电子邮件进行分类以决定何时阅读它。

实际上,决策树可能很大且很复杂。有几种算法可用于创建和遍历这些树。作为机器学习爱好者,你需要理解和掌握创建和遍历决策树的这些技术。

朴素贝叶斯

朴素贝叶斯用于创建分类器。假设你想从一个水果篮中分类不同的水果。你可以使用水果的颜色、大小和形状等特征,例如,任何颜色为红色、形状为圆形且直径约为 10 厘米的水果都可以被认为是苹果。因此,为了训练模型,你将使用这些特征并测试给定特征匹配所需约束的概率。然后将不同特征的概率组合起来,得出给定水果是苹果的概率。朴素贝叶斯通常只需要少量训练数据即可进行分类。

逻辑回归

请看下图。它显示了 XY 平面中数据点的分布。

Distribution Data Points

从图中,我们可以直观地检查红点与绿点的分离。你可以画一条边界线来分隔这些点。现在,要对新的数据点进行分类,你只需要确定该点位于线的哪一侧。

支持向量机

请看以下数据的分布。这里三类数据不能线性分离。边界曲线是非线性的。在这种情况下,找到曲线的方程将变得非常复杂。

Non-linear

来源:http://uc-r.github.io/svm

支持向量机 (SVM) 在确定此类情况下的分离边界方面非常有用。

机器学习 - Scikit-learn 算法

幸运的是,大多数情况下,你不需要编写上一课中提到的算法代码。许多标准库提供了这些算法的现成实现。一个常用的工具包是 scikit-learn。下图说明了该库中可供你使用的算法类型。

Scikit-learn

来源:https://scikit-learn.cn/stable/tutorial/machine_learning_map/index.html

这些算法的使用非常简单,而且经过充分的现场测试,你可以安全地将它们用于你的 AI 应用程序。大多数这些库即使用于商业目的也是免费使用的。

机器学习 - 无监督学习

到目前为止,你所看到的是让机器学习找出我们目标的解决方案。在回归中,我们训练机器预测未来的值。在分类中,我们训练机器将未知对象分类到我们定义的类别之一中。简而言之,我们一直在训练机器,以便它可以根据我们的数据 X 预测 Y。给定一个巨大的数据集并且没有估计类别,我们将很难使用监督学习来训练机器。如果机器可以查找和分析高达几吉字节和几太字节的大数据,并告诉我们这个数据包含这么多不同的类别,那该怎么办呢?

例如,考虑选民数据。通过考虑每个选民的一些输入(在 AI 术语中称为特征),让机器预测有多少选民会投票给 X 党,有多少会投票给 Y 党,等等。因此,一般来说,我们是在向机器询问给定大量数据点 X,“你能告诉我关于 X 的什么信息?”或者它可能是一个类似这样的问题:“我们可以从 X 中划分出五个最佳组吗?”或者它甚至可能类似于“在 X 中哪些三个特征最常同时出现?”

这正是无监督学习的核心。

无监督学习算法

现在让我们讨论一种广泛用于无监督机器学习分类的算法。

k 均值聚类

美国 2000 年和 2004 年的总统大选都很接近——非常接近。任何候选人获得的最高得票率为 50.7%,最低为 47.9%。如果一定比例的选民改变立场,选举结果就会不同。有一些小型选民群体,如果适当争取,就会改变立场。这些群体可能并不庞大,但在如此接近的选情下,它们可能足以改变选举结果。你如何找到这些群体?你如何用有限的预算来争取他们?答案是聚类。

让我们了解它是如何完成的。

  • 首先,你收集有关人们的信息,无论是否经过他们的同意:任何可能提供有关他们重视什么以及什么会影响他们投票方式的线索的信息。

  • 然后,你将这些信息放入某种聚类算法中。

  • 接下来,对于每个集群(最好先选择最大的集群),你都会设计一条能够吸引这些选民的信息。

  • 最后,你开展竞选活动并进行衡量以查看其是否有效。

聚类是一种无监督学习,它会自动形成相似事物的集群。它就像自动分类。你几乎可以对任何事物进行聚类,集群中的项目越相似,集群就越好。在本章中,我们将学习一种称为 k 均值的聚类算法。之所以称为 k 均值,是因为它找到了“k”个独特的集群,并且每个集群的中心是该集群中值的平均值。

集群识别

集群识别告诉算法:“这是一些数据。现在将相似的事物组合在一起,并告诉我关于这些组的信息。”与分类的关键区别在于,在分类中,你知道你在寻找什么。而聚类并非如此。

聚类有时被称为无监督分类,因为它会产生与分类相同的结果,但无需预定义的类别。

现在,我们对监督学习和无监督学习都感到满意。为了理解其余的机器学习类别,我们必须首先了解人工神经网络 (ANN),我们将在下一章学习。

机器学习 - 人工神经网络

人工神经网络的想法源于人脑中的神经网络。人脑非常复杂。通过仔细研究大脑,科学家和工程师们提出了一种能够适应我们二进制计算机数字世界的架构。下图显示了这样一个典型的架构:

Artificial Neural Networks

有一个输入层,它有许多传感器来收集来自外部世界的数据。在右侧,我们有一个输出层,它为我们提供网络预测的结果。在这两者之间,隐藏着几层。每一层额外的层都会增加训练网络的复杂性,但在大多数情况下会提供更好的结果。现在我们将讨论几种类型的架构。

ANN 架构

下图显示了随着时间推移而发展起来的几种 ANN 架构,并且如今仍在实践中使用。

ANN Architectures

来源

https://towardsdatascience.com/the-mostly-complete-chart-of-neural-networks-explained-3fb6f2367464

每种架构都是针对特定类型的应用程序而开发的。因此,当你在机器学习应用程序中使用神经网络时,你必须使用现有架构之一或设计你自己的架构。你最终决定的应用程序类型取决于你的应用程序需求。没有单一的指南告诉你使用特定的网络架构。

机器学习 - 深度学习

深度学习使用 ANN。首先,我们将查看一些深度学习应用程序,这将使你了解其强大的功能。

应用

深度学习在机器学习应用的多个领域都取得了巨大的成功。

自动驾驶汽车 - 自动驾驶汽车使用深度学习技术。它们通常能够适应不断变化的交通状况,并随着时间的推移在驾驶方面越来越熟练。

语音识别 - 深度学习的另一个有趣的应用是语音识别。我们今天使用的许多移动应用程序都能够识别我们的语音。苹果的 Siri、亚马逊的 Alexa、微软的 Cortana 和谷歌的助手——所有这些都使用了深度学习技术。

移动应用程序 - 我们使用多个基于 Web 的和移动应用程序来整理我们的照片。人脸检测、人脸 ID、人脸标记、识别图像中的物体——所有这些都使用了深度学习。

深度学习的未开发机会

在看到深度学习应用程序在许多领域取得的巨大成功之后,人们开始探索机器学习尚未广泛应用的其他领域。深度学习技术已成功应用于多个领域,并且还有许多其他领域可以开发。这里讨论其中一些。

  • 农业就是一个这样的行业,人们可以在其中应用深度学习技术来提高作物产量。

  • 消费金融是另一个领域,机器学习可以在其中极大地帮助及早发现欺诈并分析客户的还款能力。

  • 深度学习技术也应用于医学领域,以创造新药并为患者提供个性化处方。

可能性是无限的,人们必须不断关注新的想法和发展。

使用深度学习取得更多成果需要什么

要使用深度学习,超级计算能力是强制性要求。你需要内存和 CPU 来开发深度学习模型。幸运的是,今天我们很容易获得 HPC——高性能计算。正因为如此,我们上面提到的深度学习应用程序的开发在今天成为现实,将来我们也可以看到其在前面讨论的那些未开发领域的应用。

现在,我们将了解在机器学习应用程序中使用深度学习之前必须考虑的一些限制。

深度学习的缺点

在使用深度学习之前,你需要考虑的一些要点如下:

  • 黑盒方法
  • 开发时长
  • 数据量
  • 计算成本高

我们现在将详细研究这些限制中的每一个。

黑盒方法

ANN 就像一个黑盒子。你给它一个特定的输入,它会给你一个特定的输出。下图显示了一个这样的应用程序,你将动物图像馈送到神经网络,它会告诉你该图像是狗的图像。

Black Box approach

之所以被称为黑盒方法,是因为你不知道网络为什么得出某个结果。你不知道网络是如何得出结论说这是一只狗的?现在考虑一个银行应用程序,银行希望决定客户的信用度。网络肯定会为你提供这个问题的答案。但是,你能向客户解释吗?银行需要向客户解释为什么贷款没有批准吗?

开发时长

训练神经网络的过程如下图所示:

Duration of Development

你首先定义要解决的问题,为此创建规范,确定输入特征,设计网络,部署它并测试输出。如果输出不符合预期,则将其作为反馈来重构你的网络。这是一个迭代过程,可能需要多次迭代才能使网络充分训练以产生所需的输出。

数据量

深度学习网络通常需要海量数据进行训练,而传统的机器学习算法即使只有几千个数据点也能取得很大的成功。幸运的是,如以下图表所示,数据量每年增长 40%,CPU 处理能力每年增长 20%。

Amount of Data

计算成本高

训练神经网络所需的计算能力是运行传统算法所需计算能力的数倍。成功训练深度神经网络可能需要数周的训练时间。

相比之下,传统的机器学习算法只需要几分钟/几小时就能完成训练。此外,训练深度神经网络所需的计算能力在很大程度上取决于数据的规模以及网络的深度和复杂程度。

在概述了机器学习是什么、它的能力、局限性和应用之后,让我们现在深入学习“机器学习”。

机器学习 - 技能

机器学习的广度非常大,需要跨多个领域的技能。成为机器学习专家的所需技能列在下面:

  • 统计学
  • 概率论
  • 微积分
  • 优化技术
  • 可视化

机器学习各种技能的必要性

为了让你对需要掌握的技能有一个大致了解,让我们讨论一些例子:

数学符号

大多数机器学习算法都严重依赖于数学。你需要的数学水平可能只是入门级。重要的是,你应该能够阅读数学家在方程中使用的符号。例如 - 如果你能够阅读符号并理解其含义,你就可以开始学习机器学习了。如果不是,你可能需要复习一下你的数学知识。

$$f_{AN}(net-\theta)=\begin{cases}\gamma & if\:net-\theta \geq \epsilon\\net-\theta & if - \epsilon< net-\theta <\epsilon\\ -\gamma & if\:net-\theta\leq- \epsilon\end{cases}$$

$$ \displaystyle\max\limits_{\alpha}\begin{bmatrix}\displaystyle\sum\limits_{i=1}^m \alpha-\frac{1}{2}\displaystyle\sum\limits_{i,j=1}^m label^\left(\begin{array}{c}i\\ \end{array}\right)\cdot\:label^\left(\begin{array}{c}j\\ \end{array}\right)\cdot\:a_{i}\cdot\:a_{j}\langle x^\left(\begin{array}{c}i\\ \end{array}\right),x^\left(\begin{array}{c}j\\ \end{array}\right)\rangle \end{bmatrix} $$

$$f_{AN}(net-\theta)=\left(\frac{e^{\lambda(net-\theta)}-e^{-\lambda(net-\theta)}}{e^{\lambda(net-\theta)}+e^{-\lambda(net-\theta)}}\right)\;$$

概率论

这里有一个例子来测试你当前的概率论知识:用条件概率进行分类。

$$p(c_{i}|x,y)\;=\frac{p(x,y|c_{i})\;p(c_{i})\;}{p(x,y)\;}$$

有了这些定义,我们可以定义贝叶斯分类规则:

  • 如果 P(c1|x, y) > P(c2|x, y) ,则类别为 c1。
  • 如果 P(c1|x, y) < P(c2|x, y) ,则类别为 c2。

优化问题

这是一个优化函数

$$ \displaystyle\max\limits_{\alpha}\begin{bmatrix}\displaystyle\sum\limits_{i=1}^m \alpha-\frac{1}{2}\displaystyle\sum\limits_{i,j=1}^m label^\left(\begin{array}{c}i\\ \end{array}\right)\cdot\:label^\left(\begin{array}{c}j\\ \end{array}\right)\cdot\:a_{i}\cdot\:a_{j}\langle x^\left(\begin{array}{c}i\\ \end{array}\right),x^\left(\begin{array}{c}j\\ \end{array}\right)\rangle \end{bmatrix} $$

受以下约束:

$$ \alpha\geq0,and\:\displaystyle\sum\limits_{i-1}^m \alpha_{i}\cdot\:label^\left(\begin{array}{c}i\\ \end{array}\right)=0 $$

如果你能阅读并理解以上内容,你就准备好了。

可视化

在许多情况下,你需要了解各种可视化图表,以了解你的数据分布并解释算法输出的结果。

Visualization Plots

除了机器学习的上述理论方面,你还需要良好的编程技能来编写这些算法。

那么实现机器学习需要什么?让我们在下一章中探讨这个问题。

机器学习 - 实现

要开发机器学习应用程序,你必须确定开发平台、IDE 和语言。有几种选择可用。大多数这些选择都能轻松满足你的需求,因为它们都提供了迄今为止讨论过的 AI 算法的实现。

如果你自己正在开发机器学习算法,则需要仔细理解以下几个方面:

你选择的语言 - 这实际上是你对机器学习开发中支持的一种语言的熟练程度。

你使用的 IDE - 这取决于你对现有 IDE 的熟悉程度和你的舒适度。

开发平台 - 有多个平台可用于开发和部署。其中大多数是免费使用的。在某些情况下,超过一定的使用量后,你可能需要支付许可费。以下列出了一些语言、IDE 和平台供你参考。

语言选择

以下是支持机器学习开发的语言列表:

  • Python
  • R
  • Matlab
  • Octave
  • Julia
  • C++
  • C

此列表并非完全全面;但是,它涵盖了机器学习开发中使用的许多流行语言。根据你的舒适程度,选择一种语言进行开发,开发你的模型并进行测试。

IDEs

以下是支持机器学习开发的 IDE 列表:

  • R Studio
  • Pycharm
  • iPython/Jupyter Notebook
  • Julia
  • Spyder
  • Anaconda
  • Rodeo
  • Google Colab

以上列表并非完全全面。每个 IDE 都有其自身的优缺点。建议读者在缩小到单个 IDE 之前尝试这些不同的 IDE。

平台

以下是可部署机器学习应用程序的平台列表:

  • IBM
  • Microsoft Azure
  • Google Cloud
  • Amazon
  • Mlflow

同样,此列表并不详尽。鼓励读者注册上述服务并自行尝试。

机器学习 - 总结

本教程向你介绍了机器学习。现在,你知道机器学习是一种训练机器执行人类大脑可以执行的活动的技术,尽管它比普通人的速度更快、更好。今天我们看到机器可以在象棋、AlphaGo 等被认为非常复杂的游戏中击败人类冠军。你已经看到机器可以被训练来执行各个领域的人类活动,并可以帮助人类过上更好的生活。

机器学习可以是有监督的或无监督的。如果你有较少的数据和清晰标记的训练数据,请选择监督学习。无监督学习通常会为大型数据集提供更好的性能和结果。如果你有大量易于获得的数据集,请选择深度学习技术。你还学习了强化学习和深度强化学习。你现在知道什么是神经网络、它们的应用和局限性。

最后,在开发你自己的机器学习模型时,你研究了各种开发语言、IDE 和平台的选择。接下来你需要做的就是开始学习和练习每种机器学习技术。这个主题很广泛,这意味着它有广度,但是如果你考虑深度,每个主题都可以在几个小时内学习。每个主题都是相互独立的。你需要一次考虑一个主题,学习它,练习它,并使用你选择的语言来实现其中的算法。这是开始学习机器学习的最佳方法。一次练习一个主题,很快你就会获得机器学习专家最终需要的广度。

祝你好运!

广告