新手向强化学习入门:机器如何理解世界以及RL基本概念

提示:此文章为笔者个人的学习记录,内容仅供参考,有任何问题欢迎在评论区指出


前言

提示:本篇文章主要是关于李宏毅教授授课视频中的内容进行介绍,小白博主所作工作只是将现有的知识内容结合网路上一些优秀作者的总结以博文的形式加上自己的理解复述一遍。本文主要还是我的学习总结,因为网上的一些知识分布比较零散故作整理叙述。如果有不对的地方,还请帮忙指正。本文不产生任何收益,如有出现禁止转载、侵权的图片,亦或者文字内容请联系我进行修改。


  相关参考:  

  李宏毅2020机器学习深度学习(完整版)国语:链接: link.

  高扬,叶振斌:白话强化学习与Pytorch

一、机器如何理解世界

在这里插入图片描述
1)Agent:Agent是执行策略的智能主体,或称代理(代替我们执行策略)。可以理解为机器人本身,它也是我们要放到环境中去探索和学习的主体。
2)Environment: 指机器人所处的环境,是机器人需要探索的客观存在的环境。
3)observation: 观测,指 Agent 能够观测(感知)到的 环境信息。
4)action:指由 Agent 发出的行为和动作,也是 Agent 与 Environment 之间发生的动作交互。
5)Reward: 一般翻译为“奖励值”,有时也翻译为“回报值”。我们也可以称之为得分。


在这里插入图片描述


  在上面这张图中,机器人是我们的agent,地球是我们的环境( Environment ),桌上的水是机器人的观测( observation)。

  它(agent)感知到讯息接着采取行动(action),把水打翻(action) 。因他的改变而环境状态发生改变,一摊水洒在地上。

   接着环境(地球)给了它一个回馈:你刚刚的动作是不好的(Don‘t do that),所以机器人得到一个负面奖励(reward<0)。

   随后,机器人观测到地上有一滩水后( observation ),便采取行动—把地上水擦净(action),再次改变了环境的状态。

   接着地球给了个回馈:谢谢!这是一个正面的奖励(reward>0),接着这个奖励反馈机器人也接收到了,于是它明白了:我这个动作是好的。

   这里比喻机器的学习过程就是找到一个函数,函数的输入是环境(观测),而机器学习得目标就是要把这个函数(奖励)最大化。

什么是强化学习?

那我们再来看强化学习的目的:研究并解决机器人智能体贯序决策问题。
而所谓的“贯序决策”就是:


   强化学习希望机器人或者智能体在一个环境中,随着 “时间的流逝”,不断地自我学习,并最终在这个环境中学到一套最为合理的行为策略。机器人应该尽可能在没有人干预的情况下,不断根据周围的环境变化学会并判断“在什么情况下怎么做才最好”,从而一步一步完成一个完整的任务(即机器人需要有一份自己的行动准则, 又称之为策略)。这样一系列针对不同情形的最合理的行为组合逻辑,才是一个完整的策略,而非一个简单而孤立的行为。

二、强化学习中的一些基本概念

1.马尔科夫链(MDPs)

在这里插入图片描述


   在聊概念之前让我们再看一个例子,假设现在我们的机器人正在学习玩超级马里奥游戏。


   那此时我们可以把控制马里奥的玩家看作我们的agent(执行动作的智能体/机器人),环境是我们的游戏程序,观测是当前游戏画面,此时如果机器人让马里奥采取跳跃动作,将获得一金币的奖励(reward=1),那么机器人将会学到在当前观测的环境状态下,采取跳跃动作,是一个好的动作。

   因为我们游戏的最终目的是通关,那么我们可以将通关获得的奖励设置到1000(这将远大于吃金币,打怪等收益),然后以奖励总和为优化目标,那么我们可以直观地理解:机器人将以通关为行动策略的最终目的,并在中途尽可能多地吃金币,打怪。

   在此基础上我们再来看几个新概念。

在这里插入图片描述


   我们可以简单地把整个游戏过程中的环境状态理解为三种(其实是很不科学的)——在跳跃状态,在移动状态,和静止状态。并以此构建马尔科夫链。

   如右图所示,当前状态始终与且只与上个时刻所处的状态,动作相关,与更久之前的状态无关。

   MDPs 简单说就是一个智能体采取行动从而改变自己的状态)获得奖励(Reward)与环境发生交互的循环过程。

2.什么是状态

在这里插入图片描述
   状态是我们观测的结果,是观测的等同理解,是对当前环境的描述。

3.什么是模型

  在强化学习领域,模型是用于预 测环境中将发生什么的一套描述信息。我们可以用如下表达式来描述一个模型:
