【强化学习炼金术】李飞飞高徒范麟熙解析强化学习在游戏和现实中的应用

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 斯坦福大学博士生、师从李飞飞教授的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将是我们之后几节课的主角。


最后一个应用是能源控制。上图是谷歌的数据中心,其中每一台服务器在运行时都会散发大量热量。如果没有很高效的制冷系统,那这个数据中心很可能在几小时内就报废了。

最简单的方法是在所有区域均匀制冷。然而并非每个服务器都散发同样热量,如果不分青红皂白地制冷将会造成大量能源浪费。

强化学习控制器的神通之处,就在于能够对症下药:对于不同的负载情况、不同时间点、不同天气、都能合理分配最佳的制冷能源额度。

这样一个智能体既能帮助公司节约下大量能源成本,也能为缓解全球变暖等环境问题做出贡献。


原文发布时间为:2018-01-22

本文作者:Jim 范麟熙

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:【强化学习炼金术】李飞飞高徒范麟熙解析强化学习在游戏和现实中的应用

相关文章
|
12天前
|
机器学习/深度学习 传感器 监控
机器学习:强化学习中的探索策略全解析
在机器学习的广阔领域中,强化学习(Reinforcement Learning, RL)无疑是一个充满魅力的子领域。它通过智能体与环境的交互,学习如何在特定的任务中做出最优决策。然而,在这个过程中,探索(exploration)和利用(exploitation)的平衡成为了智能体成功的关键。本文将深入探讨强化学习中的探索策略,包括其重要性、常用方法以及代码示例来论证这些策略的效果。
|
2月前
|
缓存 Kubernetes Docker
GitLab Runner 全面解析:Kubernetes 环境下的应用
GitLab Runner 是 GitLab CI/CD 的核心组件,负责执行由 `.gitlab-ci.yml` 定义的任务。它支持多种执行方式(如 Shell、Docker、Kubernetes),可在不同环境中运行作业。本文详细介绍了 GitLab Runner 的基本概念、功能特点及使用方法,重点探讨了流水线缓存(以 Python 项目为例)和构建镜像的应用,特别是在 Kubernetes 环境中的配置与优化。通过合理配置缓存和镜像构建,能够显著提升 CI/CD 流水线的效率和可靠性,助力开发团队实现持续集成与交付的目标。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术深度解析:从基础到应用的全面介绍
人工智能(AI)技术的迅猛发展,正在深刻改变着我们的生活和工作方式。从自然语言处理(NLP)到机器学习,从神经网络到大型语言模型(LLM),AI技术的每一次进步都带来了前所未有的机遇和挑战。本文将从背景、历史、业务场景、Python代码示例、流程图以及如何上手等多个方面,对AI技术中的关键组件进行深度解析,为读者呈现一个全面而深入的AI技术世界。
289 10
|
19天前
|
机器学习/深度学习 算法 数据挖掘
解析静态代理IP改善游戏体验的原理
静态代理IP通过提高网络稳定性和降低延迟,优化游戏体验。具体表现在加快游戏网络速度、实时玩家数据分析、优化游戏设计、简化更新流程、维护网络稳定性、提高连接可靠性、支持地区特性及提升访问速度等方面,确保更流畅、高效的游戏体验。
64 22
解析静态代理IP改善游戏体验的原理
|
5天前
|
开发框架 监控 JavaScript
解锁鸿蒙装饰器:应用、原理与优势全解析
ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。
24 2
|
11天前
|
存储 人工智能 程序员
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
162 9
|
24天前
|
搜索推荐 数据挖掘 API
Lazada 淘宝详情 API 的价值与应用解析
在全球化电商浪潮下,Lazada 和淘宝作为东南亚和中国电商市场的关键力量,拥有海量商品数据和庞大用户群体。详情 API 接口为电商开发者、商家和分析师提供了获取商品详细信息(如描述、价格、库存、评价等)的工具,助力业务决策与创新。本文深入解析 Lazada 和淘宝详情 API 的应用场景及价值,并提供 Python 调用示例,帮助读者更好地理解和运用这两个强大的工具。
51 18
|
23天前
|
数据采集 搜索推荐 API
小红书笔记详情 API 接口:获取、应用与收益全解析
小红书(RED)是国内领先的生活方式分享平台,汇聚大量用户生成内容(UGC),尤以“种草”笔记闻名。小红书笔记详情API接口为开发者提供了获取笔记详细信息的强大工具,包括标题、内容、图片、点赞数等。通过注册开放平台账号、申请API权限并调用接口,开发者可构建内容分析工具、笔记推荐系统、数据爬虫等应用,提升用户体验和运营效率,创造新的商业模式。本文将详细介绍该API的获取、应用及潜在收益,并附上代码示例。
161 13
|
4天前
|
缓存 监控 供应链
1688商品数据接口深度解析:从基础调用到企业级应用
本文介绍了通过1688官方API获取商品数据的应用场景和技术实现,涵盖供应商管理、采购比价、ERP对接及跨境选品等业务赋能。技术流程包括企业认证、接口调用和关键参数说明,并解析了响应数据结构。架构设计方面,提供了高并发解决方案、数据更新策略和缓存优化方案。同时,强调了合规与风控措施,如数据使用规范和接口安全防护。最后,针对常见问题给出了解决方案,并提出了数据应用扩展和监控体系搭建的进阶建议。该方案已成功应用于多个B2B供应链平台,日均处理超2000万条商品数据。
|
2月前
|
搜索推荐 测试技术 API
探秘电商API:从测试到应用的深度解析与实战指南
电商API是电子商务背后的隐形引擎,支撑着从商品搜索、购物车更新到支付处理等各个环节的顺畅运行。它通过定义良好的接口,实现不同系统间的数据交互与功能集成,确保订单、库存和物流等信息的实时同步。RESTful、GraphQL和WebSocket等类型的API各自适用于不同的应用场景,满足多样化的需求。在测试方面,使用Postman、SoapUI和jMeter等工具进行全面的功能、性能和安全测试,确保API的稳定性和可靠性。未来,随着人工智能、大数据和物联网技术的发展,电商API将进一步智能化和标准化,为用户提供更个性化的购物体验,并推动电商行业的持续创新与进步。
61 4

推荐镜像

更多