强化学习(四)动态规划——1

动态规划算法(DP):在马尔可夫决策过程(MDP)的完美环境模型下计算最优策略。但其在强化学习中实用性有限,其一是它是基于环境模型已知;其二是它的计算成本很大。但它在理论伤仍然很重要,其他的一些算法与动态规划算法(DP)十分相似,只是计算量小及没有假设环境模型已知。

动态规划算法(DP)和一般的强化学习算法的关键思想都是基于价值函数对策略的搜索,如前所述,一旦我们找到满足贝尔曼最优方程的最优价值函数 v ∗ v_\ast v q ∗ q_\ast q,我们就可以很容易地获得最优策略。
v ∗ ( s ) = max ⁡ a E [ R t + 1 + γ v ∗ ( S t + 1 ) ∣ S t = s , A t = a ] = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] , o r q ∗ ( s , a ) = E [ R t + 1 + γ max ⁡ a ′ q ∗ ( S t + 1 , a ′ ) ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ max ⁡ a ′ q ∗ ( s ′ , a ′ ) ] \begin{aligned} v_\ast(s) &=\max_a\Bbb{E}[R_{t+1}+\gamma v_\ast(S_{t+1})|S_t=s,A_t=a]\\ &=\max_a\sum_{s^\prime,r}p(s^\prime,r|s,a)\Big[r+\gamma v_\ast(s^\prime)\Big],\quad \rm{or}\\ q_\ast(s,a)&=\Bbb{E}\Big[R_{t+1}+\gamma\max_{a^\prime}q_\ast(S_{t+1},a^\prime)\Big |S_t=s,A_t=a\Big]\\ &=\sum_{s^\prime,r}p(s^\prime,r|s,a)\Big[r+\gamma\max_{a^\prime}q_\ast(s^\prime,a^\prime)\Big] \end{aligned} v(s)q(s,a)=amaxE[Rt+1+γv(St+1)St=s,At=a]=amaxs,rp(s,rs,a)[r+γv(s)],or=E[Rt+1+γamaxq(St+1,a) St=s,At=a]=s,rp(s,rs,a)[r+γamaxq(s,a)]

1、策略评估(预测)

首先,我们考虑如何计算任意策略 π \pi π 下的状态价值函数 v π v_\pi vπ,我们称其为策略评估
v π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] = E π [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} v_\pi(s)&\doteq \Bbb{E}_\pi[G_t|S_t=s]\\ &=\Bbb{E}_\pi[R_{t+1}+\gamma G_{t+1}|S_{t}=s]\\ &=\Bbb{E}_\pi[R_{t+1}+\gamma v_\pi(S_{t+1})|S_t=s]\\ &=\sum_a\pi(a|s)\sum_{s^\prime,r}p(s^\prime,r|s,a)\Big[r+\gamma v_\pi(s^\prime)\Big] \end{aligned} vπ(s)Eπ[GtSt=s]=Eπ[Rt+1+γGt+1St=s]=Eπ[Rt+1+γvπ(St+1)St=s]=aπ(as)s,rp(s,rs,a)[r+γvπ(s)]

其中, π ( a ∣ s ) \pi(a|s) π(as) 表示在策略 π \pi π 下当状态为 s s s 时采取动作 a a a 的概率,以 π \pi π 为下标的期望是指其计算是基于策略 π \pi π 的。只要保证 γ < 1 \gamma<1 γ<1 及存在终止状态,则 v π v_\pi vπ 存在且唯一。

如果环境动态模型完全已知,那么上述方程可通过迭代计算来求解,即
v k + 1 ( s ) ≐ E π [ R t + 1 + γ v k ( S t + 1 ) ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} v_{k+1}(s)&\doteq \Bbb{E}_\pi[R_{t+1}+\gamma v_k(S_{t+1})|S_t=s]\\ &=\sum_a\pi(a|s)\sum_{s^\prime,r}p(s^\prime,r|s,a)\Big[r+\gamma v_\pi(s^\prime)\Big] \end{aligned} vk+1(s)Eπ[Rt+1+γvk(St+1)St=s]=aπ(as)s,rp(s,rs,a)[r+γvπ(s)]

