《机械迷城》是个迄今为止我玩过最有趣也是最有挑战性的Flash小游戏。有点类似以往玩过的“密室逃生”等Flash系列,《机械迷城》将诙谐可爱和解密探索元素融合在一起,在娱乐的同时极其锻炼人的联想和推理能力。

本人花了大约5天,每天2~3小时的时间将其打穿,除了最后几个场景以外,之前的场景均未看攻略(也没有看游戏内置攻略)。在许多场景里,确实有诸多极难想到和需要进行推理的游戏部分。而最后完成这些部分的过程,是一个个需要综合各方面线索,联想已有工具,进行深入推理的过程。而有些部分需要完成的小游戏,我甚至借助了编程手段。于是,在游戏过程中我不由得想,对于目前人工智能的发展情况,这样的一个游戏,需要哪些领域的综合,以及额外需要发展的理论和技术,才能将其在不依赖人工干预的情况下,自动的完成?

下面我从本游戏的游戏者的角度,结合游戏中的一些典型场景,简单分析一下游戏过程中游戏者需要具有的能力。为了描述的方便,游戏特指《机械迷城》游戏,游戏者特指此游戏的游戏者。这里,游戏者并不区别这是一个人的实体抑或一个人工智能程序的实例,但在特定区别处会显式说明。

  1. 学习场景
  2. 第一个场景即为游戏者的学习场景。在这个场景中,出现了后续游戏中极少见到的文字描述,因为在这个游戏中,绝大部分信息的获得都是通过手绘画风格的图像,而不是具体的文字。当然,这里的文字是英文。为公平起见,我们可以假定对于不同的游戏者,文字是用一种最适合该游戏者的方式给出的(如对于程序,文字可以用程序语言或逻辑规则给出)。

    因此,经过这一场景,不同类型的游戏者均可视为已经获得基本的游戏方法知识,可以进行下面的游戏。

  3. 获取信息
  4. 游戏中,信息获取主要通过手绘画风格的图像,以人物思考的形式给出。如下图是第二个场景中守卫机器人进入机械城的过程。

    撇开目标的获得不说(人类游戏者在这里一般会想到这里是要想办法进入机械城,但程序游戏者可能需要额外信息),这里信息的获得涉及到前后连续信息的分析。守卫机器人进门的行为序列为:

    拉环->响应看门机器人->(看门机器人开门)->走过桥梁进入正门

    人类游戏者可以非常容易的将这个行为序列给出,并且知道当前游戏目标是需要进入机械城,因此必须模仿守卫机器人的行为。然而,对于人工智能程序,了解计算机视觉的读者会知道,对于这样一个复杂并且有一定抽象场景的理解,当前并没有普适性的方法能够有效的将发生的这一段事件的复杂图像序列,解析成上述一个简单的行动序列。(也许有人会说这个游戏并不适合于人工智能程序解答,但我这里只是想通过这样一个游戏,简略分析人工智能与人类智能的区别与差距。)

    游戏的其他地方也会遇到非常多的此类信息的获取,而且在游戏中这种类型的信息非常常见。

  5. 综合信息
  6. 游戏中,不同场景的线索和道具是相互关联的,为了达到某一目标,需要综合若干个场景的线索和道具,将其结合以达到目的。如下是一个线索在某一场景而目标在另一场景的实例。

    在这些信息的综合时,大部分时候需要极强的联想能力。对于人类游戏者,需要记忆某些可以到达却因为信息或道具缺失而没有到达的地方,并在得到信息时进行合适的联想;对于程序游戏者,需要有能力将已经储存的信息和尚未解决的问题通过不同方式联系在一起。因此,无论对于何种游戏者,这种类型的信息综合都具有一定的难度。

    看到把灯关掉以后右上角灯的荧光么?这是一个线索。

    这个线索被用在这里开门。

  7. 推理
  8. 游戏中的推理是另一大难点。即使在知道目标的情况下,也会由于信息的不完全和隐式的联系增大推理的难度。人类游戏者需要运用联想将隐式的各种线索联系起来,找到可以结合并且帮助达到目标的道具;而对于程序游戏者更加困那,因为这些隐式的关系全部隐藏在复杂的图像中,即使抛开计算机视觉的难度不说,视觉与逻辑的结合目前似乎也没有行之有效的方法。也就是说,通过视觉获得的信息,无法做到用普适性的方法将其用逻辑公式表达,也就难以进行后续的推理。另外,在推理和行动过程中,可能会遇到推理失败或者需要修正的情况,这时,又需要能够动态更改推理过程的逻辑程序语言来支持,而这一点目前也因为种种原因没有行之有效的方法。以下是游戏中一个有一定难度的推理实例。

    我想要雨伞,但有雨伞的人要狗;

    但狗在这里(右边)喝油。怎么把狗弄过来?

    把狗弄过来要枪;

    有了枪,但狗躲在后面打不到,怎么办?

    经过一番麻烦后,发现这里可以爬上去了;

    然后操纵这个移动油瓶;

    终于把狗引出来了;

    这才抓到狗,可以去交易雨伞了。

    在以上过程中,省略了诸多需要费一番功夫的细节。也就是说,推理过程的各个环节并非简单的不可分元素,而可能是另一个需要推理而达到的目标(如上面例子中的枪,也是需要综合多方面信息和道具才能得到)。对于程序游戏者,这一点从形式上可以用递归解决。

  9. 尝试(反馈)
  10. 反馈是闭环控制方法中耳熟能详的一个词,而对于人类的学习来说,绝大部分也是基于反馈的。可以说人的神经系统的构造很自然的适应了这种学习,也可以说这种学习才是最适合神经系统的。(这一点与人工神经网络差别巨大,因为目前的人工神经网络仅仅是作为一个从输入到输出的映射而已。但Jeff Hawkings提出的层级大脑皮层结构假设与此不同,感兴趣的可以参阅他的On Intelligence)在游戏中也有很多尝试与反馈的例子。这里不给出实例,笼统的说,某些小游戏的规则和目标说明并没有显式的给出,也就是说,游戏的规则都是需要自己去理解的,理解的对象可能是抽象画,也可能根本没有,因此,需要通过尝试游戏过程,才能“总结”出游戏规则和目标。人类游戏者的总结和概括能力是极大的强于程序游戏者的,由于对人工智能的学习过程并不熟悉,所以我不敢说现在没有行之有效的方法去做这种基于尝试的对游戏规则和目标的学习,但从一些经典方法如强化学习等可以看出,想要找到一种普适性的学习策略仍然非常困难。

