贝尔曼方程【Bellman Equation】

强化学习笔记

主要基于b站西湖大学赵世钰老师的【强化学习的数学原理】课程,个人觉得赵老师的课件深入浅出,很适合入门.

第一章 强化学习基本概念
第二章 贝尔曼方程


文章目录

  • 强化学习笔记
  • 一、状态值函数贝尔曼方程
  • 二、贝尔曼方程的向量形式
  • 三、动作值函数
  • 参考资料


第一章我们介绍了强化学习的基本概念,本章介绍强化学习中一个重要的概念——贝尔曼方程.

一、状态值函数贝尔曼方程

贝尔曼方程(Bellman Equation),也称为贝尔曼期望方程,用于计算给定策略 π \pi π时价值函数在策略指引下所采轨迹上的期望。考虑如下一个随机轨迹:

S t → A t R t + 1 , S t + 1 → A t + 1 R t + 2 , S t + 2 → A t + 2 R t + 3 , … \begin{aligned} &&&&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},\ldots \\ \end{aligned} StAt Rt+1,St+1At+1 Rt+2,St+2At+2 Rt+3,
那么累积回报 G t G_t Gt可以写成如下形式:
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + … , = R t + 1 + γ ( R t + 2 + γ R t + 3 + … ) , = R t + 1 + γ G t + 1 . \begin{aligned} G_t &=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}+\ldots, \\ &=R_{t+1}+\gamma(R_{t+2}+\gamma R_{t+3}+\ldots), \\ &=R_{t+1}+\gamma G_{t+1}. \end{aligned} Gt=Rt+1+γRt+2+γ2Rt+3+,=Rt+1+γ(Rt+2+γRt+3+),=Rt+1+γGt+1.
状态值函数的贝尔曼方程为:

