当前位置: 首页 > java >正文

【强化学习系列】贝尔曼最优方程

接上一篇文章贝尔曼方程

定义

如果一个策略在所有状态下的状态价值都不低于其他任意策略在相同状态下的状态价值,即:对于所有的 s ∈ S s\in\mathcal{S} sS v π ( s ) ≥ v π ′ ( s ) v_{\pi}(s)\geq v_{\pi^{'}}(s) vπ(s)vπ(s),那么这个策略 π \pi π就是最优策略,最优策略可能不止一个,但统一记为 π ∗ \pi^{*} π
定义最优价值函数
v ∗ ( s ) ≜ max ⁡ π v π ( s ) v_*(s)\triangleq \max_\pi v_\pi(s) v(s)πmaxvπ(s)
q ∗ ( s , a ) ≜ max ⁡ π q π ( s , a ) q_*(s,a)\triangleq \max_\pi q_\pi(s,a) q(s,a)πmaxqπ(s,a)
而从最优策略的定义中也可以得出:
v π ∗ ( s ) ≜ max ⁡ π v π ( s ) v_{\pi*}(s)\triangleq \max_\pi v_\pi(s) vπ(s)πmaxvπ(s)
q π ∗ ( s , a ) ≜ max ⁡ π q π ( s , a ) q_{\pi*}(s,a)\triangleq \max_\pi q_\pi(s,a) qπ(s,a)πmaxqπ(s,a)
所以有:
v π ∗ ( s ) = v ∗ ( s ) = max ⁡ π v π ( s ) v_{\pi*}(s)=v_*(s)=\max_\pi v_\pi(s) vπ(s)=v(s)=πmaxvπ(s)
q ∗ ( s , a ) = q π ∗ ( s , a ) = max ⁡ π q π ( s , a ) q_*(s,a)=q_{\pi*}(s,a)=\max_\pi q_\pi(s,a) q(s,a)=qπ(s,a)=πmaxqπ(s,a)
解释一下 v π ∗ ( s ) 和 v ∗ ( s ) v_{\pi*}(s)和v_*(s) vπ(s)v(s)的区别:
后者是从值函数的大小的角度做出的定义,与策略并没有太大关系,而前者则是在最优策略下的状态价值函数。
上面的结果说明:最优价值函数就是执行最优策略时的价值函数

推导

对于任何一个策略 π \pi π都满足:
v π ( s ) ≤ max ⁡ a q π ( s , a ) v_\pi(s)\leq\max_aq_\pi(s,a) vπ(s)amaxqπ(s,a)
这是因为
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v_\pi(s)=\sum_{a\in\mathcal{A}}\pi(a|s)q_\pi(s,a) vπ(s)=aAπ(as)qπ(s,a)
状态价值函数是各个动作价值函数的加权平均,一定小于等于最大的动作价值。
对于最优策略 π ∗ \pi^* π,为了使状态价值函数达到最大,它在选择动作时一定是以概率1选择使动作价值最大的动作,而其他动作被选择的概率都是0,由于 max ⁡ a q π ( s , a ) = q π ∗ ( s ∣ a ) \max_aq_\pi(s,a)=q_{\pi^*}(s|a) maxaqπ(s,a)=qπ(sa),结合上一个式子可以得到:
v π ∗ ( s ) = max ⁡ a q π ∗ ( s , a ) \begin{equation}v_{\pi^*}(s)=\max_aq_{\pi^*}(s,a)\end{equation} vπ(s)=amaxqπ(s,a)
在上一篇文章中已经推出:
q π ( s , a ) = ∑ s ′ ∈ S ∑ r ∈ R p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] q_\pi(s,a)=\sum_{s'\in S}\sum_{r\in R}p(s',r|s,a)[r+\gamma v_\pi(s')] qπ(s,a)=sSrRp(s,rs,a)[r+γvπ(s)]
它对于最优策略 π ∗ \pi^* π也是成立的,所以有:
q π ∗ ( s , a ) = ∑ s ′ ∈ S ∑ r ∈ R p ( s ′ , r ∣ s , a ) [ r + γ v π ∗ ( s ′ ) ] \begin{equation}q_{\pi^*}(s,a)=\sum_{s'\in S}\sum_{r\in R}p(s',r|s,a)[r+\gamma v_{\pi^*}(s')]\end{equation} qπ(s,a)=sSrRp(s,rs,a)[r+γvπ(s)]
代入到公式(1)中可以得到:
v π ∗ ( s ) = max ⁡ a ∑ s ′ ∈ S ∑ r ∈ R p ( s ′ , r ∣ s , a ) [ r + γ v π ∗ ( s ′ ) ] v_{\pi^*}(s)=\max_a\sum_{s'\in S}\sum_{r\in R}p(s',r|s,a)[r+\gamma v_{\pi^*}(s')] vπ(s)=amaxsSrRp(s,rs,a)[r+γvπ(s)]
上式就是贝尔曼最优方程。对于动作价值函数也可推导出类似的结果:
将公式(1)代入公式(2)中:
q π ∗ ( s , a ) = ∑ s ′ ∈ S ∑ r ∈ R p ( s ′ , r ∣ s , a ) [ r + γ max ⁡ a ′ q π ∗ ( s ′ , a ′ ) ] q_{\pi^*}(s,a)=\sum_{s'\in S}\sum_{r\in R}p(s',r|s,a)[r+\gamma \max_{a'}q_{\pi^*}(s',a')] qπ(s,a)=sSrRp(s,rs,a)[r+γamaxqπ(s,a)]
当然这两个贝尔曼最优方程中 v π ∗ v_{\pi^*} vπ q π ∗ q_{\pi^*} qπ分别用 v ∗ v_* v q ∗ q_* q代替也是成立的,原因见定义。

http://www.xdnf.cn/news/2679.html

相关文章:

  • C语言-函数的嵌套调用,链式访问,函数的声明和函数的定义
  • Python数据结构与算法(5)——动态规划
  • CUDA 编程相关的开源库
  • 【深度学习】评估模型复杂度:GFLOPs与Params详解
  • 人脑、深思考大模型与其他大模型的区别科普
  • Kubernetes》》k8s》》Taint 污点、Toleration容忍度
  • 香橙派打包qt文件报错“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案
  • ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上
  • 【Spark入门】Spark RDD基础:转换与动作操作深度解析
  • vr全景相机如何选择?
  • Android Studio学习记录1
  • Python(15)迭代器和生成器
  • IP SSL证书常见问题:快速实现HTTPS加密
  • 使用Docker安装Harbor
  • MCP 模型上下文协议配置MCP Server开发实践
  • android录音生成wav
  • Spring Boot定时任务
  • 深入浅出JavaScript常见设计模式:从原理到实战(2)
  • 一文读懂Tomcat应用之 CentOS安装部署Tomcat服务
  • rabbitmq-集群部署
  • 当所有人都用上先进ai,如何保持你的优势?
  • 用Postman验证IAM Token的实际操作
  • Error和Exception的区别
  • 第9讲:坐标轴美学深度优化——刻度线、网格线与边框控制
  • mapbox V3 新特性,室内楼层多层同时三维展示(可单层切换),类似蜂鸟视图效果
  • 深度学习任务评估指标
  • 从普查到防控:ArcGIS洪水灾害全流程分析技术实战——十大专题覆盖风险区划/淹没制图/水文分析/洪水分析/淹没分析/项目交流,攻克防洪决策数据瓶颈!
  • QT:自定义ComboBox
  • 自动驾驶领域专业词汇(专业术语)整理
  • leetcode 206. 反转链表