强化学习-tutorial

强化学习

当你发现收集有标注的数据困难,正确答案人类也不知道是什么的时候,往往是考虑使用RL的时候。尽管机器不知道答案是什么,但是机器会知道什么好,什么不好,通过与环境互动获得奖励。

在这里插入图片描述

第一章 强化学习概述

1.1 强化学习概述

在这里插入图片描述
与监督学习最大的区别如下:
1)强化学习输入的样本是序列数据,而不像监督学习里面样本都是独立的。
2)学习器并没有告诉我们每一步正确的动作应该是什么,学习器需要自己去发现哪些动作可以带来 最多的奖励,只能通过不停地尝试来发现最有利的动作。
3)智能体获得自己能力的过程,其实是不断地试错探索(trial-and-error exploration)的过程。探索 (exploration)和利用(exploitation)是强化学习里面非常核心的问题。其中,探索指尝试一些新的动作, 这些新的动作有可能会使我们得到更多的奖励,也有可能使我们“一无所有”;利用指采取已知的可以获得最多奖励的动作,重复执行这个动作,因为我们知道这样做可以获得一定的奖励。因此,我们需要在探索和利用之间进行权衡,这也是在监督学习里面没有的情况。
4)强化学习过程中,没有非常强的监督者(supervisor),只有奖励信号(reward signal),并且奖励信号是延迟的,即环境会在很久以后告诉我们之前我们采取的动作到底是不是有效的。因为我们没有得 到即时反馈,所以智能体使用强化学习来学习就非常困难。

1.2序列决策

状态是对世界的完整描述,不会隐藏世界的信息。观测是对状态的部分描述,可能会遗漏一些信息:
在与环境的交互过程中,智能体会获得很多观测。从智能体出发,针对每一个观测,智能体会采取一个动作,也会得到一个奖励。所以历史H是观测o、动作a、奖励r的序列:
在这里插入图片描述
环境有自己的函数 s t e = f e ( H t ) s_{t}^{e}=f^{e}(H_t) ste=fe(Ht), 来更新状态,在智能体的内部也有一个函数 s t a = f a ( H t ) s_{t}^a=f^{a}(H_t) sta=fa(Ht)来更新状态。当智能体的状态与环境的状态等价的时候,即当智能体能够观察到环境的所有状态时,我们称这个环境是完全可观测的(fully observed)。在这种情况下面,强化学习通常被建模成一个马尔可夫决策过程 (Markov decision process,MDP)的问题。在马尔可夫决策过程中, o t = s t e = s t a o_t = s_t^e = s_{t}^{a} ot=ste=sta​ 。

但是有一种情况是智能体得到的观测并不能包含环境运作的所有状态,因为在强化学习的设定里面, 环境的状态才是真正的所有状态。
也就是当智能体只能看到部分的观测,我们就称这个环境是部分可观测的(partially observed)。 在这种情况下,强化学习通常被建模成部分可观测马尔可夫决策过程(partially observable Markov decision process, POMDP)的问题。部分可观测马尔可夫决策过程是马尔可夫决策过程的一种泛化。 部分可观测马尔可夫决策过程依然具有马尔可夫性质,但是假设智能体无法感知环境的状态,只能知道 部分观测值。比如在自动驾驶中,智能体只能感知传感器采集的有限的环境信息。

