作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
尼克·麦克雷的头像

尼克·麦克雷博士

尼古拉斯是一名专业的软件工程师,对高质量的工艺充满热情. 他喜欢架构和编写一流的代码.

以前在

deepblocks
<但ton aria-label="分享" class="_2foqyr9I">分享
分享

编者注:本文由我们的编辑团队更新于22年9月12日. 它已被修改,以包括最近的来源,并与我们目前的编辑标准保持一致.

机器学习(ML)正在崭露头角, 人们越来越认识到机器学习可以在广泛的关键应用中发挥关键作用, 如 数据挖掘, 自然语言处理, 图像识别, 专家系统. ML为所有这些领域以及更多领域提供了潜在的解决方案, 很可能成为我们未来文明的支柱.

的供应 机器学习设计专家 还没有赶上这种需求吗. 造成这种情况的一个主要原因是ML非常棘手. 本教程介绍了机器学习的基本理论, 列出共同的主题和概念, 并使其易于遵循逻辑并熟悉机器学习的基础知识.

机器学习教程插图:这个好奇的机器正在学习机器学习, 无人管理的.

机器学习基础:什么是机器学习?

那么到底什么是“机器学习”呢? ML是一个 很多 的事情. 这个领域是广阔的,并且正在迅速扩大, 被不断地划分为不同的子专业和 机器学习的类型.

有一些基本的共同线索, 然而, 1959年,亚瑟·塞缪尔(Arthur Samuel)经常被引用的一句话最好地概括了这一主题:“(机器学习)是一个研究领域,它赋予计算机无需明确编程就能学习的能力。.”

In 1997, 汤姆•米切尔 提供了一个“良好的”定义,已被证明对工程类型更有用:“据说计算机程序从经验E中学习一些任务T和一些性能度量P。, 如果它在T上的表现, 用P测量, 随着经验的增加而提高.”

“一个计算机程序据说从经验E中学习一些任务T和一些性能指标P, 如果它在T上的表现, 用P测量, 随着经验的增加而提高.——汤姆·米切尔,卡内基梅隆大学

所以如果你想让你的程序预测, 例如, 繁忙十字路口的交通模式(任务T), 你可以通过一个机器学习算法,用过去的交通模式数据来运行它(经验E), 如果它成功地“学习”了,,它就能更好地预测未来的交通模式(性能指标P)。.

许多现实世界问题的高度复杂性, 虽然, 这意味着发明专门的算法每次都能完美地解决问题是不切实际的, 如果不是不可能的话.

机器学习问题的现实例子包括 “这是癌症吗??”, “这房子的市场价值是多少??”, 这些人中谁是彼此的好朋友?”, “火箭引擎会在起飞时爆炸吗??”, “这个人会喜欢这部电影吗?”, “这是谁?”?”, “你说什么??”, “你怎么驾驶这东西??” All of these problems are excellent targets for an ML project; in fact ML has been applied to each of them with great success.

机器学习解决的问题,不能通过数字手段单独解决.

在不同类型的ML任务中, 有监督学习和无监督学习之间有一个关键的区别:

  • 监督式机器学习 当程序在一组预定义的“训练示例”上“训练”时,,这有助于在获得新数据时得出准确结论.
  • 无监督机器学习 是当程序得到一堆数据,必须找到其中的模式和关系时.

我们将主要关注 监督式学习 在这里, 但文章的最后一部分包含了对无监督学习的简短讨论,并为那些对这个话题感兴趣的人提供了一些链接.

监督式机器学习

