【干货】强化学习介绍

640?wx_fmt=jpeg

作者 | Thomas Simonini

编译 | 专知

整理 | Yongxi


摘要:由于Alpha Go的成功,强化学习始终是人们谈论的焦点。现在Thomas Simonini在国外blog网站上发布了系列强化学习教程,以下是本系列的第一篇,简单介绍了强化学习的基本概念。


An introduction to Reinforcement Learning


640?wx_fmt=png


我们基于TensorFlow制作了一门深度强化学习的视频课程【1】,主要介绍了如何使用TensorFlow实现强化学习问题求解。


强化学习是机器学习的一种重要分支,通过“agent ”学习的方式,得出在当前环境下所应该采取的动作,并观察得到的结果。


最近几年,我们见证了了许多研究领域的巨大进展,例如包括2014年的“DeepMind and the Deep Q learning architecture”【2】,2016年的“beating the champion of the game of Go with AlphaGo”【3】,2017年的“OpenAI and the PPO”【4】


640?wx_fmt=gif

 

在这个系列文章中,我们将关注于深度学习问题中各类不同的求解方法。包括Q-learning,Deep Q-learning,策略梯度,Actor Critic,以及PPO。

 

在第一篇文章中,你将会学到:


  • 强化学习是什么,为什么说“奖励”是最重要的思想。

  • 强化学习的三个方法。

  • 深度强化学习中的“深度”是什么意思?


在进入深度学习实现的主题之前,一定要把这些元素弄清楚。


强化学习背后的思想是,代理(agent)将通过与环境(environment)的动作(action)交互,进而获得奖励(reward)。


640?wx_fmt=png


从与环境的交互中进行学习,这一思想来自于我们的自然经验,想象一下当你是个孩子的时候,看到一团火,并尝试接触它。

640?wx_fmt=png

火很温暖,你感觉很开心(奖励+1)。你就会觉得火是个好东西。

640?wx_fmt=png

可一旦你尝试去触摸它。哎呦!火把你的手烧伤了(惩罚-1).你才明白只有与火保持一定距离,才会产生温暖,才是个好东西,但如果太过靠近的话,就会烧伤自己。


这一过程是人类通过交互进行学习的方式。强化学习是一种可以根据行为进行计算的学习方法。

 

强化学习的过程



 


640?wx_fmt=jpeg


举个例子,思考如何训练agent 学会玩超级玛丽游戏。这一强化学习过程可以被建模为如下的一组循环过程。


  • agent从环境中接收到状态S0。(此案例中,这句话意思是从超级玛丽游戏中得到的第一帧信息)


  • 基于状态S0,agent执行A0操作。(右移)


  • 环境转移至新状态S1。(新一帧)


  • 环境给予R1奖励。(没死:+1)

 

强化学习循环输出状态、行为、奖励的序列。整体的目标是最大化全局reward的期望。


奖励假设是核心思想




在强化学习中,为了得到最好的行为序列,我们需要最大化累积reward期望。


每个时间步的累积reward可以写作:


640?wx_fmt=png

等价于:

640?wx_fmt=png


然而,在现实世界中,我们不能仅仅加入奖励。这种奖励来的太快,且发生的概率非常大,因此比起长期奖励来说,更容易预测。


640?wx_fmt=png


另一个例子中,agent 是老鼠,对手是猫,目标是在被猫吃掉之前,先吃掉最多的奶酪。


从图中可以看到,吃掉身边的奶酪要比吃掉猫旁边的奶酪,要容易许多。


由于一旦被猫抓住,游戏即将结束,因此,猫身边的奶酪奖励会有衰减。


我们对折扣的处理如下所示(定义gamma为衰减比例,在0-1之间):


  • Gamma越大,衰减越小。这意味着agent 的学习过程更关注于长期的回报。

  • 另一方面,更小的gamma,会带来更大的衰减。这意味着我们的agent 关心于短期的回报。

 

衰减后的累计奖励期望为:


640?wx_fmt=png


每个时间步间的奖励将与gamma参数相乘,获得衰减后的奖励值。随着时间步骤的增加,猫距离我们更近,因此为未来的奖励概率将变得越来越小。


事件型或者持续型任务




任务是强化学习问题中的基础单元,我们可以有两类任务:事件型与持续型。


事件型任务


在这一情况中,我们有一个起始点和终止点(终止状态)。这会创建一个事件:一组状态、行为、奖励以及新奖励。


对于超级玛丽的情况来说,一个事件从游戏开始进行记录,直到角色被杀结束。


640?wx_fmt=png


持续型任务


