《强化学习的数学原理》中文版第2章-第4章总结

文章目录

策略迭代和值迭代

两者都用于在已知MDP模型(即知道状态转移概率 P P P励函数 R R R)的情况下,找到最优策略 π ∗ \pi^* π∗,但实现路径截然不同。首先明确一下这里的"策略"和"值"的含义。

1.策略

策略是一个函数,通常用 π ( a ∣ s ) \pi(a|s) π(a∣s)来表示在状态 s s s采取动作 a a a的概率,规定了在某个状态下应该采取什么动作。它可以是确定性的(比如:在状态A一定向右走),也可以是随机性的(比如:在状态A有80%概率向右,20%概率向下)。

2.值

:通常指状态价值函数 V ( s ) V(s) V(s) 或动作价值函数 q ( s , a ) q(s,a) q(s,a)。一般我们用状态值 V ( s ) V(s) V(s),它表示智能体从一个状态出发所能获得的回报的期望值。在强化学习中,一个"状态值" V π ( s ) V_\pi(s) Vπ(s) 必须满足一个核心条件:它必须是某个特定策略 π \pi π下的期望回报,并且必须满足该策略的贝尔曼方程。

v π ( s ) = E [ R t + 1 ∣ S t = s ] + E [ γ G t + 1 ∣ S t = s ] = ∑ a ∈ A π ( a ∣ s ) ∑ r ∈ R p ( r ∣ s , a ) r + γ ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p ( s ′ ∣ s , a ) v π ( s ′ ) , s ∈ S (1) \begin{split} v_{\pi}(s)&=\mathbb{E}[R_{t+1} |S_t=s] + \mathbb{E}[γG_{t+1}|S_t=s] \\ &=\sum_{a\in\mathcal{A}}\pi(a|s)\sum_{r\in\mathcal{R}}p(r|s,a)r+γ\sum_{a\in\mathcal{A}}\pi(a|s)\sum_{s'\in\mathcal{S}}p(s'|s,a)v_\pi(s'),s\in\mathcal{S} \end{split} \tag{1} vπ(s)=E[Rt+1∣St=s]+E[γGt+1∣St=s]=a∈A∑π(a∣s)r∈R∑p(r∣s,a)r+γa∈A∑π(a∣s)s′∈S∑p(s′∣s,a)vπ(s′),s∈S(1)

式(1)中,第一个等号右端第一项是即时奖励的期望值,第二项是未来奖励的期望值。

第二个等号右端第一项是即时奖励期望值的具体数学表达式,其含义可以近似认为是对所有动作的加权平均 ,这一项中的第二个求和符号含义是:对于已选定的动作 a a a,由于环境具有随机性,执行 a a a后可能会转移到不同的 s ′ s' s′并获得不同的 r r r,此时,求 ∑ r ∈ R p ( r ∣ s , a ) r \sum_{r\in\mathcal{R}}p(r|s,a)r ∑r∈Rp(r∣s,a)r得到的就是一个条件期望(即在状态 s s s下执行动作 a a a,能得到的平均奖励);这一项的第一个求和符号的含义,在状态 s s s下,可能会以概率 π ( a ∣ s ) \pi(a|s) π(a∣s)选择不同的动作 a a a,此时求 ∑ a ∈ A π ( a ∣ s ) ∑ r ∈ R p ( r ∣ s , a ) r \sum_{a\in\mathcal{A}}\pi(a|s)\sum_{r\in\mathcal{R}}p(r|s,a)r ∑a∈Aπ(a∣s)∑r∈Rp(r∣s,a)r得到的就是全期望,即以概率 π ( a ∣ s ) \pi(a|s) π(a∣s)选择不同的动作 a a a,得到了即时奖励的期望值。

第二个等号右端第二项是未来奖励期望值的具体数学表达式,其含义可以近似认为是从下一个状态开始,按照既定策略玩下去,未来能赚到的总回报的折现值,取平均是多少? 这一项中的 γ \gamma γ是折扣因子,这是对未来收益的"打折"。因为"明天的钱不如今天的钱值钱"。如果 γ = 0 \gamma=0 γ=0,智能体是"短视"的,完全不看未来;如果 γ = 1 \gamma=1 γ=1,智能体是"深谋远虑"的,非常看重长远利益。这一项的第二个求和符号含义是:在当前状态 s s s下,选定的动作 a a a,由于环境具有随机性,执行 a a a后可能会转移到不同的状态 s ′ s' s′,不同的状态 s ′ s' s′具有不同的状态值 v π ( s ′ ) v_\pi(s') vπ(s′),此时求 ∑ s ′ ∈ S p ( s ′ ∣ s , a ) v π ( s ′ ) \sum_{s'\in\mathcal{S}}p(s'|s,a)v_\pi(s') ∑s′∈Sp(s′∣s,a)vπ(s′)得到的就是一个条件期望(即在状态 s s s下执行动作 a a a,能得到的平均奖励);这一项的第一个求和符号的含义,在状态 s s s下,可能会以概率 π ( a ∣ s ) \pi(a|s) π(a∣s)选择不同的动作 a a a,此时求 ∑ a ∈ A π ( a ∣ s ) ∑ s ′ ∈ S p ( s ′ ∣ s , a ) v π ( s ′ ) \sum_{a\in\mathcal{A}}\pi(a|s)\sum_{s'\in\mathcal{S}}p(s'|s,a)v_\pi(s') ∑a∈Aπ(a∣s)∑s′∈Sp(s′∣s,a)vπ(s′)得到的就是全期望,即以概率 π ( a ∣ s ) \pi(a|s) π(a∣s)选择不同的动作 a a a,得到了未来奖励的期望值。

贝尔曼方程清晰地描述了不同状态值之间的关系,以及如何通过迭代的方式求解状态值。此外,由于状态值可用于评价策略的优劣,因此,根据贝尔曼方程求解某一策略的状态值的过程称为策略评价。

3.策略迭代

显式地维护一个策略,通过交替进行"策略评估"和"策略改进"两个步骤来寻找最优解。

  • 工作原理

    • 1.策略评估:锁定当前的策略 π \pi π,然后通过反复计算,算出在这个策略下每个状态 的真实价值 V π ( s ) V_\pi(s) Vπ(s) 。这一步是为了搞清楚当前这个"行为指南"到底有多好。

    • 2.策略改进:基于刚刚计算出的价值函数,对每个状态进行检查,看是否存在一个动作,能比当前策略选择的动作带来更高的价值。如果有,则更新策略。如果策略不再发生变化,说明已经找到了最优策略,算法结束。

  • 特点:逻辑清晰,通常收敛所需的总轮数较少,但每一轮中的"策略评估"步骤需要多次迭代才能完成,计算成本较高

算法:策略迭代算法
初始化:已知模型,即任意(s,a)对应的 p ( r ∣ s , a ) p(r|s,a) p(r∣s,a)和 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a),初始策略 π 0 \pi_0 π0。
目标 :求解最优状态值和最优策略。
当 v π k v_{{\pi}_k} vπk 未收敛时,进行如下迭代:
策略评价:
选择初始值 v π k ( 0 ) v^{(0)}_{{\pi}_k} vπk(0)
当 v π k ( j ) v^{(j)}_{{\pi}_k} vπk(j)未收敛时
对每个状态 s ∈ S s\in\mathcal{S} s∈S
v π k ( j + 1 ) ( s ) = ∑ a π k ( a ∣ s ) [ ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( j ) ] v^{(j+1)}{{\pi}k}(s)=\sum{a}\pi_k(a|s)[\sum{r}p(r|s,a)r+\gamma \sum_{s'}p(s'|s,a)v^{(j)}_{{\pi}_k}] vπk(j+1)(s)=∑aπk(a∣s)[∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(j)]
策略改进:
对每个状态 s ∈ S s\in\mathcal{S} s∈S
对每个动作 a ∈ A ( s ) a\in\mathcal{A(s)} a∈A(s)
q π k ( s , a ) = ∑ r p ( r ∣ s , a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v π k ( s ′ ) q_{{\pi}k}(s,a)=\sum{r}p(r|s,a)r+\gamma \sum_{s'}p(s'|s,a)v_{{\pi}_k}(s') qπk(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vπk(s′)
a k ∗ ( s ) = a r g m a x a q k ( s , a ) a^*_k(s)=argmax_aq_k(s,a) ak∗(s)=argmaxaqk(s,a)
π k + 1 ( a ∣ s ) = 1 \pi_{k+1}(a|s)=1 πk+1(a∣s)=1 如果 a = a k ∗ a=a^*k a=ak∗;否则 π k + 1 ( a ∣ s ) = 0 \pi{k+1}(a|s)=0 πk+1(a∣s)=0

4.值迭代

不显式地维护一个策略,直接通过贝尔曼最优方程,将策略改进和价值评估合并为一步,假设每一步都是最优的。

  • 工作原理:算法从一个任意的价值函数开始。在每一轮迭代中,它会遍历所有状态,并对每个状态尝试所有可能的动作,计算出动作价值(Q值)。然后,它会贪婪地选择那个能带来最大Q值的动作,并将该最大值作为这个状态的新价值。这个过程不断重复,直到价值函数收敛。最后,通过在每个状态下选择最优动作,从收敛的价值函数中提取出最优策略

  • 特点:实现简单,不需要显式地维护一个策略,每轮迭代的计算量相对较小

直观类比:

想象你在解一个复杂的方程 x = f ( x ) x=f(x) x=f(x)。

  • 你可以以尝试直接代入数值,比如 x 0 = 0 x_0=0 x0=0, 然后计算 x 1 = f ( x 0 ) x_1=f(x_0) x1=f(x0) ,再算 x 2 = f ( x 1 ) x_2=f(x_1) x2=f(x1)...

  • 如果这个过程最终稳定在一个值上,那么这个值就是方程的解。

值迭代就是这样做的:

  • 它把 v ∗ ( s ) v^*(s) v∗(s) 看作一个未知数。

  • 它用一个近似值 v k ( s ) v_k(s) vk(s) 代入右边。

  • 计算出新的 v k + 1 ( s ) v_{k+1}(s) vk+1(s)

  • 重复直到不再变化

所以,值迭代 = 用迭代法求解贝尔曼最优方程的不动点。

算法:值迭代算法
初始化:已知模型,即任意(s,a)对应的 p ( r ∣ s , a ) p(r|s,a) p(r∣s,a)和 p ( s ′ ∣ s , a ) p(s'|s,a) p(s′∣s,a),初始值 v 0 v_0 v0。
目标 :求解最优状态值和最优策略。
当 v k v_k vk尚未收敛时(例如 v k − v k − 1 v_k-v_{k-1} vk−vk−1 的范数大于给定阈值时),进行如下迭代:
对每个状态 s ∈ S s\in\mathcal{S} s∈S
对每个动作 a ∈ A ( s ) a\in\mathcal{A(s)} a∈A(s)
计算 q q q值: q k ( s , a ) = ∑ r p ( r , s a ) r + γ ∑ s ′ p ( s ′ ∣ s , a ) v k ( s ′ ) q_k(s,a)=\sum_{r}p(r,sa)r+\gamma \sum_{s'}p(s'|s,a)v_k(s') qk(s,a)=∑rp(r,sa)r+γ∑s′p(s′∣s,a)vk(s′)
最大价值动作: a k ∗ ( s ) = a r g m a x a q k ( s , a ) a^*_k(s)=argmax_aq_k(s,a) ak∗(s)=argmaxaqk(s,a)
策略更新: π k + 1 ( a ∣ s ) = 1 \pi_{k+1}(a|s)=1 πk+1(a∣s)=1 如果 a = a k ∗ a=a^*k a=ak∗;否则 π k + 1 ( a ∣ s ) = 0 \pi{k+1}(a|s)=0 πk+1(a∣s)=0
值更新: v k + 1 ( s ) = m a x a q k ( s , a ) v_{k+1}(s)=max_aqk(s,a) vk+1(s)=maxaqk(s,a)

5.为什么说值迭代过程中生成的值不是状态值?

在值迭代(Value Iteration)的过程中,生成的中间值不被认为是严格意义上的"状态值"(State Value),主要原因在于它们并不对应于任何一个具体的、稳定的策略 。在强化学习中,一个"状态值" 𝑉 π ( 𝑠 ) 𝑉_\pi(𝑠) Vπ(s)必须满足一个核心条件:它必须是某个特定策略 π \pi π 下的期望回报,并且必须满足该策略的贝尔曼方程。

  • 策略迭代(Policy Iteration): 在这个算法中,每一步迭代都有一个明确的策略 π k \pi_k πk 。算法会耐心地计算这个策略下的真实状态值(通过多次迭代求解 V π ( k ) V_\pi(k) Vπ(k) ),直到收敛。因此,策略迭代过程中的中间值,都是某个真实策略的状态值

  • 值迭代(Value Iteration): 值迭代走了一条捷径。它并不想等待当前策略的值完全收敛,而是"走一步看一步"。它在更新值的时候,隐含的策略其实是在不断剧烈变化的 。因此,当前计算出的 V k V_k Vk并不满足任何一个固定策略的贝尔曼方程,它只是一个向最优值逼近的"中间变量"

在策略迭代中,我们需要对一个策略进行多次(甚至无穷次)的值更新,直到 V V V 稳定下来,这叫做"策略评估"。而值迭代只做了一次(或极少数几次)评估就急着更新策略了。因为评估过程被强行中断,所以得到的 V k V_k Vk 只是一个粗糙的近似值,无法代表任何实际策略的真实性能。

简单来说,值迭代过程中的中间值不是状态值,是因为它"算得不够彻底"。它没有耐心去计算当前策略下的真实回报,而是为了追求计算速度,牺牲了中间结果的"合法性"。只有当算法跑完最后一轮,收敛的那一刻,它才变回那个我们想要的、对应于最优策略的状态值。

相关推荐
NAGNIP18 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab19 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab19 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP1 天前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年1 天前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼1 天前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS1 天前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区1 天前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈1 天前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang1 天前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx