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

news/2024/10/22 9:59:55

目录
  • Motivating examples
  • state value
  • Bellman equation
  • Matrix-vector form
  • Action value
  • summary

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

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

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

相关文章

纷享销客CRM“标签管理”助力企业精准营销业绩增长

在数字化驱动的商业世界中,数据管理无疑是企业铸就成功的核心要素。它能够帮助企业精准洞察市场趋势,深度了解客户需求,进而优化业务流程,并在激烈的市场竞争中崭露头角。然而,在实际的业务场景中,还尚存这些问题: • 面对海量数据,企业如何避免信息过载,实现有效分类…

PbootCMS出现database disk image is malformed的解决办法

database disk image is malformed 错误通常是由于 SQLite 数据库文件损坏引起的。这种问题可能发生在写入数据库时突然中断操作,比如服务器突然重启或网络中断等情况。以下是一些解决方法,包括删除栏目模型重建和修复 SQLite 数据库。 解决方法 1. 删除栏目模型,重建备份数…

PbootCMS填写授权码的地方不见了怎么办

当你在填写授权码时,同时填写了“授权码手机”这一栏,系统会认为你填写了“万能授权码”,从而隐藏了授权码输入框。如果你没有万能授权码,就不应该填写“授权码手机”这一栏。 解决步骤 1. 清除授权码和授权码手机登录后台:打开浏览器,输入你的PbootCMS后台地址,登录后台…

二、Linux 包管理器与软件安装

前言在上一章我们简单了解了Linux的基本概念,基本思想,以及一些简单的文件操作,相信你现在已经可以打开linux并进行一些基本操作。当然,这些操作对于我们操作一个电脑来说过于简陋了,这和在windows下拿鼠标到处点点点一样,什么都干不了。本章来继续扩展linux的相关操作,…

PbootCMS系统管理员点击文章评论的状态按钮提示权限不足

1. 开启后台菜单登录后台:打开浏览器,输入你的PbootCMS后台地址,登录后台管理系统。进入系统设置:在后台管理界面,进入“系统设置” -> “菜单管理”。开启后台菜单:如果你还没有开启后台菜单,可以参考这篇教程:如何开启PbootCMS后台菜单。2. 修改会员中心的文章评论…

PbootCMS备案号怎么加网站链接

站备案成功后需要在网站底部添加备案号,并且备案号需要链接到备案查询页面。以下是具体的操作步骤: 操作步骤 1. 后台填写备案号登录后台:打开浏览器,输入你的PbootCMS后台地址,登录后台管理系统。填写备案号:在后台管理界面,进入“系统设置” -> “站点设置”。 找到…

PbootCMS缓存如何清理runtime文件夹下经常满怎么办?清理缓存的方法

方式一:通过后台清理缓存登录后台:打开浏览器,输入你的PbootCMS后台地址,登录后台管理系统。清理缓存:登录后,在右上角找到“清理缓存”按钮,点击即可自动清理所有缓存文件。方式二:通过FTP或服务器直接删除runtime文件夹下的所有文件连接FTP服务器:使用FTP客户端(如…

PbootCMS中常见的错误提示及其解决方案

PbootCMS 是一个功能强大的内容管理系统,但在使用过程中可能会遇到各种错误提示。以下是一些常见的 PbootCMS 错误提示及其可能的解决方案: 常见错误提示及解决方案 1. 数据库连接错误 错误提示: 数据库连接失败解决方案:检查数据库配置文件(通常位于 /config/database.ph…