根据 Tom Mitchells 的定义,演绎、遗传编程、PCA 或聚类机器学习是什么?

数据挖掘 机器学习 聚类 主成分分析 遗传算法
2022-02-23 01:56:01

Tom M. Mitchell 将机器学习定义为

如果计算机程序在 T 中的任务上的性能(由 P 衡量)随着经验 E 而提高,则称计算机程序从经验 E 中学习某类任务 T 和性能度量 P。

对于一些通常算作机器学习领域的算法,我严重怀疑它们是不是按照定义学习算法。有趣的是,它们都是 Tom Mitchell 的《机器学习》一书的一部分。

扣除

“象征主义部落”根据佩德罗·多明戈斯(Pedro Domingos)使用逆向演绎(参见ML 的 5 个部落)。虽然我不太确定什么是反向演绎,但拥有一组真实陈述和推理规则(如Modus Ponens)来创建更多/其他真实陈述的想法很明确。

下定义:这里的经验是什么?如何衡量绩效?典型的任务是什么样的?

遗传编程

来自维基百科:

遗传编程 (GP) 是一种技术,其中计算机程序被编码为一组基因,然后使用进化算法(通常是遗传算法,“GA”)对其进行修改(进化)。

在这种情况下有什么经验?也许是“迭代”/“时代”?(我不确定术语)

任务:遗传编程的典型用例是什么?

主成分分析

PCA 和其他一些降维算法在某种程度上是“固定的”。该算法不会随着更多数据而改变。它没有参数。考虑到这一点,有人可能会争辩说,它使用更多数据以更好的方式估计预测。

但后来:什么更好?这里的性能度量 P 是什么?

聚类

我没有看到集群的明确性能度量(例如k-means)。另外,我能看到的唯一一种体验就是样本的数量。

2个回答

不久前,在向其他领域的专家介绍 ML 基础知识时,我还研究了正式定义;米切尔的似乎是最官方/最突出的用法。但是,我发现这种解释也可能有些主观。此外,机器学习、深度学习、人工智能和统计学之间的界限通常在各个应用领域有时会变得有些模糊——这些术语也经常被滥用并用作流行语(就像大数据一样)。我认为最大的困难可能是对 Mitchell 引入的每个术语的解释:经验 (E)、任务 (T) 和绩效 (P)。

也许值得牢记机器学习的另一个定义(我目前最喜欢的);Kevin Murphy 的《机器学习:概率方法》一书(第 1 页):

...我们将机器学习定义为一组可以自动检测数据中的模式的方法,然后使用发现的模式来预测未来的数据,或者在不确定的情况下执行其他类型的决策(例如计划如何收集更多数据!)。

这当然要广泛得多,并且可能有助于接受更大的日常工具箱作为机器学习,而不是严格的限制。


出于这些原因,我想说我下面的答案更多的是讨论而不是事实答案。

我很乐意得到拥有更明智意见或事实的读者的纠正! :-)


倒扣

在你列出的例子中,我最不熟悉倒推米切尔本人(在他的书的第 10.6 节)和这篇有用的 Quora 帖子描述了它,在逻辑上等同于归纳后一个链接包括一段描述这种象征主义方法的段落,这使得更类似于现代联结主义方法的人可以很容易地理解这个想法:

最成功的符号 AI 形式是专家系统,它使用生产规则网络。产生式规则以类似于 If-Then 语句的关系连接符号。专家系统使用人类可读的符号处理规则以进行推断并确定它需要哪些附加信息,即要问什么问题。

在这一点上,它帮助我区分了数学归纳和数学演绎上面的引用听起来有点像专家设计的推荐系统。鉴于推论意味着从公理或已知事实中引用一个普遍假设(我想是福尔摩斯!),我们从一些来自经验的规则开始(而不是从数据开始)。倒推的想法是我们有一些观察,可以归纳支持数据/观察的关系/规则,我们可以从中改进我们的系统。我们认为这比纯数学推论弱,而且起点与 Mitchell 自己对机器学习的定义不同,但如果机器学习是一个迭代循环,那么我们在该循环中的起点是否对定义至关重要?

将倒置演绎置于机器学习 问题的框架中(根据我们对 T、E 和 P 的定义),我们有 Mitchell 的以下定义来提供帮助:

... 像往常一样假设训练数据 D 是一组训练样例,每个样例的形式为这里表示第训练实例,表示其目标值。那么学习就是发现一个假设的问题,使得每个训练实例的分类的描述和系统已知的任何其他背景知识 B演绎而来。xi,f(xi)xiithf(xi)hf(xi)xihxi

他明确写道,任务是提取解释整个系统的假设(目标函数)规则。经验是观察结果加上背景知识(包括创建/定义规则的专家的经验)。性能仍然是最终规则集的准确性或强度。尤其是将经验解释为数据以及专家/背景知识,这与简单的观察略有不同。

作为一个便利:归纳允许我们做出关于关系的陈述,将输入映射到我们观察的已知范围内的输出,但它不像演绎那样无懈可击,根据定义,它必须是一个普遍的真理(因此成为一个定理)。这使得归纳听起来很像机器学习(因此是反向演绎!)——就像神经网络很好地学习关系一样,但只是在它们的输入域上,即不是普遍的。

遗传编程

直截了当,我会说这确实属于给定定义的机器学习。对模型执行预定义任务的能力进行迭代评估,然后使用进一步的训练数据来提高该任务的性能。

