深入理解强化学习——马尔可夫决策过程:马尔可夫奖励过程-[贝尔曼方程]

分类目录:《深入理解强化学习》总目录


在文章《深入理解强化学习——马尔可夫决策过程马尔可夫奖励过程-[价值函数]》中,我们知道即时奖励的期望正是奖励函数的输出,即: E [ R t ∣ S = s ] = r ( s ) E[R_t|S=s]=r(s) E[RtS=s]=r(s)。另一方面,等式中剩余部分 E [ γ V ( S t + 1 ) ∣ S t = s ] E[\gamma V(S_{t+1})|S_t=s] E[γV(St+1)St=s]可以根据从状态出发的转移概率得到,即可以得到:
V ( s ) = r ( s ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V ( s ′ ) V(s)=r(s)+\gamma\sum_{s'\in S}p(s'|s)V(s') V(s)=r(s)+γsSp(ss)V(s)

上式就是马尔可夫奖励过程中的贝尔曼方程(Bellman Equation),对每一个状态都成立。若一个马尔可夫奖励过程一共有 n n n个状态,即 S = { s 1 , s 2 , ⋯   , s n } S=\{s_1, s_2, \cdots, s_n\} S={s1,s2,,sn},我们将所有状态的价值表示成一个列向量 V = [ V ( s 1 ) , V ( s 2 ) , ⋯   , V ( s n ) ] T V=[V(s_1), V(s_2), \cdots, V(s_n)]^T V=[V(s1),V(s2),,V(sn)]T,同理,将奖励函数写成一个列向量。于是我们可以将贝尔曼方程写成矩阵的形式:
V = R + γ P V   [ V ( s 1 ) V ( s 2 ) ⋮ V ( s n ) ] = [ r ( s 1 ) r ( s 2 ) ⋮ r ( s n ) ] + γ [ V ( s 1 ) V ( s 2 ) ⋮ V ( s n ) ] [ p ( s 1 ∣ s 1 ) ⋯ p ( s n ∣ s 1 ) ⋮ ⋱ ⋮ p ( s 1 ∣ s n ) ⋯ p ( s n ∣ s n ) ] [ V ( s 1 ) V ( s 2 ) ⋮ V ( s n ) ] V=R+\gamma PV\\ \ \\ \left[\begin{array}{c} V(s_1) \\ V(s_2)\\ \vdots \\ V(s_n) \end{array}\right]= \left[\begin{array}{c} r(s_1) \\ r(s_2)\\ \vdots \\ r(s_n) \end{array}\right]+ \gamma \left[\begin{array}{c} V(s_1) \\ V(s_2)\\ \vdots \\ V(s_n) \end{array}\right] \left[\begin{array}{c} p(s_1|s_1) & \cdots &p(s_n|s_1) \\ \vdots & \ddots & \vdots\\ p(s_1|s_n) &\cdots &p(s_n|s_n) \end{array}\right] \left[\begin{array}{c} V(s_1) \\ V(s_2)\\ \vdots \\ V(s_n) \end{array}\right] V=R+γPV  V(s1)V(s2)V(sn) = r(s1)r(s2)r(sn) +γ V(s1)V(s2)V(sn) p(s1s1)p(s1sn)p(sns1)p(snsn) V(s1)V(s2)V(sn)

我们可以直接根据矩阵运算求解,得到以下解析解:
V = ( I − γ P ) − 1 R V=(I-\gamma P)^{-1}R V=(IγP)1R

以上解析解的计算复杂度是 O ( n 3 ) O(n^3) O(n3),其中 n n n是状态个数,因此这种方法只适用很小的马尔可夫奖励过程。求解较大规模的马尔可夫奖励过程中的价值函数时,可以使用动态规划(Dynamic Programming)算法、蒙特卡洛方法(Monte-Carlo Method)和时序差分(Temporal Difference),这些方法将在后面的文章。

def compute(P, rewards, gamma, states_num):
    ''' 利用贝尔曼方程的矩阵形式计算解析解,states_num是MRP的状态数 '''
    rewards = np.array(rewards).reshape((-1, 1))  #将rewards写成列向量形式
    value = np.dot(np.linalg.inv(np.eye(states_num, states_num) - gamma * P),
                   rewards)
    return value

参考文献:
[1] 张伟楠, 沈键, 俞勇. 动手学强化学习[M]. 人民邮电出版社, 2022.
[2] Richard S. Sutton, Andrew G. Barto. 强化学习(第2版)[M]. 电子工业出版社, 2019
[3] Maxim Lapan. 深度强化学习实践(原书第2版)[M]. 北京华章图文信息有限公司, 2021
[4] 王琦, 杨毅远, 江季. Easy RL:强化学习教程 [M]. 人民邮电出版社, 2022


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

相关文章

HDFS、MapReduce原理--学习笔记

1.Hadoop框架 1.1框架与Hadoop架构简介 (1)广义解释 从广义上来说,随着大数据开发技术的快速发展与逐步成熟,在行业里,Hadoop可以泛指为:Hadoop生态圈。 也就是说,Hadoop指的是大数据生态圈整…

图解系列--认证

单向散列函数 1.什么是单向散列函数 单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。 在指定的散列函数处理下,无论输…

基于FPGA的多通道ARINC429总线测试系统

目前,有大量的机载设备在使用ARINC429总线进行数据交互,为提高具有ARINC429接口设备的测试效率,降低开发成本,本文基于FPGA强大的并行处理能力、丰富的I/O接口资源以及半定制化的设计理念,利用NIOS II软核处理器&#…

反射和序列化操作会破坏单例模式

反射和序列化操作都可能破坏单例模式的实现。 使用反射可以访问类的私有构造函数并强制创建一个新的实例,这将破坏单例模式的唯一性原则,因为它允许创建多个实例。为防止这种情况发生,可以通过在单例类的构造函数中添加防止多次实例化的检查…

shell之file命令

shell之file命令 简介用法举例 简介 file命令是一个用于识别文件类型的命令。它可以根据文件的特征,判断文件是什么类型的文件,例如文本文件、图片文件、可执行文件等。 语法格式:file [-options] filename 其中,options是可选…

【数据结构】邻接表与邻接矩阵的转换

一.基本思想 1.邻接矩阵转换为邻接表: 先设置一个空的邻接表,然后查找邻接矩阵的值不为零元素,找到后在邻接表的单链表对应位置加入表边节点。 2.邻接表转换为邻接矩阵: 在邻接表上顺序取出每个表边结点,将邻接矩阵…

axios的封装之axios是基于什么封装的?

axios的封装_axios是基于什么封装的 axios是基于JavaScript的XMLHttpRequest 和 Promise 对象进行封装的使用axios发送GET请求的示例axios 拦截器 axios的封装_axios是基于什么封装的 axios是基于JavaScript的XMLHttpRequest 和 Promise 对象进行封装的 在浏览器中&#xff…

单例模式(饱汉式和饿汉式)

饱汉式 在真正需要使用的时候才进行构建,而不是在一开始就创建。如果要保证线程安全,需要使用一个mutex来保证。 饿汉式 类加载时即创建对象,线程安全优点:执行效率高缺点:类加载时就初始化,浪费内存资源…