持续型任务意味着任务不存在终止状态。在这一案例中,agent 将学习如何选择最好的动作,并与环境同步交互。


例如,通过agent 进行自动股票交易。在这个任务中,并不存在起始点和终止状态,直到我们主动终止之前,agent 将一直运行下去。


640?wx_fmt=jpeg


蒙特卡洛与时间差分学习方法




接下来将学习两种方法:

  • 蒙特卡洛方法:在事件结束后收集奖励,进而计算未来奖励的最大期望。

  • 时间差分学习:在每一个时间步进行估计计算。


蒙特卡洛方法


当时间结束时(agent 达到“终止状态”),agent 将看到全部累积奖励,进而计算它将如何去做。在蒙特卡洛方法中,奖励只会在游戏结束时进行收集。


从一个新游戏开始,agent 将会随着迭代的进行,完成更好的决策。


640?wx_fmt=png


举例如下:


640?wx_fmt=png


如果我们在如上环境中:

  • 总是从相同位置开始

  • 当被猫抓到或者移动超过20步时,事件终止。

  • 在事件的结尾,我们得到一组状态、行为、奖励以及新状态。

  • agent 将对整体奖励Gt求和。

  • 基于上面的公式对V(st)求和

  • 根据更新的认知开始新的游戏


随着执行的事件越来越多,agent 学习的结果将越来越好。


时间查分学习:每步更新


对于时序差分学习,不需要等到每个事件终止便可以根据未来奖励的最大期望估计进行更新。


这种方法叫做TD(0)或者单步TD方法(在每个步骤间隔进行值函数更新)。


640?wx_fmt=png


TD方法在每一步进行值函数评估更新。在t+1时,立刻观察到奖励Rt+1,并得到当前的评估值V(st+1)。


TD 的目标是得到评估值,并根据单步的估计值完成前一个估计值V(st)更新。


探索/开发间的平衡




在继续了解其他细节之前,我们必须介绍一个非常重要的主题:探索与开发之间的平衡。


  • 探索是为了发现环境的更多信息


  • 开发是为了根据已知信息去最大化奖励值。


记住,我们agent 的目标是为了最大化累积奖励的期望,然而,我们可能陷入到一个常见的陷阱中。


640?wx_fmt=png


在游戏中,老鼠可以获得无限的小奶酪(1次获得1个),但在迷宫的上部,有一个超大的奶酪包裹(1次可获得1000个)。


然而,如果我们只关注于奖励,agent 将永远无法达到奶酪包裹处。并且,它将会仅去探索最近的奖励来源,即使这个奖励特别小(开发,exploitation)。


但如果agent 进行一点小小的探索工作,就有可能获得更大的奖励。


这就是探索与开发的平衡问题。我们必须定义出一个规则,帮助agent 去解决这个平衡。我们将在未来文章中通过不同策略去解决这一问题。


强化学习的三种方法




现在我们定义了强化学习的主要元素,接下来将介绍三种解决强化学习问题的方法,包括基于值的方法、基于策略的方法与基于模型的方法。

 

基于值的方法


在基于值的强化学习方法中,目标是优化值函数V(s)。


值函数的作用是,告诉我们在每个状态下,未来最大化的奖励期望。

值是每个状态条件下,从当前开始,在未来所能取得的最大总回报的值。


640?wx_fmt=png


agent 将使用值函数去在每一步选择采用哪个状态。


640?wx_fmt=png


在迷宫问题中,在每一步将选择最大值:-7,-6,-5等等。


基于策略的方法


在基于策略的强化学习方法中,我们希望能直接优化策略函数π(s) 。

策略的定义是,在给定时间的agent 行为。


640?wx_fmt=png


通过学习到策略函数,可以让我们对每个状态映射出最好的相关动作。


两种策略:

  • 确定策略:在给定状态下总是返回相同动作。

  • 随机策略:输出一个动作的概率分布。

640?wx_fmt=png


如同我们看到的,策略直接指出了每一步的最优行为。


基于模型的方法


在基于模型的强化学习中,我们对环境建模,这意味着我们创造了环境的模型。


问题是,每种行为都需要不同的模型表示,这就是为什么在接下来的文章中并没有提及此类方法的原因。

 

深度强化学习的介绍




深度强化学习采用深度神经网络以解决强化学习问题。


在例子中,在下一篇文章我们将采用Q-learning与深度Q-learning。


你将会看到显著地不同,在第一种方法中,我们将使用一个传统算法那去创建Q值表,以帮助我们找到每种状态下应采用的行为。第二种方法中,我们将使用神经网络(得到某状态下的近似奖励:Q 值)。


