首页 > 其他分享 >强化学习的数学原理-02贝尔曼公式

强化学习的数学原理-02贝尔曼公式

时间:2024-10-22 09:47:52浏览次数:6  
标签:02 bm mid value state 数学原理 贝尔曼 pi gamma

目录

Motivating examples

一个核心概念:state value

一个基本的工具:Bellman equation

为什么return是重要的?

return可以用来评估policy

下面计算3个例子

1729524040544.png

计算return的方法:

1729524140848.png

第一种方法:(by definition|通过定义)

用\(v_i\)表示从\(s_i\)开始得到的return

\[\begin{align*} v_1 &= r_1 + \gamma r_2 + \gamma^2 r_3 + ... \\ v_2 &= r_2 + \gamma r_3 + \gamma^2 r_4 + ... \\ v_3 &= r_3 + \gamma r_4 + \gamma^2 r_1 + ... \\ v_4 &= r_4 + \gamma r_1 + \gamma^2 r_2 + ... \\ \end{align*} \]

第二种方法:

\[\begin{align*} v_1 &= r_1 + \gamma r_2 + \gamma^2 r_3 + ... \\ &= r_1 + \gamma(r_2 + \gamma r_3 + ...) \\ &= r_1 + \gamma v_2 \end{align*} \]

其他式子依次类推

上面的式子从直观上讲,就是从\(s_1\)跳到\(s_2\)

然后可以发现return之间彼此依赖,一个return会依赖于其他return,这种想法是Bootstrapping

上面的式子是有循环依赖的,如何解决上面的式子.

先把上面的式子写成矩阵形式

1729524930165.png

然后再把上面的式子写成一个更简化的形式就是:

\[\begin{align*} \bm{v} &= \bm{r} + \gamma \bm{P} \bm{v} \\ \bm{v}(\bm{I} - \gamma \bm{P}) &= \bm{r} \\ \bm{v} &= \bm{r}{(\bm{I} - \gamma \bm{P})}^{-1} \\ \end{align*} \]

于是就求出了v

\[\bm{v} = \bm{r} + \gamma \bm{P} \bm{v} \]

这个就是贝尔曼公式,只不过是对于确定问题的.

state value

\[S_t \xrightarrow{A_t} R_{t+1}, S_{t+1} \]

  • \(t,t+1\):指的是具体的时刻
  • \(S_t\):指的是t时刻的状态
  • \(A_t\):在t时刻采取的action
  • \(R_{t+1}\):在采取\(A_t\)后得到的reward
  • \(S_{t+1}\):在采取\(A_t\)转移到的状态

上面的\(R_{t+1}\)也可以写成\(R_t\),但一般写成\(R_{t+1}\),理解其含义即可.

注意上面的\(S_{t+1},A_t,R_{t+1}\)都是大写,这表示这些变量都是随机变量(random varibles),我们可以对这些随机变量做一些操作如:期望(Expection)

