从最早的人工智能研究开始,其爱好者就一直痴迷于创造能够在游戏中打败人类的程序。
假设我们想要教一只机器狗最简单的足球技巧:当面对球时,走过去,踢一脚。传统的人工智能方法将会使用如下的规则来对机器人编程:朝着球迈出一步;重复这个动作,直到你的一只脚碰到球为止;然后用碰到球的那只脚踢球。
强化学习的愿景是:智能体(如机器狗)能够通过在现实世界中执行一些动作并偶尔获得奖励(即强化)的方式来自主地学习灵活的策略,而无须人类手动编写规则或直接“教育”智能体如何应对各种可能的情况。
在其最纯粹的形式下,强化学习不需要任何被标记的训练样本。代替它的是一个智能体,即学习程序,在一种特定环境(通常是计算机仿真环境)中执行一些动作,并偶尔从环境中获得奖励,这些间歇出现的奖励是智能体从学习中获得的唯一反馈。
强化学习是通过使罗茜在一系列学习片段(27)中采取动作来实现的,每个学习片段都包含一定数量的迭代。在每次迭代中,罗茜会先确定当前的状态,然后选择要采取的动作。如果罗茜获得了一个奖励,它就会学习到一些东西,这点我将在后文进行说明。在此处,每一个片段会持续到罗茜成功踢到球为止,那时它将得到一个奖励。这可能需要花费很长时间,就像训练一只真正的狗一样,我们必须要有耐心。
罗茜学到了什么?在这里,我们采用最简单的强化学习方法来说明:在获得一个奖励后,罗茜只学到了使它立即获得奖励的那一步的状态和行为。
强化学习的一个关键概念是:在一个给定的状态下执行一个特定动作的值。状态S下动作A的值是一个数字,表示在状态S下,如果执行动作A,智能体预测最终将获得多少奖励,智能体只需执行高值的动作即可。
在复杂现实世界任务中,不可能定义一小组能够罗列在一个表格中的“状态”。例如,一辆自动驾驶汽车在拥挤的城市中学习驾驶,这辆汽车在给定时间的一个单独状态可能是来自其摄像头和其他传感器的全部数据。这意味着一辆自动驾驶汽车实际上面临着无数种可能的状态。
强化学习的实践者几乎都会构建机器人和环境的模拟,然后在模拟世界而非在现实世界中执行所有的学习片段,我们都是这样来处理这个问题的,有时这种方法很有效……然而,环境愈复杂和不可预测,将机器人在模拟中学到的技能转移到现实世界的尝试就愈加难以成功。由于这些难点的存在,迄今为止强化学习最大的成功不是在机器人领域,而是在那些能够在计算机上进行完美模拟的领域。目前,强化学习最知名的成功是在游戏领域。
无论你对电子游戏持何种立场,如果你更倾向于纯净且受控制,而非真实,你可能会考虑创建人工智能程序来玩20世纪七八十年代的雅达利电子游戏,这正是DeepMind团队决定要做的事。
DeepMind的系统在经历多个片段后学会了《打砖块》。每一片段对应游戏的一局,片段中的每次迭代对应系统执行的某个单一动作。在每次迭代中系统将其状态输入DQN,并根据DQN的输出值选择一个动作。
系统并不总是选择具有最高估计值的动作,正如我之前提到的,强化学习需要在探索与坚持之间取得一个平衡。
DeepMind的深度Q学习程序在超过一半的游戏中表现得比人类测试员更好,而且,在那些深度Q学习表现更好的游戏的一半中,程序的表现比人类的表现好2倍以上。在那些深度Q学习比人类表现好2倍以上的游戏的一半中,程序的表现比人类的表现要好5倍以上。令人惊诧的是,在《打砖块》中,深度Q网络程序的平均得分是人类的10倍以上。
那为什么计算机无法对每一种可能进行分析,来判断如何行棋会最快地走向胜利?这个问题与我们在第03章中所列举的那个指数增长的问题一样。
西洋跳棋游戏的平均步数约为50步,这意味着图9-4中的博弈树可能会向下延伸50层,在每一层中,每个可能出现的棋局平均对应有6或7个分支,这意味着树中棋局的总数可能超过650,这是一个极其庞大的数字。假设有一台每秒可以计算1012个棋局的计算机,它将需要花费超过1019年才能分析完单个博弈树中的所有棋局。我们可以将这个数字与宇宙的年龄进行比较,后者的数量级仅为1010。显然,对博弈树进行完全搜索是不可行的。
幸运的是,即使计算机不做这种详尽的搜索,也有可能表现得很好。
该程序随后会对前瞻过程结束后出现的棋局进行评估。评估一个棋局意味着为其分配一个用于评价该棋局将有多大可能性会使得程序走向胜利的数值。
塞缪尔的程序使用了能给棋局的各种特征进行评分的评估函数,如黑子在总数上的优势、黑子的国王数量、黑子中接近于“成为国王”的棋子数,总分是38分。这些特征是塞缪尔基于他对西洋跳棋的了解来选择的。一旦完成对底层每个棋局的评估,也就是前瞻过程结束后,程序就会使用一个被称为“极小化极大”(minimax)的经典算法,来对程序从当前棋局走出的下一步棋的所有可能性进行评估,然后选择其中评分最高的行棋方式。
“直觉”这个词有一种神秘的光环,如果你觉得AlphaGo也有直觉,那么这种直觉源自它对深度Q学习和蒙特卡洛树搜索这些方法的巧妙结合。
对大多数人工智能研究人员来说,开发超人类的游戏程序并不是人工智能的最终目的。我们应该思考的是:这些成功对人工智能更长远的发展有什么启示。
有一种方法可以评估一个领域对计算机的挑战性:观察一些非常简单的算法在该领域中表现如何。2018年,优步(Uber)人工智能实验室的一组研究人员发现:在几款雅达利电子游戏上,一些相对简单的算法的表现几乎可以媲美DeepMind的深度Q学习算法,有时甚至更好。
正如马库斯所指出的那样,对人工智能而言,人类玩的许多游戏甚至比围棋更具挑战性。
马库斯给出的一个示例是猜字谜游戏,如果你仔细想想,你会发现:这个游戏需要远超任何现有人工智能系统的复杂的视觉、语言和社会理解能力。如果你能制造出一个可以像6岁的小孩那样玩猜字谜游戏的机器人,那么我认为你可以很有把握地说,你已经征服了多个对人工智能来说最具挑战性的领域。
对于AlphaGo来说,尽管它在训练期间下了数百万盘棋,但是却并没有学会更好地“思考”除围棋之外的其他任何事情。事实上,除了围棋之外,它不具备任何思考、推理和规划的能力。据我所知,它所学到的能力没有一项是通用的,也没有一项可以被迁移到任何其他任务上。AlphaGo是终极的“白痴天才”。
“容易的事情做起来难”,这个人工智能悖论……智能的一个关键点并非在于能够学习某一特定的技能,而在于能够学会思考,并且可以灵活地将这种思考能力用于应对任何可能遇到的情况或挑战,这也是我们希望孩子们能够通过下国际象棋或围棋学习到的真正技能。从这个意义上讲,学校的国际象棋或围棋俱乐部里最低年级的小朋友都比AlphaGo聪明得多。