最后,不得不提一个我借助程序才解答的小游戏。这个小游戏本身的技巧性不强,这里技巧性的意思是对于人类游戏者,不容易找到一种“捷径”,来快速找到合理的解答步骤。而且,游戏各步骤的状态空间很少,用简单的回溯搜索可以轻易解决。因此,在知晓规则和目标后,用程序实现解答非常容易。但是,正如上面提到的一样,这里规则和目标的知晓,却是对程序而言更加困难的部分。

人工智能从60年前被提出到今天,已经发展成了一个覆盖广泛并且某些方面的应用卓有成效的综合交叉学科。然而,从现在的理论和技术来看,对于人工智能一开始就提出的问题,能否造出接近甚至超过人类智能的机器(程序),仍然非常困难。尽管从KR到Searching到Computer Vision到Robotics,各领域已经提出了极其丰富的理论,但是,由于人类智能本身的复杂性,想要短时间内造出在人类擅长的方面能力接近的机器,还是有很大的差距。然而,正如以前听过某大牛说过的,从目前的情况来看,人工智能的前景并不应该局限在这一终极目标,而是从有限的应用做起,然后逐渐完善理论和技术。如同其他逐渐发展起来的学科一样,从应用中慢慢完善自身,并且让自身更加好的服务于应用。这才应该是人工智能这个学科的发展方式。