显然 v k = v π v_k=v_\pi vk=vπ 是这个更新规则的不动点,因为贝尔曼方程保证了其相等,实际上在保证 v π v_\pi vπ 存在的条件下,当 k → ∞ k\rightarrow\infty k时,序列 { v k } \{v_k\} {vk}可以收敛至序列 v π v_\pi vπ,这种算法成为迭代策略评估

为了使 v k + 1 v_{k+1} vk+1 相比 v j v_j vj 更加逼近 v π v_\pi vπ,迭代策略评估对每个状态 s s s 应用如下操作:用状态 s s s 的旧价值来更新 s s s 的新价值,再用 s s s 的新价值替换 s s s 的旧价值,我们称这种操作为预期更新。迭代策略评估的每次更新都会产生新的估计价值函数 v k + 1 v_{k+1} vk+1

若要编写程序实现上述的迭代策略评估,必须使用两个数组,一个储存旧价值 v k ( s ) v_k(s) vk(s),另一个储存新价值 v k + 1 ( s ) v_{k+1}(s) vk+1(s),我们用旧价值数组来一个接一个地计算新价值数组,过程中可以立刻改变旧价值数组,也可以更新完毕再改变旧价值数组,这两种方法均收敛于 v π v_\pi vπ,事实上前者收敛速度更快。

在这里插入图片描述

2、策略改进

我们计算策略的价值函数的原因是为了找到更好的策略,假设我们已经知道某策略 π \pi π 的价值函数 v π v_\pi vπ,对于某些状态我们想知道是否应该改变策略,虽然我们根据 v π v_\pi vπ 知道当前的策略有“多好”,但是更换策略是“更好”还是“更差”呢?一种方法就是在状态 s s s 时确定性地选择动作价值函数最高的动作 a a a,然后遵循现有的策略 π \pi π
q π ( s , a ) ≐ E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} q_\pi(s,a)&\doteq \Bbb{E}[R_{t+1}+\gamma v_\pi(S_{t+1})|S_t=s,A_t=a]\\ &= \sum_{s^\prime,r}p(s^\prime,r|s,a)\Big[r+\gamma v_\pi(s^\prime)\Big] \end{aligned} qπ(s,a)E[Rt+1+γvπ(St+1)St=s,At=a]=s,rp(s,rs,a)[r+γvπ(s)]

关键在于它是大于还是小于 v π ( s ) v_\pi(s) vπ(s),如果它更大,那么也就是说在状态 s s s 选择一次(根据上述公式,只有这一次的动作选择不遵循策略 π \pi π)动作 a a a 的策略比一直遵循策略 π \pi π 要更好,那么也就是说每次遇到状态 s s s 都确定性地选择动作 a a a 会更好,事实上新策略确实更好。

假设 π \pi π π ′ \pi^\prime π 是任意一对确定性策略,有 q π ( s , π ′ ( s ) ) ≥ v π ( s ) q_\pi(s,\pi^\prime(s))\geq v_\pi(s) qπ(s,π(s))vπ(s),也就是说策略 π ′ \pi^\prime π 优于策略 π \pi π,也就是说它在所有状态下均获得更多的期望收益,即 v π ′ ( s ) ≥ v π ( s ) v_{\pi^\prime}(s)\geq v_\pi(s) vπ(s)vπ(s),我们称其为策略改进定理

