【强化学习的数学原理】第03课-贝尔曼最优公式-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰

文章目录

  • 一、例子:如何改进策略?
  • 二、最优策略和公式推导
  • 三、公式求解以及最优性
  • 四、最优策略的有趣性质
  • 五、本节课summary


一、例子:如何改进策略?

下图是一个grid world的例子。要求:写出该例的贝尔曼方程、计算每个状态的state value、计算状态s1的action value。
在这里插入图片描述
因为该例非常简单,所以无需套贝尔曼方程的公式,直接根据“即时奖励”+“未来奖励”的思路就可以写出贝尔曼方程。贝尔曼方程如下:
在这里插入图片描述
假设 γ = 0.9 \gamma=0.9 γ=0.9, 联立方程组解方程,就可以解出每个状态的state value。结果为:
在这里插入图片描述
已知state value后,又可以计算出action value。这里的action value怎么算呢?因为例子比较简单,我们可以不套公式,而直接使用“即时奖励”+“未来奖励”的思路来计算。以下图中第三行 q π ( s 1 , a 3 ) q_{\pi}(s_1, a_3) qπ(s1,a3) 为例,在状态 s 1 s_1 s1 选择动作 a 3 a_3 a3 (向下走),所获得的即时奖励是0,未来奖励是 γ v π ( s 3 ) \gamma v_{\pi}(s_3) γvπ(s3)
在这里插入图片描述
到此,我们算出了状态s1的action value。对状态s1的策略进一步观察,可以发现,当前这个策略“s1-s2-s4”其实是不太好的,因为经过了forbidden area s2。 那么该如何改进这个策略呢?
策略的改进依赖于action value!
当前的策略为如下图所示。也就是说,a=a2 (往右走)的概率是1,往其他方向走的概率是0。
在这里插入图片描述
不过,根据我们刚刚算出来的action value。我们发现, q π ( s 1 , a 3 ) = 9 q_{\pi}(s_1, a_3) = 9 qπ(s1,a3)=9 是最大的,所以我们能不能把a3作为一个新的策略?答案是肯定的,因为action value越高,代表选择这个动作后可能获得的reward越大。从grid world中也可以看出,如果把s1的策略改成a3(向下走),不会遇到forbidden area,且可以顺利到达target area,确实是一个更好的策略。
所以,我们希望通过action value来改进策略。

二、最优策略和公式推导

1. 最优策略 π ∗ \pi^* π
state value 可以被用来衡量一个policy是好还是坏。如果现在有两个策略 π 1 \pi_1 π1 π 2 \pi_2 π2,对于所有的状态 s s s π 1 \pi_1 π1 的state value都大于 π 2 \pi_2 π2 的state value,那么就可以认为策略 π 1 \pi_1 π1 是好于策略 π 2 \pi_2 π2 的。
在这里插入图片描述
相似地,可以定义最优策略 π ∗ \pi^* π。如果对于一个策略 π ∗ \pi^* π,对于任意一个状态 s s s,策略 π ∗ \pi^* π 带来的state value都要高于其他所有策略带来的state value,那么策略 π ∗ \pi^* π 就可以被称作是最优策略。
在这里插入图片描述

2. 贝尔曼最优公式(Bellman optimality equation, BOE)

在这里插入图片描述
贝尔曼最优公式的定义如上图所示。与贝尔曼公式有一些小小的差异,贝尔曼最优公式前面多了一个 m a x max max 符号。也就是说,需要找到一个策略 π ( s ) \pi(s) π(s) ,使得状态 s s s 的state value最大。公式中,转移概率 p ( r ∣ s , a ) p(r|s,a) p(rs,a) p ( s ′ ∣ s , a ) p(s'|s,a) p(ss,a),奖励 r r r,折扣因子 γ \gamma γ,都是已知的。策略 π ( s ) \pi(s) π(s)、状态值函数 v ( s ) v(s) v(s) v ( s ′ ) v(s') v(s) 是未知的。

下图是贝尔曼最优公式定义的matrix-vector form。
在这里插入图片描述

3. 贝尔曼最优公式右边的最大化问题
如何求出一个策略 π ( s ) \pi(s) π(s) ,使得贝尔曼公式右边的值最大化呢?

