【强化学习】个人总结03——动态规划寻找最优策略

前言

动态规划 (Dynamic Programming, DP) 就是先把复杂问题分解为若干的子问题,再通过求解这些子问题来得到原问题的解。这适合解决满足如下两个性质的问题:
最优子结构 (optimal substructure):一个原问题可以拆分成一个个的小问题,解决这些小问题后能够通过组合小问题的解来得到原问题的最优解。
重叠子问题 (overlapping subproblems):子问题出现多次,并且子问题的解能被存储起来重复使用。

马尔科夫决策过程正好满足动态规划的这两个要求:贝尔曼方程把问题分解成一个递归的结构来求解子问题,价值函数可以存储并复用它的最佳解。因此我们就可以使用动态规划的方法来求解马尔科夫决策过程的核心问题:预测和控制。

预测 (prediction):已知一个马尔科夫决策过程 MDP 和一个策略 π,或者是给定一个马尔科夫奖励过程 MRP,求解基于该策略的价值函数 。(评估一个给定的策略)
控制 (control):已知一个马尔科夫决策过程 MDP,求解最优价值函数 v∗ 和最优策略 π∗。(搜索最佳策略)
这两种问题的区别在于,预测问题是策略已给,我们需要确定它的价值函数是多少,而控制问题是要在没有策略的前提下确定最优的价值函数以及对应的策略。两者之间存在递进关系,在强化学习中,我们通过解决预测问题,进而解决控制问题。

动态规划算法可分为同步和异步这两类,主要区别在于所有状态的更新是否同步。下面分别介绍这两种动态规划。

1. 同步动态规划 (Synchronous Dynamic Programming)

1.1 策略评估 (policy evaluation)

策略评估:计算给定策略下状态价值函数的过程。具体来讲,策略评估就是从任意一个状态价值函数开始,依据给定的策略,结合了贝尔曼期望方程、状态转移概率矩阵和奖励同步迭代,来更新状态价值函数并直至其收敛,从而得到该策略下最终的状态价值函数。而关键就在于如何在一个迭代周期内更新每一个状态的价值。

这里借用叶强笔记中的一个例子来说明:

在这里插入图片描述
在一个 4×4 小型方格世界中,agent 为了在完成任务时(到达 0 或 15 这两个终止状态格子)能够获得尽可能多的奖励(或尽可能减少负值奖励带来的惩罚),它需要思考处在格子世界中的某一个状态时,应该采取怎样的行为才能尽快地到达终止状态格子。
又因为 agent 不像我们人类知道该环境的运行规律,它身处格子世界中一开始并不清楚各个状态之间的位置关系,所以它能做的就是在任何一个状态时,等概率地选择朝四个方向移动。该方法是一个基于均一概率的随机策略 (uniform random policy)。agent 在这个策略下不断产生行为,执行移动动作,从格子世界环境中获得奖励(大多是 −1 代表的惩罚),并到达一个新的或者曾经到达过的状态。
在 agent 与环境不断的交互过程中,它逐渐明白在这个均一随机策略指导下,每一个状态的价值是不一样的,而且要经历过多次的终止状态后才能对各个状态的价值有一定的认识。agent 形成该认识的过程就是策略评估的过程。

1.2 策略迭代 (policy iteration)

策略迭代:策略在循环迭代中得到更新改善的过程。它由两个步骤组成:policy evaluation 和 policy improvement。

在这里插入图片描述
定义:一般的,给定一个初始策略 π ,可以得到基于该策略的价值函数 ,而基于该价值函数又可以得到一个贪婪策略 π′ = greedy()。然后依据新的策略 π′ 又可以得到一个新的价值函数,并由此产生新的贪婪策略,如此反复进行,价值函数和策略均得到迭代更新,并最终收敛得到最优价值函数 v∗ 和最优策略 π∗

这里再借用上述方格世界的例子进行说明:

在这里插入图片描述

左图是依据均一随机策略的第二次迭代后各状态价值函数,右图是根据左图各状态的价值绘制的贪婪策略方案。我们可以看到,相比于之前的均一随机策略,新的策略可以让 agent 在靠近终止状态的几个状态中有明确的行为,而不是之前的随机行为,这说明了新策略要比原策略优秀。而这个从均一随机策略下的价值函数中产生新的更优秀的贪婪策略的过程,就是一个策略改善的过程。

贪婪策略 (greedy policy):个体在某个状态下选择的行为是其能够到达后续所有可能的状态中价值最大的那个状态。

1.3 价值迭代 (value iteration)

价值迭代:计算最优价值函数的过程。不停地迭代贝尔曼最优方程 (Bellman Optimality Equation),到了最后它就能逐渐趋向于最佳策略,这是价值迭代算法的精髓所在。

