【强化学习】强化学习算法 - 马尔可夫决策过程

文章目录

  • 马尔可夫决策过程 (Markov Decision Process, MDP)
    • 1. MDP 原理介绍
    • 2. MDP 建模/实现步骤
    • 3. MDP 示例:简单网格世界 (Grid World)

马尔可夫决策过程 (Markov Decision Process, MDP)

1. MDP 原理介绍

马尔可夫决策过程 (MDP) 是强化学习 (Reinforcement Learning, RL) 中用于对序贯决策 (Sequential Decision Making) 问题进行数学建模的标准框架。它描述了一个智能体 (Agent) 与环境 (Environment) 交互的过程,其中智能体的目标是最大化其在一段时间内获得的总奖励。

MDP 假设环境具有马尔可夫性质 (Markov Property),即未来的状态和奖励只依赖于当前的状态和智能体采取的动作,而与过去的状态或动作历史无关。

一个 MDP 通常由以下五个核心要素组成,表示为一个五元组 ( S , A , P , R , γ ) (S, A, P, R, \gamma) (S,A,P,R,γ)

  1. 状态集合 (State Space, S S S):

    • 表示智能体可能处于的所有不同情况或配置的集合。状态可以是离散的(例如棋盘格的位置)或连续的(例如机器人的关节角度)。这里我们主要关注离散状态空间。
    • S t S_t St 表示智能体在时间步 t t t 所处的状态。
  2. 动作集合 (Action Space, A A A):

    • 表示智能体在每个状态下可以采取的所有可能行为的集合。动作也可以是离散的(例如游戏中按键)或连续的(例如控制油门)。有时动作集合依赖于状态,记为 A ( s ) A(s) A(s)
    • A t A_t At 表示智能体在时间步 t t t 选择的动作。
  3. 状态转移概率 (Transition Probability Function, P P P):

    • P ( s ′ ∣ s , a ) = P r ( S t + 1 = s ′ ∣ S t = s , A t = a ) P(s' | s, a) = Pr(S_{t+1}=s' | S_t=s, A_t=a) P(ss,a)=Pr(St+1=sSt=s,At=a)
    • 它定义了在状态 s s s 下采取动作 a a a 后,转移到下一个状态 s ′ s' s 的概率。这体现了环境的动态性,可能包含随机性。
    • 对于所有 s ∈ S , a ∈ A ( s ) s \in S, a \in A(s) sS,aA(s),必须满足 ∑ s ′ ∈ S P ( s ′ ∣ s , a ) = 1 \sum_{s' \in S} P(s' | s, a) = 1 sSP(ss,a)=1
  4. 奖励函数 (Reward Function, R R R):

    • 定义了智能体在特定状态下采取特定动作后获得的即时奖励。有几种常见的定义方式:
      • R ( s , a , s ′ ) R(s, a, s') R(s,a,s):在状态 s s s 采取动作 a a a 并转移到状态 s ′ s' s 时获得的奖励。
      • R ( s , a ) = E [ R t + 1 ∣ S t = s , A t = a ] = ∑ s ′ P ( s ′ ∣ s , a ) R ( s , a , s ′ ) R(s, a) = E[R_{t+1} | S_t=s, A_t=a] = \sum_{s'} P(s' | s, a) R(s, a, s') R(s,a)=E[Rt+1St=s,At=a]=sP(ss,a)R(s,a,s):在状态 s s s 采取动作 a a a 后期望获得的即时奖励。这是更常用的形式。
      • R ( s ) R(s) R(s):仅与进入状态 s s s 相关联的奖励。
    • 奖励函数 R R R 定义了问题的目标。智能体的目的是最大化累积奖励。 R t + 1 R_{t+1} Rt+1 是在时间步 t + 1 t+1 t+1 获得的奖励。
  5. 折扣因子 (Discount Factor, γ \gamma γ):

    • γ ∈ [ 0 , 1 ] \gamma \in [0, 1] γ[0,1]。它是一个用于衡量未来奖励相对于当前奖励重要性的参数。
    • γ \gamma γ 接近 0 时,智能体更关注即时奖励(短视)。
    • γ \gamma γ 接近 1 时,智能体更关注长期累积奖励(远视)。
    • γ < 1 \gamma < 1 γ<1 通常也确保了无限时间范围内的累积奖励(回报)是有限的。

马尔可夫性质 (Markov Property)
这是 MDP 的核心假设: P ( S t + 1 , R t + 1 ∣ S t , A t , S t − 1 , A t − 1 , . . . , S 0 , A 0 ) = P ( S t + 1 , R t + 1 ∣ S t , A t ) P(S_{t+1}, R_{t+1} | S_t, A_t, S_{t-1}, A_{t-1}, ..., S_0, A_0) = P(S_{t+1}, R_{t+1} | S_t, A_t) P(St+1,Rt+1St,At,St1,At1,...,S0,A0)=P(St+1,Rt+1St,At)。这意味着,系统下一时刻的状态和获得的奖励,仅取决于当前的状态 S t S_t St 和当前采取的动作 A t A_t At,与之前的历史状态和动作无关。

目标
智能体的目标是找到一个策略 (Policy) π \pi π,该策略定义了在每个状态 s s s 下选择动作 a a a 的方式(通常是概率分布 π ( a ∣ s ) = P r ( A t = a ∣ S t = s ) \pi(a|s) = Pr(A_t=a | S_t=s) π(as)=Pr(At=aSt=s)),以最大化期望累积折扣奖励 (Expected Cumulative Discounted Reward),也称为回报 (Return)价值 (Value)
从时间步 t t t 开始的回报定义为:
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . = ∑ k = 0 ∞ γ k R t + k + 1 G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + ... = \sum_{k=0}^\infty \gamma^k R_{t+k+1} Gt=Rt+1+γRt+2+γ2Rt+3+...=k=0γkRt+k+1

价值函数 (Value Functions)
为了评估策略的好坏,引入了价值函数:

  • 状态价值函数 (State-Value Function) V π ( s ) V^\pi(s) Vπ(s): 从状态 s s s 开始,遵循策略 π \pi π 所能获得的期望回报。
    V π ( s ) = E π [ G t ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] V^\pi(s) = E_\pi[G_t | S_t=s] = E_\pi\left[\sum_{k=0}^\infty \gamma^k R_{t+k+1} | S_t=s\right] Vπ(s)=Eπ[GtSt=s]=Eπ[k=0γkRt+k+1St=s]
  • 动作价值函数 (Action-Value Function) Q π ( s , a ) Q^\pi(s, a) Qπ(s,a): 在状态 s s s 采取动作 a a a,然后遵循策略 π \pi π 所能获得的期望回报。
    Q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] Q^\pi(s, a) = E_\pi[G_t | S_t=s, A_t=a] = E_\pi\left[\sum_{k=0}^\infty \gamma^k R_{t+k+1} | S_t=s, A_t=a\right] Qπ(s,a)=Eπ[GtSt=s,At=a]=Eπ[k=0γkRt+k+1St=s,At=a]

贝尔曼方程 (Bellman Equations)
价值函数满足递归关系,称为贝尔曼方程,它们是大多数 RL 算法的基础。

  • 贝尔曼期望方程 (Bellman Expectation Equation for V π V^\pi Vπ):
    V π ( s ) = ∑ a π ( a ∣ s ) ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ V π ( s ′ ) ] V^\pi(s) = \sum_{a} \pi(a|s) \sum_{s'} P(s'|s,a) [R(s,a,s') + \gamma V^\pi(s')] Vπ(s)=aπ(as)sP(ss,a)[R(s,a,s)+γVπ(s)]
    (若使用 R ( s , a ) R(s,a) R(s,a),则为: V π ( s ) = ∑ a π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V π ( s ′ ) ) V^\pi(s) = \sum_{a} \pi(a|s) (R(s,a) + \gamma \sum_{s'} P(s'|s,a) V^\pi(s')) Vπ(s)=aπ(as)(R(s,a)+γsP(ss,a)Vπ(s)))
  • 贝尔曼期望方程 (Bellman Expectation Equation for Q π Q^\pi Qπ):
    Q π ( s , a ) = ∑ s ′ P ( s ′ ∣ s , a ) [ R ( s , a , s ′ ) + γ ∑ a ′ π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) ] Q^\pi(s, a) = \sum_{s'} P(s'|s,a) [R(s,a,s') + \gamma \sum_{a'} \pi(a'|s') Q^\pi(s', a')] Qπ(s,a)=sP(ss,a)[R(s,a,s)+γaπ(as)Qπ(s,a)]
    (若使用 R ( s , a ) R(s,a) R(s,a),则为: Q π ( s , a ) = R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V π ( s ′ ) = R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) ∑ a ′ π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) ) Q^\pi(s, a) = R(s,a) + \gamma \sum_{s'} P(s'|s,a) V^\pi(s') = R(s,a) + \gamma \sum_{s'} P(s'|s,a) \sum_{a'} \pi(a'|s') Q^\pi(s', a')) Qπ(s,a)=R(s,a)+γsP(ss,a)Vπ(s)=R(s,a)+γsP(ss,a)aπ(as)Qπ(s,a)))

