机器学习中有没有只使用分析算法来解决问题的领域?

人工智能 机器学习 数学 线性回归 数值算法
2021-11-14 03:57:50

我知道机器学习中的大多数算法都使用数据集,并且在给出一些示例的情况下,学习以迭代的方式发生。这些例子也可以理解为强化学习情况下的经验。

考虑以下来自深度学习书的数值计算章节

机器学习算法通常需要大量的数值计算。这通常是指通过迭代过程更新解的估计的方法来解决数学问题的算法,而不是通过分析推导公式以提供正确解的符号表达式。常见的操作包括优化(找到最小化或最大化函数的参数的值)和求解线性方程组。当函数涉及实数时,即使只是在数字计算机上评估数学函数也可能很困难,而实数无法使用有限的内存来精确表示。

我想知道机器学习中是否有任何领域可以通过分析而不是计算量大的迭代算法来解决问题?

3个回答

在某些情况下,您可以使用分析(或封闭形式)解决方案/表达式来解决线性回归问题(尽管这可能并不总是最好的方法)。有关更多详细信息,请参阅此答案

请注意,此解决方案涉及矩阵乘法和浮点数的逆计算,因此这仍然是一个数值算法/问题。如果在后台计算矩阵的逆或使用迭代算法执行矩阵乘法,我们也可以将此解决方案视为迭代算法,但是从高级的角度来看,这是一种分析(非迭代)方法.

荣誉奖:基于记忆的方法

虽然不是分析性的,基于记忆的模型,例如k-最近邻 (k-NN),在学习时非常轻量级,但使用存储的知识的成本更高。

尽管 k-NN 模型进行推理的速度很慢,但所涉及的计算并不复杂或迭代。它对所有数据进行一次遍历,只保留与它预测输出的示例最接近的 k 个示例,然后在 k 个最接近匹配的列表上执行一个简单的聚合函数(例如加权平均值)。

知识库和推理引擎

如果基于逻辑的系统能够接受新的陈述,则可以将其视为学习系统。这可能是在运行时,或者您可以将训练过程视为将新的逻辑规则添加到长期存储中。无论哪种方式,系统都是通过添加新规则来学习的,而不是通过直接观察任何东西,或者通过使用输入/输出对来学习。不过,理论上可以使用其他 AI 方法编写适配器来提供知识库。

这是 LISP 编程语言的经典用法。例如,您可以构建一个推理引擎,并将事实作为 LISP 语句传授给它。每次添加事实时,引擎都能够推断出更多关于它正在使用的域的信息。在某些方面,这类似于 k-NN 方法,因为所有事实都被存储,并且推理阶段的计算成本更高。

基于谓词逻辑的学习系统的主要问题是它们很脆弱,不能轻易处理不确定性。用于修补的方法包括将不确定性如何作为一组事实进行编码(参见 CYC),或者从某种形式的模糊逻辑作为系统的核心部分开始。

您不会使用它来处理音频或图像输入,至少不会直接使用。然而,诸如可解释的 AI 之类的东西也有一些优势——推理引擎总是可以一步一步地解释它是如何得出答案的。

除了其他答案,我想提一下深度学习社区中有一个分支,它试图通过解决一些更简单的问题来获得对一般问题的直觉。

处理真实世界数据的主要复杂性在于它不具备简单的分析描述。来自 ImageNet 或 MNIST 的数据属于非平凡流形上的复杂分布,这与高斯或任何其他常见分布有很大不同。

深度神经网络是数据和模型权重的复杂非线性函数,因此通常不会期望得到封闭形式的解决方案。

但是,当动态简化很多时,存在限制。

平均场域

对于单个隐藏层和无限数量的隐藏单元的情况,人们从特定权重的动态切换到权重分布的动态。另外让学习率η0.

离散优化被 PDE 的不断演变所取代。这里给出了这种处理的一个例子:

https://www.pnas.org/content/pnas/115/33/E7665.full.pdf

NTK制度

对于具有特定参数化的无限宽网络https://arxiv.org/abs/1806.07572 - 模型输出的演变由具有固定内核的特定微分方程给出。

本文给出了一个使用损失函数的 NTK 方法估计收敛的示例,具体取决于目标函数的平滑度:

https://arxiv.org/abs/2105.00507