为什么搜索在 AI 中很重要?人工智能中使用了哪些搜索算法?他们如何改善人工智能的结果?
为什么搜索在 AI 中很重要?
状态空间搜索是一种普遍且普遍的 AI 活动,包括数值优化(例如,通过实值搜索空间中的梯度下降)作为特例。
状态空间搜索是一种抽象,可以通过三个成分针对特定问题进行定制:
问题的候选解决方案的一些表示(例如,城市排列以表示旅行商问题 (TSP) 旅游,数字问题的实值向量)。
解决方案质量度量:即确定两个解决方案中哪一个更好的一些方法。这通常是通过具有解决方案的一些整数或实值函数(例如,TSP 旅行的总距离)来实现的(对于单目标问题)。
以启发式的方式在可能的解决方案空间中移动的一些方法。如果可用,可以使用导数,或者(例如,对于黑盒问题或离散解表示)可以使用遗传算法/进化计算所青睐的变异或交叉方法。
免费提供的“元启发式基础知识”的前几章给出了很好的概述,而 Michalewicz 和 Fogel 的“如何解决它 - 现代启发式”更详细地解释了如何根据状态空间考虑数值优化。
“寻找可能的计划”将如何进行?我们的想法是为规划问题选择上述所有 3 个,然后应用一些元启发式算法(例如模拟退火、禁忌搜索、遗传算法等)。显然,对于非平凡的问题,实际上只探索了“所有可能的计划”空间的一小部分。
CAVEAT:实际上规划(与绝大多数其他可用于状态空间搜索的问题,如调度、打包、路由等相比)是一种特殊情况,因为有时可以简单地通过使用来解决规划问题A* 搜索,而不是使用随机元启发式搜索。
搜索一直以多种方式成为人工智能的关键要素。首先,许多人所说的“搜索”反映了我们所谓的“智能”如何经常涉及搜索:物理领域,可能解决方案的“状态空间”,想法/事实/的“知识空间”概念/等 作为图结构等相关。
查找一些关于计算机国际象棋的旧论文,您会发现其中很多都涉及搜索“状态空间”。因此,高效的搜索算法(在时间复杂度和/或空间复杂度方面)对于在那里取得进展一直很重要。虽然计算机国际象棋只是一个例子,但该原理可以推广到许多其他类型的问题解决和目标寻求活动。
这是一个参考资料,它更多地解释了其中一些想法。
还要注意,“搜索”在一个重要方面与“启发式”的概念密切相关。现实世界中的许多搜索问题都过于复杂,无法通过详尽的蛮力搜索来解决,因此人类(和 AI)诉诸启发式方法来缩小被搜索的状态空间。使用启发式算法可以产生允许在现实时间范围内合理解决方案的搜索算法,而没有简单的确定性算法可以这样做。
对于更多背景知识,您可能需要阅读A* 搜索,这是一种广泛使用的算法,具有许多应用程序 - 而不仅仅是在 AI 中。
在人工智能中应用你可以称之为“搜索”的另一个主要方面是通过使用通常也被称为“优化”技术的算法。这可能是爬山、梯度下降、模拟退火,甚至可能是遗传算法。这些用于最大化或最小化某些函数的值,人工智能中的典型用途之一是使用反向传播训练神经网络,在这种情况下,您试图最小化“正确”答案之间的差异(来自训练数据) 和生成的答案,因此您可以在网络中学习正确的权重。
关于您提到的问题(在 OP 的评论中),这些搜索与优化有关。我不确定你的背景,所以让我从头开始简单描述一下:
还记得导数吗?基本思想是讨论函数如何随着输入的变化而变化。所以现在,我们高中毕业了,我们正在构建神经网络。我们已经完成了基本的编码,想看看我们的模型是如何工作的。从我们的统计类回来,我们记得我们使用某种误差度量(例如最小二乘)来确定该类模型的功效,因此我们决定在这里使用它。我们得到了这个错误,它对我们的喜好来说有点太大了,所以我们决定摆弄我们的模型并调整权重来降低这个错误。但是怎么做?
这就是“搜索”发挥作用的地方。这实际上是在寻找最好的权重放在我们网络的边缘以优化它。我们使用导数(以一些奇特的方式,使用“随机抽样”(认为随机抽样)和问题提到的其他方式)来搜索在我们的权重的高维空间中哪种方式“向下”。换句话说,我们正在寻找的是优化我们的神经网络的最小值或最大值,我们通过做一个导数来“搜索”它,它告诉我们要走哪条路,朝那个方向移动一点,然后再做一次,然后再次迭代地找到(希望)最好的权重。
此处的此视频详细介绍了您想要的所有细节,我推荐整个系列作为对神经网络的强大但易于理解的介绍:Demystifying Neural Networks
去查找“梯度下降”以获取任何相关材料。(注意,这里的梯度相当于多维导数方向进去,而下降只是寻找最小值)
搜索之所以重要,至少有两个原因。
首先,搜索是高级机器学习的早期和主要消费者之一,因为为搜索查询找到正确的结果归结为预测查询结果组合的点击率。更相关的结果意味着更多的点击次数、更多的流量和更多的收入。
其次,许多规划和优化问题可以重铸为搜索问题。决定通过网络路由包裹的计划的人工智能正在搜索可能的计划空间以寻找一个好的计划。