什么是强化学习?

强化学习是Agent玩家在与环境的互动当中,为了达成目标而进行了学习过程。这是强化学习的第1层结构,称之为基本元素,包括第一Agent玩家,第二Environment环境,第三个Goal目标。强化学习的第2层结构,称之为主要元素,包括:第一State状态,第二Action行动,第三Reword奖励。最后则是强化学习的第3层结构,称之为核心元素Policy策略以及Value价值。

以围棋为例,完整的梳理一下这些元素在强化学习过程中的含义,同时,我们将会了解到,强化学习与其他机器学习领域所不同的两个特点,以及一个核心问题

那么,游戏开始。现在我们就从强化学习的角度来分析一场围棋。
首先,第1层结构Agent,现在就是我,环境在围棋中也就包括了这个棋牌以及我的对手;Goal目标,也就是赢得这局棋。

接下来第2层结构State状态在围棋中很简单,也就是棋盘上棋子的分布情况。那么,现在我们所处的状态是棋盘上没有落子的状态,我们不妨称之为State1。现在假如说我是执白先行,我作为一个Agent,也就是玩家,在当前这一状态下,需要做出某种行动,也就是Action。那么我首先在星位落子。这就是一个行动,我们不妨称之为Action1,在我采取了这个行动之后,我会得到一个即时的反馈,也就是Reward奖励。对于围棋一个好的强化学习模型奖励应该是0,除非达到赢棋的最终状态,所以说在这里,Reword1=0,这样就是一个完整的第2层结构。

State1是棋盘上没有棋子,Action1是我在星位落子,Reword1=0,玩家在一个状态中采取了一个行动,这个行动会得到一个奖励,同时,环境会对这个行动作出响应。比如我的对手落在小目,这就进入了下一个状态State2,一颗白棋在一个角的星位,一颗黑棋在另一个角的小目,接下来就是Action2,Reword2,再进入State3,如此下去,直到棋局结束,这就是第2层结构State,Action,Reword。

最后我们再来看第3层结构,Policy策略和Value价值。在上一期视频中我们说了,价值函数有两种一种是状态价值函数,State Value另一种是状态行动价值函数,State-Action Value,我们这里就采用更直接一点的状态行动价值函数。让我们回到最开始的状态,State1,作为Agent玩家,我需要采取行动。那么,在现在的状态下,我应该在哪里落子呢?这就是一个策略问题,在一个状态下采取什么行动,这就是Policy,而策略是由价值决定的。比如说在State1,我可以采取的行动有361个,这361种行动都有对应的价值。在一个状态下可能的行动所对应的价值,这就是状态行动价值。那么,这个价值的具体数值是什么呢?我们也说过,价值是将来所能得到的所有奖励之和的期望值。在围棋中,如果我们规定赢棋的奖励为1,输棋或者和棋的奖励为0。那么价值实际上就是赢棋的概率,因此,我的策略是选择价值最大,也就是赢棋的概率最大的行动,这就是第3层结构Policy策略和Value价值。

这样,我们就通过围棋这个例子梳理了强化学习的组成元素,分别的含义,以及它们之间的关系。那么,剩下的问题其实只有一个了,如何去学习一个好的价值函数以及好的策略,这也就是整个强化学习领域最重要的核心内容。

强化学习的两个特点,和一个核心问题。

第一个特点,叫做Trial and Error也就是试错,强化学习是一种试错学习,也就是在不断的尝试中去学习,现在我们学习围棋,拿着一本棋谱书。这本棋谱告诉我们,在什么情况下应该怎么落子?这是一种监督学习,而棋谱告诉我们的实际上就是一种策略。这个策略是怎么来的,就是围棋的先辈们通过不断的尝试,不断的对弈总结出来的,这就是一种强化学习。在不断下棋的过程中,去学习哪一步棋的价值最大?在不同的情况下,应该怎么落子?阿尔法狗经历的也是同样的过程,这是强化学习的一大特点Trial and Error,强化学习是一种试错学习。

