跳转到内容

人工智能/定义

来自维基教科书,开放世界中的开放书籍

在过去的几年里,你可能已经接触过“人工智能”这个词,并将其想象成外星生物或机器人的生动体现。但是,人工智能究竟是什么呢?在本节中,我们将探讨“人工智能”一词的含义和语义。

人工智能是寻找一种方法,将智能映射到机械硬件中,并为该系统提供一个结构来形式化思想。目前还没有关于人工智能究竟是什么的正式定义。在本节的讨论过程中,我们将尝试构建一个可行的定义,推理和阐述来自该领域其他作者和实践者的各种观点和偏好。首先,我们将考虑“人工智能”中的“人工”和“智能”这两个词作为灵感的主要来源,并以此为基础,提出以下简要描述:

人工智能是对人类智能的研究,以便能够人工复制它。

在对该概念进行初步的正式声明后,我们将逐步探讨它的不同语义,并尝试为 AI 探索一个更广泛的定义。在他们的著作《人工智能:一种现代方法》中,作者拉塞尔和诺维格试图根据其他作者对 AI 的评论,将该领域的定义明确地划分为不同的类别。对于以下这些系统的概念划分符合这些条款:

  • 思考和行动像人类一样(专注于推理和人类框架)
  • 理性思考和行动(专注于推理和对智能的一般概念)
  • 学习新的概念和任务

因此,人们可能会倾向于改进上面给出的定义,将这些事实纳入考虑范围,以便最终得到的定义表明:

人工智能是对人类智能和行动的人工复制研究,使得最终结果对其设计具有合理的理性水平。

什么是 AI?

[编辑 | 编辑源代码]

关于人工智能是什么,有很多定义。

我们最终得到四个可能的目标:

  1. 思考像人类一样的系统(专注于推理和人类框架)
  2. 理性思考的系统(专注于推理和对智能的一般概念)
  3. 行动像人类一样的系统(专注于行为和人类框架)
  4. 理性行动的系统(专注于行为和对智能的一般概念)

什么是理性 -> 简单地说,就是“做正确的事情”。

定义

对于(1):“创造能够执行人类执行时需要智能的功能的机器的艺术”(库兹韦尔)。这涉及认知建模 - 我们必须确定人类在字面意义上是如何思考的(解释人类思维的内部运作机制,这需要实验检查或心理测试)。

对于(2):“GPS - 通用问题解决器”(纽厄尔和西蒙)。它处理“正确思考”并深入逻辑领域。它利用逻辑来表示世界和世界中物体之间的关系,并得出关于世界的结论。问题:难以将非正式知识编码成形式逻辑系统,而且定理证明器有局限性(如果给定的逻辑符号没有解决方案)。

对于(3):图灵将智能行为定义为能够在所有认知任务中达到人类水平的性能,足以欺骗一个人类(图灵测试)。必须避免与机器的物理接触,因为物理外观与展示智能无关。然而,“完整图灵测试”包含外观,包括视觉输入和机器人技术。

对于(4):理性主体 - 在给定的信念下实现目标。这种方法没有专注于人类,而是更具一般性,专注于主体(感知和行动)。它比严格的逻辑方法更具一般性(即理性思考)。

强 AI vs. 弱 AI

[编辑 | 编辑源代码]
  • 强 AI = 基于机器的人工智能,能够真正推理并变得具有自我意识(有感知),无论是像人类一样(像人类思维一样思考和推理)还是不像人类一样(不同形式的感知和推理) - 由约翰·塞尔提出:“一个经过适当编程的计算机就是一个心智”(参见中文房间实验)。
  • 弱 AI = 基于机器的人工智能,能够在一个有限的领域内进行推理和解决问题。因此,它就像在该领域中具有智能一样,但不会真正具有智能或感知。

图灵测试

[编辑 | 编辑源代码]

一位人类评判员与另外两位参与者进行自然语言对话,其中一位是人类,另一位是机器;如果评判员无法可靠地分辨出两者,那么该机器就被认为通过了测试。假定人类和机器都试图表现得像人类。

反对意见

