强化学习之蒙特卡罗(MC)、动态规划(DP)、时间差分(TD)

news/2024/5/18 22:27:29 标签: 强化学习, python, pytorch

强化学习笔记

      • 1.马尔可夫决策过程(MDP)
        • 1.马尔可夫性质
        • 2.马尔可夫过程
        • 3.马尔可夫奖励过程(MRP)
        • 4.马尔可夫决策过程(MDP)
      • 2.蒙特卡罗(MC)、动态规划(DP)、时间差分(TD)
        • 1.蒙特卡罗(MC)
        • 2.动态规划(DP)
        • 3.时间差分(TD)
        • 4. MC、DP、TD之间的关系。

1.马尔可夫决策过程(MDP)

1.马尔可夫性质

当且仅当某时候的状态只取决于上一时刻的状态时,一个随机过程被称为具有马尔可夫性质
P ( S t + 1 ∣ S t ) = P ( S t + 1 ∣ S 1 , . . . , S t ) P(S_{t+1}|S_t)=P(S_{t+1}|S_1,...,S_t) P(St+1St)=P(St+1S1,...,St)


2.马尔可夫过程

指具有马尔可夫性质的随机过程被称为马尔可夫过程,通常用元组<S,P>描述。

S表示有限数量的状态集合,终止状态是指它不会再转移到其他状态
S = { s 1 , s 2 , . . . s n } S=\{s_1,s_2,...s_n\} S={s1,s2,...sn}
P是状态转移矩阵,定义所有状态对之间的转移概率,某个状态到其他状态的概率和必须为1。
P = [ P ( s 1 ∣ s 1 ) . . . P ( s n ∣ s 1 ) . . . . . . . . . P ( s 1 ∣ s n ) . . . P ( s n ∣ s n ) ] P=\begin{bmatrix} P(s_1|s_1) & ...& P(s_n|s_1) \\ ... & ... &...\\P(s_1|s_n)&...&P(s_n|s_n) \end{bmatrix} P= P(s1s1)...P(s1sn).........P(sns1)...P(snsn)

3.马尔可夫奖励过程(MRP)

再马尔可夫过程的基础上加入奖励函数r和折扣因子γ,就可以得到马尔可夫奖励过程,通常由<S,P,r,γ>构成。

S是有限状态的集合。

P是状态转移矩阵。

r是奖励函数,某个状态s的奖励r(s)指转移到该状态时可以获得的奖励的期望

γ是折扣因子,取值范围为[0,1)。

(1) 回报:

在马尔可夫奖励过程中,从第t时刻状态St开始,直到终止状态时,所有奖励的衰减之和称为回报。
G t = R t + γ R t + 1 + r 2 R t + 2 + . . . = ∑ i = 0 ∞ r k R t + k G_t=R_t+γR_{t+1}+r^2R_{t+2}+...=\sum_{i=0}^∞r^kR_{t+k} Gt=Rt+γRt+1+r2Rt+2+...=i=0rkRt+k
(2) 价值函数:

