策略迭代和价值迭代

策略迭代价值迭代

  • 策略迭代(Policy Iteration)
    • 基本步骤
    • 例子:公主的营救
  • 价值迭代(Value Iteration)
    • 基本步骤
    • 例子:公主的营救
  • 策略迭代与价值迭代的区别
    • 实现方式
    • 目标
    • 收敛速度
    • 与其他技术的交互

策略迭代(Policy Iteration)

策略迭代的大概思想是:首先给定一个任意策略,迭代贝尔曼方程,求得当前策略下的值函数,然后根据值函数更新策略,调整后的策略又可以计算值函数,这样循环往复,直到策略收敛。
在这里插入图片描述
策略迭代算法包含两个大的过程:

  • 策略评估:就是计算值函数
  • 策略提升:基于上一步的值函数估计一个更好的策略

基本步骤

策略迭代的具体实施步骤如下:

  • 初始化:初始化所有状态的值函数和一个任意的初始策略 π ( s ) π(s) π(s)
  • 策略评估:通过贝尔曼方程,求出当前策略下的值函数,直到值函数收敛
  • 策略更新:利用步骤2的值函数更新策略,更新的原则是在 s s s上选择 a a a,使得 V ( s ) V(s) V(s)最大(贪婪思想)
  • 重复步骤2和步骤3,直到策略收敛

例子:公主的营救

在这里插入图片描述
在这个游戏中:

  • 王子每回合可以往上、下、左、右四个方向移动
  • 每走一步,体力值减1,记为-1
  • 找到公主,游戏结束
  • 目标是最小体力损耗找到公主

这个一个标准的马尔科夫决策过程(MDP):

  • State:王子所在位置
  • Action:上/下/左/右走一格
  • Reward:体力损耗
  • 折扣因子为1