[编辑 | 编辑源代码]
  1. 机器可以通过测试模拟人类行为,但这可能被认为比智能弱得多 - 机器可能只是遵循一组精心设计的规则。图灵反驳说,也许人类思维也只是一直遵循一组精心设计的规则。
  2. 机器可以是智能的,但不能与人类进行对话
  3. 许多人类可能会无法通过此测试,例如文盲或没有经验的人(例如儿童)。

中文房间实验

[编辑 | 编辑源代码]

试图驳斥“强 AI”的说法。塞尔反对认为人类思维就是一个计算机,因此任何经过适当构造的计算机程序也可能是一个心智的观点。

一个不会说中文的人坐在一个房间里,通过一个缝隙递给他写有中文符号的纸张。他可以访问一个手册,其中包含一套关于如何对这种输入做出响应的全面规则。塞尔认为,即使他能够正确地回答,他也不理解中文;他只是遵循句法规则,并没有接触到它们的含义。塞尔认为,“心智”源于大脑功能,但不仅仅是一个“计算机程序” - 它需要意向性意识主观性心理因果关系

心身问题

[编辑 | 编辑源代码]

这个问题探讨了心理生理事件之间的关系。假设我决定站起来。我的决定可以被视为一个心理事件。现在,我的大脑发生了某些事情(神经元发射、化学物质流动,等等),这可以被视为一个可以测量的生理事件。那么,"心理"的东西如何能够导致"生理"的东西呢?因此,很难说两者是完全不同的东西。人们可以继续认为这些心理事件实际上是生理事件:我的决定就是神经元发射,但我没有意识到这一点——我觉得自己是在独立于生理现象的情况下做出了决定。当然,反过来也行得通:所有生理事件实际上都可能是心理事件。当我做出决定(心理事件)后站起来时,我并没有在生理上站起来,而是我的行为在我的大脑以及旁观者的脑海中引起了心理事件——物理现实是一种幻觉。

框架问题

[编辑 | 编辑源代码]

问题是如何确定在不断变化的环境中哪些东西保持不变。

问题解决

[编辑 | 编辑源代码]

当生物体或人工智能处于某个当前状态,并且不知道如何继续操作才能达到所需的目标状态时就会发生这种情况。这被认为是一个可以通过想出一个行动序列来解决的问题,这些行动序列导致目标状态(“解决”)。

总的来说,搜索是一种算法,它以问题为输入,从搜索空间中返回一个解决方案。搜索空间是所有可能的解决方案的集合。我们处理了很多所谓的“状态空间搜索”,其中问题是在状态空间中找到目标状态或从某个初始状态到目标状态的路径。状态空间是状态、它们之间的弧线以及非空起始状态集和目标状态集的集合。将搜索视为构建搜索树很有帮助——从任何给定的节点(状态):我有哪些选择可以继续前进(朝向目标),最终到达目标。

[编辑 | 编辑源代码]

无信息搜索(盲目搜索)没有关于从当前状态到目标状态的步骤数量或路径成本的信息。它们只能区分目标状态和非目标状态。没有偏差去朝向目标。

对于搜索算法,开放列表通常表示尚未探索的节点集,封闭列表表示已经探索过的节点集。

  1. 广度优先搜索
    • 从根节点开始,探索所有相邻节点,并对所有这些节点重复此操作(在每次迭代中将搜索树的“深度”扩展一个)。这在FIFO队列中实现。因此,它会进行穷举搜索,直到找到一个目标。
    • BFS完整的(即,如果存在目标,并且分支因子是有限的,它将找到目标)。
    • 它是最优的(即,如果它找到了节点,它将是搜索树中最浅的)。
    • 空间:
    • 时间:
  2. 深度优先搜索
    • 探索一条路径到最深层,然后回溯,直到找到目标状态。这在LIFO队列(即堆栈)中实现。
    • DFS完整的(如果搜索树是有限的)并且不完整的(如果搜索树是无限的)。
    • 不是最优的(它在找到第一个目标状态时停止,无论是否存在比该目标状态更浅的目标状态)。
    • 空间: (远低于BFS)。
    • 时间: (如果存在于低于树的最大深度的层级上的解决方案,则高于BFS)。
    • 可能出现内存不足或无限树无限运行的危险。
  3. 深度受限搜索 / 迭代加深
    • 为了避免这种情况,DFS的搜索深度可以限制为一个常数值,或者随着时间的推移迭代地增加,逐渐增加应用它的最大深度。重复此操作,直到找到一个目标。结合了DFSBFS的优点。
    • ID是完整的。
    • 它是最优的(最浅的目标状态将首先被找到,因为级别在每次迭代中都会增加一个)。
    • 空间: (优于DFS,d是最浅目标状态的深度,而不是m,整个树的最大深度)。
    • 时间:.
  4. 双向搜索
    • 从初始状态向前搜索树,从目标状态向后搜索树,当它们在中间相遇时停止。
    • 它是完整的并且是最优的。
    • 空间:.
    • 时间: .