640?wx_fmt=png


这篇文章里有很多信息,在继续进行之前,一定要真正掌握住基础知识。


重点:这篇文章是这一免费的强化学习博文专栏的第一部分。关于更多的资源,见此链接【5】.


下一次我们将基于Q-learning训练agent 去玩Frozen Lake 游戏。


640?wx_fmt=gif


  1. https://youtu.be/q2ZOEFAaaI0

  2. https://deepmind.com/research/dqn/ 

  3. https://deepmind.com/research/alphago/ 

  4. https://blog.openai.com/openai-baselines-ppo/ 

  5. https://simoninithomas.github.io/Deep_reinforcement_learning_Course/


原文链接:

https://medium.freecodecamp.org/an-introduction-to-reinforcement-learning-4339519de419


未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构。


未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495293.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫教程( 2 ) --- 爬虫框架 Scrapy、Scrapy 实战

From:https://piaosanlang.gitbooks.io/spiders/content/ scrapy-cookbook :https://scrapy-cookbook.readthedocs.io/zh_CN/latest/index.html 1. 爬虫框架 Scrapy 爬虫框架中比较好用的是 Scrapy 和 PySpider。 PySpider 优点:分布式框架&a…

传粉飞行器是拯救传粉昆虫危机的利器还是毁灭者

来源:陈华燕的科学网博客摘要:近年来科学家陆续发现,传粉昆虫正在面临着重重危机,至少在欧洲和北美已发现传粉昆虫的数量正在逐渐下降。近年来科学家陆续发现,传粉昆虫正在面临着重重危机,至少在欧洲和北美…

字符串比较函数实现,超简单的面试题,回过头来发现原来我的c多么的薄弱

今天某个公司面试&#xff0c;尽管报了个测试类的&#xff0c;但是面试依旧不给力&#xff0c;先是写个字符串比较函数&#xff0c;只判断相等和不相等的情况&#xff0c;当时大概这么写的&#xff1a; #include<stdio.h>bool strCompare(char *str1,char *str2){char *s…

思略特报告解读:智能制造企业如何实现数字化?

来源&#xff1a;亿欧智库摘要&#xff1a;全球制造业已经将数字化运营或者工业4.0提上日程&#xff0c;基于此&#xff0c;思略特调研了1100多为企业高管&#xff0c;了解他们对数字化的看法。根据调研&#xff0c;总结了四大业务生态体系&#xff1a;客户解决方案体系、运营体…

爬虫教程( 4 ) --- 分布式爬虫 scrapy-redis、集群

1、分布式爬虫 scrapy - redis scrapy 分布式爬虫 文档&#xff1a;http://doc.scrapy.org/en/master/topics/practices.html#distributed-crawls Scrapy 并没有提供内置的机制支持分布式(多服务器)爬取。不过还是有办法进行分布式爬取&#xff0c; 取决于您要怎么分布了。 …

爬虫教程( 5 ) --- Selenium 与 PhantomJS

1. Selenium 中式读法&#xff1a;【 瑟林捏幕 】 Selenium&#xff08; selenium 中文网&#xff1a;http://www.selenium.org.cn/ &#xff09;是一个强大的网络数据采集工具&#xff0c;最初是为了网站自动化测试而开发的&#xff0c;被用来测试 Web 应用程序在不同的浏览器…

详解深度学习的可解释性研究(上篇)

作者 | 王小贱来源 | BIGSCity知乎专栏摘要&#xff1a;《深度学习的可解释性研究》系列文章希望能用尽可能浅显的语言带领大家了解可解释性的概念与方法&#xff0c;以及关于深度学习可解释性工作的研究成果。本文是该系列的第一部分。01深度学习的可解释性研究&#xff08;一…

Office 安装

Office Tool Plus 官网&#xff1a;https://otp.landian.vip/zh-cn/ &#xff1a;https://zhuanlan.zhihu.com/p/486882686 Office Tool Plus 基于 Office 部署工具 (ODT) 打造&#xff0c;可以很轻松地部署 Office。无论你是个体还是团队&#xff0c;Office Tool Plus 都是您…

前瞻性总结:全球未来十年不可不知的10大趋势

来源&#xff1a;混沌大学摘要&#xff1a;无论你身在何处&#xff0c;真正的大趋势必将把地球上每一个人深卷其中&#xff0c;并重构大至国家、城市&#xff0c;小至企业、消费者之间一系列错综复杂的关系。不管你是处于创业模式&#xff0c;还是在大企业里面工作&#xff0c;…

爬虫教程( 6 ) --- 爬虫 进阶、扩展

