强化学习David Silver课程Lecture1 笔记

Lecture One--RL introduction

强化学习在序列决定问题中是很适用的,第一章就简单介绍了强化学习的整体思想以及其中一些名词。

PPT链接:http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/intro_RL.pdf

视频链接:https://www.youtube.com/watch?v=2pWv7GOvuf0&index=1&list=PL5X3mDkKaJrL42i_jhE4N-p6E2Ol62Ofa

之前也有看过一部分强化学习的资料,不过整个的知识架构感觉就很松散,不是很完善,而且有些地方概念不清晰,于是开始写博客,想通过分享的形式把东西弄明白,没有弄明白的也会在博客中提出自己的疑问和想法,个人的知识水平有限,可能有些地方理解仍然不够,大家发现有错的地方可以直接提出来。

首先,在我思维体系中,机器学习包括监督学习,非监督学习,半监督学习和强化学习。

机器学习是什么呢,机器学习其实就是让机器实现类似于人类思考的过程。人类是怎样思考的呢?举一个很简单的例子,你需要约了你的朋友一起去吃饭,但你的朋友是那种经常迟到的人,你为了让自己的等待时间但又不让你的朋友等你的情况出现,一个很自然的我们处理办法的方式就是我们基于朋友之前迟到的情况做一个大致的统计,然后得到他大概会迟到多久,然后下次约会的时候直接晚那么长的时间过去。这就是很明显的一个基于过去统计的思想来预测下次约会迟到时间,下次迟到时间可能会受到交通、天气、是否周末这些因素的影响,这些就是机器学习里面数据的特征了,我们根据历史数据(包括当天状况和迟到时间)预测下一次迟到时长,这就是一个监督学习中的回归问题了。然后非监督学习针对的是发现事情之间的联系,比如我们有一堆数据,其实很多是属于同一类别的,但是我们无法直接分辨出来,这时候非监督的一系列算法就可以帮我们区分出来了,他与监督学习最大的区别是他没有标签可以学习。比如在刚刚的例子里面,非监督里面的数据就是没有迟到时长的一堆数据,当然最后我们也不是需要预测迟到时长,而是将这些数据进行聚类,发现哪些是相似情况。然后虽然强化学习也是在机器学习内,但其思想与其他几种学习很不一样,他是一种试错思想,里面有个很重要的词,奖励!还是上面那个例子,强化学习的做法是尝试很多次模拟约会,如果自己迟到了,会得到一个很大的惩罚,如果自己等待了很久也会得到一个惩罚,如果自己刚刚好,没有等待也没有让别人等,就会得到奖励,这样学习得到在怎样一个状态下,自己该采取什么行动来使自己得到的奖励最大。

这是我对机器学习的大致一个了解,下面正式来讲David Silver在第一章中讲了什么内容。

强化学习的大致流程:其中有几个重要组成部分 环境 agent 奖励 动作 状态 操作如下图所示

图中大脑就是就是agent,在时刻t agent采取一个动作action At,然后周围的环境(图中的地球接收到此动作At),反馈一个奖励Rt和更新状态St,也可以说这个状态St即是大脑所观测到的Ot,大脑根据所得到的St和Ot再采取下一步的动作At+1,循环下去。

强化学习中的最终目标就是使终结的时候,累积的奖励最大。

Difference

了解强化学习大概的思想之后,其实会发现他和监督学习之间的不一样,在第一章中间也有涉及到这个,他和监督学习的不同主要在下面几个方面:

  1. 中间有奖励,而且这可能是个会延迟的反馈,比如下棋,我到最后一步赢了才会得到奖励,中间过程是没有奖励的。
  2. 在强化学习中,时间真的很重要,因为这个是个序列决策问题。
  3. 动作会影响下一步所得到的子数据,即采取不同的动作可能反馈不一样,状态不一样。

Reward

什么是奖励呢,奖励Rt就是在时间t的反馈信号,我们的Objective就是使得累积的奖励最大

History&State

历史Ht=O1,R1,A1,...At-1,Ot,Rt即之前所有的历史纪录

状态St = f(Ht) 即我们每一步所说的状态是与前面的状态动作所造成的,比如下棋,我们在过程中每一个棋面都是与之前我们所下的动作相关的。

Fully Observable Environment & Partially Observable Environment

环境又分为全面观测环境和局部观测环境,全面观测环境即我们是上帝视角,可以看到整个环境的变化,比如下围棋,环境是整个棋面,我们可以完全观测到,而像机器人移动,我们所观测到的其实只是一个小小的局部。(局部观测环境问题就肯定不能用马尔可夫来解决?)

RL agent的组成:Policy Value Model

好像在之前的书上看的时候并不是这样的,是跟agent区分开来讲的,不过认为这是agent的组成也是有道理的,其实这些是确定我们的动作的一些方式,也就是agent的内部决策。

Policy:将状态和动作匹配起来的,有两种形式,一种是确定性的:a=\pi (s),另外一种是个概率模型:\pi (a|s)=P[A_{t}=a|S_{t}=s]

Value: 是评估某一状态好还是不好的       V_{\pi }(s)=E_{\pi }[R_{t+1}+\gamma R_{t+2}+\gamma ^{2}R_{t+3}+...|S_{t}=s]

Model: 预测下一步环境将会怎么变化 分为两种预测类型

\rho_{ss'}^{a}=P[S_{t+1}=s'|S_{t}=s,A_{t}=a] 预测下个状态,即转移概率?

R_{s}^{a}=E[R_{t+1}|S_{t}=s,A_{t}=a]   预测下个奖励

RL agent的分类(具体的以后再阐述吧):

两种分类方式:第一种方式 分为 Value Based   Policy Based 以及Actor Critic(兼有Policy和Value Function)

第二种分类方式分为 Model Free 和 Model Based

关于序列决策问题的两种重要方式:RL & Planning(这个不太确定)

RL其实就是一个试错过程,trial_and_error learning

而planning是直接精确的查找最优解,比如说树搜索的方式?

然后在强化学习中间还有一个很重要的问题,就是Exploration&Exploitation的平衡问题,Exploration就是探索,偏向于随机,即发现环境的更多信息,比如下棋里面随机动一个子。而Exploitation就是利用,尽可能利用已知信息来最大化累积奖励,即按学到的最优解走,这两个不能只顾某一方,需要平衡才是算法的最佳形式。在别的问题中也有这个,比如在一个优化问题中,我们需要兼顾多样性和集中性。

猜你喜欢

转载自blog.csdn.net/donglcode/article/details/81265439