强化学习的目标是找到最优策略 π ∗ \pi_* π,使得所有状态的价值 V π ∗ ( s ) V^{\pi_*}(s) Vπ(s) 或所有状态动作对的价值 Q π ∗ ( s , a ) Q^{\pi_*}(s, a) Qπ(s,a) 最大化。对应的价值函数称为最优价值函数 V ∗ ( s ) V_*(s) V(s) Q ∗ ( s , a ) Q_*(s, a) Q(s,a),它们满足贝尔曼最优方程 (Bellman Optimality Equations)

2. MDP 建模/实现步骤

将一个实际问题建模为 MDP,通常涉及以下步骤。这并不是一个具体的编程实现,而是定义问题的数学框架:

  1. 定义状态空间 S S S: 确定能够充分描述问题状态的所有变量和它们的可能取值。状态需要满足马尔可夫性质。选择合适的状态表示至关重要。
  2. 定义动作空间 A A A: 确定智能体在每个状态下可以采取的所有动作。
  3. 定义状态转移概率 P ( s ′ ∣ s , a ) P(s'|s, a) P(ss,a): 描述环境的动态。对于每个状态 s s s 和动作 a a a,确定转移到下一个状态 s ′ s' s 的概率。这通常是建模中最困难的部分,可能基于物理定律、规则或数据估计。
  4. 定义奖励函数 R ( s , a ) R(s, a) R(s,a) R ( s , a , s ′ ) R(s, a, s') R(s,a,s): 设计奖励信号以引导智能体实现目标。奖励应该反映任务的即时成功或失败。例如,目标达成给予正奖励,危险状态给予负奖励,普通移动给予小的负奖励(鼓励效率)。
  5. 选择折扣因子 γ \gamma γ: 根据任务是有限期还是无限期,以及对未来奖励的重视程度来选择 γ \gamma γ

完成建模后:

  • 如果 MDP 的模型( P P P R R R已知,可以使用动态规划 (Dynamic Programming) 方法(如价值迭代 Value Iteration 或策略迭代 Policy Iteration)来精确计算最优价值函数和最优策略。
  • 如果 MDP 的模型未知(这是更常见的情况),则需要使用强化学习算法(如 Q-Learning, SARSA, DQN, Actor-Critic 等),通过智能体与环境的交互(采样)来学习最优策略。

3. MDP 示例:简单网格世界 (Grid World)

假设有一个 3x3 的网格世界。

+---+---+---+
|   |   | G |  (0,0) (0,1) (0,2)
+---+---+---+
|   | W |   |  (1,0) (1,1) (1,2)
+---+---+---+
| S |   |   |  (2,0) (2,1) (2,2)
+---+---+---+
  • S (Start): 智能体的起始位置 (2,0)。
  • G (Goal): 目标位置 (0,2),到达后获得奖励。
  • W (Wall): 墙壁 (1,1),无法进入。
  • 空格: 可以移动的普通格子。

MDP 组件定义:

  1. 状态空间 S S S: 每个格子的坐标 ( r , c ) (r, c) (r,c),其中 r ∈ { 0 , 1 , 2 } , c ∈ { 0 , 1 , 2 } r \in \{0, 1, 2\}, c \in \{0, 1, 2\} r{0,1,2},c{0,1,2}。共 9 个状态。状态 (1,1) 是障碍物。状态 (0,2) 是目标状态(可以设为终止状态)。

  2. 动作空间 A A A: 在每个非终止状态,智能体可以尝试向四个方向移动:{上 (Up), 下 (Down), 左 (Left), 右 (Right)}。

  3. 状态转移概率 P ( s ′ ∣ s , a ) P(s'|s, a) P(ss,a):

    • 确定性环境: 假设移动是确定的。
      • 如果从状态 s = ( r , c ) s=(r, c) s=(r,c) 尝试动作 a a a,目标格子 s ′ = ( r ′ , c ′ ) s'=(r', c') s=(r,c) 在网格内且不是墙壁 (1,1),则 P ( s ′ ∣ s , a ) = 1 P(s'|s, a) = 1 P(ss,a)=1,其他 P ( s ′ ′ ∣ s , a ) = 0 P(s''|s,a)=0 P(s′′s,a)=0
      • 如果目标格子 s ′ s' s 超出边界或撞墙 (1,1),则智能体停留在原地,即 P ( s ∣ s , a ) = 1 P(s|s, a) = 1 P(ss,a)=1
      • 如果当前状态 s s s 是目标状态 G (0,2),可以设定 G 为终止状态,任何动作都停留在 G (或转移到一个特殊的终止状态)。
    • 随机性环境 (可选): 假设有 80% 的概率按预期方向移动,各有 10% 的概率向预定方向的左侧或右侧移动(撞墙或边界则停留在原地)。例如,在 (1,0) 选择 ‘Up’:
      • 80% 概率到达 (0,0)。
      • 10% 概率向左滑,撞边界,停留在 (1,0)。
      • 10% 概率向右滑,撞墙 (1,1),停留在 (1,0)。
      • 因此 P ( ( 0 , 0 ) ∣ ( 1 , 0 ) , ’Up’ ) = 0.8 P((0,0)|(1,0), \text{'Up'}) = 0.8 P((0,0)(1,0),’Up’)=0.8, P ( ( 1 , 0 ) ∣ ( 1 , 0 ) , ’Up’ ) = 0.2 P((1,0)|(1,0), \text{'Up'}) = 0.2 P((1,0)(1,0),’Up’)=0.2
  4. 奖励函数 R ( s , a ) R(s, a) R(s,a) R ( s , a , s ′ ) R(s, a, s') R(s,a,s):

    • 到达目标状态 G (0,2): R = + 10 R = +10 R=+10
    • 每次移动(到达非目标状态): R = − 0.1 R = -0.1 R=0.1 (鼓励尽快到达目标)。
    • 撞墙或边界(停留在原地): R = − 1 R = -1 R=1 (轻微惩罚)。
    • (另一种设计:只有到达目标状态 G 时获得 R = + 1 R=+1 R=+1,其他所有转移奖励为 0)。
  5. 折扣因子 γ \gamma γ: 例如, γ = 0.9 \gamma = 0.9 γ=0.9

目标: 找到一个策略 π ( a ∣ s ) \pi(a|s) π(as),使得从状态 S (2,0) 出发,到达 G (0,2) 的期望累积折扣奖励最大化。这通常意味着找到一条避开墙壁、最快到达目标的路径。

通过动态规划(如果 P , R P, R P,R 已知)或强化学习算法(如果未知或需要通过交互学习),可以计算出每个状态的最佳动作,形成最优策略。例如,在 (2,0) 最优动作可能是 ‘Up’,在 (1,0) 最优动作可能是 ‘Up’ 或 ‘Right’ (取决于随机性和奖励设计),最终引导智能体走向 (0,2)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/81428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用户现场不支持路由映射,如何快速将安防监控EasyCVR视频汇聚平台映射到公网?

一、方案背景​ 随着数字化安防与智能交通管理发展&#xff0c;视频监控远程管理需求激增。EasyCVR作为专业视频融合平台&#xff0c;具备多协议接入等核心功能&#xff0c;是智能监控的重要工具。但实际部署中&#xff0c;当EasyCVR处于内网且路由器无法进行端口映射时&#…

MODBUS RTU调试助手使用方法详解

一、软件简介 485调试助手是一款常用的串口通信调试工具&#xff0c;专门用于RS-485总线设备的测试、调试和通信监控。它支持多种串口参数设置&#xff0c;提供数据收发功能&#xff0c;是工业现场调试的必备工具之一。 二、软件安装与启动 1. 系统要求 Windows 7/10/11操作…

ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化

1.版本背景与发布 发布时间&#xff1a;2018年6月&#xff0c;由ECMA International正式发布&#xff0c;标准编号为ECMA-262 9th Edition。历史意义&#xff1a;作为ES6之后的第三次年度更新&#xff0c;ES2018聚焦于异步编程、正则表达式和对象操作的标准化&#xff0c;推动…

【C语言】链接与编译(编译环境 )

前言&#xff1a; 在前面讲解文件操作&#xff0c;了解了文件的类别&#xff0c;文件的打开与关闭&#xff0c;字符读写函数&#xff0c; 字符串读写函数&#xff0c;格式化输入输出函数 在C语言编程中&#xff0c;编译与链接是将源代码转化为可执行程序的关键步骤。为了详细…

Java视频流RTMP/RTSP协议解析与实战代码

在Java中实现视频直播的输入流处理&#xff0c;通常需要结合网络编程、多媒体处理库以及流媒体协议&#xff08;如RTMP、HLS、RTSP等&#xff09;。以下是实现视频直播输入流的关键步骤和技术要点&#xff1a; 1. 视频直播输入流的核心组件 网络输入流&#xff1a;通过Socket或…

系分论文《论系统需求分析方法及应用》

系统分析师论文范文系列 【摘要】 2022年6月&#xff0c;我作为系统分析师参与了某金融机构“智能信贷风控系统”的建设项目。该系统旨在通过对业务流程的数字化重构&#xff0c;优化信贷审批效率并降低风险。项目涉及信贷申请、资质审核、风险评估、额度审批等核心流程&#x…

stack和queue简单模拟实现

stackreverse_iteratorqueuepriority_queue仿函数具体代码 stack Stacks are a type of container adaptor, specifically designed to operate in a LIFO context (last-in first-out), where elements are inserted and extracted only from one end of the container. 上述描…

Linux内核可配置的参数

sysctl -a 命令会列出当前Linux内核所有可配置的参数及其当前值。这些参数允许你在系统运行时动态地调整内核的行为&#xff0c;而无需重新编译内核或重启系统。 内容非常多&#xff0c;因为内核有很多可调的方面。我们可以把它们大致分为几个主要类别&#xff1a; kernel.*: …

【背包dp-----分组背包】------(标准的分组背包【可以不装满的 最大价值】)

通天之分组背包 题目链接 题目描述 自 01 01 01 背包问世之后&#xff0c;小 A 对此深感兴趣。一天&#xff0c;小 A 去远游&#xff0c;却发现他的背包不同于 01 01 01 背包&#xff0c;他的物品大致可分为 k k k 组&#xff0c;每组中的物品相互冲突&#xff0c;现在&a…

操作系统:os概述

操作系统&#xff1a;OS概述 程序、进程与线程无极二级目录三级目录 程序、进程与线程 指令执行需要那些条件&#xff1f;CPU内存 需要数据和 无极 二级目录 三级目录

RAG文本分块

不论是向量化模型还是大语言模型&#xff0c;都存在输入长度的限制。对于超过限制的文本&#xff0c;模型会进行截断&#xff0c;造成语义缺失。分块可以确保每个文本片段都在模型的处理范围内&#xff0c;避免重要信息的丢失。 文本分块的核心原则 高质量分块的核心原则是&a…

2025 年九江市第二十三届中职学校技能大赛 (网络安全)赛项竞赛样题

2025 年九江市第二十三届中职学校技能大赛 &#xff08;网络安全&#xff09;赛项竞赛样题 &#xff08;二&#xff09;A 模块基础设施设置/安全加固&#xff08;200 分&#xff09;A-1 任务一登录安全加固&#xff08;Windows,Linux&#xff09;A-2 任务二 Nginx 安全策略&…

量子隧穿:PROFINET到Ethernet ip的无损耗协议转换方案转

在本季度的生产工作中&#xff0c;我们成功实现了仓储物流自动化分拣系统中的关键技术突破。我们面临的主要挑战是将采用EtherNet/IP协议的输送带控制器与PROFINET协议的上位系统进行有效通信。通过引入ethernet IP转PROFINET网关倍讯科技BX-606-EIP&#xff0c;我们实现了输送…

OpenCV CUDA模块中矩阵操作------降维操作

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::reduce 函数用于对 GPU 上的矩阵沿某个维度进行降维操作&#xff0c;例如求和、取最大值等。此函数支持多种降维操作&#xff0c;并允…

一分钟用 MCP 上线一个 贪吃蛇 小游戏(CodeBuddy版)

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 你好&#xff0c;我是悟空。 背景 上篇我们用 MCP 上线了一个 2048 小游戏&#xff0c;这次我们继续做一个 …

简单神经网络(ANN)实现:从零开始构建第一个模型

本文将手把手带你用 Python Numpy 实现一个最基础的人工神经网络&#xff08;Artificial Neural Network, ANN&#xff09;。不依赖任何深度学习框架&#xff0c;适合入门理解神经网络的本质。 一、项目目标 构建一个三层神经网络&#xff08;输入层、隐藏层、输出层&#xf…

使用python进行人员轨迹跟踪

一、系统概述 该系统基于计算机视觉技术&#xff0c;实现对视频或摄像头画面中的人员进行检测、跟踪&#xff0c;并生成轨迹数据。支持透视变换校准&#xff08;鸟瞰图显示&#xff09;、多目标跟踪、轨迹存储及视频录制功能&#xff0c;适用于安防监控、行为分析等场景。 二…

[强化学习的数学原理—赵世钰老师]学习笔记02-贝尔曼方程

本人为强化学习小白&#xff0c;为了在后续科研的过程中能够较好的结合强化学习来做相关研究&#xff0c;特意买了西湖大学赵世钰老师撰写的《强化学习数学原理》中文版这本书&#xff0c;并结合赵老师的讲解视频来学习和更深刻的理解强化学习相关概念&#xff0c;知识和算法技…

Docker入门指南:镜像、容器与仓库的核心概念解析

目录 前言&#xff1a;为什么需要Docker&#xff1f; 一、Docker能做什么&#xff1f; 二、核心概念解析 1. 镜像&#xff08;Image&#xff09;&#xff1a;应用的标准化打包 2. 容器&#xff08;Container&#xff09;&#xff1a;镜像的运行实例 3. 镜像仓库&#xff0…

大模型微调实战:基于GpuGeek平台的低成本高效训练方案

文章目录 引言一、GpuGeek平台使用入门1. 注册与账号设置2. 控制台功能概览3. 快速创建GPU实例3. 预置镜像与自定义环境 二、GpuGeek平台核心优势解析1. 显卡资源充足&#xff1a;多卡并行加速训练2. 镜像超多&#xff1a;开箱即用的开发环境3. 计费灵活&#xff1a;按需付费降…