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

《强化学习数学原理》学习笔记9——值迭代算法

一、值迭代算法是什么

值迭代(Value Iteration)是强化学习里求解贝尔曼最优方程的经典算法,核心是通过不断迭代更新状态价值,最终得到最优状态价值和最优策略。

(一)迭代更新的数学基础

值迭代的迭代公式为,见博文式(2):
vk+1=max⁡π∈Π(rπ+γPπvk),k=0,1,2,…(1)v_{k + 1} = \max_{\pi \in \Pi} (r_{\pi} + \gamma P_{\pi} v_k), \quad k = 0, 1, 2, \dots \tag{1} vk+1=πΠmax(rπ+γPπvk),k=0,1,2,(1)
这里 vkv_kvk 是第 kkk 次迭代的状态价值向量,rπr_{\pi}rπ 是策略 π\piπ 下的即时奖励向量,PπP_{\pi}Pπ 是策略 π\piπ 对应的状态转移矩阵,γ\gammaγ 是折扣因子。

从压缩映射的角度看,因为 γ<1\gamma < 1γ<1对于任意初始状态价值 v0,v1v_0, v_1v0,v1,当 k→∞k \to \inftyk 时,∥vk+1−vk∥\|v_{k + 1} - v_k\|vk+1vk 会指数级收敛到 0。不过,仅 ∥vk+1−vk∥→0\|v_{k + 1} - v_k\| \to 0vk+1vk0 还不够证明 {vk}\{v_k\}{vk} 收敛,需进一步分析 m>nm > nm>n 时的 ∥vm−vn∥\|v_m - v_n\|vmvn

∥vm−vn∥\|v_m - v_n\|vmvn 拆分为:
∥vm−vn∥=∥vm−vm−1+vm−1−⋯−vn+1+vn+1−vn∥(2)\|v_m - v_n\| = \|v_m - v_{m - 1} + v_{m - 1} - \cdots - v_{n + 1} + v_{n + 1} - v_n\| \tag{2} vmvn=vmvm1+vm1vn+1+vn+1vn(2)
根据范数的三角不等式(∥a+b∥≤∥a∥+∥b∥\|a + b\| \leq \|a\| + \|b\|a+ba+b),上式可推出:
∥vm−vn∥≤∥vm−vm−1∥+⋯+∥vn+1−vn∥(3)\|v_m - v_n\| \leq \|v_m - v_{m - 1}\| + \cdots + \|v_{n + 1} - v_n\| \tag{3} vmvnvmvm1++vn+1vn(3)
又因为 ∥vk+1−vk∥≤γk∥v1−v0∥\|v_{k + 1} - v_k\| \leq \gamma^k \|v_1 - v_0\|vk+1vkγkv1v0,代入上式得:
∥vm−vn∥≤γm−1∥v1−v0∥+⋯+γn∥v1−v0∥=γn(γm−1−n+⋯+1)∥v1−v0∥≤γn(1+γ+⋯+γm−1−n+γm−n+⋯)∥v1−v0∥\begin{align*} \|v_m - v_n\| &\leq \gamma^{m - 1} \|v_1 - v_0\| + \cdots + \gamma^n \|v_1 - v_0\| \\ &= \gamma^n (\gamma^{m - 1 - n} + \cdots + 1) \|v_1 - v_0\| \\ &\leq \gamma^n (1 + \gamma + \cdots + \gamma^{m-1-n} + \gamma^{m-n} + \cdots) \|v_1 - v_0\| \tag{4} \end{align*} vmvnγm1v1v0++γnv1v0=γn(γm1n++1)v1v0γn(1+γ++γm1n+γmn+)v1v0(4)
等比数列 1+γ+γ2+⋯1 + \gamma + \gamma^2 + \cdots1+γ+γ2+ 的和为 11−γ\frac{1}{1 - \gamma}1γ1(因 γ<1\gamma < 1γ<1),所以:
∥vm−vn∥≤γn1−γ∥v1−v0∥(5)\|v_m - v_n\| \leq \frac{\gamma^n}{1 - \gamma} \|v_1 - v_0\| \tag{5} vmvn1γγnv1v0(5)
这表明,对任意 ε>0\varepsilon > 0ε>0,总能找到 NNN,当 m,n>Nm, n > Nm,n>N 时,∥vm−vn∥<ε\|v_m - v_n\| < \varepsilonvmvn<ε,即 {vk}\{v_k\}{vk} 是柯西序列,必然收敛到极限 v∗=lim⁡k→∞vkv^* = \lim_{k \to \infty} v_kv=limkvkv∗v^*v 就是最优状态价值。

