1. 始于游戏,不止于游戏 1.1. 开发超人类的游戏程序并不是人工智能的最终目的 1.2. AlphaGo所有的版本除了下围棋,其他什么也不会 1.2.1. 其最通用的版本AlphaGo Zero也一样 1.3. 这些游戏程序中没有一个能够将其在一款游戏中学到的知识迁移到其他游戏中,来帮助其学习不同的游戏 2. 强化学习 2.1. 驯兽师最重要的驯兽方法 2.1.1. 奖励其正确的行为,忽略其不正确的行为 2.1.2. 这种经典的训练技巧,在心理学上被称为操作性条件反射,已经在动物和人类身上应用了数个世纪 2.2. 强化学习在人工智能领域的一项举世震惊的重大成就中发挥了关键性作用:一个程序在复杂的围棋游戏中击败了世界上顶级的人类棋手 2.3. 在其最纯粹的形式下,强化学习不需要任何被标记的训练样本 2.3.1. 代替它的是一个智能体,即学习程序,在一种特定环境(通常是计算机仿真环境)中执行一些动作,并偶尔从环境中获得奖励,这些间歇出现的奖励是智能体从学习中获得的唯一反馈 2.4. 你越是想让机器人变得智能,手动设定它的行为规则就会越困难 2.5. 从人类的角度来看,我们常常会有一种“迷信”,即认为某种特定的行为将能帮助引发特定的好的或坏的结果 2.6. 设计成功的强化学习系统仍然是一种很难的但有时却很赚钱的技巧,只有一小部分像深度学习领域的同行一样,花费大量时间调节超参数的专家才能掌握 2.7. 愿景是智能体(如机器狗)能够通过在现实世界中执行一些动作并偶尔获得奖励(即强化)的方式来自主地学习灵活的策略,而无须人类手动编写规则或直接“教育”智能体如何应对各种可能的情况 2.7.1. 算法会告诉机器人如何从它的经验中进行学习 2.7.2. 强化学习是通过使机器人在一系列学习片段中采取动作来实现的,每个学习片段都包含一定数量的迭代 2.7.3. 一次性学习太多对其可能是有害的 2.8. 目标是让智能体自己学习并获得能对即将到来的奖励进行更好的预测的值,前提是智能体在采取相关行动后一直在做正确的选择。正如我们将看到的,习得给定状态下特定动作的值通常需要经过许多次的试错 2.9. 关键概念是在一个给定的状态下执行一个特定动作的值。状态S下动作A的值是一个数字,表示在状态S下,如果执行动作A,智能体预测最终将获得多少奖励,智能体只需执行高值的动作即可 2.9.1. 由状态、动作和值组成的表被称为Q表(Q-table) 2.9.1.1. Q表,在复杂现实世界任务中,不可能定义一小组能够罗列在一个表格中的“状态” 2.9.1.2. 大多数当下的强化学习方法使用的是神经网络而非Q表 2.9.1.2.1. 神经网络负责学习在一个给定状态下应给动作分配什么值 2.9.1.2.2. 神经网络将当前状态作为输入,其输出是智能体在当前状态下能够采取的所有可能动作的估计值 2.9.1.2.3. 网络学习的目标是将相关状态组成通用概念 2.9.2. Q学习算法是一种为给定状态下的动作赋值的方法,包括那些不直接获得奖励但能帮助智能体经历相对较少的状态就获得奖励的动作 2.10. 在现实世界中,使用真的机器人通过许多片段来真正地执行学习过程的难度很大 2.10.1. 强化学习的实践者几乎都会构建机器人和环境的模拟,然后在模拟世界而非在现实世界中执行所有的学习片段 2.10.2. 环境愈复杂和不可预测,将机器人在模拟中学到的技能转移到现实世界的尝试就愈加难以成功 2.10.3. 迄今为止强化学习最大的成功不是在机器人领域,而是在那些能够在计算机上进行完美模拟的领域 2.10.4. 强化学习最知名的成功是在游戏领域 2.11. 时序差分学习 2.11.1. temporal difference learning 2.11.2. 强化学习不是将其输出与人类给定的标签进行匹配,而是假设后续迭代给出的值比前面迭代给出的值更好,网络学习的是使其输出在一次迭代到下一次迭代的过程中保持一致 2.12. 与监督学习不同,强化学习可以使程序能够真正靠自己去学习,简单地通过在预设的环境中执行特定动作并观察其结果即可 2.12.1. 无须人类的任何指导 2.12.2. 即便在最具挑战性的领域,不用人类的示例或指导,除基本规则之外不提供任何其他领域的知识,程序也有可能训练到超人类水平 3. 学会玩游戏 3.1. 电子游戏像是现实世界的缩影,但更纯净并且更易被约束 3.2. 无论你对电子游戏持何种立场,如果你更倾向于纯净且受控制,而非真实,你可能会考虑创建人工智能程序来玩20世纪七八十年代的雅达利电子游戏,这正是DeepMind团队决定要做的事 3.3. 打砖块 3.3.1. 是雅达利为其大获成功的《乒乓》游戏开发单人模式的成果 3.3.1.1. 雅达利游戏程序没有被植入游戏的规则 3.3.2. 其设计和实现任务最初是在1975年被分配给了一名20岁的名叫史蒂夫·乔布斯(Steve Jobs)的员工 3.3.2.1. 当时的乔布斯缺乏足够的工程技能 3.3.2.2. 邀请了他的好朋友——25岁的史蒂夫·沃兹尼亚克(Steve Wozniak)来帮忙 3.3.2.3. 苹果公司的联合创始人 3.3.3. 即使这个玩家被训练到超人水平,只要将球拍在屏幕上的位置移动几个像素,系统的表现就会骤然下降 3.3.3.1. 意味着系统甚至没有学到“球拍”这种基本概念的含义 3.3.4. 当屏幕的背景颜色被改变时,系统的表现会显著下降 3.3.4.1. 如果没有大量的重新训练,系统无法将对这一概念的理解力泛化为向下或向侧面挖隧道的能力 3.4. 深度Q学习 3.4.1. deep Q-learning 3.4.2. DeepMind团队将强化学习,尤其是Q学习,与DNN相结合,创建了一个能够学习玩雅达利电子游戏的系统 3.5. 随机搜索 3.5.1. 这种算法不是通过多个片段的强化学习来训练深度Q网络,而是通过随机选择权重的方式来测试不同的ConvNets 3.5.2. 这种算法完全通过随机试错来进行学习 3.5.3. 优步的研究人员持续尝试新的随机权重网络,最终他们用比训练一个深度Q网络更少的时间,找到了一个能在他们测试的13款游戏的5款中与深度Q学习算法训练的网络表现得一样好甚至更好的网络 3.6. 遗传算法 3.6.1. 在13款游戏中的7款都表现得优于深度Q学习算法 3.7. 如何更新权重?这是监督学习和强化学习之间的核心差异 3.7.1. 反向传播的工作原理是通过改变神经网络的权重以减少网络输出的误差 3.7.2. 在监督学习中,测量这种误差非常直截了当 3.7.3. 在强化学习中我们没有标签 3.7.3.1. 一个来自游戏的给定的帧并不带有指示系统应采取某种动作的标签 3.7.4. 通过反向传播学习调整网络权重,从而使得当前与先前迭代输出之间的差异最小化 3.7.4.1. 从猜测中学习猜测 3.7.4.2. 从更好的猜测中学习猜测 3.8. 塞缪尔的西洋跳棋程序是基于搜索博弈树(game tree)的方法,该方法是迄今为止所有棋类游戏程序的基础 3.8.1. 即使计算机不做详尽的搜索,也有可能表现得很好 3.8.2. 程序就会使用一个被称为“极小化极大”(minimax)的经典算法 3.8.3. 博弈树、评估函数和“自对弈学习”(learning by self-play) 3.8.4. 一台机器最终在1994年战胜了人类跳棋冠军 3.9. 在1997年,也就是深蓝击败国际象棋世界冠军卡斯帕罗夫的同一年,当时最好的围棋程序仍然会被普通棋手轻易击败 3.9.1. 深蓝没有在任何核心部件上使用机器学习方法 3.9.2. 一个国际象棋棋手在一个给定棋局中平均有35种可能的行棋方式 3.10. 围棋 3.10.1. 围棋已有两千多年的历史,被公认为所有棋类游戏中最难的 3.10.1.1. 规则简单却能产生无穷的复杂性 3.10.2. 围棋的博弈树的规模要比国际象棋大得多 3.10.2.1. 一个围棋棋手平均有250种这样的行棋方式 3.10.2.2. 即便使用专用的硬件,对围棋的博弈树进行“深蓝式”的暴力搜索也是不可行的 3.10.3. 没有人能够为围棋棋局创建一个良好的评估函数 3.11. 蒙特卡洛方法 3.11.1. 在科学和数学领域,蒙特卡洛指的是一系列计算机算法,即所谓的“蒙特卡洛方法”(Monte Carlo method),这一方法最初用在曼哈顿计划中来帮助设计原子弹 3.11.2. 就像蒙特卡洛赌场那标志性的快速旋转的轮盘一样,一定程度的随机性可被用在计算机上来解决复杂的数学问题 3.11.2.1. 受轮盘赌启发的随机性被用来决定如何前瞻 3.12. 蒙特卡洛树搜索 3.12.1. 蒙特卡洛树搜索是专门为计算机游戏程序设计的蒙特卡洛方法的一个版本 3.12.2. 蒙特卡洛树搜索不是DeepMind的计算机科学家发明的,而是2006年在博弈树的基础上被首次提出的,并且它的出现使计算机围棋程序的水平得到大幅提升 3.12.3. 这些程序还无法战胜最出色的人类棋手,其中一个原因是:从走子演算中生成足够多的统计数据需要花费大量时间,特别是对于存在大量可能行棋方式的围棋来说 3.12.3.1. 可以使用一个深度卷积神经网络来对蒙特卡洛树搜索进行补充,以提升它们的系统能力 3.12.3.2. 从原则上说,ConvNets将会通过这一学习过程学会辨识局势,就像围棋大师一样 3.13. AlphaGo 3.13.1. 创建一个学习下围棋的程序,而且要比所有人类棋手都下得更好 3.13.2. 仅仅20年之后,AlphaGo就通过深度Q学习学会了围棋,并在一场五局三胜制的比赛中击败了世界上最出色的围棋棋手之一李世石 3.13.3. 顶级围棋棋手区别于常人的东西是他们的直觉,我们在AlphaGo中所做的就是将这种所谓的直觉引入神经网络中 3.13.3.1. 哈萨比斯 3.13.3.2. 如果你觉得AlphaGo也有直觉,那么这种直觉源自它对深度Q学习和蒙特卡洛树搜索这些方法的巧妙结合 3.13.4. AlphaGo在应用蒙特卡洛树搜索时就不用通过查看棋局局势来猜测哪种行棋方式最可能通往胜利,而只根据走子演算收集的关于给定行棋方式最终指向胜利或失败的统计数据,来判断下一步的最佳行棋策略 3.13.4.1. 程序执行的走子演算越多,其统计数据就越有参考价值 3.13.4.2. 该程序需要平衡“效用”(在走子演算期间选择得分最高的行棋方式)和“探索”(偶尔选择程序尚未有太多统计数据的得分较低的行棋方式) 3.13.5. 人工智能领域中长期以来的重大挑战之一,能够被强化学习、ConvNets和蒙特卡洛树搜索,以及在这一组合中加入的强大的现代计算硬件所体现出的创造性征服 3.13.6. AlphaGo的这些关键部分没有一个是通过纯粹的强化学习,从数据中学到的,相反,它们是由DeepMind的程序员在一开始就植入其内的 3.13.7. 尽管AlphaGo在下围棋时表现出了神奇的直觉能力,但是该系统没有任何机制,能使其在不经重建和重新训练深度Q网络的情况下,泛化它的围棋能力,即便是泛化到一个更小的或形状不同的围棋棋盘上 3.14. AlphaGo Zero 3.14.1. 比AlphaGo更简单也更高级 3.14.2. 与之前的版本不同的是:除了围棋规则之外,AlphaGo Zero对围棋的知识是从“零”开始的 3.14.3. 在AlphaGo Lee与AlphaGo Zero的100场对弈中,AlphaGo Zero取得了完胜 3.14.4. AlphaGo Zero确实没有在学习过程中使用任何人类示例,但并不是说它不需要人类的指导 3.14.5. 某些方面的人类指导对其成功至关重要 3.14.5.1. 它的ConvNets的具体架构 3.14.5.2. 对蒙特卡洛树搜索方法的使用 3.14.5.3. 这两者所涉及的众多超参数的设置 3.15. 对人工智能而言,人类玩的许多游戏甚至比围棋更具挑战性 3.15.1. 猜字谜游戏 3.15.1.1. 这个游戏需要远超任何现有人工智能系统的复杂的视觉、语言和社会理解能力 4. 通用人工智能 4.1. 必须是一种通用人工智能,也就是它可以根据自身的经验和数据来学习如何做事 4.2. 对于人类来说,智能的一个关键点并非在于能够学习某一特定的技能,而在于能够学会思考,并且可以灵活地将这种思考能力用于应对任何可能遇到的情况或挑战,这也是我们希望孩子们能够通过下国际象棋或围棋学习到的真正技能 4.3. 迁移学习 4.3.1. transfer learning 4.3.2. 是指一个程序将其所学的关于一项任务的知识进行迁移,以帮助其获得执行不同的相关任务的能力 4.3.3. 对于人类来说,迁移学习是自动进行的 4.3.3.1. 人类这种从一种任务到另一种任务的能力迁移看起来毫不费劲 4.3.3.2. 我们对所学知识进行泛化的能力正是思考的核心部分 4.3.4. 与人类不同的是,这些程序中没有一个能够将其在一款游戏中学到的知识迁移到其他游戏中,来帮助其学习不同的游戏 4.3.4.1. 当今人工智能领域中的大多数学习算法在相关的任务之间不是可迁移的 4.3.4.2. 就好像你学会了玩《乒乓》,但是为了学会玩《打砖块》,你必须完全忘记你学过的关于《乒乓》的所有知识,并重新开始 4.4. 模拟越逼真,在计算机上运行的速度就越慢,并且即便使用一台速度非常快的计算机,要把所有的物理作用力和装载碗碟的各方面相关参数都精确地置入模拟中也极其困难