在马尔可夫奖励过程中,一个状态的期望回报被称为这个状态的价值。价值函数输入为某个状态,输出为这个状态的价值。
V ( s ) = E [ G t ∣ S t = s ] V ( s ) = r ( s ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s ) V ( s ′ ) V(s)=E[G_t|S_t=s]\\ V(s)=r(s)+γ\sum_{s'∈S}P(s'|s)V(s') V(s)=E[GtSt=s]V(s)=r(s)+γsSP(ss)V(s)
(3)贝尔曼方程:
V = R + γ P V ( I − r P ) V = R V = ( I − r P ) − 1 R V=R+γPV\\ (I-rP)V=R\\ V=(I-rP)^{-1}R V=R+γPV(IrP)V=RV=(IrP)1R
贝尔曼方程的计算复杂度O(n3),求解较大规模的马尔可夫奖励过程的价值函数时,可以使用动作规划(DP)算法,蒙特卡洛方法(MC)和时序差分(TD)

4.马尔可夫决策过程(MDP)

​ 马尔可夫过程和马尔可夫奖励过程都是自发改变的随机过程,在这基础上加一个外界的“刺激”(智能体的动作)来改变这个随机过程,就有了马尔可夫决策过程,通常由<S,A,P,r,γ>。

S是状态的集合。

A是动作的集合。

γ是折扣因子。

r(s,a)是奖励函数,此时奖励可能同时取决于状态s和动作a

P(s’|s,a)是状态转移函数,表示在状态s执行动作a之后到达状态s‘的概率

r’(s)表示在一个MRP状态s的奖励。
r ′ ( s ) = ∑ a ∈ A π ( a ∣ s ) r ( s , a ) r'(s)=\sum_{a∈A}\pi(a|s)r(s,a) r(s)=aAπ(as)r(s,a)
P’(s’|s)表示在一个MRP的状态从s转移至s’的概率。
P ′ ( s ′ ∣ s ) = ∑ a ∈ A π ( a ∣ s ) P ( s ′ ∣ s , a ) P'(s'|s)=\sum_{a∈A}\pi(a|s)P(s'|s,a) P(ss)=aAπ(as)P(ss,a)
(1)策略:

策略Π(a|s)表示输入状态为s的情况下采取动作a的概率。
π ( a ∣ s ) = P ( A t = a ∣ S t = s ) \pi(a|s)=P(A_t=a|S_t=s) π(as)=P(At=aSt=s)
(2)状态价值函数:

从状态s出发遵循策略Π能获得的期望回报,被称为状态价值函数VΠ(s)
V π ( s ) = E π [ G t ∣ S t = s ] V^\pi(s)=E_\pi[G_t|S_t=s] Vπ(s)=Eπ[GtSt=s]
(3)动作价值函数:

从状态s出发,遵循策略Π并执行动作a得到的期望回报,被称为动作价值函数QΠ(s,a)
Q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] Q^\pi(s,a)=E_\pi[G_t|S_t=s,A_t=a] Qπ(s,a)=Eπ[GtSt=s,At=a]
状态s的价值等于在该状态下基于策略Π采取所有动作的概率和相应的价值相乘再求和的结果。
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V^\pi(s)=\sum_{a∈A}\pi(a|s)Q^\pi(s,a) Vπ(s)=aAπ(as)Qπ(s,a)
状态s下采取动作a的价值等于即时奖励加上经过衰减的所有可能的下一个状态的状态转移概率和相应的价值乘积。
Q π ( s , a ) = r ( s , a ) + r ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) Q^\pi(s,a)=r(s,a)+r\sum_{s'∈S}P(s'|s,a)V^\pi(s') Qπ(s,a)=r(s,a)+rsSP(ss,a)Vπ(s)
(4)贝尔曼期望方程:

由上式推导可得
Q π = r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q π ( s ′ ∣ a ′ ) V π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( r ( s , a ) + r ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) ) Q^\pi=r(s,a)+γ\sum_{s'∈S}P(s'|s,a)\sum_{a'∈A}\pi(a'|s')Q^\pi(s'|a')\\V^\pi(s)=\sum_{a∈A}\pi(a|s)(r(s,a)+r\sum_{s'∈S}P(s'|s,a)V^\pi(s')) Qπ=r(s,a)+γsSP(ss,a)aAπ(as)Qπ(sa)Vπ(s)=aAπ(as)(r(s,a)+rsSP(ss,a)Vπ(s))
(5)贝尔曼最优方程:

强化学习的目标:通常是找到一个策略,使得智能体从初始状态出能获得最多的期望回报

*最优策略(Π(s)):**在有限状态和动作集合的MDP中,至少存在一个策略比其他所有策略都好或者至少存在一个策略不差于其他所有策略。