到目前为止,在给定策略及其价值函数的条件下,我可以轻松地在单个状态下对动作的更改,我们将其延伸至所有状态下动作的更改,即在每个状态下根据 q π ( s , a ) q_\pi(s,a) qπ(s,a) 来选择最佳的动作,也就是选择新的贪心策略 π ′ \pi^\prime π,即
π ′ ( s ) ≐ arg max ⁡ a q π ( s , a ) = arg max ⁡ a E [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s , A t = a ] = arg max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] \begin{aligned} \pi^\prime(s)&\doteq \argmax_aq_\pi(s,a)\\ &=\argmax_a\Bbb{E}[R_{t+1}+\gamma v_\pi(S_{t+1})|S_t=s,A_t=a]\\ &=\argmax_a\sum_{s^\prime,r}p(s^\prime,r|s,a)\Big[r+\gamma v_\pi(s^\prime)\Big] \end{aligned} π(s)aargmaxqπ(s,a)=aargmaxE[Rt+1+γvπ(St+1)St=s,At=a]=aargmaxs,rp(s,rs,a)[r+γvπ(s)]

贪心策略采取的是在短期内看起来最好的动作,可以看出它优于原策略。根据原策略的价值函数通过贪心方法改进原策略,从而得到新策略,我们称其为策略改进

到目前为止,我考虑的是确定性策略这种特殊情况,事实上,上述所有思想可以很容易地扩展到随机策略。

3、策略迭代

一旦通过价值函数 v π v_\pi vπ 改进策略 π \pi π,得到更好的策略 π ′ \pi^\prime π,我们就可以计算价值函数 v π ′ v_{\pi^\prime} vπ,再改进策略 π ′ \pi^\prime π,得到更好的策略 π ′ ′ \pi^{\prime\prime} π′′,由此我们可以得到一系列单调改进的策略和价值函数:
π 0 ⟶ E v π 0 ⟶ I π 1 ⟶ E v π 1 ⟶ I π 2 ⟶ E ⋯ ⟶ I π ∗ ⟶ E v ∗ \pi_0\stackrel{E}{\longrightarrow}v_{\pi_0}\stackrel{I}{\longrightarrow}\pi_1\stackrel{E}{\longrightarrow}v_{\pi_1}\stackrel{I}{\longrightarrow}\pi_2\stackrel{E}{\longrightarrow}\cdots\stackrel{I}{\longrightarrow}\pi_\ast\stackrel{E}{\longrightarrow}v_\ast π0Evπ0Iπ1Evπ1Iπ2EIπEv

其中 ⟶ E \stackrel{E}{\longrightarrow} E 表示策略评估, ⟶ I \stackrel{I}{\longrightarrow} I 表示策略改进,每个策略都优于前一个策略。由于有限马尔可夫决策过程只有有限个策略,因此该过程必然会在有限次的迭代中收敛到最优策略和最优价值函数。

这种寻找最优策略的方法被称为策略迭代,完整算法如下所示,可以看出每次策略评估本身就是一次迭代计算,都是从前一个策略的价值函数开始,这通常会使得策略评估的收敛速度大大提高。
在这里插入图片描述

4、值迭代

策略迭代的一个缺点是:它得每次迭代都要进行策略评估,这本身就是一个冗长的迭代计算,而策略评估只有在极限的情况下才收敛到 v π v_\pi vπ,我们是否可以在此之前就截断迭代呢?答案是可以的。实际上,在保证策略迭代收敛的前提下,可以通过多种方式截断策略迭代中的策略评估过程,一种特殊的方式是,策略评估时每个状态仅更新一次就停止,这种算法称为值迭代。它可以写成一个特别简单的更新操作,其中结合了策略改进和截断策略评估:
v k + 1 ( s ) ≐ max ⁡ a E [ R t + 1 + γ v k ( S t + 1 ) ∣ S t = s , A t = a ] = max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v k ( s ′ ) ] \begin{aligned} v_{k+1}(s)&\doteq \max_a\Bbb{E}[R_{t+1}+\gamma v_k(S_{t+1})|S_t=s,A_t=a]\\ &=\max_a\sum_{s^\prime,r}p(s^\prime,r|s,a)[r+\gamma v_k(s^\prime)] \end{aligned} vk+1(s)amaxE[Rt+1+γvk(St+1)St=s,At=a]=amaxs,rp(s,rs,a)[r+γvk(s)]