第二个特点,叫做Delayed Reward,也就是延迟奖励。这个特点在围棋中就非常的明显。玩家采取的行动得到的奖励,基本上都是零,直到最后获得胜利。也就是说,行动没有对应及时的奖励,但是,每一步棋对于最后的胜利都是有贡献的,这就导致一个行动可能没有奖励,但是他一定有价值。
不过一个行动所具有的价值,只有在得到了奖励之后才能真正得到体现。而这个奖励可能发生在一段时间之后,在玩家采取了很多其他的行动之后,这就称为Delayed Reward,延迟奖励。在实际得到奖励之后,我们知道,以前所采取的行动都对这个奖励有所贡献。

那么,如何去学习过去的行动所具有的价值,这就涉及到一个Credit Assignment以及Backpropagation的问题,在具体的强化学习算法中,我们就会看到,在这里呢,我只提到一点,那就是围棋学习中也有同样的过程,我们称之为复盘,一局棋结束之后,一方赢,一方输。那么,到底哪一步棋起到了关键的作用,哪一步的影响不是那么大?这是通过复盘研究来学习的。实际上这就是学习每一个行动所具有的价值的过程。那么这就是强化学习的两个主要特点,第一个Trial and Error,试错。第二个是Delayed Reward,延迟奖励,在围棋中他们都有很好的体现。

那么,最后我们再来看强化学习的一个核心问题
这个问题称为Exploration vs.Exploitation ,**Exploration是开发未知领域,而Exploitation是利用已知状态。**Exploitation也就是“利用”,利用的是强化学习所学习到的价值函数,比如我们有了一个状态行动价值函数,想当然的,应该采取价值最高的行动。这就是Exploitation,但是呢,我们学习到的价值函数不一定是最优的价值函数,有一些看起来价值不是很高的行动,有可能真实的价值是最高的,所以呢,我们不仅仅需要去利用已经学到的价值函数,还应该去尝试不同的行动,从而优化我们的价值函数。这就是探索Exploration和Exploitation之间的权衡,是强化学习中的一个核心问题。

围棋中就有一个很好的例子,那就是阿尔法狗的出现,给围棋界带来了很多前所未有的新定式,甚至是所有操作。举一个最简单的例子,白旗先行,走星位,黑棋小飞挂角,白棋怎么应?通过4000多年的经验总结呢,定式书通常会告诉你,小飞,大飞,单关,压上或者夹一个都是常见的走法,但是很少会去尖顶。这就是说,人类通过4000多年的强化学习,认为在这种状态下,尖顶这一行动所具有的价值不大,但是我们现在发现阿法狗常常喜欢尖顶守角。这就是说,阿尔法狗通过他的强化学习,认为尖顶这一行动具有的价值是很高的,为什么我们以前没有发现这一步的价值呢?那就是因为我们利用了已有的价值函数很少去尖顶也就是缺乏Exploration,所以说Exploration和Exploitation不是一个Trivial的问题,即便是通过4000多年的探索,仍然会有没有探索到的地方。

以上从强化学习的角度分析了围棋这个例子,完整地梳理了强化学习的组成元素,分别的含义和相互关系。接着介绍了强化学习的两个特点,Trial and Error试错以及Delayed Reward延迟奖励。最后,介绍了强化学习的一个核心问题Exploration vs.Exploitation,到此,可以说对于强化学习已经有了一个基本的了解。