所有这些跳跃都是由\(probability distributions\)

  • \(S_t \rightarrow A_t\)是由\(\pi(A_t=a|S_t=s)\)
  • \(S_t,A_t \rightarrow R_{t+1}\)是由\(p(R_{t+1}=r|S_t=s,A_t=a)\)
  • \(S_t,A_t \rightarrow S_{t+1}\)是由\(p(S_{t+1}=s^{'}|S_t=s,A_t=a)\)

把上面单步的操作推广就可以得到多步的操作(multi-step trajectory)

\[S_t \xrightarrow{A_t} R_{t+1}, S_{t+1} \xrightarrow{A_{t+1}} R_{t+2}, S_{t+2} \xrightarrow{A_{t+2}} R_{t+3}, ... \]

上面的trajectory可以求discounted return

\[G_t = R_{t+1} + \gamma R_{t+2} + \gamma^{2} R_{t+3} + ... \]

  • $ \gamma \in [0,1)$ 是一个折扣率
  • \(G_t是一个随机变量,因为R_{t},R_{t+1}\)是随机变量

在有了上面的铺垫之后就可定义\(state \quad value\)了

\[v_{\pi}(s) = \mathbb{E}[ G_t \mid S_t=s] \]

state value实际上就是对\(G_t\)求期望,state value全称是叫state value function

  • 对于state value,他是s的函数
  • state value是策略的函数,可以这样写\(v(s,\pi)和v_{\pi}(s)\)是等价的,为了简单起见用后面的形式

return和state value的区别,return是针对单个tragectory而言的,而state是针对多个trajectory而言的,如果从一个状态出发可以得到多个trajectory那么return和state value是有区别的,如果从一个状态出发得到的trajectory是确定的,那么return和state value是没有区别的.

1729527756356.png

Bellman equation

上面说了\(state \quad value\)的定义,下面就是要说明如何计算\(state \quad value\),计算\(state value\)的工具就是贝尔曼公式

用一句话描述贝尔曼公式的话就是它描述了不同状态的\(state \quad value\)之间的关系

首先考虑一个trajectory

\[S_t \xrightarrow{A_t} R_{t+1}, S_{t+1} \xrightarrow{A_{t+1}} R_{t+2}, S_{t+2} \xrightarrow{A_{t+2}} R_{t+3}, ... \]

然后可以计算\(G_t\)

\[\begin{align*} G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^{2} R_{t+3} + ... \\ &= R_{t+1} + \gamma G_{t+1} \end{align*} \]

下面是state value的定义

\[\begin{align*} v_{\pi}(s) &= \mathbb{E}[ G_t \mid S_t=s] \\ &= \mathbb{E}[R_{t+1} + \gamma G{t+1} \mid S_t = s] \\ &= \mathbb{E}[R_{t+1} \mid S_t = s] + \gamma \mathbb{E}[G_{t+1} \mid S_t = s] \end{align*} \]

下面就是分别分析这两部分,计算出这两部分的形式,于是就能得到贝尔曼公式.

首先分析计算第一部分:

\[\begin{align*} \mathbb{E}[R_{t+1} \mid S_t = s] &= \sum_a \pi(a \mid s) \mathbb{E}[R_{t+1} \mid S_t = s, A_t = a] \\ &= \sum_a \pi(a \mid s) \sum_r p(r \mid s ,a) r \end{align*} \]

第一部分就是能得到的immediate reward的期望(expectation)

然后分析计算第二项

\[\begin{align*} \mathbb{E}[G_t+1 \mid S_t = s] &= \sum_{s^{'}} \mathbb{E}[G_{t+1} \mid S_t = s, S_{t+1} = s^{'}] p(s^{'} \mid s) \\ &= \sum_{s^{'}} \mathbb{E}[G_{t+1} \mid S_{t+1} = s^{'}] p(s^{'} \mid s) \\ &= \sum_{s^{'}} v_{\pi}(s^{'})p(s^{'} \mid s) \\ &= \sum_{s^{'}} v_{\pi} \sum_a p(s^{'} \mid s, a) \pi(s \mid a) \end{align*} \]

第二项是future rewards的期望(expectation)
$ \mathbb{E}[G_{t+1} \mid S_t = s, S_{t+1} = s^{'}] = \mathbb{E}[G_{t+1} \mid S_{t+1} = s^{'}] $是因为马尔可夫无记忆性(memoryless markov property)

于是就可以给出贝尔曼公式的定义:

\[\begin{align*} v_{\pi}(s) &= \mathbb{E}[R_{t+1} \mid S_t = s] + \gamma \mathbb{E}[G_{t+1} \mid S_t = s] \\ &= \sum_a \pi(s \mid a) \sum_r p(r | s, a)r + \gamma \sum_a \pi(a \mid s) \sum_{s^{'}}p(s^{'} \mid s, a) v_{\pi}(s^{'}) \\ &= \sum_a \pi(a \mid s) \left[ \sum_r p(r | s, a)r + \gamma \sum_{s^{'}}p(s^{'} \mid s, a) v_{\pi}(s^{'}) \right] , \forall s \in S \end{align*}\]

上面公式中的一些重要的点

  • 上面的公式就是贝尔曼公式,它实际上描述了不同状态的state value之间的关系
  • 上面的式子实际上包含两项,一个是immediate reward term,另一部分是future reward term
  • 另外上面的式子注意最后的部分,并非是一个式子,而是对于状态空间中所有的状态都成立的 \(\forall s \in S\)
  • state value \(v_{\pi}(s), v_{\pi}(s^{'})都是需要进行计算的,可以通过Bootstrapping来计算\)
  • \(\pi (a \mid s)\)这个就是policy,这是被给出的,所以贝尔曼公式是依赖于policy的,把这个state value计算出来实际上这件事情叫做policy evaluation
  • \(p(s^{'} \mid s, a), p(r, \mid s, a)\)叫dynamic model或者叫environment model.然后会根据是否知道这个dynamic model分为两种算法,不知道model的算法就是model free reinforcement learning算法

Matrix-vector form

当我们已经有了一个贝尔曼公式之后,后面的就是需要考虑如何求解这个bellman equation

Action value

summary

标签:02,bm,mid,value,state,数学原理,贝尔曼,pi,gamma
From: https://www.cnblogs.com/cxy8/p/18475682

相关文章

  • 2024常用 gui [转] Java Python C++ C# JavaScript Go Dart Swift
    下面就介绍一下热门编程语言对应的gui框架。JavaSwing:Java的基础GUI工具包,虽然年代较久,但仍然被广泛使用。JavaFX:现代的JavaGUI工具包,用于替代Swing,提供了更丰富的界面设计和动画效果支持。ApachePivot:一个开源的富互联网应用(RIA)框架,使用Java和XML来构建桌面和Web应用程序的......
  • test20241018
    B-tp/CF1684FDiverseSegments给定长度为\(n\)的序列\(a\),以及\(m\)个数对\((l_i,r_i)\)。你可以进行下列操作至多一次:选择序列\(a\)的一个子段,并将其中的每个元素的值都改成任意整数。你需要保证执行完操作之后,对于每个整数\(i(1\leqi\leqm)\),都有\(a[l_i,......
  • 【题解】Solution Set - NOIP2024集训Day58 字符串
    【题解】SolutionSet-NOIP2024集训Day58字符串https://www.becoder.com.cn/contest/5658「CF1466G」SongoftheSirens考虑对于\(s_i\),算钦定必须覆盖到\(t_i\)的匹配个数\(f_i\)。注意到\(s\)每次长度都会\(\times~2\)左右,其长度在\(O(\log|w|)\)的时候就......
  • 2024 BUPT Programming Contest F
    简要题意给定一个\(n\timesn\)矩阵,矩阵中的每一个元素的计算方式如下:随机从\([0,n-1]\)中选出两个整数(可以重复)\(a,b\),矩阵的元素为\(a\timesb\bmodn\)求矩阵中元素\(m\)出现次数的期望。\(0\lem<n\le10^{12}\)题解对于矩阵中的任意一个元素是独......
  • CF2023 - D. Many Games
    先让\(p\)除以\(100\),相当于给你两个数组\(p,w\),然后要选择下标集合\(S\),使得:\(p\)的积乘上\(w\)的和最大化。注意到\(p_i\)是整数,并且\(1\lep_i\le100\)。那么容易想按照\(p_i\)分类。然后\(w_i\)对于固定\(p\)一定是选择排序后的最大值后缀。目前\((......
  • zlibrary网站镜像,2024年国内可访问地址持续更新
    Z-Library是一家广受欢迎的电子图书馆,拥有庞大的电子书资源,被誉为全球最大的免费电子书网站之一。其数字档案库涵盖了超过千万本书籍,包括各种学科领域的经典名著、学术著作、小说等,用户可以在此免费下载所需的电子书。该图书馆的功能十分强大,拥有一个像Google一样的搜索框,用户只......
  • Photoshop PS 免费安装使用2024 最新使用
    传送门:https://pan.quark.cn/s/3166efc40518ps:下载后解压就可使用在前端开发的过程中,设计师没有空的时候,或者独自在加班的时候,图像处理是一个不可避免的任务。无论是切图、调整图片尺寸,还是简单的修饰,掌握一款强大的图像编辑工具都是非常重要的。作为一名前端工程师。体积小,不......
  • Z-Library官方入口国内可用网址(2024更新中)
    zlibrary数字图书馆介绍Z-library被称为全球最大的数字图书馆,里面包含9,826,996本电子书,84,837,646篇期刊文章。从各种知名文学著作,理工学科,人文艺术、到学术论文等应有尽有!支持PDF、epub、mobi等多种格式图书资源下载绝对是你找书的不二选择。zlibrary数字图书馆镜像网......
  • 2024/10/21 日 日志 --》关于Mysql中的数据库连接池 简述笔记整理
    为了保证博客内容的连贯性,我决定把Maven内容单独开辟而不与JDBC相混。以下为数据库连接池的简单描述和笔记整理点击查看代码--数据库连接池--简介:--·数据库连接池是个容器,负责分配、管理数据库连接。--·它允许应用程序重复使用一个现有的数据库连接,而不是再重新建......
  • 程序员修炼之道读后感02
    1.该书第二章开讲述的是重复的危害,重复分为好多种,但每种重复的出现都是没必要的,重复的出现使得代码的运行效率大打折扣,并且占据了很多无意义的空间。要想解决重复的问题,关键要学会复用,要充分提高代码的利用效率,要做到复用一个代码要比自己新敲一段代码容易,这样就能养成遇到问题现......