机器学习是什么?

101
什么是“机器学习”? 机器学习的“代码”是做什么的? 当我们说机器学习时,它是否会修改自己的代码,还是修改包含给定输入集的代码经验的历史记录(数据库)?

https://github.com/niektuytel/Machine_Learning/tree/main - niek tuytel
9个回答

158
基本上,机器学习是一种教导计算机根据某些数据进行预测或行为改进的方法。这个“数据”究竟是什么?这完全取决于问题。它可以是机器人传感器的读数,因为它学会走路,也可以是程序对某些输入的正确输出。
另一种思考机器学习的方式是,它是“模式识别” - 即教授程序反应或识别模式的行为。
要回答机器学习代码的操作是什么,就要看你所说的机器学习类型。机器学习是一个庞大的领域,有数百种不同的算法来解决各种不同的问题-请参见Wikipedia获取更多信息;具体而言,请查看Algorithm Types
当我们说机器学习能否修改自身的代码时,这又要视情况而定。其中一个代码实际被修改的例子是遗传编程Genetic Programming,在这种情况下,您基本上演化出一个程序以完成任务(当然,程序不会修改自己,但它确实会修改另一个计算机程序)。

另一方面,神经网络会自动根据预设的刺激和期望响应来修改其参数。这使得它们能够产生许多行为(理论上,它们可以产生任何行为,因为它们可以在足够长的时间内以任意精度逼近任何函数)。


我应该指出,你使用“数据库”一词的意思是机器学习算法通过“记住”信息、事件或经验来工作。这不一定是(甚至经常不是)情况。
神经网络,我已经提到过,只保留近似值的当前“状态”,随着学习的进行而更新。神经网络不是记住发生了什么以及如何对其做出反应,而是建立了一种对其“世界”的“模型”。该模型告诉它们如何对某些输入做出反应,即使输入是它从未见过的东西。
最后一个能力——对从未见过的输入做出反应的能力——是许多机器学习算法的核心原则之一。想象一下试图教计算机驾驶员在交通中导航。使用你的“数据库”比喻,你将不得不教会计算机在数百万种可能的情况下要做什么。有效的机器学习算法将(希望!)能够学习不同状态之间的相似之处,并对它们做出类似的反应。
状态之间的相似之处可以是任何东西——即使我们认为是“平凡”的事情也可以真正困扰计算机!例如,假设计算机驾驶员学会了当前车辆减速时,它必须减速。对于人类来说,用摩托车替换汽车并不会改变什么——我们认识到摩托车也是一种车辆。但是对于机器学习算法来说,这实际上可能非常困难!数据库必须单独存储关于前面有汽车和前面有摩托车的情况的信息。另一方面,机器学习算法将从汽车示例中“学习”,并能够自动推广到摩托车示例。

3
你的解释非常有价值和值得赞赏。请问你能否深入阐述一下“计算机”驱动程序的例子(与您的陈述“学习不同状态之间的相似性”相关)? - Kushal Waikar
1
为什么“KNN”或“K means”属于机器学习?你能解释一下吗?谢谢。 - Sunku Vamsi Tharun Kumar

25

机器学习是计算机科学、概率论和优化理论的一个领域,它允许解决那些逻辑/过程方法无法实现或不可行的复杂任务。

机器学习有几个不同的类别,包括(但不限于):

  • 监督学习
  • 强化学习

监督学习
在监督学习中,你有一些从输入到输出的真正复杂的函数(映射),你有大量的输入/输出对的示例,但你不知道那个复杂的函数是什么。监督学习算法可以在给定大量输入/输出对数据集的情况下,预测某些新的输入值的输出值,这些新的输入值可能以前没有见过。基本方法是将数据集分成训练集和测试集。您有一些模型和相关的误差函数,您尝试在训练集上最小化该函数,然后确保您的解决方案在测试集上有效。一旦您使用不同的机器学习算法和/或参数重复了这个过程,直到模型在测试集上表现得相当好,那么您就可以尝试将结果用于新的输入。请注意,在这种情况下,程序不会改变,只有模型(数据)发生了变化。尽管从理论上讲,可以输出不同的程序,但据我所知,在实践中并没有这样做。监督学习的一个例子是邮局使用的数字识别系统,它将像素映射到标签集0...9,使用一组大量手动标记为0...9的数字图片。

强化学习
在强化学习中,程序负责做出决策,并定期获得某种奖励/效用来评估其行动。然而,与监督学习情况不同的是,结果并不是即时的;算法可能会预设一系列的动作,直到最后才收到反馈。在强化学习中,目标是建立一个良好的模型,以便算法生成导致长期效用/回报最高的决策序列。强化学习的一个很好的例子是通过在机器人撞到物体时给予负惩罚来教机器人如何导航。如果编码正确,机器人最终可以将其范围传感器数据与其保险杠传感器数据和发送给车轮的方向相联系,并选择一种导航方式,使其不会撞到物体。

更多信息
如果您有兴趣了解更多信息,我强烈建议您阅读Christopher M. Bishop的《模式识别和机器学习》或参加机器学习课程。您还可以免费阅读宾夕法尼亚大学CIS 520:机器学习的讲座笔记


2
你提到了“逻辑/过程化方法不可能或不可行。”你能举例详细说明一下吗?谢谢。 - LionHeart
@LionHeart,一个很好的例子是字符识别。你可以尝试编写一个算法来识别各种曲线、线条和其他特征,但归根结底,这是一项非常困难的任务,而机器学习则可以轻松解决它。 - Michael Aaron Safyan