对于任意的 v 0 v_0 v0,序列 { v k } \{v_k\} {vk} 都会收敛于 v ∗ v_\ast v。理解值迭代的另一种方法就是参考贝尔曼最优方程,只需要将贝尔曼最优方程转换为更新规则即可获得值迭代。最好我们看一下值迭代是如何终止的,与策略评估一样,值迭代需要无限次迭代才能精确收敛到 v ∗ v_\ast v,但实际上,值函数在一次迭代过程只发生了极小的变换,我们就停止迭代,完整算法如下所示:
在这里插入图片描述
值迭代在每次迭代过程中都有效的结合了一次策略评估和一次策略改进,通过在每个策略改进之间插入多个策略评估,通常可以实现更快的收敛。

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

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

相关文章

2023年12月青少年机器人技术等级考试(五级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;五级&#xff09;理论综合试卷 单选题 第 1 题 单选题 通常状况下&#xff0c;ESP32 WROOM模组的工作电压是&#xff1f;&#xff08; &#xff09; A.3V B.3.3V C.3.6V D.5V 第 2 题 单选题 ESP32 WROOM模组中核&am…

java大数据hadoop2.9.2 Linux安装mariadb和hive

一、安装mariadb 版本centos7 1、检查Linux服务器是否已安装mariadb yum list installed mariadb* 2、如果安装了&#xff0c;想要卸载 yum remove mariadb rm -rf /etc/my.cnf rm -rf /var/lib/mysql 才能完全删除 3、安装mariadb 在线网络安装 yum install -y mari…

网络通信(Socket/TCP/UDP)

一、Socket 1.概念: Socket(又叫套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接协议,客户端的IP地址,客户端的端口,服务器的IP地址,服务器的端口。 一个Socket是一对IP地址…

笔试面试题——二叉树进阶(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、根据二叉树创建字符串1、题目讲解2、思路讲解3、代码实现 二、二叉树的分层遍历1、题目讲…

大数据导论(4)---大数据应用

文章目录 1. 在互联网中的应用1.1 推荐系统1.2 长尾理论1.3 推荐方法与模型1.4 推荐系统应用 2. 在其他领域的应用2.1 企业营销2.2 智慧交通 1. 在互联网中的应用 1.1 推荐系统 1. 推荐系统产生&#xff1a;  (1) 互联网的飞速发展使我们进入了信息过载的时代&#xff0c;搜索…

【赠书第17期】Excel高效办公:文秘与行政办公(AI版)

文章目录 前言 1 了解Excel的强大功能和工具 2 提升Excel技能的方法 3 结合AI技术提升Excel应用 4 注意事项 5 推荐图书 6 粉丝福利 前言 随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;我们的工作方式也在发生深刻变革。其中&#xff0c;Excel 作…

使用cmake进行完成开发实践

根据这个UML图进行cmake的实践 首先按照使用vscode在wsl2中配置clangd环境-CSDN博客的内容先创建出cmake项目。 之后在项目目录中创建include和src目录。 根据UML图&#xff0c;首先要完成Gun类的实现。分别在include&#xff0c;src目录下创建头文件和源文件&#xff0c;写入…

上位机图像处理和嵌入式模块部署(qt图像处理)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多人一想到图像处理&#xff0c;本能的第一反应就是opencv&#xff0c;这也没有错。但是呢&#xff0c;这里面还是有一个问题的&#xff0c;不知…

Leetcode刷题笔记题解(C++):LCR 174. 寻找二叉搜索树中的目标节点

思路&#xff1a;二叉搜索树的中序遍历是有序的从大到小的&#xff0c;故得出中序遍历的结果&#xff0c;即要第cnt大的数为倒数第cnt的数 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeN…

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

​WordPress顶部管理工具栏怎么添加一二级自定义菜单?

默认情况下&#xff0c;WordPress前端和后台页面顶部都有一个“管理工具栏”&#xff0c;左侧一般就是站点名称、评论、新建&#xff0c;右侧就是您好&#xff0c;用户名称和头像。那么我们是否可以在这个管理工具栏中添加一些一二级自定义菜单呢&#xff1f; 其实&#xff0c…

力扣746. 使用最小花费爬楼梯

动态规划 思路&#xff1a; 定义 dp[i] 为到达下标 i 层的最小花费&#xff1b;则状态转移方程为&#xff1a; 第 i 层可以从第 i - 1 层爬一层或者第 i - 2 层爬两层到达&#xff1b;则 dp[i] std::min(dp[i - 1] cost[i - 1], dp[i - 2] cost[i - 2])初始状态&#xff1a…

SpringSecurity+JWT前后端分离架构登录认证

目录 1. 数据库设计 2. 代码设计 登录认证过滤器 认证成功处理器AuthenticationSuccessHandler 认证失败处理器AuthenticationFailureHandler AuthenticationEntryPoint配置 AccessDeniedHandler配置 UserDetailsService配置 Token校验过滤器 登录认证过滤器接口配置…

应用层—HTTPS详解(对称加密、非对称加密、密钥……)

文章目录 HTTPS什么是 HTTPSHTTPS 如何加密HTTPS 的工作过程对称加密非对称加密 HTTPS 什么是 HTTPS HTTPS 也是一个应用层的协议。是在 HTTP 协议的基础上引入的一个加密层。 由来&#xff1a;HTTP 协议内容都是按照文本的方式明纹传输&#xff0c;这就导致在传输过程中出现…

Springboot+vue的校园疫情防控系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的校园疫情防控系统&#xff08;有报告&#xff09;&#xff0c;Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的校园疫情防控系统&#xff0c;采用M&#xff…

2023年12月青少年机器人技术等级考试(四级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;四级&#xff09;理论综合试卷 单选题 第 1 题 单选题 Arduino UNO/Nano主控板&#xff0c;当数字引脚输出信号为高电平时&#xff0c;对应的电压是 &#xff1f;&#xff08; &#xff09; A.0V B.5V C.-0.5 ~ 1.5V D.3…

[SS]语义分割_转置卷积

转置卷积&#xff08;Transposed Convolution&#xff09; 抽丝剥茧&#xff0c;带你理解转置卷积&#xff08;反卷积&#xff09; 目录 一、概念 1、定义 2、运算步骤 二、常见参数 一、概念 1、定义 转置卷积&#xff08;Transposed Convolution&#xff09;&#xf…

Paimon教程

教程来自尚硅谷 目录 教程来自尚硅谷1. 概述1.1 简介1.2 核心特性1.3 文件布局1.3.1 LSM Trees 2. 集成Flink2.1 安装&配置2.2 Catalog 3. 进阶使用3.1 写入性能3.1.1 并行度3.1.2 Compaction3.1.3 触发Compaction的Sorted Run数3.1.4 写入初始化3.1.5 内存 3.2 读取性能3.…

mac 安装配置oh-my-zsh

1. 安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 按照步骤安装即可 安装完成查看版本 brew -v 2. 安装zsh brew install zsh 查看版本 zsh --version 3. 安装oh-my-zsh github官网链…

【Linux系统编程】进程优先级

文章目录 1. 优先级的基本概念2. 为什么存在优先级3. 查看系统进程4. PRI and NI5. top命令修改已存在进程的nice值6. 其他概念 1. 优先级的基本概念 本篇文章讲解进程优先级&#xff0c;首先我们来了解一下进程优先级的概念&#xff1a; cpu资源分配的先后顺序&#xff0c;就…