(二)迭代的两步操作

值迭代算法中,每次迭代分为两个步骤:

  1. 策略更新步:在第 kkk 次迭代,根据当前状态价值 vkv_kvk,找到能最大化 rπ+γPπvkr_{\pi} + \gamma P_{\pi} v_krπ+γPπvk 的策略 πk+1\pi_{k + 1}πk+1,即:
    πk+1=arg⁡max⁡π(rπ+γPπvk)(6)\pi_{k + 1} = \arg\max_{\pi} (r_{\pi} + \gamma P_{\pi} v_k) \tag{6} πk+1=argπmax(rπ+γPπvk)(6)
    对于每个状态 sss,要找到使 ∑aπ(a∣s)(∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′))\sum_{a} \pi(a|s) \left( \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a)v_k(s') \right)aπ(as)(rp(rs,a)r+γsp(ss,a)vk(s)) 最大的策略,最优策略是确定性贪婪策略:
    πk+1(a∣s)={1,a=ak∗(s)0,a≠ak∗(s)(7)\pi_{k + 1}(a|s) = \begin{cases} 1, & a = a_k^*(s) \\ 0, & a \neq a_k^*(s) \tag{7} \end{cases} πk+1(as)={1,0,a=ak(s)a=ak(s)(7)
    其中 ak∗(s)=arg⁡max⁡aqk(s,a)a_k^*(s) = \arg\max_{a} q_k(s, a)ak(s)=argmaxaqk(s,a)qk(s,a)=∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′)q_k(s, a) = \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a)v_k(s')qk(s,a)=rp(rs,a)r+γsp(ss,a)vk(s)。若 ak∗(s)a_k^*(s)ak(s) 有多个解,也就是多个动作具有相同的最大动作价值,任选其一不影响算法收敛,这种选最大 qk(s,a)q_k(s, a)qk(s,a) 对应动作的策略就是贪婪策略。
  2. 价值更新步:用新策略 πk+1\pi_{k + 1}πk+1 计算新的状态价值 vk+1v_{k + 1}vk+1,公式为:
    vk+1=rπk+1+γPπk+1vk(8)v_{k + 1} = r_{\pi_{k + 1}} + \gamma P_{\pi_{k + 1}} v_k \tag{8} vk+1=rπk+1+γPπk+1vk(8)
    对每个状态 sss,有:
    vk+1(s)=∑aπk+1(a∣s)(∑rp(r∣s,a)r+γ∑s′p(s′∣s,a)vk(s′))(9)v_{k + 1}(s) = \sum_{a} \pi_{k + 1}(a|s) \left( \sum_{r} p(r|s, a)r + \gamma \sum_{s'} p(s'|s, a)v_k(s') \right) \tag{9} vk+1(s)=aπk+1(as)(rp(rs,a)r+γsp(ss,a)vk(s))(9)
    将贪婪策略代入,可得 vk+1(s)=max⁡aqk(s,a)v_{k + 1}(s) = \max_{a} q_k(s, a)vk+1(s)=maxaqk(s,a)

总结一下,值迭代步骤如下所示:

已知vk(s)→计算qk(s,a)→计算新策略πk+1(s)→由新策略得到新价值函数 vk+1(s)=max⁡aqk(s,a)已知v_k(s) \to 计算q_k(s, a) \to \text{计算新策略} \pi_{k+1}(s) \to \text{由新策略得到新价值函数 } v_{k+1}(s) = \max_a q_k(s, a)已知vk(s)计算qk(s,a)计算新策略πk+1(s)由新策略得到新价值函数 vk+1(s)=maxaqk(s,a)

参考书中的伪代码:
在这里插入图片描述

三、直观示例:网格世界中的值迭代

以书中一个 2×22 \times 22×2 网格(含一个禁止区域)为例,目标区域是 s4s_4s4(如下图所示),奖励设置为:边界和禁止区域奖励 rboundary=rforbidden=−1r_{\text{boundary}} = r_{\text{forbidden}} = -1rboundary=rforbidden=1,目标区域奖励 rtarget=1r_{\text{target}} = 1rtarget=1,折扣率 γ=0.9\gamma = 0.9γ=0.9
在这里插入图片描述

(一) 初始化

首先,我们需要对初始状态价值进行设定。在这个示例中,为了简化计算且不失一般性,我们令初始状态价值 v0(s1)=v0(s2)=v0(s3)=v0(s4)=0v_0(s_1) = v_0(s_2) = v_0(s_3) = v_0(s_4) = 0v0(s1)=v0(s2)=v0(s3)=v0(s4)=0。这就是给算法一个起始点,让它从这里开始探索各个状态的价值。
同时设定五个动作:a1,a2,a3,a4,a5a_1,a_2,a_3,a_4,a_5a1,a2,a3,a4,a5 分别表示向上,右,下,左,原地不动。

(二)第 k=0k = 0k=0 次迭代

1. 计算 qqq

在已确定每一个状态选择的动作条件下,动作价值就等于此时的状态价值,也就是说此时:
q(a,s)=v(s)=rπ+γPπv(s)(10)q(a,s) = v(s) = r_\pi + \gamma P_{\pi} v(s) \tag{10} q(a,s)=v(s)=rπ+γPπv(s)(10)
根据每个状态 - 动作对的 qqq 值计算公式,计算得到 q−tabelq-tabelqtabel

q-tablea1a_1a1a2a_2a2a3a_3a3a4a_4a4a5a_5a5
s1s_1s1−1+γv(s1)-1 + \gamma v(s_1)1+γv(s1)−1+γv(s2)-1 + \gamma v(s_2)1+γv(s2)0+γv(s3)0 + \gamma v(s_3)0+γv(s3)−1+γv(s1)-1 + \gamma v(s_1)1+γv(s1)0+γv(s1)0 + \gamma v(s_1)0+γv(s1)
s2s_2s2−1+γv(s2)-1 + \gamma v(s_2)1+γv(s2)−1+γv(s2)-1 + \gamma v(s_2)1+γv(s2)1+γv(s4)1 + \gamma v(s_4)1+γv(s4)0+γv(s1)0 + \gamma v(s_1)0+γv(s1)−1+γv(s2)-1 + \gamma v(s_2)1+γv(s2)
s3s_3s30+γv(s1)0 + \gamma v(s_1)0+γv(s1)1+γv(s4)1 + \gamma v(s_4)1+γv(s4)−1+γv(s3)-1 + \gamma v(s_3)1+γv(s3)−1+γv(s3)-1 + \gamma v(s_3)1+γv(s3)0+γv(s3)0 + \gamma v(s_3)0+γv(s3)
s4s_4s4−1+γv(s2)-1 + \gamma v(s_2)1+γv(s2)−1+γv(s4)-1 + \gamma v(s_4)1+γv(s4)−1+γv(s4)-1 + \gamma v(s_4)1+γv(s4)0+γv(s3)0 + \gamma v(s_3)0+γv(s3)1+γv(s4)1 + \gamma v(s_4)1+γv(s4)

现在,把初始的状态价值 v0(si)=0v_0(s_i) = 0v0(si)=0 代入这些公式,就可以计算出各状态 - 动作对的 qqq 值,结果如下表所示,每一行中标粗的:

q-tablea1a_1a1a2a_2a2a3a_3a3a4a_4a4a5a_5a5
s1s_1s1−1-11−1-11000−1-11000
s2s_2s2−1-11−1-11111000−1-11
s3s_3s3000111−1-11−1-11000
s4s_4s4−1-11−1-11−1-11000111
2. 策略更新

策略更新的原则是为每个状态选择 qqq 值最大的动作。观察表中每一行的 qqq 值,我们依据贪婪原则得到此时的最优策略 π1\pi_1π1π1(a5∣s1)=1\pi_1(a_5|s_1) = 1π1(a5s1)=1(状态 s1s_1s1 选择动作 a5a_5a5)、π1(a3∣s2)=1\pi_1(a_3|s_2) = 1π1(a3s2)=1(状态 s2s_2s2 选择动作 a3a_3a3)、π1(a2∣s3)=1\pi_1(a_2|s_3) = 1π1(a2s3)=1(状态 s3s_3s3 选择动作 a2a_2a2)、π1(a5∣s4)=1\pi_1(a_5|s_4) = 1π1(a5s4)=1(状态 s4s_4s4 选择动作 a5a_5a5)。

把这个策略可视化(如下图所示),我们能发现,在状态 s1s_1s1 处,算法选择了静止的动作。此时这个策略并不是最优的,不过值得注意的是,状态 s1s_1s1 下动作 a5a_5a5a3a_3a3qqq 值是相同的,所以在实际中可以随机选择其中一个动作(本例选 a5a_5a5)。
在这里插入图片描述

3. 价值更新

价值更新是将每个状态的 vvv 值更新为该状态下最大的 qqq 值。从表中找到每个状态的最大 qqq 值,更新后得到:v1(s1)=0v_1(s_1) = 0v1(s1)=0v1(s2)=1v_1(s_2) = 1v1(s2)=1v1(s3)=1v_1(s_3) = 1v1(s3)=1v1(s4)=1v_1(s_4) = 1v1(s4)=1

(三)第 k=1k = 1k=1 次迭代

1. 计算 qqq

现在,我们把上一次迭代得到的状态价值 v1(si)v_1(s_i)v1(si) 代入 qqq 值计算公式(表 4.1),得到新的 qqq 值,结果如下表所示:

q-tablea1a_1a1a2a_2a2a3a_3a3a4a_4a4a5a_5a5
s1s_1s1−1+γ×0-1 + \gamma \times 01+γ×0−1+γ×1-1 + \gamma \times 11+γ×10+γ×10 + \gamma \times 10+γ×1−1+γ×0-1 + \gamma \times 01+γ×00+γ×00 + \gamma \times 00+γ×0
s2s_2s2−1+γ×1-1 + \gamma \times 11+γ×1−1+γ×1-1 + \gamma \times 11+γ×11+γ×11 + \gamma \times 11+γ×10+γ×00 + \gamma \times 00+γ×0−1+γ×1-1 + \gamma \times 11+γ×1
s3s_3s30+γ×00 + \gamma \times 00+γ×01+γ×11 + \gamma \times 11+γ×1−1+γ×1-1 + \gamma \times 11+γ×1−1+γ×1-1 + \gamma \times 11+γ×10+γ×10 + \gamma \times 10+γ×1
s4s_4s4−1+γ×1-1 + \gamma \times 11+γ×1−1+γ×1-1 + \gamma \times 11+γ×1−1+γ×1-1 + \gamma \times 11+γ×10+γ×10 + \gamma \times 10+γ×11+γ×11 + \gamma \times 11+γ×1
2. 策略更新

同样按照选择各状态下最大 qqq 值对应动作的原则,得到策略 π2\pi_2π2π2(a3∣s1)=1\pi_2(a_3|s_1) = 1π2(a3s1)=1π2(a3∣s2)=1\pi_2(a_3|s_2) = 1π2(a3s2)=1π2(a2∣s3)=1\pi_2(a_2|s_3) = 1π2(a2s3)=1π2(a5∣s4)=1\pi_2(a_5|s_4) = 1π2(a5s4)=1。将这个策略可视化(如下图所示),可以看到此时的策略已经是最优的了。

在这里插入图片描述

3. 价值更新

更新状态价值为:v2(s1)=γ×1v_2(s_1) = \gamma \times 1v2(s1)=γ×1v2(s2)=1+γ×1v_2(s_2) = 1 + \gamma \times 1v2(s2)=1+γ×1v2(s3)=1+γ×1v_2(s_3) = 1 + \gamma \times 1v2(s3)=1+γ×1v2(s4)=1+γ×1v_2(s_4) = 1 + \gamma \times 1v2(s4)=1+γ×1

(四)后续迭代

在这个简单的示例中,仅仅经过两次迭代就得到了最优策略。但在更复杂的场景中,我们需要进行更多次的迭代,直到状态价值 vkv_kvk 收敛,也就是当 ∥vk+1−vk∥\|v_{k + 1} - v_k\|vk+1vk 小于我们预先设定的阈值时,才停止迭代。

通过这个示例,可以清晰地看到价值迭代算法是如何通过不断更新 qqq 值、策略和状态价值,最终找到最优策略的。

四、总结

值迭代算法通过“策略更新 - 价值更新”的迭代过程,利用压缩映射的收敛性,能从任意初始状态价值出发,逐步逼近最优状态价值和最优策略,且在简单场景下收敛速度较快,是理解强化学习中策略与价值交互优化的基础方法。

http://www.dtcms.com/a/449361.html

相关文章:

  • 网站建设 统一标准体系什么是网络销售
  • 网站开发语言有哪几种临沂专业网站制作
  • 花店网站建设方案网站木马文件删除
  • Bash 的基本语法总结
  • 网站怎么进行优化网站开发 英文文章
  • 自动驾驶决策规划算法(开幕式)
  • 从零起步学习Redis || 第八章:过期删除策略与内存淘汰策略详解及实战使用(LRU和LFU算法详解)
  • 自动驾驶中的传感器技术65——Navigation(2)
  • 知识体系_scala_利用scala和spark构建数据应用
  • 备案后网站打不开沈阳营销网站建设
  • AI编辑器(FIM补全,AI扩写)简介
  • 优设网设计师导航最新seo快排技术qq
  • 【C++】哈希和哈希封装unordered_map、unordered_set
  • VS Code安装即环境配置
  • 从 LiveData 到 Flow:状态、事件、背压与回调全面实战
  • 数据库与缓存数据一致性的全部方案
  • 算命公司网站建设制作开发方案网站商城怎么做app
  • 遗传算法解决TSP问题
  • MVC的含义
  • DBSCAN 密度聚类算法
  • 【极客日常】用Eino+Ollama低成本研发LLM的Agent
  • 《深入 Django ORM:select_related 与 prefetch_related 的实战剖析与性能优化指南》
  • 男科医院网站模板视频加字幕软件app
  • 网站开发自荐信江门专业网站制作费用
  • nat address-group 概念及题目
  • 深度学习模型构建的本质——“核心四要素+任务适配逻辑”
  • 基于SpringBoot+Vue的志行交通法规在线模拟考试(AI问答、WebSocket即时通讯、Echarts图形化分析、随机测评)
  • 厦门建网站费用一览表网站设计流行趋势
  • Docker Compose 搭建 LNMP 环境并部署 WordPress 论坛
  • 无锡企业网站制作哪家好前端的网站重构怎么做