下面通过比较策略迭代和价值迭代这两种方法在解决 MDP 控制问题时的不同之处,来对价值迭代有个更深入的认识:
策略迭代分两步,首先进行策略评估,即对当前已经搜索到的策略函数进行一个估值。得到估值后再进行策略改善,即把 Q 函数算出来,然后进一步改进,并不断重复这两步直到策略收敛;
价值迭代直接利用贝尔曼最优方程进行迭代,然后去寻找最佳的价值函数,其中并没有策略函数的参与。当计算出最优价值函数后,再提取出最佳策略。

我们可以看出,价值迭代的目标也是找到一个最优策略,它通过贝尔曼最优方程从前次迭代的价值函数中计算得到当次迭代的价值函数,但是在这个反复迭代的过程中,并没有一个明确的策略参与。由于使用贝尔曼最优方程进行价值迭代时,类似采用贪婪策略去选择了最优行为对应的后续状态的价值,所以价值迭代其实等效于策略迭代中每迭代一次价值函数就更新一次策略的过程。

2. 异步动态规划 (Asynchronous Dynamic Programming)

在异步动态规划算法中,每一次迭代并不对所有状态的价值进行更新,而是依据一定的原则有选择性地更新部分状态的价值,这种算法能显著节约计算资源,并且只要所有状态能够得到持续的访问更新,那么也能确保算法收敛至最优解。
下面分别介绍比较常用的异步动态规划思想:
原位动态规划 (in-place dynamic programming):直接利用当前状态的后续状态的价值来更新当前状态的价值。
优先级动态规划 (prioritised sweeping):对每一个状态进行优先级分级,优先级越高的状态其状态价值优先得到更新。
实时动态规划 (real-time dynamic programming):直接使用个体与环境交互产生的实际经历来更新状态价值,对于那些个体实际经历过的状态进行价值更新。

总结

动态规划是一种方法,可以有效求解 MDP 的预测和控制问题,而且必须对环境是完全已知的 (Model-Based),也就是需要知道状态转移概率和对应的奖励。所以动态规划应用于 MDP 的规划问题 (planning) 而不是学习问题 (learning)。
动态规划算法可分为同步和异步这两类,在同步动态规划算法中,策略评估属于预测问题,它使用贝尔曼期望方程进行求解。策略迭代和价值迭代属于控制问题,前者使用贝尔曼期望方程进行一定次数的价值迭代更新,随后在产生的价值函数基础上采取贪婪策略从而形成新的策略,如此重复迭代不断地优化策略;而价值迭代不依赖任何策略,它使用贝尔曼最优方程直接对价值函数进行迭代更新,最终能逐渐趋向于最佳的策略。

### 基于强化学习实现最优控制的方法 #### 方法概述 基于强化学习最优控制方法旨在解决传统控制系统中参数调整困难的问题。这种方法利用智能体与环境之间的互动,自动寻找能够使长期累积奖励最大化的控制策略[^1]。 对于复杂的动态系统而言,传统的试错法往往效率低下且成本高昂;而借助强化学习算法,则可以高效地探索可能的状态空间,并找到接近全局最优解的一组控制器设置。特别是当面对非线性或多变量耦合特性明显的对象时,这种数据驱动型的学习方式展现出显著优势。 #### 应用实例分析 ##### 工业过程自动化领域内的温度调节器调校 在一个典型的工业应用场景里——比如化工厂反应釜内部物料加热/冷却循环过程中,操作人员通常需要花费大量时间去手动微调PID(比例积分微分)控制器的各项系数直至达到满意的响应效果。然而采用上述提到的技术路线之后,只需事先设定好目标函数以及相应的奖惩机制即可让机器自行完成这一任务: - **环境构建**:模拟实际生产条件下的热交换现象; - **状态表示**:当前时刻各测量点处流体介质的实际温度读数向量; - **行动集合**:可供改变的比例增益Kp、积分作用Ti及时常Td三个维度上的离散数值区间; - **即时回报计算逻辑**:依据偏差绝对值大小给予正负反馈信号作为评价标准之一。 经过多轮迭代训练后最终得到一组使得被控物理量快速稳定至给定范围附近而不发生过冲振荡现象的最佳配置方案[^2]。 ```python import gym from stable_baselines3 import PPO env = gym.make('TemperatureControl-v0') model = PPO('MlpPolicy', env, verbose=1) model.learn(total_timesteps=10_000) obs = env.reset() for i in range(1000): action, _states = model.predict(obs, deterministic=True) obs, reward, done, info = env.step(action) if done: break ``` #### 学术研究成果展示 Yuval Tassa等人在其论文《复杂行为在线轨迹优化合成》中探讨了如何运用深度强化学习框架来处理具有挑战性的运动规划难题。文中介绍了一个名为MuJoCo的手臂抓取物体实验平台,在此之上研究人员成功实现了对机械手末端执行器姿态路径精确调控的目的。整个项目不仅验证了理论可行性还提供了宝贵的实践经验供后续开发者借鉴参考[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值