最优状态价值函数:
V ∗ ( s ) = max ⁡ π V π ( s ) V^*(s)=\max_{\pi}V^\pi(s) V(s)=πmaxVπ(s)
最优动作价值函数:
Q ∗ ( s , a ) = max ⁡ π Q π ( s , a ) Q^*(s,a)=\max_{\pi}Q^\pi(s,a) Q(s,a)=πmaxQπ(s,a)
为了使用最优动作价值函数最大,需要在当前状态动作对(s,a)之后都执行最优策略。
Q ∗ ( s , a ) = r ( s , a ) + r ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ∗ ( s ′ ) V ∗ ( s ′ ) = max ⁡ a ∈ A Q ∗ ( s , a ) Q^*(s,a)=r(s,a)+r\sum_{s'∈S}P(s'|s,a)V^*(s')\\V^*(s')=\max_{a∈A}Q^*(s,a) Q(s,a)=r(s,a)+rsSP(ss,a)V(s)V(s)=aAmaxQ(s,a)
根据最优状态价值函数和最优动作价值函数的关系,以及贝尔曼方程,得到贝尔曼最优方程。
V ∗ ( s ) = max ⁡ a ∈ A { r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ∗ ( s ′ ) } Q ∗ ( s , a ) = r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) max ⁡ a ′ ∈ A Q ∗ ( s ′ , a ′ ) V^*(s)=\max_{a∈A}\{r(s,a)+γ\sum_{s'∈S}P(s'|s,a)V^*(s')\}\\Q^*(s,a)=r(s,a)+γ\sum_{s'∈S}P(s'|s,a)\max_{a'∈A}Q^*(s',a') V(s)=aAmax{r(s,a)+γsSP(ss,a)V(s)}Q(s,a)=r(s,a)+γsSP(ss,a)aAmaxQ(s,a)
V*(s)与VΠ(s)的区别:前者会按照获取最多期望回报的动作来取值,其他动作则不会赋予概率,类似于贪心算法;后者会根据策略Π对各个动作的概率分配获取的期望回报来求和, 就是求期望。

2.蒙特卡罗(MC)、动态规划(DP)、时间差分(TD)

这些方法用于找到一个策略,使得智能体从初始状态出能获得最多的期望回报

1.蒙特卡罗(MC)

如图所示,蒙特卡罗需要一个完整的路径。

蒙特卡罗公式的推导:

(1).状态价值的期望回报:当策略在MDP上采样很多条序列,计算从这个状态出发的回报再求其期望
V π = E π [ G t ∣ S t = s ] ≈ 1 N ∑ i = 1 N G t ( i ) V^\pi=E_\pi[G_t|S_t=s]\approx \frac{1}{N}\sum_{i=1}^NG_t^{(i)} Vπ=Eπ[GtSt=s]N1i=1NGt(i)
(2).采用增量式更新来推导。
V N π = 1 N ∑ i = 1 N G t ( i ) = 1 N ( G t + ∑ i = 1 N − 1 G t ( i ) ) = 1 N ( G t + ( N − 1 ) V N − 1 π ( s ) ) = V N − 1 π ( s ) + 1 N ( G t − V N − 1 π ( s ) ) ( V N − 1 π ( s ) 表示 V N π 的前一步的值,都是表示同一状态 ) V^\pi_N=\frac{1}{N}\sum_{i=1}^NG_t^{(i)}\\=\frac{1}{N}(G_t+\sum_{i=1}^{N-1}G_t^{(i)})\\=\frac{1}{N}(G_t+(N-1)V^\pi_{N-1}(s))\\=V^\pi_{N-1}(s)+\frac{1}{N}(G_t-V^\pi_{N-1}(s))\\(V^\pi_{N-1}(s)表示V^\pi_N的前一步的值,都是表示同一状态) VNπ=N1i=1NGt(i)=N1(Gt+i=1N1Gt(i))=N1(Gt+(N1)VN1π(s))=VN1π(s)+N1(GtVN1π(s))(VN1π(s)表示VNπ的前一步的值,都是表示同一状态)
(3).蒙特卡罗公式。
1. 收集 e p i s o d e ( S 1 , A 1 , R 1 , . . . . S t ) 2. 状态 S t 的回报为 G t N ( S t ) ← N ( S t ) + 1 V ( S t ) ← V ( S t ) + 1 N ( S t ) ( G t − V ( S t ) ) 1.收集episode(S_1,A_1,R_1,....S_t)\\2.状态S_t的回报为G_t\\N(S_t)\gets N(S_t)+1\\V(S_t)\gets V(S_t)+\frac{1}{N(S_t)}(G_t-V(S_t)) 1.收集episode(S1,A1,R1,....St)2.状态St的回报为GtN(St)N(St)+1V(St)V(St)+N(St)1(GtV(St))

2.动态规划(DP)

动态规划:将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。

基于动态规划的强化学习分为策略迭代(policy iteration)价值迭代(value iteration)

(1).策略迭代

策略迭代由两部分组成:策略评估(policy evaluation)策略提升(policy improvement)

i.策略评估:根据之前学习的贝尔曼期望方程,可以得到,当知道奖励函数r(s,a)和状态转移函数p(s’|s,a)时,可以根据下一个状态的价值来计算当前状态的价值。因此,可以把下一个可能状态的价值当成一个子问题,把当前状态的价值看作成当前问题。公式如下:
V k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( r ( s , a ) + r ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V k ( s ′ ) ) V^{k+1}(s)=\sum_{a∈A}\pi(a|s)(r(s,a)+r\sum_{s'∈S}P(s'|s,a)V^k(s')) Vk+1(s)=aAπ(as)(r(s,a)+rsSP(ss,a)Vk(s))
当子问题和当前问题之间的差值比较小时,则证明迭代已经收敛,可以结束策略评估。

ii.策略提升:可以贪心地在每一个状态选择动作价值最大的动作。
π ′ ( s ) = a r g max ⁡ a Q π ( s , a ) = a r g max ⁡ a { r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) } \pi'(s)=arg \max_aQ^\pi(s,a)=arg \max_a\{r(s,a)+γ\sum_{s'∈S}P(s'|s,a)V^\pi(s')\} π(s)=argamaxQπ(s,a)=argamax{r(s,a)+γsSP(ss,a)Vπ(s)}
策略迭代算法:


在这里插入图片描述

(2).价值迭代

价值迭代直接由贝尔曼最优方程来进行动态规划 ,得到最终的最优状态价值函数。


在这里插入图片描述

3.时间差分(TD)

在这里插入图片描述