在这里插入图片描述

   其中P是我们在s状态下采取a动作后转移到s^`状态的概率,而R则是我们在s状态下采取a动作获得的奖励期望(此处的P,R均为矩阵)。

   为什么是(奖励)期望?

   因为,我们采取一个动作后,可能会导致多种不同的状态出现。打一个不恰当的比方,在Alpha Go下在棋盘的2-2位置时,对手做出的回应是多种情况的,也就导致最终棋盘(环境)的状态是多种情况的。所以得到的反馈(奖励)也是不一样的,那么我们需要考虑这一个动作导致的多种反馈(奖励),综合(期望)考虑这个动作的价值。

   用表形式描述P状态转移矩阵表以及R期望奖励矩阵表。

在这里插入图片描述
在这里插入图片描述

4.什么是策略

   策略是机器人的行动准则。通常用下述公式做描述。

在这里插入图片描述

   我们可以这样理解这个公式。策略π是在t时刻状态s下执行动作a的概率。我们可以直观地用一个矩阵表来描述我们的策略。

在这里插入图片描述

5.Example:飞机大战

   在了解了模型,策略以及状态后,我们在举一个机器人玩飞机大战的例子,来了解这一整个流程。
在这里插入图片描述

观察上图游戏画面,有以下信息:

   1)模型是已知的:观察左上角的得分(reward)我们可以轻松的知道机器人执行动作后的奖励期望,而且因为整个敌方飞机的飞行轨迹以及子弹轨迹等是游戏程序设计好的,所以状态转移矩阵也是已知的。

   2)机器人可执行的动作和环境所处的状态是有限的,分别是左移,右移以及开火。每击落一架敌方飞机会获得一定数值的得分奖励,直到游戏结束会得到一个累计的总奖励。

   3)机器人会以整个情节(episode,之后会提到)的奖励为目标,并按照最大化累计奖励原则调整自己的行动策略。

在这里插入图片描述
  让我们先分析一下右边的这个游戏过程。

  首先机器看到最左边的画面(state s1),接着采取行动(action a1)向👈走一步,得到回馈reward(r1 = 0),然后再接收状态信息(state s2),接着再选择开火(a2),然后环境给予他的回馈奖励(r2 = 5),s1→a1→r1→s2→a2→r2。

  我们将这一段过程叫做一段情节(an episode)。

   在但此时我们会发现一个很严重的问题,那就是我们的动作奖励是极其“短视”的,因为如果我们只以击落外星人为唯一得分途径(reward),显然在这种条件下移动是不可能带来得分反馈的。

  那么移动动作对应的奖励期望将是0,意味着在机器人看来,做移动是毫无意义的,因为它不会带来任何收益。

   以此为基准训练出来的机器人将不进行任何移动动作,只会不断开火。

   但显然这是不合理的,因为位移虽然不可以直接带来击落得分,但可以调整位置让我们的飞船更好的瞄准。

  这意味着移动是一个具有奖励后效性的动作。只用瞬时值去描述它的奖励期望是不公平的。

   那么我们该如何去描述奖励的后效性?

6.如何获得一个好的策略

   在解答后效奖励这个疑问前,我们先来了解一下求解好策略的两种途径(或者说两种不同的优化标准)。

1)直接法

   优化策略函数 𝑎=𝜋(𝑠|𝜃)说明:𝜋是我们的策略,它基于𝜃参数的(可以理解为𝜃决定𝜋在不同s下采取各种a的概率),那么我们的策略函数的意思就是在基于策略𝜋的机器人在状态s下会采取a动作(a可能有多种情况, 如果a唯一,我们称之为确定性策略)。

   直接法的做法就是,通过优化策略函数 𝑎=𝜋(𝑠|𝜃) 的待定系数的方法来获得好的回报值的数学期望值。期望函数如下:

在这里插入图片描述


1)直接法的问题:

   直接法通过优化𝜋(𝑠|𝜃) 中的𝜃参数(通过max⁡〖E(R(π│s))〗)来找我们的最优化策略的,根据奖励期望函数来更新参数,不难发现此时的奖励函数是针对我们的当前动作a而言的,而且是只考虑当下,无后效性的“现世报”


2)间接法


   在做如图 2-1 所示的动作搜索与转移。也就是说,当机器人所处的状态为某个状态 的时候,选择输出一个动作 𝑎,然后迁移到下一个状态 𝑠。那么问题来了:哪个动作 𝑎更好?


   有 一个非常自然的思路:哪个状态更好,哪个动作 𝑎就更好。那么我们是不是可以将瞬时奖励值 𝑟(也就是三个分支分 别对应的 𝑟1、𝑟2、𝑟3)作为比较对象,哪个动作 𝑎 所对应的奖励值 𝑟大,就选择哪个动作呢?


   好像还是有一点问题:这个瞬时奖励值的大小,其实不能真实地反映这个动作及其所对应转移到的状态的价值。因为在这个状态的后面,可能隐藏着时间更为久远、尺度更为巨大的奖励或 惩罚,而这些是无法通过当时的奖励值看出来的。


在这里插入图片描述

在这里插入图片描述


   值函数代表了状态s所拥有的价值,可以看出一个状态的价值等于其之后每个行动价值的和,结合当前状态的影响不可能一直持续下去的实际,给往后时刻的价值乘以一个衰减系数y,从而模仿影响衰减的真实情况。因为在s状态下,策略π采取的行动可能有多种,因此要对不同行动带来的不同情况做均衡(取期望)。


   实际上大部分传统的强化学习算法,无论是基于统计学做状态逼近的蒙特卡罗法还是基于状态转移概率从下至上迭代更新的动态规划值迭代方法,都是在间接法的基础上采用各种手段计算状态s的价值v(s)以此来衡量策略好坏进行策略改进的过程。

三、策略评估(未完待补)

1.Actor(表演者)+Critic(评论家)


   强化学习模型主要有两个,第一个是有模型(Model_Based),即模型已知(也就是状态转移概率矩阵,奖励矩阵已知)。
   另外一个则是无模型(Model_Free),你并不是对环境很有着充分理解,基于这个产生两个方向,基于策略的和基于价值的,以及两者混合的Actor(表演者)+Critic(评论家)。在无模型的情况下,如何去估算价值函数,然后依照价值函数进行优化成了关键问题。
   强化学习的评估方法有很多,本文主要就论文提及的TD(时间差分)算法,结合蒙德罗特法这两种价值评估方法做简单的比较说明。
   涉及篇幅,此处不介绍优化算法。(待补充)
   在无模型的状态下,如何做利用Actor(表演者)+Critic(评论家)做策略评估?
   我们可以简单理解我们的Actor是我们的机器人,那么Critic是什么?
   什么是Critic(评论家)?

在这里插入图片描述


   1.Critic不会决定动作。


   2.给出一个表演者π(策略的使用者),Critic将评估他的好坏。 简单来讲,就是:actor 执行动作,然后 critic 进行评价,说这个动作的选择是好是坏。
  Critic通常借助V_π (s), 评估的方法是 当使用actor进行环境交互时,看到观察(状态)后获得累计奖励的期望。
   而值函数并非一成不变的。
  为什么说V的值是动态变化的呢。 比如右图。
  如果是游戏还没开始多久,画面上可得分的目标还挺多,V产出的值便会很大。如果目标已经被击落的差不多了V值便会比较小。
  这也可能与actor有关。
   我们可以用棋魂的故事举个例子。之前佐为(Critic)告诉阿光(Actor),这个棋局中(status),下大马步飞(action)不好,理由是下这步棋会让局势变得更加复杂,风险比较高。

在这里插入图片描述

   但过了段时间阿光变强了,佐为反而告诉他是好的,因为现在阿光(actor)变得更强了,这棋步虽较有风险,但对现在的阿光来说能带来好的收益(reward)。

2.Monte-Carlo与时序差分(TD)


   关于V的评估有两种方法,第一种是Monte-Carlo,MC就是对于你输入的状态,会把未来积累的奖励输出来。蒙特卡罗法的过程,是一个通过不断采样让样本丰富起来,进而比较准确地估算出由策略 𝜋 驱使的某个状态的估值 𝑣𝜋(𝑠) 的过程。一旦准确地计算出这个值估,就几乎可以沿用动态规划的 方法进行策略优化了。
   初次蒙特卡罗方法:初次蒙特卡罗方法在计算状态的平均值时,每个状态在一次采样中只会取第一次出现的回报值,假设我们进行了多次采样,访问到状态s的总次数为N,则有

在这里插入图片描述在这里插入图片描述

   每次蒙特卡罗方法:通过这个方法在计算平均值时,在一次采样中每次出现的回报值都会纳入计算,从而在这里插入图片描述
   因为路径具有随机性,因此G也是不断波动的,所以这样计算出来的v方差很大。


   蒙特卡罗方法有一个缺陷,他需要在每次采样结束以后才能更新当前的值函数,但问题规模较大时,这种更新的方式显示是非常慢的。
   我们是否可以将蒙特卡罗方法中的采样过程缩短,从而提高速度呢?答案是肯定的,那就是时序差分(TD)的强化学习方法。
   TD的做法是输入两个状态,接着从这两个状态中间求出reward。TD的场景比较偏重于,如果这个训练是较长比较少停止的,例如训练机器人走路,终局的奖励比较取得,便用这种取得两边输出的方法求奖励。
  

在这里插入图片描述


   蒙特卡罗法的操作很简单,只不过需要在一个 Episode 结 束后才能返回一个状态的估值更新。那么,能不能用一些更直接的方法返回估值呢?也可以,那 就是时间差分(Time Difference,TD)法。


   MC跟TD的差别在于,MC的方法因为是累积的奖励,奖励本身因跟环境互动,与自身随机策略因素关系,较有不确定性,间接有着高方差。
   TD的方法因为直接求出𝓡值,得到的方差会较小,但有一个问题,那就是我们怎么保证v_π (s_(t+1))的准确性。

总结

 
  博主只是出于完成课时作业的目的完成了这篇博客,许多地方写的比较粗糙,很多不足之处希望多多包涵,之后会陆续补齐李教授的其他作业讲解,希望能够帮助到一些和我一样刚入门的朋友,也希望大佬可以帮忙提意见帮助我改进不足之处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值