12
  • 机器学习是一门科学学科,涉及设计和开发算法,使计算机能够根据实际数据(例如来自传感器数据或数据库)演化出不同的行为。更多信息请参见维基百科

  • 机器学习代码会记录某些“事实”或近似值,并使用算法计算不同的概率。

  • 当机器学习时,代码本身不会被修改,只有“它知道”的数据库。


机器学习不需要数据库。它也不总是记录“事实”。有些东西是猜测,有些东西是近似值。机器学习所学的并不都可以被认为是事实。 - Kevin Crowell
2
你仍然将你的回答限制在机器学习的特定领域。事实或近似值并不总是被记录下来。事物可以被体验、反应和遗忘。"存储"不是机器学习的基本要素。它可以被使用,但不是必需品。 - Kevin Crowell
4
如果机器学习程序存储了它所学的数据,那么拥有这个程序就没有意义了...我们只需要查询数据本身。大多数机器学习程序只创建数据模型,因为数据集可能相当大(几个GB),我们希望程序对未见过的数据集具有预测能力。几乎没有理由让机器学习程序存储数据。 - Kiril

12

机器学习是一种基于样本数据创建模型并使用该模型进行预测或策略的方法论。它属于人工智能领域。


11

机器学习是一个通用术语,用来定义从示例(未标记/已标记)中产生类似学习的各种学习算法。实际的准确性/误差完全取决于您为学习算法提供的训练/测试数据的质量。这可以使用收敛率进行测量。您提供示例的原因是因为您希望您选择的学习算法能够通过指导有意义地进行概括。算法可以分为两个主要领域——监督学习(分类)和无监督学习(聚类)技术。非常重要的是,您应该对如何分离训练和测试数据集以及您为学习算法提供的质量做出明智的决策。当您提供数据集时,您还要注意过度拟合和保持健康偏见的问题。然后,算法基本上根据它从您提供给它的数据的泛化基础上学习写作,并尝试在有针对性的训练基础上生成新的例子。在聚类中,算法基本上尝试通过数据之间的模式测量来构建相关的簇集,例如kmeans / knearest neighbor。

一些好书籍: 机器学习简介(Nilsson / Stanford), 用于机器学习的高斯过程, 机器学习简介(Alpaydin), 信息理论推断和学习算法(非常有用的书籍), 机器学习(Mitchell), 模式识别和机器学习(爱丁堡大学和各种大学的标准ML课程书籍,但相对来说需要进行较深入的阅读和数学验算), 数据挖掘和实用机器学习(使用weka进行理论工作,并在Java中实践)

关于强化学习,您可以免费在线阅读一本书: http://www.cs.ualberta.ca/~sutton/book/ebook/the-book.html

在信息检索(IR)、信息提取(IE)、推荐系统以及文本/数据/网络挖掘等许多IT技术领域都广泛应用了机器学习原理。你甚至可以在此基础上应用元启发式/全局优化技术,以进一步自动化学习过程。例如,可以应用遗传算法(GA)这样的进化技术来优化基于神经网络的方法(可能使用某些学习算法)。也可以纯粹地采用概率机器学习方法,例如贝叶斯学习。大多数这些算法都极度依赖统计学。收敛和泛化的概念对于许多学习算法都非常重要。


9

机器学习是计算科学中的研究,其制作算法能够通过学习相似信息的模式,对没有见过的信息进行分类。在这个意义上,有各种各样的“学习者”。神经网络,贝叶斯网络,决策树,k-聚类算法,隐马尔可夫模型和支持向量机等都是例子。

基于学习者的不同,它们的学习方式也各不相同。一些学习者会产生人类可理解的框架(例如决策树),而一些学习者则普遍难以理解(例如神经网络)。

学习者本质上都是数据驱动的,这意味着它们将自己的状态保存为数据以便以后重复使用。至少在一般情况下,它们并不是自我修改的。


8

我认为我读过的最酷的机器学习定义之一来自Tom Mitchell的这本书。易于记忆和直观。

如果一个计算机程序在某个任务T的表现,根据性能度量P,随着经验E的增加而提高,则称该程序相对于某些任务T从经验E中学习。


22
即使在不必要地使用符号的情况下,这个定义一直被重复甚至教授,仍然让我感到厌烦。更简单更好的表达是:如果一个计算机程序在某种任务类别方面的表现随着经验而提高,那么它被认为是从经验中学习的。现在我们再来进一步简化:如果一个计算机程序在执行某项任务时,其表现随着经验而提高,则被认为是在学习。 - Ninjakannon
1
我已经从事机器学习约一年了,即使今天我仍需要读几遍才能理解它的确切含义。我想知道是我太差还是定义不够清晰。 - Maxim Dsouza

7
  • 机器学习是一门科学,涉及设计和开发算法,使计算机能够根据经验数据(如传感器数据或数据库)进化行为。

  • 简单来说,机器学习代码可以完成机器学习任务。这可能是从解释传感器数据到遗传算法的许多事情之一。

  • 我会说这取决于情况。修改代码并不常见,但也不是不可能的。我也不会说机器学习总是修改历史记录。有时我们没有历史记录可以建立。有时我们只想对环境做出反应,而不是真正地从过去的经验中学习。

基本上,机器学习是一个非常开放的学科,包含许多方法和算法,使得无法对第三个问题给出一个答案。


6

机器学习是从现实世界中借鉴人类的概念,并应用于无法真正学习的机器上的术语。

除了其他答案提到的之外,机器学习通常不会更改代码,但它可能会基于先前数据或新收集的数据改变其执行路径和决策,因此产生“学习”效果。

有许多方法可以“教”一台机器-您对算法的许多参数进行加权,然后让机器为许多情况解决它,每次您向它反馈答案,并根据机器的答案与您的答案相差多少或根据您给出的分数或根据一些结果测试算法来调整权重。

这是一种学习方式,还有许多其他方式...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接