首先初始化 V ( s ) V(s) V(s)为0, π ( s ) π(s) π(s)为均匀随机策略。
在这里插入图片描述
什么是均匀随机策略?如下,在任意状态,可以上下左右走,若走出框,则返回原位置,奖励仍记为-1
在这里插入图片描述
接下来进行策略评估,计算 V ( s ) V(s) V(s),应用的公式是
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V π ( s ′ ) ) V_π(s)=\sum_{a∈A}π(a|s)\left( R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V_π(s^{'}) \right ) Vπ(s)=aAπ(as) R(s,a)+γsSp(ss,a)Vπ(s)

因此,第一个格子的 V π ( s ) V_π(s) Vπ(s)
V π ( s ) = 0.25 ∗ ( − 1 + 0 ) + 0.25 ∗ ( − 1 + 0 ) + 0.25 ∗ ( − 1 + 0 ) + 0.25 ∗ ( − 1 + 0 ) = − 1 V_π(s)=0.25*(-1+0)+0.25*(-1+0)+0.25*(-1+0)+0.25*(-1+0)=-1 Vπ(s)=0.25(1+0)+0.25(1+0)+0.25(1+0)+0.25(1+0)=1
类似的,可以计算出每个格子的 V π ( s ) V_π(s) Vπ(s),结果如下:
在这里插入图片描述
由于公主是最终状态,即没有状态流出,所以是0。

进行第二次计算,第一个格子:
V π ( s ) = 0.25 ∗ ( − 1 + − 1 ) + 0.25 ∗ ( − 1 + − 1 ) + 0.25 ∗ ( − 1 + − 1 ) + 0.25 ∗ ( − 1 + − 1 ) = − 2 V_π(s)=0.25*(-1+-1)+0.25*(-1+-1)+0.25*(-1+-1)+0.25*(-1+-1)=-2 Vπ(s)=0.251+1+0.251+1+0.251+1+0.251+1=2

中央的格子:
V π ( s ) = 0.25 ∗ ( − 1 + − 1 ) + 0.25 ∗ ( − 1 + − 1 ) + 0.25 ∗ ( − 1 + − 1 ) + 0.25 ∗ ( − 1 + 0 ) = − 1.75 V_π(s)=0.25*(-1+-1)+0.25*(-1+-1)+0.25*(-1+-1)+0.25*(-1+0)=-1.75 Vπ(s)=0.251+1+0.251+1+0.251+1+0.251+0=1.75
在这里插入图片描述
以此类推,再进行一此计算之后,价值分布:
在这里插入图片描述
假设我们走到这一步,已经 收敛 了。那么我们可以进行下一步,策略提升。

如何使用贪婪思想进行策略提升呢?

首先看王子所在的位置,他可以上下左右走,往上走计算 q ( s , a ) q(s,a) q(s,a)是-4,往下走是-3.875,往左走是-4,往右走是-3.9375,我们在这四个数中选一个最大的,显然,往下走是最大的。因此,我们取最大的max,把往下走的可能性提升为100%,舍弃掉其他不如这个的策略。

再看中间部分,可知往下走是最大的,可以将策略优化为向下,最终,可以得到如下的策略:
在这里插入图片描述
然后,在新的策略下,再计算 V ( s ) V(s) V(s)至收敛,然后再得到新的策略,然后再计算 V ( s ) V(s) V(s)至收敛,如此往复,直到策略收敛(更新前后的策略计算的 V ( s ) V(s) V(s)接近)。整个过程如下所示:
π 0 ⟶ E V π 0 ⟶ I π 1 ⟶ E V π 1 ⟶ I π 2 ⟶ E ⋯ ⟶ I π ∗ ⟶ E V π ∗ π_0\stackrel{E}{\longrightarrow}V_{π0}\stackrel{I}{\longrightarrow}π_1\stackrel{E}{\longrightarrow}V_{π1}\stackrel{I}{\longrightarrow}π_2\stackrel{E}{\longrightarrow}\cdots\stackrel{I}{\longrightarrow}π_*\stackrel{E}{\longrightarrow}V_{π*} π0EVπ0Iπ1EVπ1Iπ2EIπEVπ

最终,就得到了最优策略,以及最优策略下的最优状态值。

价值迭代(Value Iteration)

价值迭代(Value Iteration)是求解马尔可夫决策过程(MDP)的一种方法,用于找到最优策略。价值迭代的基本思想是,通过迭代计算状态的价值函数,直到这些价值函数不再发生变化,从而得到最优的状态价值分布。

基本步骤

  • 初始化:为所有的状态 s s s赋一个初始价值 V ( s ) V(s) V(s),通常可以选择一个保守的估计,如0。
  • 对于每个状态 s s s,计算其预期价值。即从该状态出发,采取各种可能的行为所能获得的最大期望回报。公式如下:
    V ∗ ( s ) = max ⁡ a ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) ) V^*(s)=\max_a\left( R(s,a)+γ\sum_{s^{'}∈S}p(s^{'}|s,a)V^*(s^{'}) \right) V(s)=amax R(s,a)+γsSp(ss,a)V(s)
  • 终止条件:判断价值函数是否收敛,即对于所有状态,价值函数值不再发生变化。如果收敛,则终止迭代;否则,回到第2步继续迭代。
  • 输出最优策略:一旦价值函数收敛,可以通过查看在每一步选择中哪个行动使得价值最大来确定每个状态的最优策略。

例子:公主的营救

在这里插入图片描述
在这个游戏中:

  • 王子每回合可以往上、下、左、右四个方向移动
  • 每走一步,体力值减1,记为-1
  • 找到公主,游戏结束
  • 目标是最小体力损耗找到公主

这个一个标准的马尔科夫决策过程(MDP):

  • State:王子所在位置
  • Action:上/下/左/右走一格
  • Reward:体力损耗
  • 折扣因子为1

首先,对于每个状态,初始化 V ( s ) = 0 V(s)=0 V(s)=0
在这里插入图片描述
然后进行第一轮迭代,对于每个state,逐一尝试上、下、左、右四个Action,记录每个Action带来的Reward,取最大的Reward作为状态的价值。因此,第一轮迭代完成后,状态价值分布如图:
在这里插入图片描述
因为公主所在的状态是最终状态(没有下一状态),所以公主的状态还是0,不会发生变化。

接着进行第二轮迭代,第二轮迭代完成后的价值分布如下:
在这里插入图片描述
第三轮迭代完成后的价值分布如下:
在这里插入图片描述
第四轮迭代完成后的价值分布如下:
在这里插入图片描述
在第四轮迭代中,所有 V ( s ) V(s) V(s)更新前后都没有任何变化,我们认为价值迭代已经找到了最优策略。

策略迭代与价值迭代的区别

实现方式

策略迭代是一种基于策略的方法,它通过不断更新策略来寻找最优策略。具体来说,策略迭代包括两个步骤:策略评估和策略改进。在策略评估中,我们通过当前策略来评估每个状态的价值函数;在策略改进中,我们根据当前状态的价值函数来更新策略,使得策略更加贴近最优策略。

值迭代是一种基于值函数的方法,它通过不断更新值函数来寻找最优策略。具体来说,值迭代通过不断迭代更新每个状态的价值函数,直到价值函数收敛为止。然后,我们可以根据最终的价值函数来得到最优策略。

目标

策略迭代的目标是直接优化策略,通过不断迭代更新策略来逼近最优策略。然而,由于每次迭代都需要进行策略评估和策略改进,计算量较大。

值迭代的目标是通过优化状态值函数来得到最优策略。它通过不断更新每个状态的价值函数来逼近最优价值函数,然后根据这个最优价值函数导出最优策略。相对于策略迭代,值迭代的计算量较小。

收敛速度

通常来说,策略迭代通常更快地收敛到最优策略,但每一次迭代通常需要更多的计算。而值迭代可能需要更多的迭代次数才能收敛。

与其他技术的交互

值迭代更容易与函数近似方法(如深度学习)结合,因为它关注的是优化值函数。策略迭代则更多地用在具有明确模型的场景。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

浅谈Redis 的 保护模式(protected-mode)

今天在一台服务器上面部署了redis,发现始终无法用工具远程连接,项目里面是正常的,就是工具不行,防火墙也关闭了.折腾了一会才突然想起来,是不是触发了保护模式. 什么时候触发保护模式protected-mode: 同时满足以下两个: 1.bind未指定ip 2.未配置密码 解决方案: 编辑redis…

Room+ViewModel+LiveData

Room框架支持的LiveData会自动监听数据库的变化,当数据库发生变化的时候,会调用onChanged函数更新UI 1.MainActivity package com.tiger.room2;import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.vie…

红帽认证RHCE好考吗?多长时间能考下来?报名费多少一门?哪些人适合考红帽认证?

一、红帽认证等级 红帽认证考试有三个等级,分别是RHCSA(红帽认证系统管理员),RHCE(红帽认证工程师),RHCA(红帽认证架构师)。RHCA是最高级别的认证。 二、RHCE考试 1、考…

一款好用的AI工具——边界AICHAT(二)

目录 3.11、AI智能在线抠图3.12、AI智能图片增强放大3.13、AI图片擦除3.14、AI图片理解3.15、音频视频网页理解模型3.16、角色扮演3.17、AI文档理解对话3.18、公文写作模式3.19、插件库3.20、AI思维导图3.21、PPT一键生成3.22、音视频生成PPT 本篇博文接上一篇博文 一款好用的…

Singularity(四)| 自定义容器

Singularity(四)| 自定义容器 4.1 Singularity Definition 文件 对于可复制的、高质量的容器,我们应该使用定义文件(Definition File)构建 Singularity 容器 。使用定义文件的方式可以在纯文本文件中描述容器的配置和…

数据集踩的坑及解决方案汇总

数据集踩的坑及解决方案汇总 数据集各种格式构建并训练自己的数据集汇总Yolo系列SSDMask R-CNN报错 NotADirectoryError: [Errno 20] Not a directory: /Users/mia/Desktop/P-Clean/mask-RCNN/PennFudanPed2/labelme_json/.DS_StoreFaster R-CNN数据的格式转换划分数据集设定内…

移掉 K 位数字(LeetCode 402)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路4.1 暴力法4.2 贪心 单调栈 参考文献 1.问题描述 给你一个以字符串表示的非负整数 num 和一个整数 k,移除这个数中的 k 位数字,使得剩下的整数最小。请你以字符串形式返回这个最小的整数。 示例 1 …

进电子厂了,感触颇多...

作者:三哥 个人网站:https://j3code.cn 本文已收录到语雀:https://www.yuque.com/j3code/me-public-note/lpgzm6y2nv9iw8ec 是的,真进电子厂了,但主人公不是我。 虽然我不是主人公,但是我经历的过程是和主…

Igraph入门指南 6

3、make_系列:igraph的建图工具 按照定义,正则图是指各顶点的度均相同的无向简单图,因为我目前没有找到描述度相等的有向(或自环图)的标准名称,所以在本文中借用一下这个概念,并加上定语有向无…

Android studio SDK Manager显示不全的问题解决

发现SDK Manager中只显示已下载的SDK版本,想下载其他版本下载不到,尝试翻墙也没用,修改host文件成功 在多个地点Ping服务器,网站测速 - 站长工具 输入dl.google.com,进行ping检测。 选择一个地址,比如180.163.150.1…

【深度学习笔记】5_12稠密连接网络(DenseNet)

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 5.12 稠密连接网络(DenseNet) ResNet中的跨层连接设计引申出了数个后续工作。本节我们介绍其中的一个&#xf…

Python学习:基础语法

版本查看 python --version编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 特殊情况下,也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*-标识符 第一个字符必须是字母表中字母或…

Java学习笔记------常用API

Math类 常用方法: 1. publicb static int abs(int a) 获取参数绝对值 2. publicb static double ceil(double a) 向上取整 3. publicb static floor(double a) 向下取整 4.public static int round(float a) 四舍五入 5. publicb static int max…

Vue3全家桶 - VueRouter - 【2】重定向路由

重定向路由 在路由规则数组中,可采用 redirect 来重定向到另一个地址: 通常是将 / 重定向到 某个页面; 示例展示: router/index.js:import { createRouter, createWebHashHistory, createWebHistory } from vue-route…

云桥通SDWAN企业组网的15大应用场景

云桥通SD-WAN企业组网技术在企业网络中有多样化的应用场景,在技术不断迭代升级中,已经越来越匹配现在的互联网环境,其中在这15中常见的应用场景中,使用云桥通SDWAN企业组网可以很好的帮到企业: 分支机构连接优化&#…

蓝桥杯之【01背包模版】牛客例题展示

牛客链接 #include <bits/stdc.h> using namespace std; int n,V; const int N1010; int v[N],w[N]; int dp[N][N]; int main() {cin>>n>>V;for(int i1;i<n;i){cin>>v[i]>>w[i];}for(int i1;i<n;i){for(int j1;j<V;j){dp[i][j]dp[i-1][…

力扣刷题Days16(js)-67二进制求和

目录 1,题目 2&#xff0c;代码 2.1转换进制数 2.2模拟加法 3&#xff0c;学习与总结 Math.floor() 模拟加法思路回顾 重点复习巩固 模拟加法的思路和学习位运算&#xff1b; 今天没精力了&#xff0c;先休息 1,题目 给你两个二进制字符串 a 和 b &#xff0c;以二进制…

CSS 用 flex 布局绘制骰子

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.box {height: 100px;width: 100px;border: 2px solid grey;border-radius: 10px;display: flex;justify-content: center; // 水平居中/* alig…

桥接模式以及在JDBC源码剖析

介绍&#xff1a; 1、桥接模式是指&#xff1a;将实现和抽象放在两个不同类层次中&#xff0c;使两个层次可以独立改变 2、是一种结构型设计模式 3、Bridge模式基于类的最小设计原则&#xff0c;通过使用封装、聚合以及继承等行为让不同的类承担不同的职责。 4、特点&#xff1…