AI 的关键:验证

作者:Rich Sutton

2001年11月15日

对于一个 AI 研究者来说,声称自己对该领域的发展方向有特殊的见解或计划,这有点不合时宜。如果他真有这样的见解,为什么不直接去实践,并展示其特殊的成果呢?虽然我并不否认这一点,但评估和分析整个领域,诊断那些反复困扰它的问题,并提出通用的解决方案仍然是有意义的。

我认为的关键洞察是,成功的 AI 的关键在于它能够自行判断它是否在正确地工作。在某种程度上,这是一个务实的问题。如果 AI 无法自行判断它是否正常工作,那么就需要人为地进行评估并进行必要的修改。而一个能够自我评估的 AI 或许能够自行进行修改。

验证原则: AI 系统只能在它能够自行验证的范围内创建和维护知识。

成功的验证发生在所有基于搜索的 AI 系统中,例如规划器、游戏玩家,甚至遗传算法。例如,Deep Blue 通过广泛的搜索为其每一个可能的走法产生一个分数。它相信某个特定的走法是好的,这是通过搜索树来验证的,该搜索树显示了它不可避免地会产生一个好的位置。这些系统不需要被告知该做什么选择;它们可以自行判断。试想一下,通过告诉一个象棋机器在每种位置上该走什么样的棋来编程。许多早期的象棋程序就是这样构建的。当然,问题在于存在许多不同类型的象棋位置。并且,程序员给出的关于走法选择的建议和规则越多,系统就越复杂,规则之间的意外交互就越多。这些程序变得脆弱且不可靠,需要不断的维护,不久之后,整个方法就被“蛮力”搜索者淘汰了。

虽然基于搜索的规划器在移动选择层面进行验证,但它们通常无法在其他层面进行验证。例如,它们通常将状态评估评分函数视为给定的。即使 Deep Blue 也无法搜索到游戏结束,而是依赖于人工调整的位置评分函数,它无法自行评估。冠军西洋双陆棋程序 TD-Gammon 的一个主要优势在于它可以评估和改进自己的评分函数。

基于搜索的规划器几乎从未受到验证的另一个重要层面是指定移动、动作或操作的结果的层面。在像象棋这样的游戏中,合法的走法数量有限,我们可以很容易地想象出准确地对所有走法的结果进行编程。但是,如果我们想象在一个更广泛的 AI 环境中进行规划,那么许多允许的操作的结果将不会完全已知。如果我把百吉饼带到 Leslie 的办公室,她会在那里吗?开车上班需要多长时间?我今天能完成这份报告吗?我们每天做出的许多决定都具有不确定和变化的影响。然而,现代 AI 系统几乎从不考虑这一点。他们假设所有的动作模型都将由人工准确输入,即使这些可能是系统中或曾经产生的大部分知识。

最后,让我们对一般的知识提出同样的观点。考虑任何 AI 系统及其拥有的知识。它可能是一个专家系统或像 CYC 这样的大型数据库。或者它可能是一个机器人,了解建筑物的布局,或者了解在各种情况下如何反应。在所有这些情况下,我们可以问 AI 系统是否可以验证自己的知识,或者是否需要人为干预来检测错误和无法预见的交互,并进行更正。只要是后一种情况,我们就永远无法构建真正大型的知识系统。它们将永远是脆弱且不可靠的,并且其大小将受到人们可以自己监控和理解的范围的限制。

“永远不要编写比你的头脑更大的程序”

然而,绝大多数情况下,今天的 AI 系统都无法验证自己的知识。构建的大型本体和知识库完全依赖于人工构建和维护。他们说“鸟有翅膀”,但他们当然无法验证这一点。