1. 前言 1. 先看一个最简单的爬虫。 import requestsurl "http://www.cricode.com" r requests.get(url) print(r.text)2. 一个正常的爬虫程序 上面那个最简单的爬虫&#xff0c;是一个不完整的残疾的爬虫。因为爬虫程序通常需要做的事情如下&#xff1a; 1&…

阿里商业白皮书:每个企业都要变成一个数据公司

来源&#xff1a;悟空智能科技摘要&#xff1a;通过近百页的阐述&#xff0c;该报告全面而详实地介绍了阿里巴巴云零售服务生态系统的最新进展情况。通过近百页的阐述&#xff0c;该报告全面而详实地介绍了阿里巴巴云零售服务生态系统的最新进展情况。尤其是&#xff0c;通过数…

NLP通用模型诞生?一个模型搞定十大自然语言常见任务

翻译 | 于之涵编辑 | Leo出品 | AI科技大本营 &#xff08;公众号ID&#xff1a;rgznai100&#xff09;然而近日&#xff0c;Salesforce发布了一项新的研究成果&#xff1a;decaNLP——一个可以同时处理机器翻译、问答、摘要、文本分类、情感分析等十项自然语言任务的通用模型。…

爬虫教程( 3 ) --- 手机 APP 数据抓取

1. Fiddler 设置 这是使用 fiddler 进行手机 app 的抓包&#xff0c;也可以使用 Charles&#xff0c;burpSuite 等。。。 电脑安装 Fiddler&#xff0c;手机 和 安装 fiddler 的电脑处于同一个网络里&#xff0c; 否则手机不能把 HTTP 发送到 Fiddler 的机器上来。配置 Fiddle…

从互联网大脑模型看腾讯与今日头条之争

作者&#xff1a;刘锋 互联网进化论作者 计算机博士前言&#xff1a;通过互联网的大脑模型&#xff0c;分析腾讯与今日头条出现激烈竞争的背后原因&#xff0c;同时得出结论&#xff0c;从未来产业发展趋势看&#xff0c;这种竞争对于两家有可能是好的状况而非坏事。2018年以来…

爬虫教程( 1 ) --- 初级、基础、实践

爬虫教程&#xff1a;https://piaosanlang.gitbooks.io/spiders/content/ 如何入门 Python 爬虫&#xff1a;https://zhuanlan.zhihu.com/p/21479334 静觅 崔庆才的个人博客 Python 爬虫系列&#xff1a;http://cuiqingcai.com/category/technique/python http://www.cnblog…

概念炒作的背后,“智能合约”的真相是什么?

来源&#xff1a;36Kr就像“区块链”&#xff0c;“AI”和“云”一样&#xff0c;“智能合约”也是如今收到热捧的新概念。试想一下&#xff0c;有什么能比相确信合约在未来会按照约定被执行而不需要任何司法介入更好&#xff1f; 智能合约的承诺包括&#xff1a;合约可以被自动…

Dota 2被攻陷!OpenAI 人工智能5V5模式击败人类玩家(4000分水平)

来源&#xff1a;机器之心摘要&#xff1a;我们团队构建的模型&#xff0c;OpenAI Five&#xff0c;已经击败业余 Dota2 团队了。虽然如今是在有限制的情况下&#xff0c;但我们计划到 8 月份在有限英雄池下击败 TI 赛中的一支顶级专业队伍。我们团队构建的模型&#xff0c;Ope…

使用 mitmproxy + python 做拦截代理

From&#xff1a;https://blog.wolfogre.com/posts/usage-of-mitmproxy https://www.cnblogs.com/H4ck3R-XiX/p/12624072.html http://www.cnblogs.com/grandlulu/p/9525417.html mitmProxy 介绍&#xff1a;https://blog.csdn.net/h416756139/article/details…

ZeroMQ全面介绍

★ZMQ是啥玩意儿&#xff1f;   通俗地说&#xff0c;ZMQ是一个开源的、跨语言的、非常简洁的、非常高性能、非常灵活的网络通讯库。它的官方网站在"这里"&#xff0c;维基百科的介绍在"这里"&#xff08;暂时没有中文的维基词条&#xff09;。这玩意儿推…

Android IDA 动态调试最完善攻略,跨过各种坑

From&#xff1a;https://www.pianshen.com/article/3409449384/ IDA 静态分析 与 动态分析&#xff1a;https://zhuanlan.zhihu.com/p/38983223 新手向总结&#xff1a;IDA 动态调试 So 的一些坑&#xff1a;https://zhuanlan.zhihu.com/p/145383282 Android 逆向之旅 --- …