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

强化学习2.4 MDP作业汇总(持续更新)

问题1

考虑一个具有三个状态的马尔可夫决策过程(MDP),用于捕捉机器人足球的得分情况:无(None)、对方得分(Against)、我方得分(For),对应奖励分别为0、-1、+1(图3)。奖励函数仅与当前状态相关(即( r = r(s) ))。同时,考虑三种捕捉比赛策略的动作:

  1. 平衡(Balanced):我方得分概率5%;对方得分概率5%。
  2. 进攻(Offensive):我方得分概率25%;对方得分概率50%。
  3. 防守(Defensive):我方得分概率1%;对方得分概率2%。

动作隐含了三个状态之间的上述转移概率,其中( * )表示任意三个状态。例如,(T(*, a,For) )是从任意状态出发,执行动作( a ),转移到“我方得分(For)”状态的概率。

在这里插入图片描述

(1) 该MDP的策略总数是多少?

(2) 折扣因子为0.5时,使用策略迭代求解此MDP。提示:为便于手动计算,选择在所有状态下执行“平衡(Balanced)”动作作为初始策略。对于该状态-动作空间较小的问题,无需迭代执行策略评估,可直接一次性求解贝尔曼方程以获得价值。

(3) 对于给定的特定MDP,不同的折扣因子会改变最优策略吗?请给出充分的证明。一般情况下呢?

(1)

** 策略(policy)** 的定义:策略是从 “状态到动作的映射”,即每个状态下选择一个动作。
已知该 MDP 有 3 个状态(None、Against、For),每个状态下有 3 个可选动作(Balanced、Offensive、Defensive)。
对于每个状态,我们有 3 种动作选择;3 个状态的选择相互独立,因此策略总数为:3×3×3=3^3=27

(2)

这意味着由于该MDP的状态和动作数量极少,我们可以把贝尔曼方程转化为线性方程组,通过直接求解方程组的方式一次性得到状态价值,而不需要像常规策略评估那样进行迭代计算(比如迭代更新状态价值直到收敛)。

以问题(b)中的初始策略(所有状态选“Balanced”动作)为例,我们来具体解释:

贝尔曼方程的线性化