v π ( s ) ≐ E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ G t + 1 ∣ S t = s ] = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] , ∀ s ∈ S . \begin{aligned} v_{\pi}(s)& \doteq\mathbb{E}_{\pi}[G_{t}\mid S_{t}=s] \\ &=\mathbb{E}_{\pi}[R_{t+1}+\gamma G_{t+1}\mid S_{t}=s] \\ &=\sum_a\pi(a|s)\sum_{s',r}p(s',r|s,a)\Big[r+\gamma v_\pi(s')\Big],\quad\forall s\in\mathcal{S}. \end{aligned} vπ(s)Eπ[GtSt=s]=Eπ[Rt+1+γGt+1St=s]=aπ(as)s,rp(s,rs,a)[r+γvπ(s)],sS.

  • 由值函数的定义出发,得到了一个关于 v v v的递推关系

下面再来详细的推导一下贝尔曼方程,由回报的定义,可以将 G t G_t Gt拆成两部分:
v π ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 ∣ S t = s ] + γ E [ G t + 1 ∣ S t = s ] . \begin{aligned} v_{\pi}\left(s\right)& =\mathbb{E}[G_{t}|S_{t}=s] \\ &=\mathbb{E}[R_{t+1}+\gamma G_{t+1}|S_{t}=s] \\ &=\mathbb{E}[R_{t+1}|S_{t}=s]+\gamma\mathbb{E}[G_{t+1}|S_{t}=s]. \end{aligned} vπ(s)=E[GtSt=s]=E[Rt+1+γGt+1St=s]=E[Rt+1St=s]+γE[Gt+1St=s].
首先考虑第一部分 E [ R t + 1 ∣ S t = s ] \mathbb{E}[R_{t+1}|S_t=s] E[Rt+1St=s],全概率公式的应用:

E [ R t + 1 ∣ S t = s ] = ∑ a π ( a ∣ s ) E [ R t + 1 ∣ S t = s , A t = a ] = ∑ a π ( a ∣ s ) ∑ r p ( r ∣ s , a ) r . \begin{aligned}\mathbb{E}[R_{t+1}|S_t=s]&=\sum_a\pi(a|s)\mathbb{E}[R_{t+1}|S_t=s,A_t=a]\\&=\sum_a\pi(a|s)\sum_rp(r|s,a)r. \end{aligned} E[Rt+1St=s]=aπ(as)E[Rt+1St=s,At=a]=aπ(as)rp(rs,a)r.
再来考虑第二部分 E [ G t + 1 ∣ S t = s ] \mathbb{E}[G_{t+1}|S_t=s] E[Gt+1St=s],第二个等式用到马尔可夫性质和全概率公式:

E [ G t + 1 ∣ S t = s ] = ∑ s ′ E [ G t + 1 ∣ S t = s , S t + 1 = s ′ ] p ( s ′ ∣ s ) = ∑ s ′ E [ G t + 1 ∣ S t + 1 = s ′ ] p ( s ′ ∣ s ) = ∑ s ′ v π ( s ′ ) p ( s ′ ∣ s ) = ∑ v π ( s ′ ) ∑ p ( s ′ ∣ s , a ) π ( a ∣ s ) . \begin{aligned} \mathbb{E}\left[G_{t+1}|S_{t}=s\right]& =\sum_{s^{\prime}}\mathbb{E}[G_{t+1}|S_{t}=s,S_{t+1}=s^{\prime}]p(s^{\prime}|s) \\ &=\sum_{s'}\mathbb{E}[G_{t+1}|S_{t+1}=s']p(s'|s) \\ &=\sum_{s^{\prime}}v_{\pi}(s^{\prime})p(s^{\prime}|s) \\ &=\sum v_{\pi}(s^{\prime})\sum p(s^{\prime}|s,a)\pi(a|s). \end{aligned} E[Gt+1St=s]=sE[Gt+1St=s,St+1=s]p(ss)=sE[Gt+1St+1=s]p(ss)=svπ(s)p(ss)=vπ(s)p(ss,a)π(as).
以上两部分合起来:
v π ( s ) = E [ R t + 1 ∣ S t = s ] + γ E [ G t + 1 ∣ S t = s ] , = ∑ a π ( a ∣ s ) ∑ r p ( r ∣ s , a ) r ⏟ mean of immediate rewards + γ ∑ a π ( a ∣ s ) ∑ s ′ p ( s ′ ∣ s , a ) v π ( s ′ ) , ⏟ mean of future rewards = ∑ a π ( a ∣ s ) [ ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π ( s ′ ) ] , ∀ s ∈ S = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] , ∀ s ∈ S . \begin{aligned} v_{\pi}\left(s\right)& =\mathbb{E}[R_{t+1}|S_{t}=s]+\gamma\mathbb{E}[G_{t+1}|S_{t}=s], \\ &\begin{aligned}=\underbrace{\sum_a\pi(a|s)\sum_rp(r|s,a)r}_{\text{mean of immediate rewards}}+\underbrace{\gamma\sum_a\pi(a|s)\sum_{s'}p(s'|s,a)v_\pi(s'),}_{\text{mean of future rewards}}\end{aligned} \\ &=\sum_a\pi(a|s)\left[\sum_rp(r|s,a)r+\gamma\sum_{s^{\prime}}p(s^{\prime}|s,a)v_\pi(s^{\prime})\right],\forall s\in\mathcal{S}\\ &=\sum_a\pi(a|s)\sum_{s',r}p(s',r|s,a)\Big[r+\gamma v_\pi(s')\Big],\quad \forall s\in\mathcal{S}. \end{aligned} vπ(s)=E[Rt+1St=s]+γE[Gt+1St=s],=mean of immediate rewards aπ(as)rp(rs,a)r+mean of future rewards γaπ(as)sp(ss,a)vπ(s),=aπ(as)[rp(rs,a)r+γsp(ss,a)vπ(s)],sS=aπ(as)s,rp(s,rs,a)[r+γvπ(s)],sS.

Note:

  • 贝尔曼公式给出了值函数的一个递推关系式
  • 当前状态的值函数,可以由下一状态的值函数完全确定

下面的树状图形象的刻画了贝尔曼方程中几个求和符合,各变量之间的关系:

截屏2024-03-17 12.29.55

实例:
仍然是agent-网格问题,绿色箭头表示当前策略:
截屏2024-03-19 14.56.47

截屏2024-03-19 14.57.14

二、贝尔曼方程的向量形式

我们将贝尔曼公式拆成两项之和的形式:
v π ( s ) = r π ( s ) + γ ∑ s ′ p π ( s ′ ∣ s ) v π ( s ′ ) , v_\pi(s)=r_\pi(s)+\gamma\sum_{s^{\prime}}p_\pi(s^{\prime}|s)v_\pi(s^{\prime}), vπ(s)=rπ(s)+γspπ(ss)vπ(s),其中:
r π ( s ) ≜ ∑ a π ( a ∣ s ) ∑ r p ( r ∣ s , a ) r , p π ( s ′ ∣ s ) ≜ ∑ a π ( a ∣ s ) p ( s ′ ∣ s , a ) . \begin{aligned}r_\pi(s)\triangleq\sum_a\pi(a|s)\sum_rp(r|s,a)r,\quad p_\pi(s'|s)\triangleq\sum_a\pi(a|s)p(s'|s,a)\end{aligned}. rπ(s)aπ(as)rp(rs,a)r,pπ(ss)aπ(as)p(ss,a).

假设状态为 s i ( i = 1 , … , n ) s_i(i=1, \ldots, n) si(i=1,,n),对于状态 s i s_i si, Bellman方程为:
v π ( s i ) = r π ( s i ) + γ ∑ s j p π ( s j ∣ s i ) v π ( s j ) ∀ i = 1 , … , n v_\pi\left(s_i\right)=r_\pi\left(s_i\right)+\gamma \sum_{s_j} p_\pi\left(s_j \mid s_i\right) v_\pi\left(s_j\right) \quad\forall i=1,\ldots ,n vπ(si)=rπ(si)+γsjpπ(sjsi)vπ(sj)i=1,,n

把所有状态的方程放在一起重写成矩阵-向量的形式
v π = r π + γ P π v π v_\pi=r_\pi+\gamma P_\pi v_\pi vπ=rπ+γPπvπ
其中

  • v π = [ v π ( s 1 ) , … , v π ( s n ) ] T ∈ R n v_\pi=\left[v_\pi\left(s_1\right), \ldots, v_\pi\left(s_n\right)\right]^T \in \mathbb{R}^n vπ=[vπ(s1),,vπ(sn)]TRn
  • r π = [ r π ( s 1 ) , … , r π ( s n ) ] T ∈ R n r_\pi=\left[r_\pi\left(s_1\right), \ldots, r_\pi\left(s_n\right)\right]^T \in \mathbb{R}^n rπ=[rπ(s1),,rπ(sn)]TRn
  • P π ∈ R n × n P_\pi \in \mathbb{R}^{n \times n} PπRn×n,其中 [ P π ] i j = p π ( s j ∣ s i ) \left[P_\pi\right]_{i j}=p_\pi\left(s_j \mid s_i\right) [Pπ]ij=pπ(sjsi)为状态转移矩阵

实例:

截屏2024-03-19 15.15.54

给定一个策略,算出出相应的状态值被称为策略评估,这是强化学习的一个基本问题。而通过上面的介绍我们知道要得到state value,可以求解贝尔曼方程。由刚刚介绍的贝尔曼方程矩阵形式:
v π = r π + γ P π v π v_\pi=r_\pi+\gamma P_\pi v_\pi vπ=rπ+γPπvπ易得:
v π = ( I − γ P π ) − 1 r π v_\pi=(I-\gamma P_\pi)^{-1}r_\pi vπ=(IγPπ)1rπ
但矩阵的求逆是 O ( n 3 ) O(n^3) O(n3)的复杂度,当矩阵很大时,求解效率很低。所以我们通常不用这个方法来解贝尔曼方程,而是采用迭代法(下一章详细介绍).迭代法格式如下:
v k + 1 = r π + γ P π v k \begin{aligned}v_{k+1}=r_\pi+\gamma P_\pi v_k\end{aligned} vk+1=rπ+γPπvk给定一个初始值 v 0 v_0 v0,可以得到迭代序列 { v 0 , v 1 , v 2 , … } . \{v_0,v_1,v_2,\ldots\}. {v0,v1,v2,}. 并且可以证明

v k → v π = ( I − γ P π ) − 1 r π , k → ∞ v_k\to v_\pi=(I-\gamma P_\pi)^{-1}r_\pi,\quad k\to\infty vkvπ=(IγPπ)1rπ,k
也就是可以用迭代法,通过有限次迭代得到一个近似值.

三、动作值函数

由状态值函数与动作值函数的关系,我们有:
v π ( s ) = ∑ a π ( a ∣ s ) q π ( s , a ) . v_\pi(s)=\sum_a\pi(a|s)q_\pi(s,a). vπ(s)=aπ(as)qπ(s,a).
上小节关于状态值函数的贝尔曼方程为:
v π ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] v_{\pi}(s)=\sum_a\pi(a|s)\sum_{s',r}p(s',r|s,a)\Big[r+\gamma v_\pi(s')\Big] vπ(s)=aπ(as)s,rp(s,rs,a)[r+γvπ(s)]
两式对比我们可以得到动作值函数的贝尔曼方程
q π ( s , a ) = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] q_\pi(s,a)=\sum_{s',r}p(s',r|s,a)\Big[r+\gamma v_\pi(s')\Big] qπ(s,a)=s,rp(s,rs,a)[r+γvπ(s)]
总结一下:

截屏2024-03-17 13.15.54

参考资料

  1. Zhao, S… Mathematical Foundations of Reinforcement Learning. Springer Nature Press and Tsinghua University Press.
  2. Sutton, Richard S., and Andrew G. Barto. Reinforcement learning: An introduction. MIT press, 2018.

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

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

相关文章

Vue3学习记录(七)--- 组合式API之指令和插件

一、内置指令 1、v-memo ​ 该指令是Vue3的v3.2版本之后新增的指令,用于实现组件模板缓存,优化组件更新时的性能。该指令接收一个固定长度的依赖值数组,在组件进行更新渲染时,如果数组中的每个依赖值都与上一次渲染时的值相同&a…

【微服务】Nacos配置管理

📝个人主页:五敷有你 🔥系列专栏:微服务 ⛺️稳中求进,晒太阳 Nacos除了可以做注册中心,同样可以做配置管理来使用。 1.统一配置管理 当微服务部署的实例越来越多,达到数十、数百时&am…

Java:接口

目录 1.接口的概念2.接口的语法规则3.接口使用4.接口的特性5.实现多个接口6.接口中的继承7.抽象类和接口的区别 1.接口的概念 在现实生活中,接口的例子比比皆是,比如:笔记本上的USB口,电源插座等。 电脑的USB口上,可以…

机器学习-可解释性机器学习:支持向量机与fastshap的可视化模型解析

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的监督学习方法,在分类和回归问题中表现出色。其优点之一是生成的模型具有较好的泛化能力和可解释性,能够清晰地展示特征对于分类的重要性。 fastshap是一种用于快速计算SHAP值&#xff08…

做跨境用哪种代理IP比较好?怎么选到干净的IP?

代理IP对于做跨境的小伙伴来说,都是必不可少的工具,目前出海的玩法已经是多种多样,开店、账号注册、短视频运营、直播带货、网站SEO等等都是跨境人需要涉及到的业务。而国外代理IP的获取渠道非常多,那么做跨境到底应该用哪种代理I…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RelativeContainer)

相对布局组件,用于复杂场景中元素对齐的布局。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 规则说明 容器内子组件区分水平方向,垂直方向: 水平方向为left&…

Python二级备考(1)考纲+基础操作

考试大纲如下: 基本要求 考试内容 考试方式 比较希望能直接刷题,因为不懂的比较多可能会看视频。 基础操作刷题: 知乎大头计算机1-13题 import jieba txtinput() lsjieba.lcut(txt) print("{:.1f}".format(len(txt)/len(ls)…

【QT入门】实现一个简单的图片查看软件

声明:该专栏为本人学习Qt知识点时候的笔记汇总,希望能给初学的朋友们一点帮助(加油!) 往期回顾: 【QT入门】qmake和cmake的简单区别-CSDN博客 【QT入门】VS qt和QtCreator项目的相互转换-CSDN博客 【QT入门】Qt架构与三个窗口的区…

【leetcode】628.三个数的最大乘积

前言:剑指offer刷题系列 问题: 给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例: 输入:nums [1,2,3] 输出:6思路1: 先去计算输入列表 nums …

Flask vs. Django:选择适合你的Web开发框架【第134篇—Flask vs. Django】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Flask vs. Django:选择适合你的Web开发框架 在选择一个适合你项目的Web开发框架…

【数据库】数据库基本知识

1.数据库的四个基本概念 1.1 数据:描述事务的符号记录 1.2 数据库:概括的说,数据库数据具有永久存储、有组织的、可共享的大量数据的集合,数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的…

如何使用Net2FTP+cpolar搭建专属文件共享站点并实现无公网IP远程访问——“cpolar内网穿透”

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…

Java的类与对象

前言 Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们…

从单机到分布式微服务,大文件校验上传的通用解决方案

一、先说结论 本文将结合我的工作实战经历,总结和提炼一种从单体架构到分布式微服务都适用的一种文件上传和校验的通用解决方案,形成一个完整的方法论。本文主要解决手段包括多线程、设计模式、分而治之、MapReduce等,虽然文中使用的编程语言…

Spring6--IOC反转控制 / 基于XML管理bean

1. 容器IOC 先理解概念,再进行实际操作。概念比较偏术语化,第一次看可能看不懂,建议多看几遍,再尝试自己独立复述一遍,效果会好些 1.1. IOC容器 1.1.1. 控制反转(IOC) IOC (Inversion of Con…

【一起学Rust | 基础篇】rust线程与并发

文章目录 前言一、创建线程二、mpsc多生产者单消费者模型1.创建一个简单的模型2.分批发送数据3. 使用clone来产生多个生产者 三、共享状态:互斥锁1. 创建一个简单的锁2. 使用互斥锁解决引用问题 前言 并发编程(Concurrent programming)&#…

es 集群核心概念以及实践

节点概念: 节点是一个Elasticsearch的实例 本质上就是一个JAVA进程一台机器上可以运行多个Elasticsearch进程,但是生产环境一般建议一台机器上只运行一个Elasticsearch实例 每一个节点都有名字,通过配置文件配置,或者启动时候 -…

IBM:《CEO生成式 AI行动指南利用生成式 AI推动变革--所需了解的事项和所需采取的行动》

2024年2月IBM分享《CEO生成式 AI行动指南利用生成式 AI推动变革》报告。在该报告中,讨论了成功转型所必不可少的基本领导素质,并展示了如何将这些技能应用于培养 AI 赋能的人才、发展 AI 赋能的业务,以及利用 AI 赋能的数据与技术。 报告提到…

代码随想录算法训练营第十六天|104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

代码随想录算法训练营第十六天|104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数 104.二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数…

QT UI窗口常见操作

MainWidget::MainWidget(QWidget *parent): QWidget(parent), ui(new Ui::MainWidget) {ui->setupUi(this);// 设置主窗口背景颜色QPalette plt;plt.setColor(QPalette::Window,QColor(180,220,130));this->setPalette(plt);// 禁止窗口最大化按钮setWindowFlags(windowF…