[编辑 | 编辑源代码]

启发式搜索中,一个启发式被用作指导,它可以帮助我们在到达目标状态时获得更好的整体性能。与盲目地一次探索搜索树中的一个节点不同,我们将根据某个评估函数 来对我们可能去的节点进行排序,该函数决定哪个节点可能是“最优”的下一个节点。然后展开该节点并重复该过程(即最佳优先搜索)。A* 搜索最佳优先搜索的一种形式。为了将搜索引导到目标,评估函数必须包含对从给定状态到达最接近目标状态的成本的估计。这可以基于对问题领域的了解、当前节点的描述以及到达当前节点的搜索成本。最佳优先搜索通过首先扩展最有希望的节点来优化深度优先搜索。通过优先队列实现对当前最佳候选人的高效选择。

  1. 贪婪搜索:
    • 最小化到达目标的估计成本。根据最接近目标的节点总是首先被展开。它优化了局部搜索,但不总是能找到全局最优解。
    • 它不完整(可能会进入树的无限分支)。
    • 它不是最优的。
    • 空间: ,对于最坏情况。
    • 时间也是如此,但可以通过选择好的启发式函数来减少。
  2. A* 搜索:
    • 结合了一致代价搜索(即展开到目前为止成本最低的路径上的节点)和贪婪搜索。评估函数是(或通过节点 n 的最便宜解决方案的估计成本)。可以证明,如果容许的 - 也就是说,如果它从不高估到达目标的成本。这是乐观的,因为他们认为解决问题的成本低于实际成本。
    • 的示例
      • 在地图中的路径查找:直线距离。
      • 8 数码难题:曼哈顿距离到目标状态。
      • 一切正常,它只需要是容许的(例如总是有效,但将 A* 变回一致代价搜索)。
    • 如果一个启发式函数 比另一个启发式函数 更好地估计了到目标的实际距离,那么 支配 .
    • A* 维护一个开放列表(优先队列)和一个封闭列表(已访问节点)。如果展开的节点已经在封闭列表中,并以更低的成本存储,则忽略新节点。如果它以更高的成本存储,则将其从封闭列表中删除,并处理新节点。
    • 单调的,如果任何两个相连节点的启发式值之差不会高估这两个节点之间的实际距离。非单调启发式的示例: 是两个相连的节点,其中 的父节点。假设 ,那么我们知道通过 的解决方案路径的真实成本至少为 7。现在假设 。因此,
      • 首先,启发式值之间的差值(即 2)高估了这两个节点之间的实际成本(为 1)。
      • 但是,我们知道任何通过 的路径也是通过 的路径,我们已经知道任何通过 的路径的真实成本至少为 7。因此, 的 f 值为 6 毫无意义,我们将考虑其父节点的 f 值。
    • 一致的,如果给定节点的 h 值小于或等于从该节点到下一个节点的实际成本加上该下一个节点的 h 值(三角不等式)。
    • 如果 允许的单调的,A* 找到的第一个解决方案保证是最优解(不再需要打开/关闭列表簿记)。

寻找启发式

  • 放松问题(例如 8 拼图:曼哈顿距离)。
  • 计算子问题的成本(例如 8 拼图:计算前 3 个瓷砖的成本)。

对抗搜索(游戏玩法)

[edit | edit source]

