什么是机器学习? [关闭]
Posted
技术标签:
【中文标题】什么是机器学习? [关闭]【英文标题】:What is machine learning? [closed] 【发布时间】:2011-02-06 21:35:57 【问题描述】: 什么是机器学习? 机器学习代码有什么作用? 当我们说机器学习时,它是修改自身的代码还是修改包含给定输入集的代码体验的历史(数据库)?【问题讨论】:
github.com/niektuytel/Machine_Learning/tree/main 【参考方案1】:什么是机器学习?
本质上,它是一种教计算机根据某些数据做出和改进预测或行为的方法。这个“数据”是什么?嗯,这完全取决于问题。它可能是机器人在学习行走时传感器的读数,或者是针对特定输入的程序的正确输出。
另一种思考机器学习的方式是“模式识别”——教程序对模式做出反应或识别模式的行为。
机器学习代码有什么作用?
取决于您所谈论的机器学习的类型。机器学习是一个巨大领域,有数百种不同的算法可以解决无数不同的问题 - 请参阅 Wikipedia 了解更多信息;具体来说,查看Algorithm Types。
当我们说机器学习时,它是修改自己的代码还是修改包含给定输入集的代码体验的历史(数据库)?
再一次,这取决于。
实际被修改的代码的一个例子是Genetic Programming,您实质上是在其中进化一个程序来完成一项任务(当然,程序不会修改自己 - 但它会修改另一个计算机程序)。
另一方面,Neural networks 会自动修改其参数以响应准备好的刺激和预期的响应。这允许它们产生许多行为(理论上,它们可以产生任何行为,因为它们可以将任何函数逼近到任意精度,只要有足够的时间)。
我应该注意到,您使用“数据库”一词意味着机器学习算法通过“记住”信息、事件或经验来工作。情况不一定(甚至经常!)。
我已经提到过的神经网络只保留近似值的当前“状态”,它会随着学习的发生而更新。神经网络不是记住发生了什么以及如何对它做出反应,而是建立一种他们“世界”的“模型”。该模型告诉他们如何对某些输入做出反应,即使这些输入是它以前从未见过的。
最后一项能力 - 对以前从未见过的输入做出反应的能力 - 是许多机器学习算法的核心原则之一。想象一下,试图教计算机驾驶员在交通拥堵的高速公路上导航。使用您的“数据库”比喻,您必须准确地教计算机在 数百万 种可能的情况下该做什么。一个有效的机器学习算法将(希望!)能够学习不同状态之间的相似性并对它们做出类似的反应。
状态之间的相似之处可以是任何东西——即使是我们可能认为“平凡”的东西也可能真的让计算机出错!例如,假设计算机驾驶员了解到,当它前面的汽车减速时,它必须减速到。对于人类来说,用摩托车代替汽车并不会改变任何事情——我们认识到摩托车也是一种交通工具。对于机器学习算法,这实际上可能非常困难!数据库必须分别存储关于汽车在前面和摩托车在前面的情况的信息。另一方面,机器学习算法将从汽车示例中“学习”并能够自动推广到摩托车示例。
【讨论】:
你的解释真的很有价值,值得赞赏。您能否详细说明“计算机”驱动程序的示例(关于您的陈述-“学习不同状态之间的相似性”)? 很好的例子。感谢您为解释所做的努力。非常感谢! 为什么“KNN”或“K 表示”属于机器学习。你能解释一下吗。谢谢【参考方案2】:机器学习是计算机科学、概率论和优化理论的一个领域,它允许解决复杂的任务,而逻辑/程序方法是不可能或不可行的。
机器学习有几种不同的类别,包括(但不限于):
监督学习 强化学习监督学习 在监督学习中,你有一些从输入到输出的非常复杂的函数(映射),你有很多输入/输出对的例子,但你不知道那个复杂的函数是什么。在给定大量输入/输出对的数据集的情况下,监督学习算法可以预测一些您以前可能没有见过的新输入值的输出值。基本方法是将数据集分解为训练集和测试集。您有一些具有相关误差函数的模型,您尝试在训练集上将其最小化,然后确保您的解决方案适用于测试集。一旦您使用不同的机器学习算法和/或参数重复此操作,直到模型在测试集上表现得相当好,您就可以尝试在新输入上使用结果。请注意,在这种情况下,程序不会改变,只有模型(数据)会改变。虽然理论上可以输出一个不同的程序,但据我所知,这在实践中并没有做到。监督学习的一个例子是邮局使用的数字识别系统,它使用大量手工标记为 0 的数字图片将像素映射到集合 0...9 中的标签...9.
强化学习 在强化学习中,程序负责做出决策,并定期因其行为而获得某种奖励/效用。然而,与监督学习不同的是,结果不是立竿见影的。该算法可以规定大量的动作序列,并且只在最后收到反馈。在强化学习中,目标是建立一个好的模型,以便算法生成一系列决策,从而获得最高的长期效用/回报。强化学习的一个很好的例子是教机器人如何导航,只要它的碰撞传感器检测到它撞到了一个物体,就会给出一个负惩罚。如果编码正确,机器人最终有可能将其测距仪传感器数据与其保险杠传感器数据以及发送到车轮的方向相关联,并最终选择一种不会撞到物体的导航形式。
更多信息 如果您有兴趣了解更多信息,我强烈建议您阅读Pattern Recognition and Machine Learning by Christopher M. Bishop 或参加机器学习课程。您可能也有兴趣免费阅读lecture notes from CIS 520: Machine Learning at Penn。
【讨论】:
您提到“......逻辑/程序方法是不可能或不可行的。”你能用例子详细说明一下吗?谢谢。 @LionHeart,一个很好的例子是字符识别。你可以尝试编写一个算法来识别各种曲线、线条和各种字符的其他特征,但归根结底,这是一项非常艰巨的任务,而 ML 可以很简单地解决它。【参考方案3】:机器学习是一种基于样本数据创建模型并使用该模型做出预测或策略的方法。属于人工智能。
【讨论】:
【参考方案4】:机器学习是一门科学学科,它关注算法的设计和开发,使计算机能够根据经验数据(例如来自传感器数据或数据库的数据)演化行为。阅读更多关于Wikipedia
机器学习代码在某种存储中记录“事实”或近似值,并通过算法计算不同的概率。
机器学习时不会修改代码本身,只会修改“它知道”的数据库。
【讨论】:
机器学习不需要数据库。它也不总是记录“事实”。有些事情是猜想。有些东西是近似值。并非机器学习的所有内容都可以被视为事实。 您仍将答案限制在机器学习的特定区域。事实或近似值并不总是被记录下来。事物可以被体验、反应和遗忘。 “存储”不是机器学习的主要内容。它可以使用,但不是必需的。 如果机器学习程序存储了它学到的数据,那么程序就没有意义了……我们只需要查询数据本身。大多数 ML 程序只创建数据模型,因为数据集可能非常大(几 GB),我们希望程序对看不见的数据集具有预测能力。 ML 程序几乎没有理由存储数据。【参考方案5】:机器学习只是一个通用术语,用于定义从示例(未标记/标记)中产生准学习的各种学习算法。实际准确度/误差完全取决于您提供给学习算法的训练/测试数据的质量。这可以使用收敛速度来衡量。您提供示例的原因是因为您希望您选择的学习算法能够通过指导进行概括性的信息化。这些算法可以分为监督学习(分类)和无监督学习(聚类)技术两个主要领域。对计划如何分离训练和测试数据集以及为学习算法提供的质量做出明智的决定非常重要。当您提供数据集时,您还需要注意诸如过度拟合和保持示例中的健康偏见之类的事情。然后,该算法基本上根据从您提供给它的数据中获得的泛化来学习写入,然后在过程中进行测试,您尝试让您的学习算法根据您的目标训练产生新的示例。在聚类中,几乎没有信息指导,该算法基本上试图通过测量数据之间的模式来构建相关的聚类集,例如 kmeans/最近邻。
一些好书: 机器学习简介(尼尔森/斯坦福), 机器学习的高斯过程, 机器学习简介(Alpaydin), 信息论推理和学习算法(非常有用的书), 机器学习(米切尔), 模式识别和机器学习(爱丁堡和各种大学的标准 ML 课程书,但相对大量的数学阅读), 使用 Weka 进行数据挖掘和实用机器学习(通过使用 weka 的理论和 Java 中的实践进行工作)
强化学习有一本免费的在线书籍,您可以阅读: http://www.cs.ualberta.ca/~sutton/book/ebook/the-book.html
IR、IE、推荐器和文本/数据/Web 挖掘通常使用大量机器学习原理。您甚至可以在这里应用元启发式/全局优化技术来进一步自动化您的学习过程。例如,应用像 GA(遗传算法)这样的进化技术来优化基于神经网络的方法(可能使用一些学习算法)。您可以纯粹以概率机器学习方法的形式来处理它,例如贝叶斯学习。这些算法中的大多数都大量使用了统计数据。收敛和泛化的概念对于许多这些学习算法都很重要。
【讨论】:
【参考方案6】:机器学习是计算科学中的一门研究,通过从类似信息的训练中学习模式,制作能够对以前从未见过的信息进行分类的算法。在这个意义上,有各种各样的“学习者”。神经网络、贝叶斯网络、决策树、k 聚类算法、隐马尔可夫模型和支持向量机就是示例。
根据学习者,他们各自以不同的方式学习。一些学习器产生人类可以理解的框架(例如决策树),而另一些则通常是难以理解的(例如神经网络)。
学习者本质上都是数据驱动的,这意味着他们将自己的状态保存为数据以供以后重复使用。至少在一般情况下,它们本身不会自我修改。
【讨论】:
【参考方案7】:我认为我读过的最酷的机器学习定义之一来自 Tom Mitchell 的这本书。易于记忆和直观。
如果一个计算机程序在某类任务 T 和性能度量 P 方面从经验 E 中学习,如果它在 T 中的任务上的性能(由 P 度量)随着经验 E 而提高
【讨论】:
我一直讨厌这个定义被重复,甚至被教导,尽管它不必要地使用了符号。更简单,更好:如果计算机程序在这些任务中的性能,就某些性能度量而言,随着经验的提高而提高,则可以说计算机程序可以从有关某类任务的经验中学习。现在让我们再简化一些。A computer program is said to learn in the context of performing a task if its performance with respect to some measure improves with experience.
我从事机器学习已经有大约一年的时间了,即使在今天,我也必须阅读它几次才能理解它的确切含义。我想知道我是坏人还是它的定义。【参考方案8】:
无耻地从 Wikipedia 中摘录:机器学习是一门科学学科,它关注算法的设计和开发,使计算机能够根据经验数据(例如来自传感器数据或数据库的数据)演化行为。
很简单,机器学习代码完成了机器学习任务。从解释传感器数据到遗传算法,这可能是很多事情。
我会说这取决于。不,修改代码是不正常的,但并非不可能。我也不会说机器学习总是会改变历史。有时我们没有历史可以借鉴。有时我们只是想对环境做出反应,而不是真正从过去的经验中学习。
基本上,机器学习是一门非常开放的学科,其中包含许多方法和算法,因此您的第三个问题不可能有 1 个答案。
【讨论】:
【参考方案9】:机器学习是一个取自一个人的现实世界的术语,并应用于实际上无法学习的东西——机器。
补充其他答案 - 机器学习不会(通常)更改代码,但它可能会根据以前的数据或新收集的数据更改其执行路径和决策,从而产生“学习”效果。
有很多方法可以“教”一台机器——你给算法的许多参数赋予权重,然后让机器解决很多情况,每次你给她一个关于答案的反馈,机器就会调整根据机器答案与您的答案的接近程度或根据您给出的答案的分数,或根据某些结果测试算法来加权。
这是一种学习方式,还有更多...
【讨论】:
以上是关于什么是机器学习? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章