线性二次型调节控制-程序员宅基地

技术标签: 数据结构与算法  

线性二次型调节控制

现在我们讨论一个用于连续状态MDP的一个寻找最优策略的一个方法。该方法中我们直接近似V,而不采用离散化。该方法称之为值函数近似,在很多实际RL问题都有很好的应用。

  1. 使用一个模型或

为了发展一个值函数近似算法,我们假设对于MDP,我们有一个模型(model)或仿真器(simulator)。通俗的说,一个仿真器是一个黑盒子,输入是任何一个连续值的状态st,动作at,根据状态转移概率矩阵Pstat输出到下一个状态st+1,如下图:

有很多方法来得到该模型。其一是,使用物理仿真。举个例子来说,对于之前提到的倒摆的一个仿真器,该倒摆是通过一些列物理定律来精确计算小车和木杆的位置和方向,即在时间t时,给定一个动作a,如果我们知道了各个参数(比如木板的长度、质量等等),我们就能精确的计算到时间t+1时候的小车和木杆的位置和方向。或者我们可以使用已有的一些物理仿真包来求解,即输入完整的物理参数,以及当前的状态st和要采取的动作at,就可以计算系统在下一秒的状态st+1

一个获得该模型的方法是从MDP收集的数据中得到。比如说,我们重复试验MDP后,得到了m条链,每条链有T个时间步。这个过程中,我们可以随机的选择动作,或者执行特定的策略或者根据某一方法选择动作。我们得到了m个状态序列,如下:

之后,我们可以应用一些算法来预测状态st+1,其参数为stat。比如,我们可以选择一个线性模型:st+1 = Ast + Bat,使用的该仿真算法类似于线性回归。这里的参数是矩阵A和矩阵B,我们可以使用观测到的m条马尔可夫链进行估计:

这与最大似然估计参数是一致的。在学得AB之后,一个方法是构建一个确定性(deterministic)的模型,即在给定输入stat时,输出的st+1是确定的。即我们总是根据得到的方程来计算下一个状态st+1;或者我们可以建立一个随机(deterministic)模型,即st+1是不确定的,根据st+1 = Ast + Bat + εt得到,这里的是εt噪音项,服从N(0,Σ)分布(这里的矩阵Σ也可以通过观测到的数据估计得到)

因此,我们得到了在当前状态和动作下的下一个状态的线性模型,但是非线性模型该怎么办呢?一个方法是通过变换,即我们可以学习一个模型st+1 = Aφs(st ) + Bφa(at),这里的φsφa都是状态和动作的一些非线性特征映射函数。另一个方法是使用非线性学习算法,比如局部加权线性回归来学习估计状态st+1。这些模型都可以用来构建确定性的或不确定性的MDP仿真器。

  1. 拟合值迭代

我们现在描述一个拟合值迭代(fitted value iteration)算法,用于估计连续状态MDP的值函数。这里我们将假设一个问题,含有连续状态空间S=Rn,但是动作空间A是很小的而且是离散的。回想一下值迭代,我们希望的更新如下:

V (s) := R(s) + γ maxa

= R(s) + γ maxa Es∼Psa[V (s)]

在之前的部分,对于离散状态的MDP是求和,而这里是连续状态因此是积分。

拟合值迭代的主要是想是:我们将使用有限样本的状态空间s(1), . . . , s(m),特别的,我们将使用监督式学习算法——如下描述的线性回归,用一个线性或非线性的状态函数来近似值函数。V (s) = θTφ(s),这里的φ是状态空间的一些适当的特征映射。

对于我们有限样本的m个状态,拟合值迭代将会首先计算一个量y(i),可以用R(s) + γ maxa Es∼Psa[V (s)]来近似,之后采用监督式学习,努力使得V(s)尽可能的接近R(s) + γ maxa Es∼Psa[V (s)],即接近y(i)

具体算法如下:

  1. 随机样本的m个状态s(1), . . . , s(m) S
  2. 初始化θ := 0
  3. 循环 {

    对于 i = 1, … , m{

    对于每个动作a A {

    样本s1, . . . , sk∼ Ps(i)a(使用一个MDP模型)

    q(a) =

    //这里q(a)就是 R(s) + γ maxa Es∼Psa[V (s)]的估计

    }

    y(i) = maxaq(a) // y(i)R(s)+γmaxa Es∼Psa[V (s)]的估计

    }

    // 在最开始的值迭代算法中,我们根据V (s(i)) := y(i)更新值函数

    // 在该算法中,我们希望采用监督式学习,使得V (s(i)) y(i)

    令θ := arg minθ

}