在大多数监督学习应用中, 最终目标是开发一个精细调整的预测函数h(x)(有时称为“假设”)。. “学习”包括使用复杂的数学算法来优化这个函数,以便, 给定关于某个域的输入数据x(例如, (房屋的平方英尺), 它将准确地预测一些有趣的值h(x)(比如, 该房屋的市价).

在实践中,x几乎总是表示多个数据点. So, 例如, 房价预测者可能不仅要考虑面积(x1),还要考虑卧室数量(x2)。, 浴室数量(x3), 楼层数(x4), 建造年份(x5), 邮政编码(x6), 诸如此类. 确定使用哪些输入是ML设计的重要组成部分. 然而,为了便于解释,假设一个输入值是最简单的.

假设我们的简单预测器是这样的:

H (x)等于0加上1乘以x

在哪里

θ0
θ1
是常数. 我们的目标是找到的完美值
θ0
θ1
让我们的预测器尽可能地工作.

优化预测器 h(x) 是用 训练的例子. 对于每个训练示例,我们都有一个输入值 x_train,对应的输出, y,是事先知道的. 对于每个示例,我们找出已知正确值之间的差值 y,以及我们的预测值 h (x_train). 有了足够的训练样本,这些差异给了我们一种有用的方法来衡量的“错误” h(x). 然后我们可以调整 h(x) 的值

θ0
θ1
让它“少一点错”. 这个过程会不断重复,直到系统收敛到最佳值为止
θ0
θ1
. 通过这种方式,预测器得到了训练,并准备好进行一些现实世界的预测.

机器学习示例

我们用简单的问题来说明, 但ML存在的原因是, 在现实世界中, 问题要复杂得多. 在这个平面屏幕上, 我们可以展示一幅, 最多, 三维数据集, 但机器学习问题通常处理具有数百万维度和非常复杂的预测函数的数据. 机器学习解决的问题,不能通过数字手段单独解决.

记住这一点,让我们看另一个简单的例子. 假设我们有以下训练数据, 其中,公司员工对自己的满意度进行了1到100的评分:

根据工资对员工满意度进行评级是一个很好的机器学习例子.

首先,请注意数据有一点噪声. 也就是说,虽然我们可以看到它有一个模式.e., 员工满意度往往随着工资的增加而上升。, 它并不完全符合一条直线. 现实世界的数据总是如此(我们绝对希望使用现实世界的数据来训练我们的机器). 我们怎样才能训练一台机器完美地预测员工的满意度呢? 答案当然是,我们不能. ML的目标永远不是做出“完美”的猜测,因为ML处理的领域不存在这样的事情. 我们的目标是做出足够有用的猜测.

这有点让人联想到著名的声明 乔治·E. P. 盒子他说:“所有的模型都是错误的,但有些是有用的.”

ML的目标永远不是做出“完美”的猜测,因为ML处理的领域不存在这样的事情. 我们的目标是做出足够有用的猜测.

机器学习很大程度上建立在统计学的基础上. 例如, 当我们训练机器学习时, 我们必须给它一个统计上显著的随机样本作为训练数据. 如果训练集不是随机的, 我们冒着机器学习模式不存在的风险. 如果训练集太小(参见 大数定律),我们将学得不够,甚至可能得出不准确的结论. 例如, 试图仅根据高层管理人员的数据来预测全公司的满意度模式很可能容易出错.

有了这样的理解,让我们给我们的机器提供上面给出的数据,并让它学习. 首先,我们必须初始化我们的预测器 h(x) 有一些合理的值

θ0
θ1
. 现在,当放在我们的训练集上时,我们的预测器看起来是这样的:

H (x)等于12加上0点2x

机器学习示例说明:训练数据集上的机器学习预测器.

如果我们问这个预测器一个挣60美元的员工的满意度,000, 它预测的评分是27分:

在这张图片中,机器还没有学会预测可能的结果.

很明显,这是一个糟糕的猜测,这台机器知道的并不多.

现在我们给出这个预测器 所有 我们训练集的薪水, 并注意结果预测满意度评级和相应员工的实际满意度评级之间的差异. 如果我们执行一点数学魔法(我将在文章后面描述), 我们可以计算, 非常确定, 这个值是13.12

θ0
和0.61年
θ1
会给我们一个更好的预测吗.

H (x) = 13.12 + 0.61 x

在这种情况下,机器学习预测器越来越接近.

如果我们重复这个过程,比如说1500次,我们的预测器最终会是这样的:

H (x)等于15.4 + 0.75 x

通过大量的重复,机器学习过程开始成形.

此时,如果我们重复这个过程,我们会发现

θ0
θ1
是否不再发生任何可观的变化,因此我们看到系统已经趋同. 如果我们没有犯任何错误,这意味着我们找到了最佳预测器. 相应的, 如果我们现在再次向机器询问赚60美元的员工的满意度,000, 它预测的评分为60分.

在这个例子中,机器已经学会了预测一个可能的数据点.

现在我们有点进展了.

机器学习回归:复杂性注释

上面的例子在技术上是一个简单的问题 单变量线性回归, 在现实中,哪些问题可以通过推导一个简单的普通方程来解决,而完全跳过这个“调整”过程. 然而,考虑一个像这样的预测器:

四维方程示例

这个函数的输入是四维的,有很多多项式项. 推导该函数的正规方程是一项重大挑战. 许多现代机器学习问题需要数千甚至数百万个维度的数据来使用数百个系数构建预测. 预测一个有机体的基因组将如何表达,或者50年后的气候会是什么样子,都是此类复杂问题的例子.

许多现代机器学习问题需要数千甚至数百万个维度的数据来使用数百个系数构建预测.

幸运的是, ML系统采用的迭代方法在面对这种复杂性时更具弹性. 机器学习系统不是使用蛮力,而是通过“感觉”找到答案. 对于大问题,这种方法效果更好. 虽然这并不意味着ML可以解决所有任意复杂的问题——它不能——但它确实是一个非常灵活和强大的工具.

梯度下降:最小化“错误”

让我们仔细看看这个迭代过程是如何工作的. 在上面的例子中,我们如何确保

θ0
θ1
每一步都变得更好,而不是更糟吗? 答案就在我们的“错误度量”中,再加上一点微积分. (这就是前面提到的“数学魔法”.)

错误度量被称为 成本函数 (又名 损失函数),

J ()
. 输入
θ
表示我们在预测器中使用的所有系数. 在我们的例子中,
θ
真的是一对吗?
θ0
θ1
.
J (0, 1
给出了预测器误差的数学测量当它使用给定值时
θ0
θ1
.

成本函数的选择是ML程序的另一个重要部分. 在不同的语境中,“错误”可能意味着非常不同的东西. 在我们的员工满意度的例子中,公认的标准是 线性最小二乘函数:

成本函数表示为线性最小二乘函数

用最小二乘, 猜错的惩罚随着猜错和正确答案之间的差二次增加, 因此,它作为一种非常“严格”的错误衡量标准. 代价函数计算所有训练样本的平均惩罚.

现在我们看到,我们的目标是找到

θ0
θ1
对于我们的预测器 h(x) 这样我们的成本函数
J (0, 1
是尽可能的小. 我们借助于微积分的力量来完成这一任务.

考虑以下一些特定机器学习问题的成本函数图:

这张图描绘了一个机器学习示例的成本函数的碗形图.

在这里我们可以看到与的不同值相关联的成本

θ0
θ1
. 我们可以看到图表的形状有点像碗状. 碗的底部表示基于给定的训练数据,我们的预测器可以给我们的最低成本. 我们的目标是“滚下山”并找到
θ0
θ1
对应于这个点.

这就是微积分在机器学习教程中的应用. 为了使这个解释易于理解, 我就不把方程写出来了, 但本质上我们要做的是求梯度

J (0, 1
的导数对
J (0, 1
(1 /
θ0
再除以1
θ1
). 对于不同的值,梯度是不同的
θ0
θ1
,并定义了“山的坡度”,特别是“哪条路向下”
θ
s. 例如,当我们代入
θ
在梯度中,它可以告诉我们添加一点
θ0
然后减去一点
θ1
会把我们带向成本函数谷底的方向吗. 因此,我们加一点到
θ0
从…中减去一点
θ1
,等等! 我们已经完成了一轮学习算法. 我们更新的预测器,h(x) =
θ0
+
θ1
X,将返回比以前更好的预测. 我们的机器现在更聪明了.

这个过程交替计算当前梯度和更新

θ
结果中的S为 梯度下降法.

这张图片描绘了一个机器学习梯度下降的例子.

这张图片描述了这个机器学习教程的迭代次数.

这涵盖了大多数监督式机器学习系统的基本理论. 但是,根据手头的问题,基本概念可以以各种方式应用.

机器学习中的分类问题

在监督式机器学习下,有两个主要的子类别:

  • 回归机器学习系统 -预测值落在连续谱上某处的系统. 这些系统帮助我们回答“多少钱??或“有多少??”
  • 分类机器学习系统 -我们寻求是或否预测的系统,例如“这个肿瘤是癌变的吗??、“这种饼干符合我们的质量标准吗??等等.

事实证明,潜在的机器学习理论或多或少是相同的. 主要的区别在于预测器的设计 h(x) 以及成本函数的设计

J ()
.

到目前为止,我们的例子都集中在回归问题上, 现在我们来看一个分类的例子.

这是一项饼干质量测试研究的结果, 训练样本都被标记为“好饼干”(y = 1)或“坏饼干”(y = 0用红色表示.

这个例子说明了机器学习回归预测器在这里不是正确的解决方案.

在分类中,回归预测器不是很有用. 我们通常想要的是一个能在0到1之间做出猜测的预测器. 在cookie质量分类器中, 如果预测值为1,则表示你非常自信地猜测,这块饼干是完美的,令人垂涎欲滴. 预测值为0表示高度确信这种饼干会让饼干行业难堪. 值落在此范围内表示可信度较低, 所以我们可以设计我们的系统使预测值为0.6代表“人”, 这是一个艰难的决定, 但我还是选"是的, 你可以卖掉那块饼干,,而一个值正好在中间, at 0.可能代表着完全的不确定性. 这并不总是分类器中置信度的分布方式,但这是一种非常常见的设计,适用于我们的演示目的.

有一个很好的函数可以很好地捕捉到这种行为. 它叫做 乙状结肠函数, g(z),它看起来像这样:

H (x)等于g (z

sigmoid函数在工作中完成了一个有监督机器学习的例子.

z 是我们的输入和系数的一些表示,例如:

Z等于0加上1乘以x

所以我们的预测器变成:

H (x)等于g (0 + 1) * x

注意,sigmoid函数将我们的输出转换为0到1之间的范围.

成本函数设计背后的逻辑在分类上也有所不同. 我们又问“猜错了是什么意思??这一次,一个很好的经验法则是,如果正确的猜测是0,而我们猜的是1, 然后我们完全错了,反之亦然. 因为你的错误不能比完全错误更严重,所以在这种情况下,惩罚是巨大的. 另外, 如果正确的猜测是0,我们猜的是0, 我们的成本函数不应该在每次发生这种情况时增加任何成本. 如果猜测是正确的,但我们不是完全有信心.g., y = 1,但 h(x) = 0.8), 这样做的成本应该很小, 如果我们的猜测是错误的,但我们不完全相信(e.g., y = 1h(x) = 0.3),这应该会带来一些重大的代价,但如果我们完全错了,代价就不会那么大.

此行为由log函数捕获,如下所示:

以对数表示的成本

还是代价函数

J ()
给出了所有训练样本的平均成本.

这里我们描述了预测器是如何 h(x) 成本函数

J ()
回归和分类是不同的,但是梯度下降仍然可以很好地工作.

A classification predictor can be visualized by drawing the boundary line; i.e.,预测从“是”(预测大于0)变为“是”的障碍.5)到“否”(预测小于0).5). 有一个精心设计的系统, 我们的cookie数据可以生成如下的分类边界:

一个使用sigmoid函数的完整机器学习示例图.

这是一台对饼干略知一二的机器!

神经网络导论

关于机器学习的讨论,如果不提到这一点,就不完整 神经网络. 神经网络不仅提供了一个非常强大的工具来解决非常棘手的问题, 它们还为人类大脑的运作提供了有趣的线索,并为有朝一日创造出真正智能的机器提供了有趣的可能性.

神经网络非常适合输入数量巨大的机器学习模型. 处理此类问题的计算成本对于我们所讨论的系统类型来说实在是太大了. 事实证明, 然而, 神经网络可以使用原理上与梯度下降惊人相似的技术进行有效调整.

对神经网络的深入讨论超出了本教程的范围, 但我建议你退房 以前的文章 关于这个问题.

无监督机器学习

无监督机器学习的任务通常是寻找数据之间的关系. 在这个过程中没有使用训练示例. 相反,系统被赋予一组数据,并负责在其中找到模式和相关性. 一个很好的例子就是在社交网络数据中识别关系密切的朋友群.

用于此的机器学习算法与用于监督学习的机器学习算法非常不同, 这个话题值得专门发表一篇文章. 不过,在这段时间里,你可以看看 聚类算法k - means,也要调查 降维 系统包括 主成分分析. 你也可以阅读我们的文章 半监督图像分类.

把理论付诸实践

我们已经涵盖了很多机器学习领域的基础理论,但是, 当然, 我们只是触及了表面.

请记住,要真正将本介绍中包含的理论应用于现实生活中的机器学习示例, 对这些主题有更深入的了解是必要的. ML中有许多微妙之处和陷阱,并且有许多方式被看似完美调谐的思维机器引入歧途. 几乎每一个部分 基本理论 可以不断地玩弄和改变,结果往往是迷人的. 许多学科发展成为更适合研究特定问题的全新研究领域.

显然,机器学习是一个非常强大的工具. 在未来的几年里, 它有望帮助我们解决一些最紧迫的问题, 同时也为我们打开了一个充满机遇的新世界 数据科学公司. 的 机器学习工程师的需求 只会发展壮大,提供难以置信的机会成为大事业的一部分. 我希望你能考虑加入这个行动!


确认

这篇文章大量引用了斯坦福教授讲授的材料 Dr. Andrew Ng 在他的 免费开放的“监督机器学习”课程. 它非常深入地涵盖了本文中讨论的所有内容, 并为ML从业者提供了大量实用建议. 对于那些有兴趣进一步探索这个迷人领域的人,我非常推荐它.

了解基本知识

  • 什么是深度学习?

    深度学习是一种依赖人工神经网络的机器学习方法, 允许计算机系统通过实例学习. 在大多数情况下, 深度学习算法基于生物神经系统中的信息模式.

  • 什么是机器学习?

    正如亚瑟·塞缪尔所描述的, 机器学习是一个研究领域,它赋予计算机在没有明确编程的情况下学习的能力.”

  • 机器学习与人工智能:有什么区别?

    人工智能(AI)是一个广义术语,用于描述能够自行做出某些决策的系统. 机器学习(ML)是更广泛的人工智能领域中的一个特定主题, 描述机器通过练习一项任务或接触大量数据集来提高其能力的能力.

  • 如何学习机器学习?

    机器学习需要大量的投入和实践来学习, 因为要确保你的机器学习正确的东西而不是错误的东西,涉及到许多微妙的复杂性. 一个优秀的机器学习在线课程是Andrew Ng的Coursera课程.

  • 什么是机器学习中的过拟合?

    过度拟合是机器学习算法过于关注训练数据的结果, 因此,它的泛化程度不足以正确处理新数据. 这是机器“学习错误的东西”的一个例子,机器正确解释新数据的能力越来越弱.

  • 什么是机器学习模型?

    机器学习模型是一组关于待训练数据的基本性质的假设. 该模型被用作确定机器学习算法应该学习什么的基础. 一个好的模型, 哪一个对数据做出了准确的假设, 机器有必要产生好的结果吗

聘请Toptal这方面的专家.
现在雇佣
尼克·麦克雷的头像
尼克·麦克雷博士

位于 丹佛,科罗拉多州,美国

成员自 2014年7月8日

作者简介

尼古拉斯是一名专业的软件工程师,对高质量的工艺充满热情. 他喜欢架构和编写一流的代码.

Toptal作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.

以前在

deepblocks

世界级的文章,每周发一次.

<但ton class="_2bg14bwf _1Yko3Q2K _1SZtmxGM _2Yt-rhsd _1S6tHuDo" data-ga-category="bottom_sticky_bar" data-ga-event="cta_clicked" data-ga-label="Sign me up - Sticky - 0%" type="submit">帮我报名

订阅意味着同意我们的 隐私政策

世界级的文章,每周发一次.

<但ton class="_2bg14bwf _1Yko3Q2K _1SZtmxGM _2Yt-rhsd _1S6tHuDo" data-ga-category="bottom_sticky_bar" data-ga-event="cta_clicked" data-ga-label="Sign me up - Bottom - 0%" type="submit">帮我报名

订阅意味着同意我们的 隐私政策

Toptal开发者

加入总冠军® 社区.