给定允许许多模型训练的通常方法,然后选择最佳模型并允许它们以某种方式融合(相当于生物繁殖中的基因异花授粉)。生成的子模型随后将(希望)包含两个最佳父模型的最佳特征。就像生物学中的情况一样,或者在强化学习和探索步骤中(而不是利用),由此产生的子模型也以突变的形式散布着一点运气/随机性这是一篇总结文章由此产生的子模型很可能是退化的,即性能不如父模型。

OP:在这种情况下有什么经验?也许是“迭代”/“时代”?

鉴于上述粗略描述,我将训练案例称为合并步骤(育种和变异:生成子模型)之间完成的所有工作。这也类似于元学习中使用的范式(来自 Ilya Sutskever 的精彩讲座),其中任务被定义为样本数据集,加上有关任务本身的信息。这是受到允许算法“学会学习”的想法的启发。对我来说,这非常接近遗传算法和进化模型的想法。

主成分分析

我不相信 PCA 属于机器学习算法。然而,这是一种常用的预处理方法,如果没有在任何机器学习书籍中提及,我会感到惊讶。

如果我必须强制 PCA 进入 Mitchell 的定义,这将是我最好的选择:任务 T 将只是 PCA 的任务;来降低数据集的维数。性能指标,P;个主成分中包含的方差百分比- 例如,只需修复,并使用越来越多的数据运行算法。更多的数据将允许更准确地执行此操作,即具有更高的置信水平,并且应该更密集地描述方差是更密集的输入点集。因此,假设 P 由下式给出:kk=3

P=i=1kCi

例如,其中并且主成分的归一化系数。积分为 1 k=3Ciithk

如果在添加更多数据后 P 的值实际上降低了,我可能会争辩说,我们实际上已经更多地了解了具有额外数​​据的样本分布,即使我们的性能指标在技术上表明结果更差。

尽管试图将 PCA 硬塞进定义中——我仍然对称这种机器学习感到不安(见我结论中的第二段)。

聚类

我同意你的观点,唯一真实的经验是样本的数量。为了增加任何疑问,聚类(如 PCA)是一种无监督的方法 - 数据上通常没有标签。

如果经验 E 是数据点的数量,那么度量 P 将是测量的固有误差,用于迭代地改进聚类结果。例如,在 KNN 的情况下,它可能是一个簇与不同簇的点之间的平方距离之和。允许模型使用额外的数据点进行训练(假设能够过拟合),它不会为 P 产生更差的值:相同或更好。

在我看来,聚类被包含在许多机器学习书籍中,并不是因为它很好地符合 Mitchell 的定义,而是因为它是一种广泛使用且非常有用的工具。话虽如此,它也可以在非参数设置中使用,例如使用 Dirichlet 过程作为先验,并允许集群的数量随着提供更多数据而增长。我发现这个想法更容易融入 Mitchell 的模型概念,即在有更多经验的情况下改进指标!

事实上,聚类确实被定义为无监督学习,即没有任何样本标签,这让我觉得这里的想法更有趣。


结论

我同意@Anony-Mousse 的观点,因为 PCA 和聚类确实不会给人一种学习算法的印象。我认为这是因为我将统计学习与人类学习混为一谈。围绕机器学习和人工智能的一般讨论倾向于使用拟人化:例如“AlphaZero 从零开始学习如何玩各种 Atari 游戏”......如果我们用AliceBob替换 AlphaZero ,很明显我们在谈论的是人类。这种描述算法的方式泄漏到了 PCA 和聚类等方法中——人们说 PCA 是如何学习的尽管我们很难将 Mitchell 对机器学习的定义与 PCA 保持一致,但我们仍然可以表示数据中的方差。在机器和深度学习的爆炸式增长之后。2012 年,我们看到仍有许多无可争议的术语在流传——这对于一个快速发展的领域来说是不可避免的。

为了解决对 Anony-Mousse 回答的评论中的问题:Arthur Samuel 创造了机器学习一词,作为无需明确编程即可学习的计算机。在这里,在其原始上下文中,我相信它意味着像人类一样学习,即展示智能的使用(从这篇好文章中的引文转述)。人类从观察中学到很多东西,即使不知道正确答案(没有标签的情况)。鉴于此,并与无监督学习进行直接比较,有人可能会争辩说,机器能够改进某些指标的任何过程确实是一台学习机器。因此,以聚类为例,它就是学习,因为它改进了指标并获得了对数据的新见解(没有标签)。在 PCA 的情况下,度量标准是不明确的 - 它必须来自手头任务的结果的有用性:美丽是旁观者的眼睛。

归根结底,这对我来说无所谓,只要我们知道我们在说什么,并且能够在研究和应用上取得进展。我唯一担心的是,这种混乱使这门学科的教学变得更加困难,并提高了新手的入门门槛,他们不得不处理有时相互矛盾的术语。

有些人喜欢将任何使用数据的东西称为“学习”。

在当今的炒作周期世界中,任何人工智能、机器学习、数据科学或深度学习都比看起来像 1970 年代或 1980 年代的“数学优化”要好得多。

我不是这个的忠实粉丝。它只是添加了更多无法很好区分的术语。

我建议仅当您有“输入”和“所需输出”(例如类标签)时才使用术语“学习”。像 PCA 和 k-means 这样的方法就不是“学习”了。