在上面,我们使用了线性回归算法的拟合值迭代,来努力使得V (s(i)) 接近y(i),算法的步骤和标准的监督式学习都是类似的。尽管算法描述使用了线性模型,但是其他的回归算法(如局部加权线性回归)也是可以使用的。

与离散状态空间的值迭代不同,拟合值迭代不能被证明是一定收敛的。然而在实际应用中,他通常都是收敛的或近似收敛,在许多问题中都能有很好的结果。需要注意,如果我们使用MDP的确定性的仿真器或模型,那么拟合值迭代算法中可以通过在最开始设置k=1来简化算法。因为Es∼Psa[V (s)]变成了对确定性分布的期望了,所以一个样本就能够求得期望。此外,上述算法,我们不得不抽取k个样本,然后用均值来近似期望值。

最后,拟合值迭代输出V,是近似于V*,这就含蓄的定义了我们的策略。特别的,当我们的系统在状态s时,我们需要选择一个动作,我们希望选择一个动作满足:

arg maxaEs∼Psa[V (s)]

计算该式子的方法类似于拟合值迭代的内循环,即对于每一个动作,用样本s1, . . . , sk∼ Ps(i)a来近似期望。同样,对于确定性的仿真器,我们可以设置k=1

在实际应用中,也会有一些其他的方法来近似这个步骤。比如,常用的一个方法是如果仿真器是st+1 =f (st, at ) + εt的形式,这里的f是一些确定性的状态函数,比如f (st, at ) = Ast + Bat,而ε均值为0的高斯噪声。在这个例子中,我们可以通过arg maxaV (f (s, a))来选择动作。换句话说,这里默认了εt=0(即在仿真器中忽略了噪声),设定k=1。等同于:

Es[V (s)] V (Es [s]) = V (f (s, a))

这里的期望是基于随机变量s∼ Psa。只要噪声项εt是很小的,这通常都是很合理的近似。然而,对于不适用于该近似方法的,即样本空间为K|A|,如果采用上式进行期望的近似,那么计算量是很大的。

 
 
 

转载于:https://www.cnblogs.com/kexinxin/p/9904478.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30457065/article/details/98217491

智能推荐

IROS2021投稿说明_iros投稿流程-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏7次。论文应长达六页,最多可增加两页(每页收费180欧元)。注意:最大页数包括参考文献。例如:如果论文的技术部分是6页,那么你可以包括最多2页的额外信息,例如参考文献,根据所述费用(即180欧元/页* 2页= 360欧元额外费用)。一个短视频(最多1分钟)也可以附在你的论文,以补充结果(见下面的说明)。IROS会议文件审查委员会(如ICRA的CEB)严格审查所有提交的文件,然后通过IROS 2021年高级计划委员会作出接受决定。各组别的最佳论文奖亦由各自的评审委员会选出。Instructio._iros投稿流程

Android异步处理三:Handler+Looper+MessageQueue深入详解_handler looper message详解、-程序员宅基地

文章浏览阅读5.5w次,点赞53次,收藏103次。本博文地址:http://blog.csdn.net/mylzc/article/details/6771331 转载请注明出处Android异步处理系列文章索引Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面_handler looper message详解、

Mustache语法中实现if-else_mustache if-程序员宅基地