上面已经提到,贝尔曼最优公式中,策略 π ( s ) \pi(s) π(s)、状态值函数 v ( s ) v(s) v(s) v ( s ′ ) v(s') v(s) 是未知的。假设把 v ( s ) v(s) v(s) v ( s ′ ) v(s') v(s) 看成是一个变量,那么在贝尔曼最优公式中,有两个未知量: v ( s ) v(s) v(s) π ( s ) \pi(s) π(s)。一个方程式求解两个变量,看似有些困难。不过先别急,先看下面这个简单的例子。

对于下面这个式子,我们希望确定a、x的值,使得等式右边的值最大化。先来看a,因为 − a 2 -a^2 a2 始终小于等于0,所以若想求最大值,a的值只能为0。将 a=0 代入式子后,等式就变成了 x = 2 x − 1 x=2x-1 x=2x1,从而可以求出x的值。因此,答案为a=0,x=1。这个思路可以被用在贝尔曼最优公式的求解中。
在这里插入图片描述
来看下式。我们希望从下式中求解出最优策略 π \pi π 。一般来说,会给 v ( s ′ ) v(s') v(s) 赋一个初始值,那么此时 q ( s , a ) q(s,a) q(s,a) 就是已知的。此时需要找出一个 π ( a ∣ s ) \pi(a|s) π(as) ,使得等式右边的值最大。

在这里插入图片描述
但是,对于一个状态s来说,有许多的动作a可供选择。以grid world为例,一个状态s就有5种动作可以选择(上、下、左、右、不动), q ( s , a 1 ) q(s,a_1) q(s,a1) q ( s , a 2 ) q(s,a_2) q(s,a2) q ( s , a 3 ) q(s,a_3) q(s,a3) q ( s , a 4 ) q(s,a_4) q(s,a4) q ( s , a 5 ) q(s,a_5) q(s,a5)。假设在这5种选择里, q ( s , a 2 ) q(s,a_2) q(s,a2) 的值是最大的,那么如果想求 m a x max max,需要把 π ( a 2 ∣ s ) \pi(a_2|s) π(a2s) 的值设置为1, π ( a 1 ∣ s ) \pi(a_1|s) π(a1s) π ( a 3 ∣ s ) \pi(a_3|s) π(a3s) π ( a 4 ∣ s ) \pi(a_4|s) π(a4s) π ( a 5 ∣ s ) \pi(a_5|s) π(a5s) 的值都设置为0即可。

其数学上的表示如下图所示。意思是把 q ( s , a i ) q(s,a_i) q(s,ai)最大的那个动作对应的概率 π ( a i ∣ s ) \pi(a_i|s) π(ais) 设置为1,其余动作的概率设置为0,这样就能使得等式右边的值最大化。
在这里插入图片描述

三、公式求解以及最优性

1. rewrite as v = f ( v ) v=f(v) v=f(v)
BOE等式右边的部分可以写成关于 v v v 的一个函数 f ( v ) f(v) f(v) ,因为固定 v v v 了之后,就可以求出一个最优的 π \pi π。然后,贝尔曼最优方程就变成了 v = f ( v ) v=f(v) v=f(v)。所以,我们只要求出v,就能解出贝尔曼最优方程。
在这里插入图片描述
那么,该如何求解贝尔曼最优方程呢?在学习求解之前,还需要补充一些概念。

2. Contraction mapping theorem
(1) fixed point:不动点。如果在一个集合X中有一个x,有一个映射f,如果满足f(x)=x,那么x被称作一个不动点。简单来说就是,点x经过映射f后,又回到了它自己。
在这里插入图片描述
(2)contraction mapping:contraction mapping的直观理解就是, x 1 x_1 x1映射为 f ( x 1 ) f(x_1) f(x1) x 2 x_2 x2映射为 f ( x 2 ) f(x_2) f(x2) f ( x 1 ) f(x_1) f(x1) f ( x 2 ) f(x_2) f(x2)之间的距离比 x 1 x_1 x1 x 2 x_2 x2之间的距离要小。正好对应了“contracion(收缩)”的意思。
在这里插入图片描述
以下是两个帮助理解的例子。从例子 x = f ( x ) = 0.5 x x=f(x)=0.5x x=f(x)=0.5x 中可以看出,x=0是一个fixed point,f(x)=0.5x是一个contraction mapping。将上例推广到 x = f ( x ) = A x x=f(x)=Ax x=f(x)=Ax ,仍然可以得到,x=0是一个fixed point,f(x)=Ax是一个contraction mapping。
在这里插入图片描述
contraction mapping theorem
existence:只要f是一个contraction mapping,那么就一定存在一个fixed point。
uniqueness:fixed point是唯一的。
algorithm:fixed point是可以求解的,用一个迭代式的算法求解。从 x 0 x_0 x0开始,算 x 1 = f ( x 0 ) x_1=f(x_0) x1=f(x0) x 2 = f ( x 1 ) x_2=f(x_1) x2=f(x1) x 3 = f ( x 2 ) x_3=f(x_2) x3=f(x2) ……可以证明,当k趋近于无穷时, x k x_k xk趋向于 x ∗ x^* x
在这里插入图片描述

(3)BOE:solution
下面将介绍如何求解贝尔曼最优公式。首先需要证明 f ( v ) f(v) f(v) 是一个contraction mapping(证明过程略)。
在这里插入图片描述
如果 f ( v ) f(v) f(v) 是一个contraction mapping,那么其fixed point就可以用一种迭代式的算法求解出来。现在知道了贝尔曼最优公式BOE是一个contraction mapping,那么BOE就可以用contraction mapping求解出来。具体来说,我们可以求出fixed point v ∗ v^* v,使得 v ∗ = f ( v ∗ ) v^*=f(v^*) v=f(v)
在这里插入图片描述
把求解出的 v ∗ v^* v 代入到贝尔曼最优公式中,可以得到下图中的第1个式子。假设 π ∗ \pi^* π v ∗ v^* v 对应的最优策略(下图中的第2个式子),那么就可以把下图第1个式子中的 m a x max max 给去掉了,得到下图中的第3个式子。
在这里插入图片描述
那么,我们所求出的这个 v ∗ v^* v 和 $ π ∗ \pi^* π ,是最优的state value和最优的策略吗?经证明是的。具体证明过程可以看赵老师的书。

四、最优策略的有趣性质

哪些因素影响了最优策略?从下图BOE公式中可以看出,转移概率p、奖励r、折扣因子 γ \gamma γ,均对最优策略有影响。下面,我们将改变奖励r、折扣因子 γ \gamma γ,看看它们的变化对最优策略有什么影响。
在这里插入图片描述
下图是一个grid world的例子。下图(左)展示了最优策略,可以发现,最优策略冒险经过forbidden area到达最后的target area。这是因为,它认为长远来看,冒险经过forbidden area带来的奖励,比绕一大圈到达target area带来的奖励要更高。
在这里插入图片描述
但是,把 γ \gamma γ从0.9改到0.5之后,最优策略发生了改变。它不再倾向于冒险进入forbidden area了,而是选择绕一大圈,到达target area。这是因为 γ \gamma γ,整体策略变得更加短视,不再注重长远利益了。
在这里插入图片描述
γ \gamma γ降为0之后,策略又发生了改变。此时策略变得极为短视,仅仅根据即时奖励做出动作(action)决策。
在这里插入图片描述
把forbidden area的punishment加重之后,发现策略仍然倾向于绕着forbidden area走。
在这里插入图片描述
下面这个例子是对奖励r做出改变。把所有的奖励r变成ar+b,最优策略会改变吗?(下图中的取值是a=1,b=1)。答案是不会改变。因为影响策略的是不同奖励之间的相对差异,而不是奖励的绝对差异。
在这里插入图片描述
下面这个例子讨论的是,图(a)的策略要好于图(b)的策略。图(b)的策略仅仅比图(a)的策略多绕了几个格子,在寻找最优策略时,是如何规避这种无意义的绕路(meaningless detour)的呢?

答案是用discount rate γ \gamma γ 来控制。假设有两条路径a、b,它们的起点、终点相同,但是路径b比路径a多兜了几圈。那么在计算return时,因为 γ \gamma γ 的存在,路径b比路径a的return更小,因此b的动作价值函数(action value)更低,这个动作就不倾向于被选择为最优策略。

很多初学者认为,在设计奖励的时候,应该每走一步给一个惩罚(例如在下图中,从一个白色格子跳到另一个白色格子,给予其一个惩罚r=-1),使得程序不要在白色格子里反复横跳,能找一个最短路径跳到target area。但这种做法是不必要的,因为discount rate γ \gamma γ 本身的性质就能够自然地找到一个到达target area的最短路径。
在这里插入图片描述

五、本节课summary

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

24小时自动监控,自动录制直播蓝光视频!支持抖音等热门直播软件

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 工具特点📒📝 使用🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 对于许多直播爱好者和内容创作者而言,错过心爱的直播或难以搜集视频素材始终是一个难题。今天,给大家分享的这款工具可以轻松解决这个问题,它拥有…

【LSTM实战】跨越千年,赋诗成文:用LSTM重现唐诗的韵律与情感

本文将介绍如何使用LSTM训练一个能够创作诗歌的模型。为了训练出效果优秀的模型,我整理了来自网络的4万首诗歌数据集。我们的模型可以直接使用预先训练好的参数,这意味着您无需从头开始训练,即可在自己的电脑上体验AI作诗的乐趣。我已经为您准…

【Swift】运算符

文章目录 术语赋值运算符算数运算符基本四则算术运算符求余运算符一元负号运算符一元正号运算符 比较运算符三元运算符空合运算符区间运算符闭区间运算符半开区间运算符单侧区间运算符 逻辑运算符逻辑非运算符逻辑与运算符逻辑或运算符逻辑运算符组合计算 位运算符运算符优先级…

微信小程序技术架构图

一、视图层1.WXML&#xff08;WeiXin Markup Language&#xff09; 这是微信小程序的标记语言&#xff0c;类似于 HTML。它用于构建小程序的页面结构。例如&#xff0c;通过标签来定义各种视图元素&#xff0c;如<view>&#xff08;类似于 HTML 中的<div>&#xff…

【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦

Dual Pixel 简介 双像素是成像系统的感光元器件中单帧同时生成的图像&#xff1a;通过双像素可以实现&#xff1a;深度估计、图像去模糊去雨去雾恢复、图像重建 成像原理来源如上&#xff0c;也有遮罩等方式的pd生成&#xff0c;如图双像素视图可以看到光圈的不同一半&#x…

#Verilog HDL# Verilog中的UDP原语

目录 一 UDP符号 1.1 组合UDP 1.2 时序UDP 1.2.1 电平UDP 1.2.2 边沿UDP 标准的Verilog原语,如nand和not,有时可能不足以或不便用于表示复杂逻辑。为了建模组合逻辑或时序逻辑,可以定义称为用户定义原语(UDP)的新原语元素。 所有UDP都有且仅有一个输出,该输出可以是…

Python 版本的 2024详细代码

2048游戏的Python实现 概述&#xff1a; 2048是一款流行的单人益智游戏&#xff0c;玩家通过滑动数字瓷砖来合并相同的数字&#xff0c;目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能&#xff0c;包括游戏逻辑、界面绘制和用户交互。 主…

socket连接封装

效果&#xff1a; class websocketMessage {constructor(params) {this.params params; // 传入的参数this.socket null;this.lockReconnect false; // 重连的锁this.socketTimer null; // 心跳this.lockTimer null; // 重连this.timeout 3000; // 发送消息this.callbac…

docker compose的安装和使用

1. Docker Compose 简介 Docker Compose 是一个工具&#xff0c;用于定义和运行多容器的 Docker 应用。通过编写一个 docker-compose.yml 文件&#xff0c;可以一次性启动所有容器&#xff0c;并且方便管理容器之间的依赖。 2. 安装 Docker Compose 前提条件 确保已安装 Do…

银河麒麟v10 x86架构二进制方式kubeadm+docker+cri-docker搭建k8s集群(证书有效期100年) —— 筑梦之路

环境说明 master&#xff1a;192.168.100.100 node: 192.168.100.101 kubeadm 1.31.2 &#xff08;自编译二进制文件&#xff0c;证书有效期100年&#xff09; 银河麒麟v10 sp2 x86架构 内核版本&#xff1a;5.4.x 编译安装 cgroup v2启用 docker版本&#xff1a;27.x …

大语言模型---RewardBench 介绍;RewardBench 的主要功能;适用场景

文章目录 1. RewardBench 介绍2. RewardBench 的主要功能3. 适用场景 1. RewardBench 介绍 RewardBench: Evaluating Reward Models是一个专门用于评估 Reward Models&#xff08;奖励模型&#xff09; 的公开平台&#xff0c;旨在衡量模型在多种任务上的性能&#xff0c;包括…

基于Redis实现的手机短信登入功能

目录 开发准备 注册阿里短信服务 依赖坐标 阿里短信 依赖 mybatis-plus 依赖 redis 依赖 配置文件 导入数据库表 短信发送工具类 生成随机验证码的工具类 校验合法手机号的工具类 ThreadLocal 线程工具类 消息工具类 基于 session 的短信登录的问题 开发教程 Redis 结构设计 …

Java语言程序设计 选填题知识点总结

第一章 javac.exe是JDK提供的编译器public static void main (String args[])是Java应用程序主类中正确的main方法Java源文件是由若干个书写形式互相独立的类组成的Java语言的名字是印度尼西亚一个盛产咖啡的岛名Java源文件中可以有一个或多个类Java源文件的扩展名是.java如果…

免费好用的静态网页托管平台全面对比介绍

5个免费好用的静态网页托管平台全面对比 前言 作为一名前端开发者&#xff0c;经常会遇到需要部署静态网页的场景。无论是个人项目展示、简单的游戏demo还是作品集网站&#xff0c;选择一个合适的托管平台都很重要。本文将详细介绍5个免费的静态网页托管平台&#xff0c;帮助…

python正则表达式基本字符字符

字符 描述 text 匹配text字符串 . 匹配除换行符之外的任意一个单个字符 ^ 匹配一个字符串的开头 $ 匹配一个字符串的末尾 在正则表达式中,我们还可用匹配限定符来约束匹配的次数 2. 匹配限定符 最大匹配 最小匹配 描述 * *? 重复匹配前表达式零次或多次 &a…

k8s篇之控制器类型以及各自的适用场景

1. k8s中控制器介绍 在 Kubernetes 中,控制器(Controller)是集群中用于管理资源的关键组件。 它们的核心作用是确保集群中的资源状态符合用户的期望,并在需要时自动进行调整。 Kubernetes 提供了多种不同类型的控制器,每种控制器都有其独特的功能和应用场景。 2. 常见的…

python程序的编写以及发布(形象类比)

最近重新接触python&#xff0c;本人之前对于python的虚拟环境&#xff0c;安装包比较比较迷惑&#xff0c;这里给出一个具象的理解。可以将 Python 程序运行的过程类比成一次 做菜的过程&#xff0c;从准备食材到最后出锅。以下是具体的类比步骤&#xff1a; 1. 安装 Python 环…

shell基础知识3 --- 流程控制之条件判断

条件判断语句是一种最简单的流程控制语句。该语句使得程序根据不同的条件来执行不同的程序分支。 一、if语句语法 1.单分支结构 法1&#xff1a; 法2&#xff1a; if <条件表达式> if…

功耗中蓝牙扫描事件插桩埋点

手机功耗中蓝牙扫描事件插桩埋点 功耗主要监控蓝牙扫描的时间和次数&#xff0c;进而换算为频次监控。其中不同的蓝牙扫描模式带来的功耗影响也是不一样的。 即功耗影响度低延迟扫描>平衡模式扫描>低功耗模式。例如某款机型分别为&#xff1a;低延迟扫描 14.64mA,平衡模…

电容测试流程

一、外观检测 1. 目的&#xff1a;检验电容样品外观是否与规格书一致&#xff0c;制程工艺是否良好&#xff0c;确保部品的品质。 2. 仪器&#xff1a;放大镜 3. 测试说明&#xff1a; &#xff08;1&#xff09;样品上丝印与规格书中相符&#xff0c;丝印信息&#xff08;…