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

基于动态规划的强化学习方法

目录

# 动态规划

# 基于动态规划的强化学习方法

# 求解过程:

## 策略评估

## 策略提升

# 价值迭代算法

# 参考


# 动态规划

动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到目标问题的解。动态规划会保存已解决的子问题的答案,在求解目标问题的过程中,需要这些子问题答案时就可以直接利用,避免重复计算。

# 基于动态规划的强化学习方法

分类:

  1. 策略迭代(policy iteration): 由策略评估(policy evaluation)和策略提升(policy improvement)两部分组成
  2. 价值迭代(value iteration)

# 求解过程:

贝尔曼最优方程:

利用动态规划来求解的话,核心是找到最优值函数;

## 策略评估

求解值函数:

状态值函数的计算公式:

该式中其他变量都是已知量,是一个关于值函数的线性方程组,其未知数的个数为状态的总数,用|S|来表示。

利用动态规划来求解:可以把计算下一个可能状态的价值当成一个子问题,把计算当前状态的价值看作当前问题。在得知子问题的解后,就可以求解当前问题。更一般的,考虑所有的状态,就变成了用上一轮的状态价值函数来计算当前这一轮的状态价值函数。

策略评估伪代码:

## 策略提升

使用策略评估计算得到当前策略的状态价值函数之后,我们可以据此来改进该策略。

得到价值函数$V_pi$后,也就是知道了在策略π \piπ下从每一个状态出发最终得到的期望回报。下一步就是要改进策略pi,来获得在状态下更高的期望回报!

策略提升定理(policy improvement theorem):

如果存在Q π ( s , a ) > V π ( s ) Q^{\pi}(s,a)>V^{\pi}(s)Q ,则说明在状态s下采取动作a会比原来的策略π ( a ∣ s ) \pi(a|s)π(a∣s)得到更高的期望回报。于是我们可以直接贪心地在每一个状态选择动作价值最大的动作,也就是:

已知当前策略的值函数时,在每个状态采用贪婪策略对当前策略进行改进即可。

策略迭代算法:

总体来说,策略迭代算法的过程如下:对当前的策略进行策略评估,得到其状态价值函数,然后根据该状态价值函数进行策略提升以得到一个更好的新策略,接着继续评估新策略、提升策略……直至最后收敛到最优策略:

总结:

1. 策略评估:给定策略,通过数值迭代算法不断计算该策略下每个状态的值函数

2. 策略改进:利用该值函数和贪婪策略得到新的策略。

# 价值迭代算法

策略评估中需要价值函数收敛,值函数的收敛往往需要很多次迭代,这需要很大的计算量,尤其是在状态和动作空间比较大的情况下。但是进行策略改进之前一定要等到策略值函数收敛吗?

如果只在策略评估中进行一轮价值更新,然后直接根据更新后的价值进行策略提升,这样是否可以呢?答案是肯定的,这其实就是价值迭代算法,它可以被认为是一种策略评估只进行了一轮更新的策略迭代算法。

# 参考

1.基于动态规划的强化学习方法_动态规划强化学习-CSDN博客 

2.深入浅出强化学习

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

相关文章:

  • 佰力博科技与您探讨表面电阻的测试方法及应用领域
  • 小刚说C语言刷题—1080质因子
  • Kafka 4.0版本的推出:数据处理新纪元的破晓之光
  • aardio - 虚表 —— vlistEx.listbar2 多层菜单演示
  • CSV注入攻击技术解析
  • vscode不能跳转到同一个工作区的其他文件夹
  • 为什么要在 input() 后加 .strip()?
  • 基于SSM实现的健身房系统功能实现十六
  • springboot配置tomcat端口
  • 掌控随心 - 服务网格的流量管理艺术 (Istio 实例)
  • 一个完整的项目示例:taro开发微信小程序
  • 集合-进阶
  • centos9安装docker 配置docker代理
  • TikTok矩阵运营干货:从0到1打造爆款矩阵
  • OpenAI for Countries:全球AI基础设施的“技术基建革命”
  • 免费 OCR 识别 + 批量处理!PDF 工具 提升办公效率
  • 数据挖掘入门-二手车交易价格预测
  • MySQL 8.0 OCP 1Z0-908 51-60题
  • 《驱动开发硬核特训 · 专题篇》:深入理解 I2C 子系统
  • 力扣第156场双周赛
  • c++ std库中的文件操作学习笔记
  • LS-NET-012-TCP的交互过程详解
  • Java GUI 开发之旅:Swing 组件与布局管理的实战探索
  • 3.5 统计初步
  • 前端工程化:从 Webpack 到 Vite
  • 【线段树】P9349 [JOI 2023 Final] Stone Arranging 2|普及+
  • 树莓5安装 PyCharm 进行python脚本开发
  • BFS算法篇——从晨曦到星辰,BFS算法在多源最短路径问题中的诗意航行(下)
  • hivesql是什么数据库?
  • Kafka Go客户端--Sarama