时序差分:用来估计一个策略的价值函数的方法,它结合了蒙特卡罗和动态规划算法的思想。

  1. 时序差分方法和蒙特卡罗的相似之处在于可以从样本数据中学习,不需要事先知道环境(由他们公式可知,不需要知道P(s’|s,a));
  2. 和动态规划的相似之处在于可以根据贝尔曼方程的思想,利用后续状态的价值估计来更新当前状态的价值估计。

时序差分(TD):
r t + γ V ( s t + 1 ) − V ( s t ) r_t+γV(s_{t+1})-V(s_t) rt+γV(st+1)V(st)

4. MC、DP、TD之间的关系。

右下角表示穷举法。

MC与TD的区别:

  1. TD可以在每一步后在线学习。
    MC 必须等到episode结束才能知道return。
  2. TD 可以从不完整的序列中学习。
    MC 只能从完整序列中学习。
  3. TD 在连续(非终止)环境中工作。
    MC 仅适用于 episodic(终止)环境。
  4. TD利用马尔可夫特性,在马尔可夫环境中更高效。
    MC 不利用马尔可夫特性,在非马尔可夫环境中更有效。

待续。。。强化学习TD的相关算法。

参考资料:
周博磊强化学习课程
张伟楠等动手学深度学习
强化学习相关代码:https://github.com/boyu-ai/Hands-on-RL


http://www.niftyadmin.cn/n/234338.html

相关文章

promise是什么?什么是执行器?

promise是什么&#xff1f; 在 JavaScript 中&#xff0c;Promise 是一个用于处理异步操作的对象。当你执行一个异步操作&#xff08;如从服务器获取数据、读取文件或执行耗时的计算&#xff09;时&#xff0c;可以使用 Promise 来表示这个操作的最终结果。Promise 可以处于以…

Raft一致性算法(精简和扩展)

raft一致性算法 文章目录raft一致性算法一、raft简介1.1 raft涉及到的名词1.2 Rpc请求1.3 复制状态机二、raft⼀致性算法2.0 摘要2.0.1 所有服务器需遵守的规则2.0.2 跟随者2.0.3 候选⼈2.0.4 领导人2.0.5 状态2.0.6 特性2.1 raft基础2.2 leader选举2.2.1 集群启动时选举2.2.2 …

【致敬未来的攻城狮计划】RA2E1环境搭建点亮发光二极管

开启攻城狮的成长之旅&#xff01;这是我参与的由 CSDN博客专家 架构师李肯和 瑞萨MCU &#xff08;瑞萨电子 (Renesas Electronics Corporation) &#xff09; 联合发起的「 致敬未来的攻城狮计划 」的第 2 天&#xff0c;点击查看活动计划详情 &#xff01; 开发环境搭建 开…

QPixmap存在的坑,内存泄漏

QPixmap加载图片的时候&#xff0c;会把图片数据加入到QPixmapCache缓冲区上 如果多次加载&#xff0c;那么内存会被吃掉越来越多 本意QPixmap是用于显示需要比较快的地方&#xff0c;和硬件关联 QPixmap变量之间的赋值&#xff0c;并不会构造新的图片数据内存&#xff0c;而…

C语言从入门到精通学习第6天(位运算的基本操作)

位运算的基本操作位运算概述位运算符位运算的高级操作位运算概述 程序中所有的数在计算内存中都是以二进制的形式存储的&#xff0c;位运算是指按二进制进行的运算&#xff0c;位运算的运算速度通常与加法运算相同(仍快于乘法运算)&#xff0c;但通常功耗较小&#xff0c;因为…

B树和B+树的概念和区别以及其C++实现

B树是一种自平衡的查找树,它具有以下特征: 是m叉树,通常m的值在2到3之间。也就是每个节点最多有m个孩子。除了根节点和叶子节点外,其他每个节点至少有m/2个孩子。根节点至少有两个孩子。所有的叶子节点处于同一层级。每个节点存放至多m-1个关键字(key)。关键字的个数n满足m/2&…

Unity中从一个monobehaviour脚本中访问另一个monovehaviour脚本中的变量或方法

Unity中从一个monobehaviour脚本中访问另一个monovehaviour脚本中的变量或方法&#xff0c;关键在于如何取得脚本的引用或者变量及方法的引用。 一、寻找到物体&#xff0c;再获取脚本组件&#xff0c;取得脚本的引用 通过 GameObject.Find() 方法获取脚本2 所在的 GameObjec…

C++中的输入输出流iostream、文件流fstream、字符串流sstream解释

文章目录前言流的理解流的优势C中流的分类IO流字符串流sstream基本概念使用文件流fstream文本文件写文件读文件前言 流的解释。 流的理解 流的本质是一种对象。 流是介于数据和程序之间的一个中转设备。 因为流的存在&#xff0c;使得我们可以不需要直接操作数据&#xff…