深入理解强化学习——马尔可夫决策过程:过程控制

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


策略评估是指给定马尔可夫决策过程和策略,我们可以估算出价值函数的值。本文将阐述如果我们只有马尔可夫决策过程,我们应该如何寻找最佳的策略,从而得到最佳价值函数(Optimal Value Function)的方法。最佳价值函数的定义为:
V ∗ ( s ) = max ⁡ π V π ( s ) V^*(s)=\max_\pi V_\pi(s) V(s)=πmaxVπ(s)

最佳价值函数是指,我们搜索一种策略 π \pi π让每个状态的价值最大。 V ∗ V^* V就是到达每一个状态,它的值的最大化情况。 在这种最大化情况中,我们得到的策略就是最佳策略,即:
π ∗ ( s ) = arg ⁡ max ⁡ π V π ( s ) \pi^*(s)=\arg\max_\pi V_\pi(s) π(s)=argπmaxVπ(s)

最佳策略使得每个状态的价值函数都取得最大值。所以如果我们可以得到一个最佳价值函数,就可以认为某个马尔可夫决策过程的环境可解。在这种情况下,最佳价值函数是一致的,环境中可达到的上限的值是一致的,但这里可能有多个最佳策略,多个最佳策略可以取得相同的最佳价值。当取得最佳价值函数后,我们可以通过对Q函数进行最大化来得到最佳策略:
π ∗ ( a ∣ s ) = { 1 , a = arg ⁡ max ⁡ a ∈ A Q ∗ ( s , a ) 0 , 其它 \pi^*(a|s)=\left\{ \begin{aligned} 1, & \quad a = \arg\max_{a\in A} Q^*(s, a) \\ 0, & \quad\text{其它} \\ \end{aligned} \right. π(as)= 1,0,a=argaAmaxQ(s,a)其它

综上所述,我们定义最优动作价值函数:
Q ∗ ( s , a ) = max ⁡ π Q π ( s , a ) Q^*(s, a)=\max_\pi Q^\pi(s, a) Q(s,a)=πmaxQπ(s,a)

为了使 Q ∗ ( s , a ) Q^*(s, a) Q(s,a)最大,我们需要在当前的状态动作对 ( s , a ) (s, a) (s,a)之后都执行最优策略。于是我们得到了最优状态价值函数和最优动作价值函数之间的关系:
Q ∗ ( s , a ) = r ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ∗ ( s ) Q^*(s, a)=r(s, a)+\gamma\sum_{s'\in S}P(s'|s, a)V^*(s) Q(s,a)=r(s,a)+γsSP(ss,a)V(s)

这与在普通策略下的状态价值函数和动作价值函数之间的关系是一样的。另一方面,最优状态价值是选择此时使最优动作价值最大的那一个动作时的状态价值:
V ∗ ( s ) = max ⁡ a ∈ A Q ∗ ( s , a ) V^*(s)=\max_{a\in A}Q^*(s, a) V(s)=aAmaxQ(s,a)

综上所述,当Q函数收敛后,因为Q函数是关于状态与动作的函数,所以如果在某个状态采取某个动作,可以使得Q函数最大化,那么这个动作就是最佳的动作。如果我们能优化出一个Q函数 Q ∗ ( s , a ) Q^*(s, a) Q(s,a),就可以直接在Q函数中取一个让Q函数值最大化的动作的值,就可以提取出最佳策略。

策略搜索

最简单的策略搜索方法就是穷举。假设状态和动作都是有限的,那么每个状态我们可以采取 A A A种动作的策略,总共就是 ∣ A ∣ ∣ S ∣ |A|^{|S|} AS个可能的策略。我们可以把策略穷举一遍,算出每种策略的价值函数,对比一下就可以得到最佳策略。

但是穷举非常没有效率,所以我们要采取其他方法。搜索最佳策略有两种常用的方法:策略迭代和价值迭代。寻找最佳策略的过程就是马尔可夫决策过程的控制过程。马尔可夫决策过程控制就是去寻找一个最佳策略使我们得到一个最大的价值函数值,即:
π ∗ ( s ) = arg ⁡ max ⁡ π V π ( s ) \pi^*(s)=\arg\max_\pi V_\pi(s) π(s)=argπmaxVπ(s)

对于一个事先定好的马尔可夫决策过程,当智能体采取最佳策略的时候,最佳策略一般都是确定的,而且是稳定的(它不会随着时间的变化而变化)。但最佳策略不一定是唯一的,多种动作可能会取得相同的价值。我们可以通过策略迭代和价值迭代来解决马尔可夫决策过程的控制问题。

参考文献:
[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.mzph.cn/news/202420.shtml

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

相关文章

数字化时代的保镖:实人认证API在身份验证中的角色

前言 随着数字化时代的迅猛发展,个人信息的安全性和隐私保护成为了当今社会中备受关注的话题。在这个背景下,实人认证API崭露头角,成为数字领域中的一项重要技术,为身份验证提供了全新的保障机制。本文将探讨实人认证API在身份验…

本地启动tomcat,打印的日志中中文乱码

修改配置文件 /conf/logging.properties 修改配置项 java.util.logging.ConsoleHandler.encoding 从UTF-8改成GBK

力扣226:翻转二叉树

力扣226:翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3]…

git submodule 用法

子仓库启蒙 在根目录执行&#xff1a; git submodule add gitgitee.com:liaosp/dcat-admin-basic-interface.git想要子模块指定的分支&#xff1a; git submodule add -b dev <仓库地址> <子模块路径>这样相当于在根目录上添加了 .gitmodules 信息&#xff0c;相…

java内部类详解

文章目录 一、介绍二、为什么要使用内部类三、非静态内部类四、静态内部类五、局部内部类六、匿名内部类七、lambda表达式内部类八、成员重名九、序列化十、如何选择内部类 一、介绍 在java中&#xff0c;我们被允许在编写一个类(外部类OuterClass)时&#xff0c;在其内部再嵌…

如何制定开发计划

如何制定开发计划&#xff0c;很多开发主管跟项目经理在评估开发计划时喜欢把开发叫起来一块评估&#xff0c;结果会发现&#xff0c;三天时间能做好的功能&#xff0c;底下人&#xff08;特别是一些老油条&#xff09;总是会各种理由做不完要五天&#xff0c;其实这是人之常情…

CTF 6

信息收集 话不多说&#xff0c;nmap进行信息收集&#xff01; 存活主机探测 服务版本探测 端口探测 漏洞脚本探测 UDP端口探测 渗透测试 先看看网站的首页&#xff0c;发现了几个用户&#xff1a; 直接先保存下来吧&#xff0c;以防后面会用到。 SQL注入 看到一个read mor…

作高效保密:了解上海迅软DSE四种加密模式在不同场景中的巧妙运用

于企事业单位内部数据存储情况的复杂性&#xff0c;以及不同公司和部门对文件加密的各异需求&#xff0c;单一的加密系统难以满足这种多样化的加密需求。在应对这一挑战的过程中&#xff0c;天锐绿盾提供了四种不同的加密模式&#xff0c;用户可以根据实际情况选择适用的加密模…

《opencv实用探索·十一》opencv之Prewitt算子边缘检测,Roberts算子边缘检测和Sobel算子边缘检测

1、前言 边缘检测&#xff1a; 图像边缘检测是指在图像中寻找灰度、颜色、纹理等变化比较剧烈的区域&#xff0c;它们可能代表着物体之间的边界或物体内部的特征。边缘检测是图像处理中的一项基本操作&#xff0c;可以用于人脸识别、物体识别、图像分割等多个领域。 边缘检测…

C/C++,图算法——布伦特循环检测算法(Brent‘s cycle detection algorithm)的源程序

1 文本格式 // CPP program to implement Brents cycle // detection algorithm to detect cycle in // a linked list. #include <stdio.h> #include <stdlib.h> /* Link list node */ struct Node { int data; struct Node* next; }; /* Th…

导出Excel需要增加一个错误列, 通用类SheetWriteHandler

背景 如题 在业务中经常遇到这样的需求, 上传excel后对数据进行校验, 如果校验不通过, 需要提供excel下载, 并在后面一列提供错误原因. 常见的做法是在导出的方法中, 加一个字段然后在list中, 然后sheet写到返回流中. 但是如果需要统一样式就比较麻烦, 且每次都需要写这么一…

在Vivado 仿真器中搭建UVM验证环境(不需要联合modelsim)

Vivado 集成设计环境支持将通用验证方法学 (UVM) 应用于 Vivado 仿真器。Vivado 提供了预编译的 UVM V1.2 库。 &#xff08;1&#xff09;在 Vivado 2019.2 中创建新 RTL 工程。 &#xff08;2&#xff09;单击“添加目录 (Add Directories)”以将“src”和“verif”目录添加…

4.1 Docker 容器化和镜像管理

Docker 容器化和镜像管理 容器化的概念 介绍容器化的含义&#xff0c;将应用程序及其依赖项封装为一个独立的运行环境&#xff0c;实现隔离和可移植性。强调容器化的优势&#xff0c;如轻量、快速启动、一致性和可扩展性。 Docker 简介 解释 Docker 是一种主流的容器化技术&am…

CCF计算机软件能力认证202309-2坐标变换(其二)(C语言)

ccf-csp计算机软件能力认证202309-2坐标变换&#xff08;其二&#xff09;(C语言版) 题目内容&#xff1a; 问题描述 输入格式 输出格式 样例输入 10 5 2 0.59 2 4.956 1 0.997 1 1.364 1 1.242 1 0.82 2 2.824 1 0.716 2 0.178 2 4.094 1 6 -953188 -946637 1 9 96953…

计算机网络之网络传输,三次握手和四次挥手

网络传输通过高低电压 流 基本类型数组 低电压转高电压&#xff0c;通过网卡 传输模式&#xff1a; 全双工&#xff1a;互相传输且能同时传输 半双工&#xff1a;互相传输但是不能同时传输 单工&#xff1a;单向传输&#xff0c;&#xff08;键盘&#xff0c;显示器&#…

kubernetes详解——从入门到入土(更新中~)

k8s简介 编排工具&#xff1a;系统层面ansible、saltstackdocker容器docker compose docker swarm docker machinedocker compose&#xff1a;实现单机容器编排docker swarm&#xff1a;实现多主机整合成为一个docker machine&#xff1a;初始化新主机mesos marathonmesos …

微信小程序查看接口信息(抓包)

本文仅供交流学习使用 主要参考: https://cloud.tencent.com/developer/article/1833591 https://www.cnblogs.com/x1you/p/12033839.html 由于参考文章在baidu权重不高(google才查到的), 所以自己重新记录一篇, 方便他人, 也防止参考文章丢失. 背景 需要知道微信小程序的接口…

8、Broker进一步了解

1、Broker消息分发服务以及构建ConsumeQueue和IndexFile与消息清除 前面分析如何进行刷盘&#xff0c;本章分析Broker的消息分发以及构建ConsumerQueue和IndexFile&#xff0c;两者构建是为了能够提高效率&#xff0c;减少消息查找时间以及减少网络带宽与存储空间。 ConsumeQ…

线程与线程池

单核cpu与多核cpu&#xff1a; 线程的并发和并行问题 多线程的创建&#xff1a; 多线程程序创建&#xff1a;java.lang.Thread(实现了Runnable接口) // 1定义一个类实现Runnable接口&#xff0c;重写run方法&#xff08;run方法中设置线程任务&#xff09;…

W5500实现以太网通信

实现原理 嵌入式程序跑在STM32微控制器&#xff0c;通过片上SPI控制器与W5500进行通信&#xff0c;配置所需网络参数并与远端服务器建立链接&#xff08;TCP客户端&#xff09;之后发送接收数据&#xff1b;又或者是建立服务器&#xff08;TCP服务器&#xff09;等待建立链接之…