作者: Jim 范麟熙
编辑:张乾
【新智元导读】斯坦福大学博士生、师从李飞飞教授的Jim Fan(范麟熙)以轻松有趣的方式介绍了强化学习和游戏渊源以及强化学习在现实生活中的应用:机器人、World of Bits、金融、广告业、环境和能源等等。
在新智元上一篇文章中,Jim Fan(范麟熙)介绍了强化学习的概念和目的。今天是《强化学习炼金术》Introduction第三讲。
在这一课里,Jim Fan会跟各位炼金术师们聊一聊游戏中的强化学习以及强化学习在现实生活中的应用。
一、游戏与强化学习的渊源
游戏是大家都喜欢的东西,而有一个群体尤甚:他们叫【程序员】。所以在人工智能的发展历史中,游戏扮演着不可或缺的角色。
IBM研究员Arthur Samuel,是世界上第一个把强化学习应用在一个主流的棋盘游戏上的人。他当时写了一个跳棋的引擎,但其实他的引擎并不是世界上最强的。在1989年到2007年之间,加拿大阿尔伯坦大学的团队,做了一个跳棋的人工智能 —— Chinook。把Chinook喻为跳棋之神毫不为过,因为它在真正意义上破解了跳棋。换言之,就是不论你用什么策略,Chinook永远不会输。这是可以在数学上被验证的。
根据Chinook的分析,在跳棋中不论你是先手或是后手,只要有一个完美的策略,永远双方都会打成平手。也就是说,跳棋被证明是一个真正意义上的零和博弈。
下一位出场的,也是IBM的研究员 Gerald Tesauro。他最著名的成就,就是写了一个能够超越人类Backgammon世界冠军的人工智能。Backgammon是一个有一定随机性的掷骰子的概率游戏。Tesauro的引擎叫做TD-Gammon,TD就是刚才说到的时间差学习。
在这边要声明一下,为什么我们不提IBM的Deep Blue,即当年击败国际象棋世界冠军卡斯帕罗夫的深蓝国际象棋引擎。其实Deep Blue几乎没有用到任何机器学习,更别提强化学习。Deep Blue是一个规则系统,它的团队当时请了很多国际象棋大师过来帮他们手写那些象棋的规则或者策略,所以它并不是一个学习系统。
我们把时间轴推向2013年,其实强化学习是一个很古老的领域,但是大家最近才刚开始对它有非常密集的关注,这个契机就是Atari 2600系列的游戏。
Atari公司在1977年发行了一系列著名游戏,其中包括日本人设计的Pacman 吃豆人(上图中间)。你操控一个Pacman,不断地在路上把所有豆子给吃掉,但同时要避免被小怪攻击。上图左是Atari的游戏手柄。还有另外一款经典游戏Space Invader 太空入侵者(上图右),要求你操控宇宙飞船进行射击。
Atari虽然是在一个很小的屏幕上玩的游戏,但其信息量非常大。比如说,提供一幅游戏截屏的图片,你要学会理解如何操控Pacman,什么是豆子,以及怪物的行走轨迹,你要有一个对应的策略来避开怪物。所以Atari牵涉到计算机视觉,它不是一个简单的用几条规则就能够确定的游戏。在这个意义上,Atari比跳棋之类的游戏都复杂很多。2013年前,如果说要用同一个智能体来玩所有Atari游戏,那简直是天方夜谭。
2013年,一家名不见经传的小公司Deepmind发表了一篇论文
Human-level control through deep reinforcement learning
在这篇论文里,他们提出了一个新的概念,结合了现在的深度学习革命和古老的强化学习,变成了深度强化学习。论文中,他们发明了一个新的算法 —— Deep Q-Network,简称DQN。
Deepmind用同一个算法,代码一行不改,就能够玩遍所有Atari Game。也就是说,在每一个游戏里,让这个算法自主学习,其中没有任何人为干预,没有人告诉它游戏的规则,完全靠算法自行探索。训练完之后,大家发现算法学会的策略比某些最好的人类玩家还要强大。
可以说DQN是一个现代强化学习的分水岭,因为在此之前,强化学习都只能做一些低维度的环境,对于图片这种高维度的信息,之前的算法都无法处理(比如一张游戏截图中可能包含几十万像素)。所以DQN的过人之处,就在于把深度学习、卷积神经网络等计算机视觉的一些突破应用在强化学习上,让强化学习算法也能够处理高维度的信息。
如果说DQN是强化学习“文艺复兴之路”的开端,那么之后的AlphaGo就是深度强化学习集大成之作。Deepmind在2014年被谷歌公司以四亿美金的高价收购,现在是谷歌在伦敦的一个研究所。
我们来看一下DQN算法学会的策略。上图左是经典的Breakout小游戏。你的任务是操控下方面板,左右移动,让小球把上面所有砖块敲掉。当小球掉下来时,你要保证接住它,否则就会失去一条命。DQN在这个游戏中学会了一个很聪明的方法,就是先用小球把左右两侧砖块打通,之后就让小球自行在上排砖块中来回蹦跳,避免了智能体在下方频繁操作。这是很多人类玩家都没有意识到的一个绝佳策略。
上图右是Space Invader游戏。DQN控制的是飞船,需要避开所有外星人子弹。而这次,它学会了躲在障碍物后面,在不被外星人攻击到的前提下进行射击。
在DQN之后,大家都开始试图用深度强化学习的算法来玩游戏,比如说上图中的毁灭骑士 Doom,它是一款早期的第一人称三维射击游戏。从2016年开始每年都会举办一个叫VizDoom的比赛,很多公司和大学都派了团队去参加。去年获胜的是Intel和Facebook的研发团队。
如上图所示,这是一些Doom的训练环境,比如有射击、避免敌方炮轰、走迷宫、收集所有血包等环节。
2016年3月9日至3月15日间,我们共同见证了历史。在AlphaGo之前,没有一个围棋引擎能够跟低段位的职业选手媲美,更别提挑战世界冠军了。AlphaGo来到韩国正式向李世乭提出了挑战,赛制是五局三胜。
最后结果出乎所有人意料:四比一,AlphaGo获胜。
自从李世乭挑战赛之后,大家都觉得“人工智能要征服人类了!”
但是不要慌,即使AlphaGo能在大脑上赢得了围棋,但真正帮它下棋的还是人类。上图左一是Deepmind的黄士杰博士,如果没有黄博士的“人肉臂”,AlphaGo就连棋都下不了。
这是第一天比赛时的直播截图,我们能看到李世乭几乎在崩溃的边缘,自己的失败已成定局。我记得那天晚上由于时差原因,纽约是凌晨才开始的直播,我不惜通宵看了第一场比赛。我自己完全不会下围棋,所以全程处于“不明觉厉”的状态,只能听解说员分析比赛的精彩。
AlphaGo这场比赛的曝光度如此高,以至于在韩国的大街小巷,许多广告牌上都在放比赛的直播。李开复老师曾调侃道:“李世乭是谷歌的最新一任高级软件测试工程师。”
这篇是Deepmind团队刊登在《自然》杂志封面上的论文
Mastering the Game of Go with Deep Neural Networks and Tree Search
这篇论文详细介绍了如何用深度学习和蒙特卡洛树搜索的方法来学习下围棋。听完了【心有麟熙】强化学习系列课程之后,你就会知道这些词分别都是什么意思了。
Deepmind打败了李世乭之后还是觉得不过瘾。2017年,他们又在《自然》杂志上刊登了一篇新的论文
Mastering the Game of Go without Human Knowledge
AlphaGo Zero,有中文翻译写作【阿法元】。之前AlphaGo是通过大量学习人类棋谱,再用强化学习进行微调。而阿法元则完全抛弃了人类的知识,从绝对零度开始,通过自己和自己不断地对弈,用纯粹的强化学习的方法来学围棋的策略。
令人惊讶的是,阿法元虽然没有任何人类的辅助,但它最后达到的棋力远超过它的前辈AlphaGo。
俗话说,知足者常乐,但是Deepmind还是不知足。他们后来又发了一篇重磅论文
Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm
论文里提出的架构【AlphaZero】,索性把"Go"(围棋)这部分也去掉了。AlphaZero基本用的是AlphaGo Zero的算法:自我对弈、蒙特卡洛树搜索、纯粹的强化学习。
它用同一套算法原封不动地学习了chess(国际象棋)和shogi(日本将棋),并分别在这两个领域中远远超过之前世界上最强的人工智能:【鳕鱼】国际象棋引擎和【Elmo】将棋引擎。至此,Deepmind终于罢休了,他们宣布AlphaGo研究系列正式画上了圆满的句号。
但我认为,AlphaZero只是下一个篇章的开始。因为生活中的太多问题,远远比象棋、将棋和围棋复杂得多,所以强化学习之舟才刚刚启航。
我这次去洛杉矶的Long Island(长岛)参加了NIPS学术会议。NIPS(Neural Information Processing System)是世界人工智能顶级峰会。这次我也很荣幸地在Deepmind的party上见到了AlphaGo的创始人David Silver,上图是我和他的合影。我们聊了些关于AlphaZero下象棋的事情,在之后的推送中会给大家详细分解。
我的NIPS会议感想笔记刊登在《新智元》公众平台上,感兴趣的朋友们请点这里。
既然强化学习能够下各种棋类游戏,也能够玩一些古老的电子游戏,比如Atari、超级马里奥等,那我们为何不能用它来玩更复杂的游戏呢?下一波游戏研究的乐趣将会是魔兽争霸、英雄联盟、王者荣耀、GTA V高仿真赛车游戏等等。这些游戏中的画面清晰度要高很多,也就意味着输入智能体的信息量会大很多。目前还未有任何算法能够在这些游戏上与人类玩家媲美。
下次当你在实验室或办公室里打游戏被老板责骂时,你就可以告诉他,你现在在抓紧每一分钟为强化学习的科学事业做出自己的贡献 。
然而,游戏终究是游戏。它是在一个虚拟环境下跑的程序,并不会对真实世界造成任何影响。
所以在下一讲中,我会跟大家聊聊强化学习在真实生活中的应用。
二、强化学习在现实中的应用
第一个重要的应用是机器人(Robotics)?。
在《背景介绍》中,我们曾提到过,人在学习骑自行车时,其实大脑每一毫秒都在做决定。比如,腿要用多少力,车把要转多少度等等。大脑做这些决策的时候并没有复杂的思考,完全是下意识的。如果要设计一个机器人来重现这个过程,那么它的代码就必须在每一毫秒都输出力度、角度、重心偏移等数值。
一个方法是搭建物理模型,精确描述骑自行车的机理,然后求解复杂的微分方程组。另一个简单很多的方法就是用强化学习让机器人通过不断试错,自己找到最佳决策方案。
以下几个常用的机器人训练环境是基于“Mujoco”模拟器的。这些任务相比骑自行车要简单很多,所以可以用来做算法测试。
【Reacher】任务:控制有两个关节的机械臂,目标是把机械臂伸向红色小点。
【Humanoid】任务:机器人学习如何走路,目标是向前走得越快越好。Humanoid有约27个关节,换言之,就是每一毫秒都要输出27个数值来控制它的运动。
【Half Cheetah】任务:被切成一半的猎豹学习如何控制两条腿跑步,目标是向前跑得越快越好。如果两条腿协调不周,就可能会前空翻。(这种吓人的模型我们已经司空见惯了。。)
刚才提到的在模拟器里的机器人都比较简单。我们再来看一个强化学习算法在现实中的机器人上应用的例子。上述视频是训练了两个半小时后,机器人学会了开门的动作。视频来自【谷歌大脑】研究院。
训练完后,如果中途对机器人进行一些干扰,比如推机械臂,它仍然会回到正确位置。
因为用一个机械臂进行学习效率低下,所以谷歌和伯克利研究员采用了Robotic Farm的概念:使用“一农场的机器人”同时进行学习,以此加速训练过程。一个机械臂的价格至少在十万美金数量级。欢迎来到有钱任性的谷歌研究院!
接下来这个实际应用的例子是World of Bits。这是我本人参与的一篇论文,也是OpenAI和斯坦福共同合作的研究项目。
我的共同作者有清华毕业的斯坦福学长施天麟大神、李飞飞教授的得意门生Andrej Karpathy大神,以及斯坦福的Percy Liang教授等。这篇论文发表在2016年的ICML(International Conference for Machine Learning)大会上。
这里我大概介绍一下World of Bits,以后会有一篇专门的推文详细解说。
World of Bits是一个非常雄心壮志的项目,因为它的终极目标是让人工智能学会如何上网。如上图所示,右边是强化学习智能体;左边是大家都很熟悉的因特网。人工智能可以通过控制鼠标和键盘,像人类一样,在网站上进行各种操作。
智能体的主要输入信息是一张图片,比如美联航(United Airlines)的网站截图(上图左)。我们还提供一个辅助输入信息,就是图片中的文字(上图中),这样减轻了智能体需要另外学习OCR(文字识别)的负担。
智能体根据这些输入,决定如何控制鼠标和键盘(上图右)。这里我们的任务是让智能体帮忙订机票。它需要先学会理解网站的图形界面和文字含义,然后根据这些指示,通过一系列鼠标和键盘的操作输入出发地、到达地、旅行时间、旅客数量等等信息。
在学习如何订机票前,我们先训练智能体做一些简单的鼠标和键盘操作,也算是一种热身运动。上面的视频所展示的,就是为此而生的Mini World of Bits。这是一组“迷你练习”,其中包括以下图形界面任务(总共有80种):
上图中是已经训练完后的强化学习智能体。它可以在美联航、Delta航空、阿拉斯加航空等网站上,选择指定出发日期,并输入你的个人信息来预订机票。
World of Bits还能完成很多别的任务,比如在Yelp上搜索符合要求的餐厅、使用换算汇率的网站、订Airbnb和宾馆等。
介绍完World of Bits之后,接下来一个应用是在金融领域?。我们可以认为股票市场交易就是一个游戏,所获得的奖励就是最后的利润?。我们的目标是把利润最大化,但是这牵涉到一个复杂的决策过程:何时买?何时卖?何时转移投资方向?等等。所以,强化学习在金融界也占有一席之地。
其实强化学习最早的商业化应用之一是投放广告。举个例子,你钱包里只有100元。每天投放一次广告,就要付给谷歌公司10元,所以你只能投放十天广告。你的目标是要把广告点击量最大化。
假设你第一天设计的广告背景是绿色的,第二天则使用了红色背景,第三天又回到绿色。相应的,你第一天获得8万点击量,第二天获8.5万,第三天则有9万点击量。现在你只剩最后7天投放广告的机会。为了把点击量总和最大化,你之后的7天是选择绿色背景还是红色背景?这就是所谓Multi-arm Bandit的问题。
Multi-arm Bandit比起上一讲中提到的DQN玩电子游戏或AlphaGo下围棋,在概念上要简单很多。但它的实际应用却非常广泛。Multi-arm Bandit将是我们之后几节课的主角。
最后一个应用是能源控制。上图是谷歌的数据中心,其中每一台服务器在运行时都会散发大量热量。如果没有很高效的制冷系统,那这个数据中心很可能在几小时内就报废了?。
最简单的方法是在所有区域均匀制冷。然而并非每个服务器都散发同样热量,如果不分青红皂白地制冷将会造成大量能源浪费。
强化学习控制器的神通之处,就在于能够对症下药:对于不同的负载情况、不同时间点、不同天气、都能合理分配最佳的制冷能源额度。
这样一个智能体既能帮助公司节约下大量能源成本,也能为缓解全球变暖等环境问题做出贡献。