部分可观测马尔可夫决策过程可以用一个七元组描述:(S,A,T,R,Ω,O,γ)
S S S:状态空间,隐变量
A A A:动作空间,
T ( s ′ ∣ s , a ) T(s'|s,a) T(ss,a)状态转移概率,
R R R奖励函数,
Ω ( o ∣ s , a ) \Omega(o|s,a) Ω(os,a)为观测概率
O O O观测空间
γ \gamma γ为折扣系数

1.3动作空间

在给定的环境中,有效动作的集合经常被称为动作空间(action space)。

像雅达利游戏和围棋(Go)这样的环境有离散动作空间(discrete action space),在这个动作 空间里,智能体的动作数量是有限的。在其他环境,比如在物理世界中控制一个智能体,在这个环境中就 有连续动作空间(continuous action space)。在连续动作空间中,动作是实值的向量。

例如,走迷宫机器人如果只有往东、往南、往西、往北这 4 种移动方式,则其动作空间为离散动作空 间;如果机器人可以向 360 度中的任意角度进行移动,则其动作空间为连续动作空间。

1.4 强化学习智能体的组成成分和类型

对于一个强化学习智能体,它可能有一个或多个如下的组成成分。

  • 策略(policy) 智能体会用策略来选取下一步的动作。
  • 价值函数(value function)我们用价值函数来对当前状态进行评估。价值函数用于评估智能体进入某个状态后,可以对后面的奖励带来多大的影响。价值函数值越大,说明智能体进入这个状态越有利。
  • 模型(model)。模型表示智能体对环境的状态进行理解,它决定了环境中世界的运行方式。 下面我们深入了解这 3 个组成部分的细节。
策略:

在这里插入图片描述
如图 1.14 所示,从雅达利游戏来看,策略函数的输入就是游戏的一帧,它的输出决定智能体向左移动或者向右移动。
中间的部分就是策略函数。
策略函数
**通常情况下,强化学习一般使用随机性策略,随机性策略有很多优点。**比如,在学习时可以通过引入一定的随机性来更好地探索环境; 随机性策略的动作具有多样性,这一点在多个智能体博弈时非常重要。采用确定性策略的智能体总是对同样的状态采取相同的动作,这会导致它的策略很容易被对手预测。

价值函数

价值函数的值是对未来奖励的预测,我们用它来评估状态的好坏。 价值函数里面有一个折扣因子(discount factor),我们希望在尽可能短的时间里面得到尽可能多的奖励。比如现在给我们两个选择:10天后给我们100块钱或者现在给我们100块钱。我们肯定更希望现在就给我们 100 块钱,因为我们可以把这 100 块钱存在银行里面,这样就会有一些利息。因此,我们可以把折扣因子放到价值函数的定义里面,价值函数的定义为
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
所以我们未来可以获得奖励的期望取决于当前的状态和当前的动作。Q 函数是强化学习算法里面要学习的一个函数。因为当我们得到 Q 函数后,进入某个状态要采取的最优动作可以通过 Q 函数得到。

模型(状态转移概率+奖励函数两个部分)

决定了下一步的状态,Q:下一步的状态是什么意思?A:下一步的状态指的是执行当前动作后,智能体所到达的新的状态。具体来说,强化学习模型的智能体通过在某个状态下采取一个动作,然后根据环境的状态转移概率和奖励函数,转移到下一个状态并获得相应的奖励。
在这里插入图片描述
马尔可夫决策过程图:
马尔可夫决策过程

可以具体分解如下:

  1. 当前状态(Current State, ( s t s_t st )): 智能体当前所处的状态。
  2. 动作 (Action, ( a t a_t at )): 智能体在当前状态下采取的动作。
  3. 下一步的状态 (Next State, ( s t + 1 s_{t+1} st+1 )): 智能体在采取动作 ( a_t ) 之后,由环境根据状态转移概率决定的新的状态。
  4. 状态转移概率 (State Transition Probability, ( P ( s t + 1 ∣ s t , a t ) P(s_{t+1} | s_t, a_t) P(st+1st,at) )): 从当前状态 ( s_t ) 采取动作 ( a_t ) 转移到下一步状态 ( s_{t+1} ) 的概率。
  5. 奖励函数 (Reward Function, ( R ( s t , a t , s t + 1 ) R(s_t, a_t, s_{t+1}) R(st,at,st+1) )): 智能体从当前状态 ( s_t ) 采取动作 ( a_t ) 转移到下一步状态 ( s_{t+1} ) 后获得的奖励。

因此,"下一步的状态"就是在当前状态 ( s_t ) 下采取动作 ( a_t ) 之后,智能体所处的新的状态 ( s_{t+1} )。这个状态由环境根据状态转移概率来决定,并且在这个过程中,智能体会收到相应的奖励。

在这里插入图片描述

强化学习智能体的类型

分类方法一:根据智能体学习的事物不同,我们可以把智能体进行归类。

  • 基于价值的智能体
    根据智能体学习的事物不同,我们可以把智能体进行归类。基于价值的智能体(value-based agent)显式地学习价值函数,隐式地学习它的策略。策略是其从学到的价值函数里面推算出来的。
  • 基于策略的智能体
    基于策略的智能体(policy-based agent)直接学习策略,我们给它一个状态,它就会输出对应动作的概率。基于策略的智能体并没有学习价值函数。
  • 基于演员-评论员的智能体(结合价值和策略的智能体)
    把基于价值的智能体和基于策略的智能体结合起来就有了演员-评论员智能体(actor-critic agent)。这一类智能体把策略和价值函数都学习了,然后通过两者的交互得到最佳的动作

分类方法2:们可以通过智能体到底有没有学习环境模型来对智能体进行分类。
有模型(model-based)强化学习智能体通过学习状态的转移来采取动作。
免模型(model-free)强化学习智能体没有去直接估计状态的转移,也没有得到环境的具体转移变量,它通过学习价值函数和策略函数进行决策。免模型强化学习智能体的模型里面没有环境转移的模型。

我们可以用马尔可夫决策过程来定义强化学习任务,并将其表示为四元组 <S,A,P,R>,即状态集合、动作集合、状态转移函数和奖励函数。
具体来说,当智能体知道状态转移函数 P ( s t + 1 ∣ s t , a t ) P(s_{t+1}|s_{t},a_{t}) P(st+1stat)和奖励函数 R ( s t , a t ) R(s_{t},a_{t}) R(st,at)。它就能知道在某一状态下执行某一动作后能带来的奖励和环境的下一状态,这样智能体就不需要在真实环境中采取动作,直接在虚拟世界中学习和规划策略即可。这种学习方法称为有模型强化学习。 有模型强化学习的流程如图 1.19 所示。
在这里插入图片描述
然而在实际应用中,智能体并不是那么容易就能知晓马尔可夫决策过程中的所有元素的。通常情况下,状态转移函数和奖励函数很难估计,甚至连环境中的状态都可能是未知的,这时就需要采用免模型强化学习。免模型强化学习没有对真实环境进行建模,智能体只能在真实环境中通过一定的策略来执行动作,等待奖励和状态迁移,然后根据这些反馈信息来更新动作策略,这样反复迭代直到学习到最优策略。

Q:有模型强化学习和免模型强化学习有什么区别?

A:针对是否需要对真实环境建模,强化学习可以分为有模型强化学习和免模型强化学习。有模型强化学习是指根据环境中的经验,构建一个虚拟世界,同时在真实环境和虚拟世界中学习;免模型强化学习是指不对环境进行建模,直接与真实环境进行交互来学习到最优策略。

总之,有模型强化学习相比免模型强化学习仅仅多出一个步骤,即对真实环境进行建模。因此,一些有模型的强化学习方法,也可以在免模型的强化学习方法中使用。
在实际应用中,如果不清楚该用有模型强化学习还是免模型强化学习,可以先思考在智能体执行动作前,是否能对下一步的状态和奖励进行预测,如果能,就能够对环境进行建模,从而采用有模型学习。

目前,大部分深度强化学习方法都采用了免模型强化学习,这是因为:免模型强化学习更为简单、直观且有丰富的开源资料,如 AlphaGo 系列都采用免模型强化学习;在目前的强化学习研究中,大部分情况下环境都是静态的、可描述的,智能体的状态是离散的、可观察的(如雅达利游戏平台),这种相对简单、确定的问题并不需要评估状态转移函数和奖励函数,可直接采用免模型强化学习,使用大量的样本进行训练就能获得较好的效果。
在这里插入图片描述

1.5学习与规划

一个常用的强化学习问题解决思路是,先学习环境如何工作,也就是了解环境工作的方式,即学习得到一个模型,然后利用这个模型进行规划。

1.6 探索和利用

探索即我们去探索环境,通过尝试不同的动作来得到最佳的策略(带来最大奖励的策略)。
利用即我们不去尝试新的动作,而是采取已知的可以带来很大奖励的动作。

与监督学习任务不同,强化学习任务的最终奖励在多步动作之后才能观察到,这里我们不妨先考虑比较简单的情形:最大化单步奖励,即仅考虑一步动作。需注意的是,即便在这样的简单情形下,强化学习仍与监督学习有显著不同,因为智能体需通过试错来发现各个动作产生的结果,而没有训练数据告诉智能体应当采取哪个动作。
想要最大化单步奖励需考虑两个方面:一是需知道每个动作带来的奖励,二是要执行奖励最大的动作。若每个动作对应的奖励是一个确定值,那么尝试遍所有的动作便能找出奖励最大的动作。然而,更一般的情形是,一个动作的奖励值是来自一个概率分布,仅通过一次尝试并不能确切地获得平均奖励值。
在这里插入图片描述

显然,仅探索法能很好地估计每个摇臂的奖励,却会失去很多选择最优摇臂的机会;仅利用法则相反,它没有很好地估计摇臂期望奖励,很可能经常选不到最优摇臂。因此,这两种方法都难以使最终的累积奖励最大化。
事实上,探索(估计摇臂的优劣)和利用(选择当前最优摇臂)这两者是矛盾的,因为尝试次数(总投币数)有限,加强了一方则自然会削弱另一方,这就是强化学习所面临的探索-利用窘境(exploration-exploitation dilemma)。显然,想要累积奖励最大,则必须在探索与利用之间达成较好的折中

1.7强化学习实验

OpenAI 的 Gym库是一个环境仿真库,里面包含很多现有的环境。针对不同的场景,我们可以选择不同的环境。离散控制场景(输出的动作是可数的,比如Pong游戏中输出的向上或向下动作)一般使用雅达利环境评估;连续控制场景(输出的动作是不可数的,比如机器人走路时不仅有方向,还有角度,角度就是不可数的,是一个连续的量 )一般使用 MuJoCo 环境评估。Gym Retro是对 Gym 环境的进一步扩展,包含更多的游戏。

环境配置:

conda create -n envname python==3.9.19
conda install pytorch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 pytorch-cuda=12.1 -c pytorch -c nvidia
pip install ipykernel

第二章 马尔可夫决策过程

在强化学习中,智能体与环境就是这样进行交互的,这个交互过程可以通过马尔可夫决策过程来表示,所以马尔可夫决策过程是强化学习的基本框架。

2.2 马尔可夫奖励过程

价值函数(回报->价值函数)

回报(return)可以定义为奖励的逐步叠加。
有了回报之后,就可以定义状态的价值了。就是状态价值函数。对于马尔可夫奖励过程:状态价值函数被定义成回报的期望。

折扣因子可以作为强化学习智能体的一个超参数(hyperparameter)来进行调整,通过调整折扣因子,我们可以得到不同动作的智能体。

马尔可夫奖励过程里面,我们如何计算价值呢?如图 2.4 所示,马尔可夫奖励过程依旧是状态转移,其奖励函数可以定义为:智能体进入第一个状态 s_1的时候会得到 5 的奖励,进入第七个状态 的时s_7候会得到 10 的奖励,进入其他状态都没有奖励。我们可以用向量来表示奖励函数,即
在这里插入图片描述
这里就引出了一个问题,当我们有了一些轨迹的实际回报时,怎么计算它的价值函数呢?
比如我们想知道 s4 的价值,即当我们进入 s后4,它的价值到底如何?一个可行的做法就是我们可以生成很多轨迹,然后把轨迹都叠加起来。比如我们可以从 s开4始,采样生成很多轨迹,把这些轨迹的回报都计算出来,然后将其取平均值作为我们进入 s4价值。这其实是一种计算价值函数的办法,也就是通过蒙特卡洛(Monte Carlo,MC)采样的方法计算 s4 的价值。

贝尔曼方程

在这里插入图片描述

2.2.3 计算马尔可夫奖励过程价值的迭代算法 (马尔可夫奖励过程举例)

我们可以将迭代的方法应用于状态非常多的马尔可夫奖励过程(large MRP),比如:动态规划的方法,蒙特卡洛的方法(通过采样的办法计算它),时序差分学习(temporal-difference learning,TD learning)的方法(时序差分学习是动态规划和蒙特卡洛方法的一个结合)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 马尔可夫决策过程

相对于马尔可夫奖励过程,马尔可夫决策过程多了决策(决策是指动作),其他的定义与马尔可夫奖励过程的是类似的。
在这里插入图片描述

在马尔可夫决策过程中,动作是由智能体决定的,智能体会采取动作来决定未来的状态转移。
在这里插入图片描述

马尔可夫决策过程中的价值函数
策略评估

一致马尔可夫决策过程以及要采取的策略 π \pi π,计算价值函数 V π ( s ) V_{\pi}(s) Vπ(s)的过程就是策略评估。也就是预测我们当前采取的策略最终会差生多少价值。

2.3.7 预测与控制

预测(prediction)和控制(control)是马尔可夫决策过程里面的核心问题。
预测(评估一个给定的策略)的输入是马尔可夫决策过程 < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>,输出是价值函数 V π V_{\pi} Vπ

控制(搜索最佳策略)的输入是马尔可夫决策过程 < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>,输出是最佳价值函数 V ∗ V^{*} V和最佳策略(optimal policy) π ∗ \pi^{*} π。控制就是我们去寻找一个最佳的策略,然后同时输出它的最佳价值函数以及最佳策略。

2.3.8 动态规划

动态规划(dynamic programming,DP)适合解决满足最优子结构(optimal substructure)和重叠子问题(overlapping subproblem)两个性质的问题。最优子结构意味着,问题可以拆分成一个个的小问题,通过解决这些小问题,我们能够组合小问题的答案,得到原问题的答案,即最优的解。重叠子问题意味着,子问题出现多次,并且子问题的解决方案能够被重复使用,我们可以保存子问题的首次计算结果,在再次需要时直接使用。

马尔可夫决策过程是满足动态规划的要求的,在贝尔曼方程里面,我们可以把它分解成递归的结构。当我们把它分解成递归的结构的时候,如果子问题的子状态能得到一个值,那么它的未来状态因为与子状态是直接相关的,我们也可以将之推算出来。价值函数可以存储并重用子问题的最佳的解。动态规划应用于马尔可夫决策过程的规划问题而不是学习问题,我们必须对环境是完全已知的,才能做动态规划,也就是要知道状态转移概率和对应的奖励。使用动态规划完成预测问题和控制问题的求解,是解决马尔可夫决策过程预测问题和控制问题的非常有效的方式。

2.3.9马尔可夫决策过程中的策略评估

策略评估就是给定马尔可夫决策过程和策略,评估我们可以获得多少价值,即对于当前策略,我们可以得到多大的价值。我们可以直接把贝尔曼期望备份(Bellman expectation backup) ,变成迭代的过程,反复迭代直到收敛。这个迭代过程可以看作同步备份(synchronous backup) 的过程。

同步备份是指每一次的迭代都会完全更新所有的状态,这对于程序资源的需求特别大。异步备份(asynchronous backup)的思想就是通过某种方式,使得每一次迭代不需要更新所有的状态,因为事实上,很多状态也不需要被更新。

2.3.10马尔可夫决策过程中的过程控制

策略评估是指给定马尔可夫决策过程和策略,我们可以估算出价值函数的值。如果我们只有马尔可夫决策过程,那么应该如何寻找最佳的策略,从而得到最佳价值函数(optimal value function)呢?

Q: 怎样进行策略搜索?
我们可以通过策略迭代和价值迭代来解决马尔可夫决策过程的控制问题。

迭代策略-策略迭代

策略迭代由两个步骤组成:策略评估和策略改进(policy improvement)。

迭代策略-价值迭代

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

第三章:表格形方法

Lee:过程简介

在这里插入图片描述

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

Lee:演算法解RL问题:policy gradient

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如何产生s\a和定义A就是重要的问题之一。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值