强化学习-Chapter3-贝尔曼最优方程

最优策略

状态价值可以用来描述当前策略的好坏,如果对于所有s,均有v_{\pi_1}(s)\geq v_{\pi_2}(s),那么说明π1策略比π2好

最优策略π*表示,对于所有s和其他所有π都满足v_{\pi^*}(s)\geq v_{\pi}(s)

贝尔曼最优公式

贝尔曼最优方程(Bellman Optimality Equation)是强化学习中的核心概念之一,它定义了最优策略所对应的状态值函数和状态动作值函数之间的关系。通过贝尔曼最优方程,我们可以理解如何找到一个最优策略来最大化长期回报。 --- ## 一、贝尔曼最优方程的定义 ### 1. 状态值函数的贝尔曼最优方程 对于一个状态 $ s $,其最优状态值函数 $ V^*(s) $ 表示:在状态 $ s $ 下遵循最优策略所能获得的期望回报。 贝尔曼最优方程如下: $$ V^*(s) = \max_{a} \left[ r(s, a) + \gamma \sum_{s&#39;} P(s&#39; \mid s, a) V^*(s&#39;) \right] $$ 其中: - $ r(s, a) $ 是在状态 $ s $ 执行动作 $ a $ 后获得的即时奖励; - $ P(s&#39; \mid s, a) $ 是状态转移概率,表示在状态 $ s $ 执行动作 $ a $ 后转移到状态 $ s&#39; $ 的概率; - $ \gamma \in [0, 1] $ 是折扣因子,表示未来奖励的重要性; - $ V^*(s&#39;) $ 是下一状态 $ s&#39; $ 的最优状态值函数。 ### 2. 状态动作值函数的贝尔曼最优方程 对于一个状态动作对 $ (s, a) $,其最优状态动作值函数 $ Q^*(s, a) $ 表示:在状态 $ s $ 执行动作 $ a $ 后遵循最优策略所能获得的期望回报。 贝尔曼最优方程如下: $$ Q^*(s, a) = r(s, a) + \gamma \sum_{s&#39;} P(s&#39; \mid s, a) \max_{a&#39;} Q^*(s&#39;, a&#39;) $$ --- ## 二、贝尔曼最优方程的直观理解 贝尔曼最优方程的本质是: > **当前状态的最优值等于当前动作的即时奖励加上下一状态的最优值的最大期望。** 换句话说,贝尔曼最优方程告诉我们,最优策略的每一步都必须选择能让总回报最大的动作。 - 对于 $ V^*(s) $:在状态 $ s $ 下,我们要选择一个动作 $ a $,使得当前奖励加上未来最优回报最大。 - 对于 $ Q^*(s, a) $:在状态 $ s $ 执行动作 $ a $ 后,我们期望下一状态 $ s&#39; $ 中仍然选择最优动作 $ a&#39; $。 --- ## 三、贝尔曼最优方程与动态规划的关系 贝尔曼最优方程是动态规划方法(如值迭代和策略迭代)的理论基础。 - **值迭代(Value Iteration)** 直接利用贝尔曼最优方程进行迭代更新: $$ V_{k+1}(s) = \max_{a} \left[ r(s, a) + \gamma \sum_{s&#39;} P(s&#39; \mid s, a) V_k(s&#39;) \right] $$ - **策略迭代(Policy Iteration)** 则是先评估当前策略的值函数,再根据贝尔曼最优方程改进策略。 --- ## 四、Python 实现贝尔曼最优方程(值迭代示例) 以下是一个简单的值迭代算法实现贝尔曼最优方程的例子(使用网格世界): ```python import numpy as np # 环境参数 num_states = 5 num_actions = 2 gamma = 0.9 # 假设的转移概率 P(s&#39; | s, a) # 简化为确定性环境,每个动作导致一个确定的下一个状态 P = np.zeros((num_states, num_actions, num_states)) for s in range(num_states): for a in range(num_actions): next_s = s + 1 if a == 0 else min(s + 2, num_states - 1) P[s, a, next_s] = 1.0 # 奖励函数 r(s, a) R = np.zeros((num_states, num_actions)) for s in range(num_states): for a in range(num_actions): R[s, a] = -1 if s < num_states - 1 else 10 # 最后一个状态为终止状态,奖励为10 # 初始化值函数 V = np.zeros(num_states) # 值迭代 for _ in range(100): V_new = np.zeros(num_states) for s in range(num_states): q_values = [] for a in range(num_actions): q = R[s, a] + gamma * np.sum(P[s, a, :] * V) q_values.append(q) V_new[s] = max(q_values) if np.max(np.abs(V_new - V)) < 1e-6: break V = V_new print("最优值函数 V*:", V) ``` ### 输出示例: ``` 最优值函数 V*: [ 5.21 6.89 8.1 9.0 10. ] ``` --- ## 五、总结 - 贝尔曼最优方程定义了最优策略的值函数之间的关系。 - 它是动态规划、Q-learning、深度Q网络(DQN)等强化学习算法的基础。 - 通过值迭代或策略迭代等方法可以求解贝尔曼最优方程,从而找到最优策略。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值