强化学习学习(四)Model-Based Reinforcement Learning 从原理到改进分析

news2025/2/26 14:30:15

文章目录

    • Model-Based RL
        • Basics of Model-based reinforcement learning
        • Uncertainty of Model-based RL
        • Use uncertainty in Model-based RL
        • State space (latent space) models

Model-Based RL

Basics of Model-based reinforcement learning

Model-based reinforcement learning: If we know f ( s t , a t ) = s t + 1 f(s_t,a_t)=s_{t+1} f(st,at)=st+1 or p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at) in the stochastic case, we can plan it better.
So let’s learn f ( s t , a t ) f(s_t,a_t) f(st,at) from data, and then plan through it!

Model-based reinforcement learning version 0.5:

  1. run base policy π 0 ( s t ∣ s t ) \pi_0(s_t|s_t) π0(stst) (e.g., random policy) to collect some data D = { ( s , a , s ′ ) i } \mathcal{D}=\{(s,a,s')_i\} D={(s,a,s)i}
  2. learn dynamics model f ( s , a ) f(s,a) f(s,a) to minimize ∑ i ∣ ∣ f ( s i , a i ) − s i ′ ∣ ∣ 2 \sum_i||f(s_i,a_i)-s'_i||^2 i∣∣f(si,ai)si2 (监督学习)
  3. plan through model f ( s , a ) f(s,a) f(s,a) to choose actions
    但这个version 0.5并不适应于一些场景:要拟合的模型参数过多的时候,如神经网络这种高容量的模型

Model-based reinforcement learning version 1.0:

  1. run base policy π 0 ( s t ∣ s t ) \pi_0(s_t|s_t) π0(stst) (e.g., random policy) to collect some data D = { ( s , a , s ′ ) i } \mathcal{D}=\{(s,a,s')_i\} D={(s,a,s)i}
  2. learn dynamics model f ( s , a ) f(s,a) f(s,a) to minimize ∑ i ∣ ∣ f ( s i , a i ) − s i ′ ∣ ∣ 2 \sum_i||f(s_i,a_i)-s'_i||^2 i∣∣f(si,ai)si2 (监督学习)
  3. plan through model f ( s , a ) f(s,a) f(s,a) to choose actions
  4. execute those actions and add the resulting data { ( s , a , s ′ ) i } \{(s,a,s')_i\} {(s,a,s)i} to D \mathcal{D} D
  5. 重复2-4
    改变的点,就是不断增加新的数据,能够变得可行一些了。
    Can we do better?
    image.png|500
    如果我们的model有一些错误,如在实际上车的方向盘有一点偏左。v 1.0版本的算法能够修改model去纠正这个错误,但是需要过很长时间,因为我们用一个 f ( s , a ) f(s,a) f(s,a)执行了很多步以后才再迭代,我们需要来个更快纠错的算法:当发生错误的时候,立刻replan——先看一下采取action实际导致的state,随后问一下model这样的是不是想要的,而不是继续执行以前的

Model-based reinforcement learning version 1.5:(模型预测控制)

  1. run base policy π 0 ( s t ∣ s t ) \pi_0(s_t|s_t) π0(stst) (e.g., random policy) to collect some data D = { ( s , a , s ′ ) i } \mathcal{D}=\{(s,a,s')_i\} D={(s,a,s)i}
  2. learn dynamics model f ( s , a ) f(s,a) f(s,a) to minimize ∑ i ∣ ∣ f ( s i , a i ) − s i ′ ∣ ∣ 2 \sum_i||f(s_i,a_i)-s'_i||^2 i∣∣f(si,ai)si2 (监督学习)
  3. plan through model f ( s , a ) f(s,a) f(s,a) to choose actions
  4. execute the fist planned action, observe resulting state s ′ s' s。只执行第一个动作,看看实际的结果是什么样的
  5. append ( s , a , s ′ ) (s,a,s') (s,a,s) to dataset D \mathcal{D} D
  6. 立刻replan,重复3-5
  7. 重复2-5
    所以整个方法的核心思想就是:我先试运行一部action看看效果怎么样(如果发现了汽车再偏左),那就重新plan得到action。实际上,重新plan的代价非常高,所以在第3步的时候,步伐小一些。
Uncertainty of Model-based RL

想象现在有这样一个场景:你训练一个RL模型在悬崖边行走,如果我们的 f ( s , a ) f(s,a) f(s,a)不对下一个具体状态进行预测而是下一个状态可能的分布,就像你会估计自己还有多远就会掉下悬崖,那么你更有可能到达紧挨着的边缘。如果你保持较小范围的不确定性,对自己的模型有很大的信心,那你会努力靠近;如果你有较大的不确定性,那么就会保持远离悬崖,因为更近的状态不确定。
image.png

the model is certain about the data, but we are not certain about the model
image.png
我们不去预测 p ( θ ∣ D ) p(\theta|D) p(θD)最大值的 θ \theta θ而是试图直接预测它的分布, p ( θ ∣ D ) p(\theta|D) p(θD)意味着模型的不确定性。随后我们在得到下一个状态的时候,就不是根据最大的 θ \theta θ,而是利用它的分布去求一个期望。
∫ p ( s t + 1 ∣ s t , a t , θ ) p ( θ ∣ D ) d θ \int p(s_{t+1}|s_t,a_t,\theta)p(\theta|D)d\theta p(st+1st,at,θ)p(θD)dθ
举例子:贝叶斯神经网络
image.png
以往情况下,节点之间的连接都是确定的数,但是如果我们将它换成带有不确定性的分布,这个神经网络本身就具有了不确定性
当然,我们去得到这个维度很高的整个模型的参数分布的比较困难的,因此进行了一些简化:我们用每条边上的分布参数乘积去拟合,这默认了边上的分布之间是独立的:
p ( θ ∣ D ) = ∏ i p ( θ i ∣ D ) p ( θ i ∣ D ) = N ( μ i , σ i ) \begin{align}p(\theta|D)=\prod_ip(\theta_i|D)\\ p(\theta_i|D)=\mathcal{N}(\mu_i,\sigma_i)\end{align} p(θD)=ip(θiD)p(θiD)=N(μi,σi)
边上的权重参数分布我们用高斯分布去拟合:以往的一个数的权重,现在用两个参数的分布函数来刻画不确定性, μ i \mu_i μi代表确定的参数值, σ i \sigma_i σi代表对这个参数的不确定性。

Bootstrap ensembles
image.png
实际上,我们需要这些模型相对独立的训练,SGD这种对数据集的随机采样就能够满足了。让他们投票下一个state是什么,他们之间投票的误差就能够实现一些不确定性估计。

Use uncertainty in Model-based RL

Before: J ( a 1 , … , a H ) = ∑ t = 1 H r ( s t , a t ) J(a_1,\dots,a_H)=\sum_{t=1}^Hr(s_t,a_t) J(a1,,aH)=t=1Hr(st,at), where s t + 1 = f ( s t , a t ) s_{t+1}=f(s_t,a_t) st+1=f(st,at) a 1 , … , a H a_1,\dots,a_H a1,,aH表示一个动作序列
Now: J ( a 1 , … , a H ) = 1 N ∑ i = 1 N ∑ t = 1 H r ( s t , i , a t ) J(a_1,\dots,a_H)=\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^Hr(s_{t,i},a_t) J(a1,,aH)=N1i=1Nt=1Hr(st,i,at), where s t + 1 , i = f i ( s t , i , a t ) s_{t+1,i}=f_i(s_{t,i},a_t) st+1,i=fi(st,i,at)
一般情况下,对于候选的动作序列 a 1 , … , a H a_1,\dots,a_H a1,,aH

  1. 采样模型 θ ∼ p ( θ ∣ D ) \theta\sim p(\theta|D) θp(θD),如果用了上面的Bootstrap 就想到于从N个模型中随机选一个
  2. 在每一个时间步长t, 采样状态 s t + 1 ∼ p ( s t + 1 ∣ s t , a t , θ ) s_{t+1}\sim p(s_{t+1}|s_t,a_t,\theta) st+1p(st+1st,at,θ)
  3. 计算所有时间上的奖励综合 R = ∑ t r ( s t , a t ) R=\sum_tr(s_t,a_t) R=tr(st,at)
  4. 重复1-3计算平均奖励
State space (latent space) models

image.png
我们需要学: p ( s t ∣ s t ) p(s_t|s_t) p(stst)——观测模型 observation model
p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)——状态转移模型 dynamics model
p ( r t ∣ s t , a t ) p(r_{t}|s_t,a_t) p(rtst,at)——奖励模型 reward model

standard (fully oberved) model:
max ⁡ ϕ 1 N ∑ i = 1 N ∑ t = 1 T log ⁡ p ϕ ( s t + 1 , i ∣ s t , i , a t , i ) \max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^T\log p_{\phi}(s_{t+1,i}|s_{t,i},a_{t,i}) ϕmaxN1i=1Nt=1Tlogpϕ(st+1,ist,i,at,i)
现在我们有了一个潜在空间latent space model:
max ⁡ ϕ 1 N ∑ i = 1 N ∑ t = 1 T E [ log ⁡ p ϕ ( s t + 1 , i ∣ s t , i , a t , i ) + log ⁡ p ϕ ( o t , i ∣ s t , i ) ] \max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^TE[\log p_{\phi}(s_{t+1,i}|s_{t,i},a_{t,i})+\log p_{\phi}(o_{t,i}|s_{t,i})] ϕmaxN1i=1Nt=1TE[logpϕ(st+1,ist,i,at,i)+logpϕ(ot,ist,i)]
如果我们知道状态s_t,上面这个式子会很容易,但问题是我们不知道,因此我们只能用未来状态的期望:expectation w.r.t. ( s t , s t + 1 ) ∼ p ( s t , s t + 1 ∣ o 1 : T , a 1 : T ) (s_t,s_{t+1})\sim p(s_t,s_{t+1}|o_{1:T},a_{1:T}) (st,st+1)p(st,st+1o1:T,a1:T)
我们想学习后验概率approximate posterior q ψ ( s t ∣ o 1 : t , a 1 : t ) q_{\psi}(s_t|o_{1:t},a_{1:t}) qψ(sto1:t,a1:t)这个也是一个神经网络encoder,给我们基于当前观测和动作,下一个状态的分布,这个神经网络有很多选择,我们在这里选择最简单的一个 q ψ ( s t ∣ o t ) q_{\psi}(s_t|o_t) qψ(stot),这代表状态几乎可以从观测推断出来,因此它是一个确定编码器deterministic,expectation w.r.t. s t ∼ q ψ ( s t ∣ o t ) , s t + 1 ∼ q ψ ( s t + 1 ∣ o t + 1 ) s_t\sim q_{\psi}(s_t|o_t),s_{t+1}\sim q_{\psi}(s_{t+1}|o_{t+1}) stqψ(stot),st+1qψ(st+1ot+1)也就是说我们有 q ψ ( s t ∣ o t ) = δ ( s t = q ψ ( o t ) ) ⇒ s t = g ψ ( o t ) q_{\psi}(s_t|o_t)=\delta(s_t=q_{\psi}(o_t))\Rightarrow s_t=g_{\psi}(o_t) qψ(stot)=δ(st=qψ(ot))st=gψ(ot),目标函数变成:
max ⁡ ϕ 1 N ∑ i = 1 N ∑ t = 1 T log ⁡ p ϕ ( g ψ ( o t + 1 , i ) ∣ g ψ ( o t , i , a t , i ) + log ⁡ p ϕ ( o t , i ∣ g ψ ( o t , i ) ) \max_{\phi}\frac{1}{N}\sum_{i=1}^N\sum_{t=1}^T\log p_{\phi}(g_{\psi}(o_{t+1,i})|g_{\psi}(o_{t,i},a_{t,i})+\log p_{\phi}(o_{t,i}|g_{\psi}(o_{t,i})) ϕmaxN1i=1Nt=1Tlogpϕ(gψ(ot+1,i)gψ(ot,i,at,i)+logpϕ(ot,igψ(ot,i))
整个上面的这些东西,都是为了在不知道状态的情况下,实现我们的优化,现在这个式子是可微可以用反向传播求解了。

[!NOTE] 小结
如果要去学习一个基于随机状态的模型,需要取对数期望而不是直接取期望,为了得到后验概率的近似,我们用最简单的,一个直接从观测得到状态的确定编码器,这种情况下,期望实际上不需要了,我们可以直接用编码器来代替状态在 observation model和 dynamics modelimage.png

体现在RL算法中就是如下,整个过程中没有出现状态,只有观测:
image.png
Key idea: learn embedding g ( o t ) = s t g(o_t)=s_t g(ot)=st,或者直接学习 p ( o t + 1 ∣ o t , a t ) p(o_{t+1}|o_t,a_t) p(ot+1ot,at)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当视频遇上AI:SAM 2 打破想象的界限!

当视频遇上AI:SAM 2 打破想象的界限! Segment Anything Model 2 Meta公司推出 Llama 3.1 没多久,又在今天推出了Segment Anything Model 2(SAM 2),以其强大的实时、可提示对象分割能力,引领了视…

【网络安全】破解邀请码实现未经授权的访问和账户接管

未经许可,不得转载。 文章目录 前言1、邀请用户2、低级账户访问3、提取用户 ID 和 OTP4、准备字典5、攻击6、账户接管 前言 ExampleSpark(化名)是一个专为团队管理和项目协作而设计的强大平台。它提供了用于管理用户、项目和权限的综合工具。…

Hutool——发送http请求案例

文章目录 前言依赖环境Hutool 请求验证准备第三方接口编写接口调用上述定义接口 自测验证get 请求post 非常规 application/x-www-form-urlencodedpost 常规 application/json 前言 在实际开发过程中,微服务环境下往往采取openfeign实现服务与服务之间的请求调用。…

createObjectURL的部分使用讲解

URL.createObjcetURL的部分详解 文章目录 URL.createObjcetURL的部分详解1. 为什么要使用createObjectURL2. createObjectURL的基本用法3. 转换后的文件进行展示或下载展示下载 首先,想记录一下这点是因为之前关于pdf文件的下载和预览,后端返回工作流时的…

燃爆你的创作欲!3款剪辑小助手让你爱不释手

视频剪辑,既是门艺术,也是门手艺。现在,因为社交媒体和视频网站的流行,越来越多的人开始自己尝试做视频。不管你是想娱乐大家,还是教点东西,或者搞点商业宣传,一款好的剪辑软件都能帮你提高效率…

遇到“NavigableString“object has no attribute “text“的解决方法(全)

在 Python 的 Beautiful Soup 库中,NavigableString 对象用于表示解析树中的文本内容。 有时候在获取json格式,解析BeautifulSoup的时候,可能会遇到这个问题。 那可能是在 NavigableString 对象上调用 .text 属性,因此就会出现 …

21款美规奔驰GLS450更换中规高配主机系统,您带来更贴合国内使用习惯和更丰富功能的体验

简单一句中文的“您好,奔驰”,抑或是轻轻触碰屏幕,就能与同级最先进的智能人机交互系统来场深度沟通,实现你的各种需求 创造情感纽带,将车辆打造为您的专属座驾。功能扩展后的 MBUX 智能人机交互系统能满足您多方位的…

AutoMQ 开源可观测性方案:夜莺 Flashcat

01 引言 在现代企业中,随着数据处理需求的不断增长,AutoMQ [1] 作为一种高效、低成本的流处理系统,逐渐成为企业实时数据处理的关键组件。然而,随着集群规模的扩大和业务复杂性的增加,确保 AutoMQ 集群的稳定性、高可…

Python学习-字符串

目录 ord() 与 chr() 力扣题目-转换成小写字母 count()函数 ord() 与 chr() ord() 和 chr() 用于字符和字符编码(通常是ASCII等)之间的转换。 1. ord() ord() 函数用于获取一个字符(通常是一个单字符字符串)的编码值。在ASC…

服务器怎么开启远程桌面连接权限?开启远程桌面连接权限的详细操作步骤

服务器怎么开启远程桌面连接权限? 服务器开启远程桌面连接权限的步骤通常依赖于服务器的操作系统。以下是基于Windows服务器和Linux服务器的详细操作步骤: Windows服务器 1.打开服务器管理器: -登录到Windows服务器。 -点击“开始”菜单&…

提升效率的五款神器

大家好,我是你们的小红书效率专家👩‍💻!今天要分享的是让你工作效率翻倍的五款软件利器,赶快拿出小本本记下来吧!🌟 1️⃣ 亿可达 - 软件连接器 作为一款自动化工具,亿可达被誉为…

内网基础——Windows认证

文章目录 一、本地认证二、网络认证2.1 NTLM协议2.1.1 Chalenge/Response2.1.2 总结2.1.3 Pass the Hash 2.2 Kerberos认证2.2.1 Kerberos认证协议的基础概念2.2.2 域认证粗略流程 三、Windows Access Token 一、本地认证 windows本地认证流程大致可以抽象为以下三个阶段&…

从源头解决砍单问题:Temu、亚马逊自养号采购防关联全攻略

近期有很多跨境卖家向珑哥咨询,他们在进行采购下单过程中会出现砍单的问题,其实造成这种的原因很多,一套稳定的测评系统并不是单解决IP的纯净度问题或者支付卡的卡头风控问题就可以解决的,Temu、亚马逊测评下单砍单率、F号率高的原…

是德KEYSIGHT B1500A 半导体测试仪

安捷伦Agilent/KEYSIGHT B1500A/b1506a/B1505A半导体测试仪 附加功能: 基于 PC 的仪器,配备 Microsoft Windows 操作系统和 EasyEXPERT 软件用于电流-电压 (IV)、电容-电压 (CV)、脉冲生成、快速 IV 和时域测量的单盒解决方案。十个模块插槽&#xff0…

爬虫学习——24.字体反爬

什么是字体反爬 网页开发者自己创造一种字体,因为在字体中每个文字都有其代号,那么以后在网页中不会直接显示这个文字的最终的效果,而是显示他的代号,因此即使获取到了网页中的文本内容,也只是获取到文字的代号&#…

还搞不清楚String、StringBuilder、StringBuffer?

目录 一、String——引用类型,而不是基本数据类型 二、StringBuffer类 三、StringBuilder类 四、String、StringBuffer、StringBuilder比较 五、String、StringBuffer、StringBuilder的选择 一、String——引用类型,而不是基本数据类型 1.…

怎么隐藏搜狗输入法

点击输入法,右键选择更多 点击选项,点击全屏隐藏

《“八股文”之辩:程序员面试与实际工作的纠葛》

在当今的编程世界中,“八股文”成为了一个备受争议的话题。它既是大中小企业面试程序员时的常见问题,又引发了广泛的讨论和思考。那么,“八股文”究竟在实际工作中扮演着怎样的角色呢? “八股文”作为面试的必问内容,…

福建聚鼎:现在装饰画好做吗

在当今社会,随着人们审美情趣的提升和生活品质的改善,家居装饰画已经成为了一种流行的墙面装饰方式。许多人都在思考,现在做装饰画是否是一个好时机? “逆水行舟,不进则退。”在日新月异的市场中,装饰画行业的竞争愈发…

利用 Python 和 IPIDEA:跨境电商与数据采集的完美解决方案

目录 实操案例:利用 IPIDEA 进行数据采集步骤一:注册和获取代理IP步骤二:编写数据采集添加错误处理数据存储到 CSV 文件多线程采集数据 步骤三:处理和分析数据 总结 实操案例:利用 IPIDEA 进行数据采集 我们今天用一个…