用一个简单的例子来阐述强化学习的相关概念(二)相关推荐

  1. .net中的对象序列化(1): 序列化是什么, 以及一个简单的例子

    1. 为什么需要序列化,什么是序列化 对于一个程序来说, 使用到的对象都是存在于内存中的.如果想保存这些对象的运行时状态, 或者需要在不同进程或者网络间传递对象,就需要序列化. 序列化就是讲运行中的对 ...

  2. 一个简单的例子看java线程机制

    一个简单的例子看java线程机制 作者: zyf0808 发表日期: 2006-03-26 11:20 文章属性: 原创 复制链接 import java.util.*; public class T ...

  3. blockchain 区块链200行代码:在JavaScript实现的一个简单的例子

    blockchain 区块链200行代码:在JavaScript实现的一个简单的例子 了解blockchain的概念很简单(区块链,交易链块):它是分布式的(即不是放置在同一台机器上,不同的网络设备上 ...

  4. pycharm安装scrapy失败_Scrapy ——环境搭配与一个简单的例子

    在我刚接触爬虫的时候就已经听过Scrapy大名了,据说是一个很厉害的爬虫框架,不过那个时候沉迷于Java爬虫.现在终于要来揭开它神秘的面纱了,来一起学习一下吧 欢迎关注公众号:老白和他的爬虫 1.环境 ...

  5. java继承类型转换_#java 一个简单的例子理解java继承、成员函数重写、类型转换...

    一个简单的例子理解java继承.成员函数重写.类型转换 1.继承简介 举一个简单的例子:笔分为很多种,比如毛笔.钢笔.圆珠笔等等,这些笔都有一些相同的属性比如长度.笔迹的粗细等等:但他们也有不同的特点 ...

  6. 类模板与运算符重载(一个简单的例子)

    类模板与运算符重载(一个简单的例子) 标签(空格分隔): C++ 算法竞赛 下面是一段简单的代码,表示我们建立了一个类模板Vector,可以看做是对STL中vector的简单实现. 为了让这个Vect ...

  7. 一个简单的例子,学习自定义注解和AOP

    转载自   一个简单的例子,学习自定义注解和AOP 记得今年年初刚开始面试的时候,被问的最多的就是你知道Spring的两大核心嘛?那你说说什么是AOP,什么是IOC?我相信你可能也被问了很多次了. 1 ...

  8. antlr4例子_ANTLR和网络:一个简单的例子

    antlr4例子 网络上的ANTLR:为什么? 我开始在MS-DOS上编写我的第一个程序. 因此,我非常习惯在自己的机器上安装工具. 但是在2016年,网络无处不在,因此那里也可能需要我们的语言. 可 ...

  9. ANTLR和网络:一个简单的例子

    网络上的ANTLR:为什么? 我开始在MS-DOS上编写我的第一个程序. 因此,我非常习惯在计算机上安装工具. 但是在2016年,网络无处不在,因此那里也可能需要我们的语言. 可能的情况: ANTLR ...

最新文章

  1. 电脑怎样限制装软件 怎么限制软件运行
  2. python是一门什么课程-为什么说Python是一门伟大的入门语言?丨课程推荐
  3. 农信互联X联网副总冯兴臣:关于互农产品的一些思考
  4. 【ABAP】如何判断单据是否被锁定
  5. 当网页太多时,用锚点 以及超链接的使用
  6. 怎样安装两个tomcat,怎样配置
  7. shell的算术运算
  8. StanfordDB class自学笔记 (10) Unified Modeling Language
  9. JSP学习——EL表达式和JSTL学习小结
  10. java web聊天室原理_网页聊天室的原理
  11. Unity学习资源(超全)汇总 基础+项目+进阶+面试
  12. 2018 蓝桥杯省赛 A 组模拟赛(一) 青出于蓝胜于蓝
  13. 图像扭曲(仿射变换)
  14. P3488 [POI2009]LYZ-Ice Skates
  15. nginx搭建及配置
  16. 3d打印机喷头出现堵丝问题
  17. 利用openCV(C++)实现Halcon中的min_max_gray函数的功能
  18. 关于职业生涯发展的一点思考
  19. 跟着吴坚鸿学单片机——第1天:吴坚鸿谈初学单片机的误区
  20. C语言笔记-连续赋值

热门文章

  1. uni-app开发app之一uni-app优缺点
  2. Power BI DAX: DAX生成日历表
  3. aecmap快捷键_arcmap快捷键
  4. 《网络是这样连接的》读书笔记2
  5. SpringBoot系列之对Excel报表的校验提示
  6. c语言多态性编码图形,C和C++经典著作 C专家编程Expert C Programming Deep C Secrets pdf...
  7. 华硕无双+2022款笔记本重装系统笔记
  8. 电商平台“阿里巴巴关键词搜索”api接口调用展示
  9. 2019年,会不会是我这一辈子的人生巅峰?
  10. python爬虫之十_scrapy框架进阶