5.3 使用随机选择的人工智能

    在微处理器发明之前,统计学家已经能够构建智能的、有学习能力的电脑。你可以使用椰子壳和概率规律来建造一台会学习的、在井字游戏上永不输的电脑。

    有一个笑话说的是20世纪60年代的电视节目《吉利根岛》(Gilligan's Island):教授总是用椰子和藤蔓制造电脑、洗衣机或火箭船。我感觉制造洗衣机和火箭船听起来不切实际,但是漂流者完全可以用椰子制出电脑。你也可以做到。如果你曾经被困在一个荒岛上,想要有个同伴,造一部电脑吧。

    你不用像《荒岛余生》(Castaway)里汤姆·汉克斯扮演的角色一样想要一个排球,排球没有什么个性,但你的电脑能和你一起玩游戏,甚至会学习,并能因此变得更聪明。学习算法背后的驱动力来自几率和随机选择。

    5.3.1 试误学习

    据行为心理学家分析,所有动物(包括人类、水獭和单细胞生物)的学习方式都基本相同。经验告诉我们不同选择导致不同结果。由于动物接收结果的反馈,所以它就适应了。如果结果是积极的,这个生物更有可能在不久的将来作出同样的选择。如果结果是消极的,这个生物不太可能再一次作出这样的选择。

    请注意,我们并没有保证一个“好”的行为总是会反复进行,或保证不良的行为会逐渐灭绝,它只是概率问题。动物更可能作出正确的决策,而不太可能作出错误的决策。为了使一台机器模仿动物的学习方式,我们必须从这个概率角度来建立机器。

    玩游戏反映了很多试错的学习过程,因为结果很容易被解释为积极的(赢)或消极的(输)。在游戏中,反馈往往是即时的,而研究表明,选择和反馈之间的时间接近程度是学习(learning)是否发生的关键因素。请记住,学习在这里被定义为:正确选择的可能性增加或不正确选择的可能性减少。

    5.3.2 建立一个井字机器

    被困在岛上时,没有朋友的你或许希望通过和智能对手玩游戏来打发无聊时间。下面是建立一个不使用任何电或硅的奇妙装置的指令,这个装置会玩游戏,并具备像样的竞争力。

    这款机器会学习:你和它对战的次数越多,它就变得越强。这个机器玩的是井字游戏,但理论上来说,你可以使用同样的原理来建立任意的双人战略游戏装置。井字游戏很简单,它很好地展示了设计、制造和操作方法。

    如果《吉利根岛》里的教授曾经用椰子制造出一部电脑,他很可能受到生物学家唐纳德·米基(Donald Michie)的开创性工作和他那火柴盒的影响。1963年,米基在《电脑杂志》(Computer Journal)的第一期发表了一篇文章,吉利根和他的好朋友被困在岛屿上是若干年后的事了。米基介绍了他是如何设计的,并的确使用下列完整列表制造了一个不用电的电脑。

    • 287个火柴盒

    火柴盒有个可以打开的小抽屉。米基在每个火柴盒上标记出井字游戏中可能出现的287种不同结果中的一种。其实有更多的可能位置,但由于3行3列的标准井字布局是对称的,因此4种不同特征的位置可以只用一个位置来概括表示。在游戏中的每一时刻,“棋盘”的当前布局将操作人员引导到相应的火柴盒。

    • 大量供应的9种不同颜色的珠子

    这9种颜色代表井字棋盘的9个不同空间。最开始,每一个火柴盒里的珠子数等于下一步的移动数,且珠子颜色和可移动空间对应。只有代表合法移动的珠子会被放在相应盒子里。当然,不同的位置和火柴盒,只对应一小组合法的下一步移动,所以每个盒子里都混杂着不同颜色的珠子。

    教授可能会用椰子壳代替火柴盒,用沙卵石或种子(或许用豪威尔先生存钱罐里的钱,他一直随身携带存钱罐)代替珠子。从你所处的热带环境里收集这些物资,将卵石填充的椰子进行有效分组,你就有了可以在荒岛上玩游戏的电脑。是的,你需要费力找到287个椰子,但你有其他更好的事情可做吗?

    5.3.3 操作电脑

    为了和你那“卵石供电”的电脑玩游戏,请按以下说明进行操作。

    1.电脑先走。找到标记有当前位置的椰子。(对于第一步,这是一个空白的布局。)闭上你的眼睛并随机抽出一块卵石。

    2.在你的棋盘上,在卵石颜色指示的地方标记一个X(我假定是在沙上画)。将卵石放在一个安全的地方。

    3.作出你的移动,在你选择的地方标记一个O。

    4.目前在棋盘上有一个新位置了。转至相应的椰子,从里面随机抽出一块卵石。回到第2步。

    5.重复步骤2至步骤4,直到有一人胜出或平局。

    接下来发生的事情是最重要的部分,因为它能让电脑学会如何玩得更好。行为心理学家把这种最后阶段称作强化(reinforcement)。

    如果电脑输了,你通过把从椰子中随机抽取的卵石扔到海里来“惩罚”它。

    如果机器赢了或打成平局,将鹅卵石放回到它们原来所在的椰子里,并通过额外加入一颗颜色相同的卵石来“奖励”它。

    5.3.4 生效原理

    奖励或惩罚电脑的过程基本上复制了动物的学习过程。积极结果导致奖励行为可能性的增加,而消极结果导致惩罚行为可能性的降低。通过添加或删除卵石,你的确是增加或减小机器在游戏中作出某种移动的真实可能性。

    考虑游戏进行到如下阶段,电脑的移动用X表示,现在电脑必须走棋:

    X O X
    O

    你可能意识到最好且唯一的可行走棋是电脑把X放在底部中间来阻止你获胜。但是,电脑意识到几种可能性。它考虑任何合法的移动。电脑考虑的两种走棋方法(这实际上意味着,它将允许被随机地从椰子壳中取出来)一个是最好的走棋,一个是最坏的走棋:

    X O X
    O
    X
    X O X
    O
    X

    如果电脑第一次玩这个游戏,这两种走棋(或行为)发生的可能性等同。在这种情况下,其他走棋也有可能,它们发生的可能性也相同。左边的走棋可能不会导致失败,至少不会立即失败,所以代表那步移动的卵石被添加到椰子中,相对于其他走棋,这种走棋的相对概率增加了。右边的走棋很可能以失败告终(除非和吉利根比赛,也许吧),所以这种走棋下次被选中的几率在数学上减少了,因为可供随机选择的这种颜色的卵石数量变少了。

    任何给定的走棋被选中的概率可以通过这个简单的公式表示:

    5.3 使用随机选择的人工智能 - 图1

    机器开始时有相等数目的卵石,或者,换句话说,任何一系列的走棋被选中的概率相等。当然,一些走棋在我们经验丰富的玩家眼里是非常愚蠢的,在真正的游戏中绝不会作出那些愚蠢的行为,除了非常幼稚的玩家。但是行为心理学家争论的问题是:所有生物,在它们建立一个大型的经验池前都是新手。这种经验池塑造了它们行为中的基础概率。

    5.3.5 剖析本条Hack

    可以用几种方法修改你的机器,使它变得更聪明。例如,对平局和获胜采用不同的奖励方法。这应该会更快地培养出一个好玩家。米基建议获胜奖励三个珠子,平局奖励一个珠子。

    如果你想模拟动物的学习过程,那你可以调整系统,使临近游戏结束时的走棋比开始时的走棋更加重要。这是为了反映这样一种观察:当强化最接近行为发生时,强化是最有效的。在井字游戏中,对于导致立即输掉的错误,应予以更有效的处理和惩罚。在游戏后期,随着用来走棋的珠子越来越少,学习的发生会更快。

    一个明显能使电脑变得更聪明的升级是:甚至不容许电脑下坏棋,即不把代表会导致立马输掉的卵石放到你的容器里。这会解决电脑开始时智力低下的问题,但它并没有真正体现动物的学习方式。所以,虽然这可能是一个强大的竞争对手,但教授会因你缺乏科学的严谨性而感到失望。