极小极大 适用于具有完美信息的确定性游戏。非确定性游戏将使用 期望极小极大 算法。

  1. 极小极大算法:
    • 两人 零和博弈,其中两个玩家轮流移动,由一个初始状态(例如棋盘位置)、一组定义合法移动的操作符、定义游戏结束的终止测试和一个 效用函数 定义,该函数确定游戏的最终结果的数值(例如,获胜为“1”,失败为“-1”)。
    • 如果这是一个搜索问题,人们只需搜索一条通往值为“1”的终止状态的路径。但是对手(Min)会尝试最小化一个人的(Max)的结果。极小极大算法生成整个 博弈树 并将 效用函数 应用于每个终止状态。然后它将效用值向上传播一个级别,并继续这样做,直到到达起始节点。
    • 传播的工作方式如下:假设 Min 始终选择对 Max 最糟糕的选择(最小效用值)。如果在一个分支中,有三个终止状态,其效用值为 1、2 和 3,那么 Min 将选择 1。因此,“1” 被传播到下一级,依此类推。然后,Max 可以决定他最高级的开局行动(“极小极大决策”= 在对手会完美地发挥以最小化它的假设下最大化效用)。
    • 对于过于复杂而无法计算整个博弈树的游戏,博弈树会在某个时间点被截断,而效用值则由启发式评估函数估计(例如,国际象棋中的“物质价值”)。
  2. Alpha-Beta 剪枝
    • 我们不必查看游戏树中的每个节点:带 alpha-beta 剪枝的极小极大算法产生的结果与完整搜索相同,但效率更高(将有效分支因子降低到其平方根)。
    • 这里我们将迄今为止找到的 Max 最佳值存储在alpha中,将迄今为止找到的 Min 最佳值(即最低值)存储在beta中。
    • 如果在任何给定点,alpha变得小于beta,我们可以在此点剪枝游戏树。因此,需要评估至少一组从最深的 Min 节点分支出来的叶节点,然后使用获得的 alpha 值来剪枝其余搜索。
  3. 机会
    • 根据引入的可能性类型(例如,抛硬币的 50/50 机会),在决策点引入“机会节点”,这些节点产生“预期值”(平均值 - 将效用值加起来,并根据实现它们的可能性进行加权)。
    • 示例:3 个叶节点,值分别为 5、6 和 10,总共为 21 - 达到其中任何一个的概率为 1/3 - 因此期望值为

约束满足问题

[编辑 | 编辑源代码]

对于 CSPs,搜索空间中的状态由一组变量的值定义,这些变量可以从特定域中分配一个值,目标测试是一组约束,变量必须遵守这些约束才能构成对初始问题的有效解决方案。

示例:8 皇后问题;变量可以是八个皇后的位置,通过目标测试的约束是,没有两个皇后可以相互伤害。

不同类型的约束

  • 一元(单个变量的值)
  • 二元(变量对,例如 x > y)
  • n 元

除此之外,约束可以是绝对的或偏好的(前者排除某些解决方案,后者只是说哪些解决方案更可取)。域可以是离散的或连续的。在搜索的每一步中,都会检查任何变量是否违反了任何约束 - 如果是:回溯并排除此路径。

前向检查检查对尚未分配的变量的任何决策是否会被为变量分配值所排除。它会从每个尚未分配的变量的可能值集中删除所有冲突的值。如果其中一个集合变为空 - 立即回溯。

也有一些用于对变量分配做出决策的启发式方法。

选择下一个变量

  • 最受约束的变量与前向检查一起使用(检查哪些值对于每个尚未分配的变量仍然允许)
    • 下一个要分配值的变量是具有最少可能值的变量(减少分支因子)。
  • 最具约束力的变量将值分配给与对其他尚未分配的变量的最多约束相关的变量。

选择变量后

  • 最小约束值分配一个值,该值在中排除最少的数值

通过约束连接到当前变量的变量。

使用迭代改进的 CSP 通常被称为“启发式修复”方法,因为它们会修复当前配置中的不一致性。树状CSP 可以在线性时间内解决。

  1. 爬山法
    • 评估所有相邻节点,并移动到最佳节点。
    • 如果没有比当前节点更好的节点,则宣布此节点为最优节点并停止。
    • 有陷入局部最大值的风险。
  2. 模拟退火
    • 通过允许“糟糕的”移动(下降)来逃脱局部最大值,但逐渐减少它们的规模和频率。
华夏公益教科书