对于每个状态( s ),贝尔曼方程为:
Vπ(s)=r(s)+γ∑s′T(s,π(s),s′)Vπ(s′)V_{\pi}(s) = r(s) + \gamma \sum_{s'} T(s, \pi(s), s') V_{\pi}(s')Vπ(s)=r(s)+γsT(s,π(s),s)Vπ(s)

其中,Vπ(s)V_{\pi}(s)Vπ(s)是策略在状态( s )下选择的动作(这里所有状态都选“Balanced”),T(s,a,s′)T(s, a, s')T(s,a,s)是转移概率。

由于状态只有3个(None、Against、For),我们可以将其表示为一个三元一次线性方程组
{v1=0+0.5×(0.9v1+0.05v2+0.05v3)v2=−1+0.5×(0.9v1+0.05v2+0.05v3)v3=1+0.5×(0.9v1+0.05v2+0.05v3) \begin{cases} v_1 = 0 + 0.5 \times (0.9v_1 + 0.05v_2 + 0.05v_3) \\ v_2 = -1 + 0.5 \times (0.9v_1 + 0.05v_2 + 0.05v_3) \\ v_3 = 1 + 0.5 \times (0.9v_1 + 0.05v_2 + 0.05v_3) \end{cases} v1=0+0.5×(0.9v1+0.05v2+0.05v3)v2=1+0.5×(0.9v1+0.05v2+0.05v3)v3=1+0.5×(0.9v1+0.05v2+0.05v3)
整理得到
{0.55v1−0.025v2−0.025v3=0−0.45v1+0.975v2−0.025v3=−1−0.45v1−0.025v2+0.975v3=1 \begin{cases} 0.55 v_1 - 0.025 v_2 - 0.025 v_3 = 0 \\ -0.45 v_1 + 0.975 v_2 - 0.025 v_3 = -1 \\ -0.45 v_1 - 0.025 v_2 + 0.975 v_3 = 1 \end{cases} 0.55v10.025v20.025v3=00.45v1+0.975v20.025v3=10.45v10.025v2+0.975v3=1

通过代数方法(如消元法、矩阵求逆)可直接解出:
V({None}) = 0, \quad V(\text{Against}) = -1, \quad V(\text{For}) = 1 ]

为何可以这样做?

当状态数量( n )很小时(比如本题( n=3 )),贝尔曼方程对应的线性方程组规模很小,直接求解的计算成本远低于迭代法。而当状态数量很大时(比如几十、上百个状态),迭代法(如值迭代、策略迭代的迭代评估)会更高效,因为直接求解大规模线性方程组的计算复杂度会急剧上升。

import numpy as npdef policy_iteration():# 定义状态和动作states = ['None', 'Against', 'For']actions = ['Balanced', 'Offensive', 'Defensive']state_index = {s: i for i, s in enumerate(states)}action_index = {a: i for i, a in enumerate(actions)}# 奖励函数:r(None)=0, r(Against)=-1, r(For)=1r = np.array([0, -1, 1])# 转移概率:T[动作][从任意状态][到状态]# T[0] = Balanced: For=0.05, Against=0.05, None=0.9# T[1] = Offensive: For=0.25, Against=0.5, None=0.25# T[2] = Defensive: For=0.01, Against=0.02, None=0.97T = np.array([[[0.9, 0.05, 0.05],   # Balanced: [None, Against, For][0.9, 0.05, 0.05],[0.9, 0.05, 0.05]],[[0.25, 0.5, 0.25],   # Offensive[0.25, 0.5, 0.25],[0.25, 0.5, 0.25]],[[0.97, 0.02, 0.01],  # Defensive[0.97, 0.02, 0.01],[0.97, 0.02, 0.01]]])gamma = 0.5  # 折扣因子theta = 1e-6  # 收敛阈值# 初始策略:所有状态选择Balanced(索引0)policy = np.zeros(len(states), dtype=int)  # [0, 0, 0]while True:# 1. 策略评估:求解当前策略的状态价值VV = np.zeros(len(states))while True:delta = 0for s in range(len(states)):v = V[s]a = policy[s]# 贝尔曼方程:V(s) = r(s) + gamma * sum(T(s,a,s')*V(s'))V[s] = r[s] + gamma * np.dot(T[a, s], V)delta = max(delta, abs(v - V[s]))if delta < theta:break# 2. 策略改进policy_stable = Truefor s in range(len(states)):old_action = policy[s]# 计算所有动作的Q值Q = []for a in range(len(actions)):q = r[s] + gamma * np.dot(T[a, s], V)Q.append(q)# 选择Q值最大的动作new_action = np.argmax(Q)if new_action != old_action:policy_stable = Falsepolicy[s] = new_action# 检查策略是否稳定if policy_stable:breakreturn V, policy, states, actions# 执行策略迭代
V, policy, states, actions = policy_iteration()# 输出结果
print("最优状态价值:")
for i, s in enumerate(states):print(f"V({s}) = {V[i]:.4f}")print("\n最优策略:")
for i, s in enumerate(states):print(f"在状态{s}下选择动作: {actions[policy[i]]}")

结果如下所示
在这里插入图片描述

(3)

1. 特定MDP的核心设定
  • 奖励函数:仅与当前状态相关
    r(None) = 0 ,r(Against) = -1, r(For) = +1
  • 转移概率:仅与动作相关(与当前状态无关)
    例如:动作Balanced在任意状态下,转移到For的概率为5%,Against为5%,None为90%
  • 最优状态价值:由问题(b)可知
    r(None) = 0 ,r(Against) = -1, r(For) = +1
2. 证明:动作价值比较与gamma无关
(1)动作价值公式简化

动作价值( Q(s,a) )的定义为:
Q(s,a)=r(s)+γ∑s′T(a,s′)V∗(s′) Q(s,a) = r(s) + \gamma \sum_{s'} T(a,s') V^*(s') Q(s,a)=r(s)+γsT(a,s)V(s)

由于转移概率( T(a,s’) )与当前状态( s )无关(题目中“*表示任意状态”),可令:
L(a)=∑s′T(a,s′)V∗(s′) L(a) = \sum_{s'} T(a,s') V^*(s') L(a)=sT(a,s)V(s)
(( L(a) )为执行动作( a )后的长期奖励期望,仅与动作( a )相关)

因此,动作价值公式简化为:
Q(s,a)=r(s)+γ⋅L(a) Q(s,a) = r(s) + \gamma \cdot L(a) Q(s,a)=r(s)+γL(a)

这表明:同一状态下,不同动作的( Q )值差异仅由( L(a) )决定,与gammagammagamma无关。

(2)计算三种动作的( L(a) )

代入最优状态价值\ r(None) = 0 ,r(Against) = -1, r(For) = +1 :

  • 动作Balanced
    L(Balanced)=T(∗,Balanced,None)⋅V∗(None)+T(∗,Balanced,Against)⋅V∗(Against)+T(∗,Balanced,For)⋅V∗(For) L(\text{Balanced}) = T(*, \text{Balanced}, \text{None}) \cdot V^*(\text{None}) + T(*, \text{Balanced}, \text{Against}) \cdot V^*(\text{Against}) + T(*, \text{Balanced}, \text{For}) \cdot V^*(\text{For}) L(Balanced)=T(,Balanced,None)V(None)+T(,Balanced,Against)V(Against)+T(,Balanced,For)V(For)
    =0.9×0+0.05×(−v)+0.05×v=0 = 0.9 \times 0 + 0.05 \times (-v) + 0.05 \times v = 0 =0.9×0+0.05×(v)+0.05×v=0

  • 动作Offensive
    L(Offensive)=0.25×0+0.5×(−v)+0.25×v=−0.25v L(\text{Offensive}) = 0.25 \times 0 + 0.5 \times (-v) + 0.25 \times v = -0.25v L(Offensive)=0.25×0+0.5×(v)+0.25×v=0.25v

  • 动作Defensive
    L(Defensive)=0.97×0+0.02×(−v)+0.01×v=−0.01v L(\text{Defensive}) = 0.97 \times 0 + 0.02 \times (-v) + 0.01 \times v = -0.01v L(Defensive)=0.97×0+0.02×(v)+0.01×v=0.01v

(3)对比( Q(s,a) )的大小

无论gamma∈[0,1)gamma \in [0,1)gamma[0,1)取何值,始终有:
L(Balanced)=0>L(Defensive)=−0.01v>L(Offensive)=−0.25v L(\text{Balanced}) = 0 > L(\text{Defensive}) = -0.01v > L(\text{Offensive}) = -0.25v L(Balanced)=0>L(Defensive)=0.01v>L(Offensive)=0.25v

结合Q(s,a)=r(s)+γ⋅L(a) Q(s,a) = r(s) + \gamma \cdot L(a) Q(s,a)=r(s)+γL(a) ,在所有状态下:

  • None状态(( r=0 ))
    Q(For,Balanced)=1+γ×0=1 Q(\text{For}, \text{Balanced}) = 1 + \gamma \times 0 = 1 Q(For,Balanced)=1+γ×0=1 ,大于另外两个动作的( Q )值(均为负数)。
  • Against状态(( r=-1 ))
    Q(For,Offensive)=1+γ×(−0.25v)=1−0.25γv Q(\text{For}, \text{Offensive}) = 1 + \gamma \times (-0.25v) = 1 - 0.25\gamma v Q(For,Offensive)=1+γ×(0.25v)=10.25γv ,大于另外两个动作的( Q )值(更负)。
  • For状态(( r=1 ))
    Q(For,Defensive)=1+γ×(−0.01v)=1−0.01γv Q(\text{For}, \text{Defensive}) = 1 + \gamma \times (-0.01v) = 1 - 0.01\gamma v Q(For,Defensive)=1+γ×(0.01v)=10.01γv ,大于另外两个动作的( Q )值(更小的正数)。
(4)结论

题目特定MDP中,折扣因子gamma不会改变最优策略,最优策略始终是“所有状态选择Balanced动作”。

场景折扣因子是否改变最优策略核心原因
题目特定MDP三种动作的长期奖励期望( L(a) )固定,Balanced的( L(a) )始终最大,与gamma无关
一般MDP可能gamma改变短期/长期奖励权重,当动作存在“短期-长期奖励权衡”时,最优策略变化
http://www.dtcms.com/a/562189.html

相关文章:

  • 使用Requests和正则表达式实现塔读小说网小说爬取
  • Guava TreeRangeSet:区间运算的数学之美!
  • 双指针问题(同向)
  • seo公司哪家便宜宁波关键词排名优化平台
  • 安徽静安集团网站建设网站打不开了怎么办
  • 建设ftp网站怎么创建数据库帮忙做ppt的网站
  • Java 大视界 -- Java 大数据在智能医疗手术风险评估与术前方案制定中的应用探索
  • 做外贸网站推广成都网站建设外包
  • linux命令-压缩-12
  • 手机网站的视频怎么才能下载wordpress top0.9主题
  • 专门做房地产设计的图片网站上谷网络网站建设
  • 网站上怎么做弹目提醒定制app开发平台
  • 下载 | Win11 25H2 正式版更新!(ISO映像、年度更新版本、26200.7019、Windows 11)
  • Java的Collection接口和常用方法(Iterator和增强for)
  • 赣州网站建设方案婚纱官网
  • 巨腾外贸网站建设网站有什么功能
  • C++ 的关键字(保留字)完整介绍
  • 诸城网站建设诸城校园招生网站建设的简报
  • JS面试基础(2) 流程控制语句与函数及其作用域
  • 构建最新的Linux系统
  • 2026年EAAI SCI1区TOP,具有维度适应性遗传的差分进化算法,深度解析+性能实测
  • 为什么做这个网站反馈问题画册专业设计公司
  • 找做网站公司需要注意什么条件网站建设的电话销售
  • 网站备案上海pos机网站模板
  • 基于C#的贵州省黔北地区乡村避暑生活共享平台设计与实现(源码+论文+部署+安装)
  • DevOps(devops/k8s/docker/Linux)学习笔记-3
  • 中恒建设职业技术培训学校网站网页编辑打印工具
  • 阿里云医疗网站建设手递手个人求职信息网
  • OpenHarmony Location Kit技术详解:定位、地理围栏与编码转换
  • 个人网站做的类型如何设置企业网站