文章浏览阅读604次。1、{{#prop}}{{/prop}}标签:这对标签的作用非常强大,可以同时完成if-else和for-each以及动态渲染的模板功能。在这对标签之间,可以定义其它模板内容,嵌套所有标签1.{{#prop}}{{/prop}}标签:这对标签的作用非常强大,可以同时完成if-else和for-each以及动态渲染的模板功能。在这对标签之间,可以定义其它模板内容,嵌套所有标签。<ul class="dropdown-menu" role="menu"> <shir._mustache if

好玩的.滑块验证_什么地方要经常滑块验证-程序员宅基地

文章浏览阅读183次。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X..._什么地方要经常滑块验证

练习03: 定义f(n)为其各位数字的平方和_python利用函数完成平方等式题。对于一个十进制的正整数,定义f(n)为其个位数字的平方和-程序员宅基地

文章浏览阅读4.2k次,点赞5次,收藏3次。题目需求:对于一个十进制的正整数, 定义f(n)为其各位数字的平方和,如:f(13) = 12 + 32 = 10f(207) = 22 + 02 + 72 = 53下面给出三个正整数k,a, b,你需要计算有多少个正整数n满足a<=n<=b,且k*f(n)=n输入:第一行包含3个正整数k,a, b, k>=1, a,b<=1018, a<=b;输出..._python利用函数完成平方等式题。对于一个十进制的正整数,定义f(n)为其个位数字的平方和

线性表——栈和队列_对比画出线性表与栈与队列-程序员宅基地

文章浏览阅读822次。快进来康康!!线性表第三关——栈和队列_对比画出线性表与栈与队列

随便推点

python取数据框的几列_python-将excel中的某些列读取到数据框-程序员宅基地

文章浏览阅读942次。我想将某些列从excel文件读入数据帧,但是我想用其列标题名称指定该列.例如,我有一个excel文件,在工作表2中有两列:A列为“ number”,B列为“ ForeignKey”.我想将“ ForeignKey”导入数据框.我使用以下脚本进行了此操作:xl_file = pd.read_excel('D:/SnapPython/TestDF.xlsx', sheet_name='Sheet 2'..._python数据框取出某一列并生成数据框

网页错误代码200,300,400,500_error 300-程序员宅基地

文章浏览阅读1.3w次,点赞6次,收藏28次。Successful Client Requests成功的客户端请求200 OK——成功201 Created——已创建202 Accepted——接受203 Non-Authorative Information——非Authorative信息204 No Content——无内容205 Reset Content——重置内容206 Partial Content——..._error 300

Ubuntu下TFTP_Server安装与配置_apt-get tftp-server-程序员宅基地

文章浏览阅读6.5k次。在IP-Camera开发过程中偶尔会使用到通过TFTP从PC端下载文件到开发板。之前一直使用windows下TFTP_Server软件3CDaemon和“Megatops TFTP Server”。但在使用过程中某一天IP-Camera开发板突然无法ping通Windows的IP,也就用不了windows下的TFTP Server工具了。但可以ping通虚拟机下的Ubuntu系统,故在Ub_apt-get tftp-server

onedrive手机登录出现 "无法登录,管理员需要为你分配可执行此操作的SharePoint和OneDrive许可证"_你的管理员需要向你的账号分配许可证-程序员宅基地

文章浏览阅读1w次。​​  最近pan当凉了,加上某云把用户当傻子的激励计划,决定不再使用某云,寻找其他的云端存储方案,刚好自己学校购买了office全家桶,就尝试了一下onedrive教育版,用来做办公同步很不错,容量1T绝对够用,但是由于下载速度的限制不是很适合做云端主存。使用期间遇到电脑可以登录但是手机端无法登录的情况,记录如下​​   首先对于大部分情况都是电脑端注册后等24小时手机端就好了,不需要折腾,如..._你的管理员需要向你的账号分配许可证

用ModelSim仿真PLL模块_modesim独立仿真pll-程序员宅基地

文章浏览阅读1.5w次,点赞4次,收藏25次。由于要对FPGA读写SDRAM的工程进行调试,第一步就是验证PLL模块的功能,故结合网上找的一些资料,进行了如下PLL仿真实验。下面是仿真的全过程首先,看一下Quartus中的PLL模块:从上面图中可以看出:我的FPGA输入时钟是20MHZ,该PLL有三个输出,其中C0:5倍频,100MHZC1:1倍频,20MHZC2:5倍频,100MHZ,同时相对于C_modesim独立仿真pll

uni-app 框架超详细新手入门_uni框架-程序员宅基地

文章浏览阅读7.6k次,点赞3次,收藏39次。什么是uni-app?(介绍)uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。开发者通过编写 Vue.js 代码,uni-app 将其编译到iOS、Android、微信小程序等多个平台,保证其正确运行并达到优秀体验。uni-app 继承自 Vue.js,提供了完整的 Vue.js 开发体验。uni-app 组件规范和扩展api与微信小程序基本相同。有一定 Vue.js 和微信小程序开发经验的开发者可快速上手 uni-app ,开发出兼容多端的应用。uni-app提供了条件编译_uni框架