文章目录

  • 前言
  • MDP上Bellman方程的收敛性
    • Value Functions as Vectors
    • 贝尔曼算子Bπ,B∗\bf{B}_{\pi},\bf{B}_{*}Bπ​,B∗​
    • Contraction and Monotonicity of Operators
  • 求解
    • Policy Iteration
      • Policy Evaluation
      • Policy Improvement
    • Value Iteration
    • Greedy Policy from Optimal VF is an Optimal Policy

前言

贝尔曼方程和算子算是RL的基础了,偶然间看到有人总结这个slides的内容,但其实不易懂,排版也看不习惯,我觉得还是要自己整理一下。

主要针对有模型场景,相关资料在末尾有引用。

MDP上Bellman方程的收敛性

Value Functions as Vectors

首先将值函数表示为向量。

状态空间SSS有nnn个状态:{s1,⋯,sn}\{s_1,\cdots,s_n\}{s1​,⋯,sn​};动作空间AAA有mmm个动作:{a1,⋯,am}\{a_1,\cdots,a_m\}{a1​,⋯,am​}。这个阐述也能很容易扩展到连续状态/动作空间。

定义随机策略π(a∣s)\pi(a|s)π(a∣s),确定性策略为π(s)=a\pi(s)=aπ(s)=a。

考虑一个nnn维空间Rn\mathbb{R}^nRn,每一维对应SSS中的一个状态。将值函数(VF)v:S→R\textbf{v}:S\rightarrow\mathbb{R}v:S→R当做这个空间的一个向量,坐标为:[v(s1),⋯,v(sn)][\textbf{v}(s_1),\cdots,\textbf{v}(s_n)][v(s1​),⋯,v(sn​)]。

策略π\piπ的值函数记做vπ:S→R\textbf{v}_{\pi}:S\rightarrow\mathbb{R}vπ​:S→R,最优值函数记做v∗:S→R\textbf{v}_{*}:S\rightarrow\mathbb{R}v∗​:S→R,满足:
v∗(s)=max⁡πvπ(s)\textbf{v}_{*}(s)=\max_{\pi}\textbf{v}_{\pi}(s)v∗​(s)=πmax​vπ​(s)

Rsa\mathcal{R}_s^aRsa​记做状态sss执行动作aaa的期望奖赏,Ps,s′a\mathcal{P}_{s,s'}^aPs,s′a​记做状态sss执行动作aaa转移到s′s's′的概率。这两个与环境有关。

定义策略π\piπ下状态的期望奖赏Rπ(s)=∑a∈Aπ(a∣s)Rsa\bf{R}_{\pi}(s)=\sum_{a\in A}\pi(a|s)\mathcal{R}_s^aRπ​(s)=∑a∈A​π(a∣s)Rsa​,Rπ\bf{R}_{\pi}Rπ​是向量[Rπ(s1),⋯,Rπ(sn)][\bf{R}_{\pi}(s_1),\cdots,\bf{R}_{\pi}(s_n)][Rπ​(s1​),⋯,Rπ​(sn​)]。

定义策略π\piπ下转移概率Pπ(s,s′)=∑a∈Aπ(a∣s)Ps,s′a\bf{P}_{\pi}(s,s')=\sum_{a\in A}\pi(a|s)\mathcal{P}_{s,s'}^aPπ​(s,s′)=∑a∈A​π(a∣s)Ps,s′a​,Pπ\bf{P}_{\pi}Pπ​是矩阵[Pπ(si,sj)][\bf{P}_{\pi}(s_i,s_j)][Pπ​(si​,sj​)],1≤i,j≤n1\leq i,j\leq n1≤i,j≤n。

上面这两个与策略有关。

γ\gammaγ是MDP的折扣因子。

贝尔曼算子Bπ,B∗\bf{B}_{\pi},\bf{B}_{*}Bπ​,B∗​

定义将一个VF向量转换为另一个VF向量的算子。

贝尔曼期望算子Bπ\bf{B}_{\pi}Bπ​:Bπv=Rπ+γPπv\bf{B}_{\pi}\bf{v}=\bf{R}_{\pi}+\gamma\bf{P}_{\pi}\bf{v}Bπ​v=Rπ​+γPπ​v 是一个线性算子,拥有不动点vπ\bf{v}_{\pi}vπ​满足Bπvπ=vπ\bf{B}_{\pi}\bf{v}_{\pi}=\bf{v}_{\pi}Bπ​vπ​=vπ​。

贝尔曼最优算子(B∗v)(s)=max⁡a(Rsa+γ∑s′∈SPs,s′av(s′))(\bf{B}_*\bf{v})(s)=\max_{a}(\mathcal{R}_s^a+\gamma\sum_{s'\in S}\mathcal{P}_{s,s'}^a\bf{v}(s'))(B∗​v)(s)=maxa​(Rsa​+γ∑s′∈S​Ps,s′a​v(s′)) 是一个非线性算子,拥有不动点v∗\bf{v}_{*}v∗​满足B∗v∗=v∗\bf{B}_{*}\bf{v}_{*}=\bf{v}_{*}B∗​v∗​=v∗​。

定义一个函数GGG将v\bf{v}v映射为确定性贪心策略G(v)G(\bf{v})G(v)形式为:
G(v)(s)=arg max⁡a{Rsa+γ∑s′∈SPs,s′av(s′)}G(\bf{v})(s)=\argmax_a\{\mathcal{R}_s^a+\gamma\sum_{s'\in S}\mathcal{P}_{s,s'}^a{\bf{v}}(s')\}G(v)(s)=aargmax​{Rsa​+γs′∈S∑​Ps,s′a​v(s′)}
对于任意v\bf{v}v,BG(v)v=B∗v\bf{B}_{G(\bf{v})}\bf{v}=\bf{B}_*\bf{v}BG(v)​v=B∗​v

Contraction and Monotonicity of Operators

首先对于有限奖赏的有限MDP,所有值函数都是实数域上的,值函数之间通过L∞L_{\infty}L∞​度量,对于任意两个值函数度量:∥v1−v2∥∞=max⁡s∈S∣v1(s)−v2(s)∣\|{\bf{v}}_1-{\bf{v}}_2\|_{\infty}=\underset{s\in S}{\max}\ |{\bf{v}}_1(s)-{\bf{v}}_2(s)|∥v1​−v2​∥∞​=s∈Smax​ ∣v1​(s)−v2​(s)∣,即使用两个值函数相差最大的状态的值作为两个值函数的度量。

这里已知度量空间(R,L∞)(R, L_{\infty})(R,L∞​)是完备的,具体证明可参考:https://towardsdatascience.com/mathematical-analysis-of-reinforcement-learning-bellman-equation-ac9f0954e19f。

Bπ,B∗\bf{B}_{\pi},\bf{B}_*Bπ​,B∗​都是(R,L∞)(R, L_{\infty})(R,L∞​)上的收缩映射,即:
对于任意两个v1,v2\bf{v}_1,\bf{v}_2v1​,v2​,满足:
∥Bπv1−Bπv2∥∞≤γ∥v1−v2∥∞\|\bf{B}_{\pi}\bf{v}_1-\bf{B}_{\pi}\bf{v}_2\|_{\infty}\leq\gamma \|\bf{v}_1-\bf{v}_2\|_{\infty}∥Bπ​v1​−Bπ​v2​∥∞​≤γ∥v1​−v2​∥∞​

∥B∗v1−B∗v2∥∞≤γ∥v1−v2∥∞\|\bf{B}_*\bf{v}_1-\bf{B}_*\bf{v}_2\|_{\infty}\leq\gamma \|\bf{v}_1-\bf{v}_2\|_{\infty}∥B∗​v1​−B∗​v2​∥∞​≤γ∥v1​−v2​∥∞​
首先证明Bπ\bf{B}_{\pi}Bπ​:
∥Bπv1−Bπv2∥∞=∥Rπ+γPπv1−(Rπ+γPπv2)∥∞=∥γPπv1−γPπv2∥∞=γ∥Pπ(v1−v2)∥∞=γmax⁡iPπ∣v1−v2∣i\begin{aligned} \|\bf{B}_{\pi}\bf{v}_1-\bf{B}_{\pi}\bf{v}_2\|_{\infty} & =\|\bf{R}_{\pi}+\gamma\bf{P}_{\pi}\bf{v}_1-(\bf{R}_{\pi}+\gamma\bf{P}_{\pi}\bf{v}_2)\|_{\infty} \\ & = \|\gamma\bf{P}_{\pi}\bf{v}_1-\gamma\bf{P}_{\pi}\bf{v}_2\|_{\infty} \\ & =\gamma\|\bf{P}_{\pi}(\bf{v}_1-\bf{v}_2)\|_{\infty} \\ & =\gamma\underset{i}{\max}\ {\bf{P}}_{\pi}|{\bf{v}}_1-{\bf{v}}_2|_{i} \end{aligned} ∥Bπ​v1​−Bπ​v2​∥∞​​=∥Rπ​+γPπ​v1​−(Rπ​+γPπ​v2​)∥∞​=∥γPπ​v1​−γPπ​v2​∥∞​=γ∥Pπ​(v1​−v2​)∥∞​=γimax​ Pπ​∣v1​−v2​∣i​​
Pπ\bf{P}_{\pi}Pπ​作为策略π\piπ下每个状态之间的转移概率矩阵,每一位都不大于1,因此可得:
γmax⁡iPπ(v1−v2)i≤γmax⁡i(v1−v2)i=γ∥v1−v2∥∞\begin{aligned} \gamma\underset{i}{\max}\ {\bf{P}}_{\pi}({\bf{v}}_1-{\bf{v}}_2)_{i} & \leq\gamma\underset{i}{\max}\ ({\bf{v}}_1-{\bf{v}}_2)_{i}\\ & =\gamma\|\bf{v}_1-\bf{v}_2\|_{\infty} \end{aligned} γimax​ Pπ​(v1​−v2​)i​​≤γimax​ (v1​−v2​)i​=γ∥v1​−v2​∥∞​​
所以∥Bπv1−Bπv2∥∞≤γ∥v1−v2∥∞\|\bf{B}_{\pi}\bf{v}_1-\bf{B}_{\pi}\bf{v}_2\|_{\infty}\leq\gamma \|\bf{v}_1-\bf{v}_2\|_{\infty}∥Bπ​v1​−Bπ​v2​∥∞​≤γ∥v1​−v2​∥∞​。

然后证明B∗\bf{B}_*B∗​,首先将B∗v\bf{B}_*\bf{v}B∗​v关于sss展开:
B∗v={max⁡a(Rs1a+γ∑s′∈SPs1,s′av(s′)),max⁡a(Rs2a+γ∑s′∈SPs2,s′av(s′)),⋯,max⁡a(Rsna+γ∑s′∈SPsn,s′av(s′))}\begin{aligned} \bf{B}_*\bf{v}=\{ &\max_{a}(\mathcal{R}_{s_1}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}(s')),\\ &\max_{a}(\mathcal{R}_{s_2}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_2,s'}^a\bf{v}(s')),\\ &\cdots,\\ & \max_{a}(\mathcal{R}_{s_n}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_n,s'}^a\bf{v}(s'))\} \end{aligned} B∗​v={​amax​(Rs1​a​+γs′∈S∑​Ps1​,s′a​v(s′)),amax​(Rs2​a​+γs′∈S∑​Ps2​,s′a​v(s′)),⋯,amax​(Rsn​a​+γs′∈S∑​Psn​,s′a​v(s′))}​
然后可得:
B∗v1−B∗v2={max⁡a(Rs1a+γ∑s′∈SPs1,s′av1(s′))−max⁡a(Rs1a+γ∑s′∈SPs1,s′av2(s′)),max⁡a(Rs2a+γ∑s′∈SPs2,s′av1(s′))−max⁡a(Rs2a+γ∑s′∈SPs2,s′av2(s′)),⋯,max⁡a(Rsna+γ∑s′∈SPsn,s′av1(s′))−max⁡a(Rsna+γ∑s′∈SPsn,s′av2(s′))}\begin{aligned} \bf{B}_*\bf{v}_1-\bf{B}_*\bf{v}_2=\{ &\max_{a}(\mathcal{R}_{s_1}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}_1(s'))-\max_{a}(\mathcal{R}_{s_1}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}_2(s')),\\ &\max_{a}(\mathcal{R}_{s_2}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_2,s'}^a\bf{v}_1(s'))-\max_{a}(\mathcal{R}_{s_2}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_2,s'}^a\bf{v}_2(s')),\\ &\cdots,\\ & \max_{a}(\mathcal{R}_{s_n}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_n,s'}^a\bf{v}_1(s'))-\max_{a}(\mathcal{R}_{s_n}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_n,s'}^a\bf{v}_2(s'))\} \end{aligned} B∗​v1​−B∗​v2​={​amax​(Rs1​a​+γs′∈S∑​Ps1​,s′a​v1​(s′))−amax​(Rs1​a​+γs′∈S∑​Ps1​,s′a​v2​(s′)),amax​(Rs2​a​+γs′∈S∑​Ps2​,s′a​v1​(s′))−amax​(Rs2​a​+γs′∈S∑​Ps2​,s′a​v2​(s′)),⋯,amax​(Rsn​a​+γs′∈S∑​Psn​,s′a​v1​(s′))−amax​(Rsn​a​+γs′∈S∑​Psn​,s′a​v2​(s′))}​
这里虽然没有区分动作符号,但B∗v1(s)\bf{B}_*\bf{v}_1(s)B∗​v1​(s)与B∗v2(s)\bf{B}_*\bf{v}_2(s)B∗​v2​(s)的最优动作不一定一样。对于其中的每一个元素,我们可得:
∥B∗v1(s1)−B∗v2(s1)∥∞=∥max⁡a(Rs1a+γ∑s′∈SPs1,s′av1(s′))−max⁡a(Rs1a+γ∑s′∈SPs1,s′av2(s′))∥∞≤∥max⁡a(γ∑s′∈SPs1,s′av1(s′)−γ∑s′∈SPs1,s′av2(s′))∥∞=γmax⁡a,s′∑s′∈SPs1,s′a(v1(s′)−v2(s′))=γ∥v1(s′)−v2(s′)∥∞max⁡a,s′∑s′∈SPs1,s′a=γ∥v1(s′)−v2(s′)∥∞\begin{aligned} \|\bf{B}_*\bf{v}_1(s_1)-\bf{B}_*\bf{v}_2(s_1)\|_{\infty}&=\|\max_{a}(\mathcal{R}_{s_1}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}_1(s'))-\max_{a}(\mathcal{R}_{s_1}^a+\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}_2(s'))\|_{\infty}\\ &\leq \|\max_a(\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}_1(s')-\gamma\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\bf{v}_2(s'))\|_{\infty}\\ &=\gamma\max_{a,s'}\ \sum_{s'\in S}\mathcal{P}_{s_1,s'}^a(\bf{v}_1(s')-\bf{v}_2(s'))\\ &=\gamma\|{\bf{v}}_1(s')-{\bf{v}}_2(s')\|_{\infty}\max_{a,s'}\ \sum_{s'\in S}\mathcal{P}_{s_1,s'}^a\\ &=\gamma\|{\bf{v}}_1(s')-{\bf{v}}_2(s')\|_{\infty}\\ \end{aligned} ∥B∗​v1​(s1​)−B∗​v2​(s1​)∥∞​​=∥amax​(Rs1​a​+γs′∈S∑​Ps1​,s′a​v1​(s′))−amax​(Rs1​a​+γs′∈S∑​Ps1​,s′a​v2​(s′))∥∞​≤∥amax​(γs′∈S∑​Ps1​,s′a​v1​(s′)−γs′∈S∑​Ps1​,s′a​v2​(s′))∥∞​=γa,s′max​ s′∈S∑​Ps1​,s′a​(v1​(s′)−v2​(s′))=γ∥v1​(s′)−v2​(s′)∥∞​a,s′max​ s′∈S∑​Ps1​,s′a​=γ∥v1​(s′)−v2​(s′)∥∞​​
其中∑s′∈SPs1,s′a=1\sum_{s'\in S}\mathcal{P}_{s_1,s'}^a=1∑s′∈S​Ps1​,s′a​=1,所以上式成立。s′s's′其实同s1s_1s1​都是状态空间SSS中的一个元素,元素之间存在这样的偏序关系,所以证得∥B∗v1−B∗v2∥∞≤γ∥v1−v2∥∞\|\bf{B}_*\bf{v}_1-\bf{B}_*\bf{v}_2\|_{\infty}\leq\gamma \|\bf{v}_1-\bf{v}_2\|_{\infty}∥B∗​v1​−B∗​v2​∥∞​≤γ∥v1​−v2​∥∞​。

在γ∈(0,1)\gamma\in(0,1)γ∈(0,1)时,Bπ,B∗\bf{B}_{\pi},\bf{B}_*Bπ​,B∗​都是(R,L∞)(R, L_{\infty})(R,L∞​)上的收缩映射。

因此,根据Banach不动点定理(非正式地,该定理说,对于完备的度量空间,将压缩映射一遍又一遍地应用到集合的元素上,最终将使我们获得不动点),可以用迭代的方法求Bellman期望算子和Bellman最优算子的不动点,迭代正比于γk\gamma^kγk的速度收敛(其中kkk是迭代次数)。由于Bellman期望算子的不动点就是策略价值,Bellman最优算子的不动点就是最优价值,所以这就意味着我们可以用迭代的方法求得策略的价值或最优价值。

同时可以得出结论:每个MDP都有一个唯一的最优值函数v∗\bf{v}^*v∗。 使用该v∗\bf{v}^*v∗,我们可以得出最佳策略π∗\pi^*π∗。因此证明,对于任何有限的MDP,都存在一个最佳策略π∗\pi^*π∗,使其优于或等于其他所有可能的策略π\piπ。

求解

DP方式求解的主要就两种方法,策略迭代和值迭代,下面分别介绍这两种。

Policy Iteration

策略迭代从一个任意的确定性策略开始,交替进行策略评估和策略改进。这里的策略改进是严格的策略改进,即改进后的策略和改进前的策略是不同的。

对于状态空间和动作空间均有限的Markov决策过程,其可能的确定性策略数是有限的。由于确定性策略总数是有限的,所以在迭代过程中得到的策略序列一定能收敛,并且收敛的结果就是最优策略,这个在策略改进中会有说明。

Policy Evaluation


整体就是从任意值函数v{\bf{v}}v开始,重复应用Bπ\bf{B}_{\pi}Bπ​,就会得到唯一不动点vπ{\bf{v}}_{\pi}vπ​:
lim⁡N→∞BπNv=vπ,for any VF v\lim_{N\to \infty}{\bf{B}}_{\pi}^N{\bf{v}}={\bf{v}}_{\pi}, \text{for any VF }{\bf{v}}N→∞lim​BπN​v=vπ​,for any VF v
也就是对于任意策略,我们总会得到其对应的值函数,这就是策略评估。

这里由于使用确定性策略,也就是贪心策略,所以值函数v(s){\bf{v}}(s)v(s)就是对应动作的q(s,a)q(s,a)q(s,a),但因为可能存在策略改进,所以不一定是max⁡aq(s,a)\max_a q(s,a)maxa​q(s,a)。

迭代策略评估算法具有以下两大意义:一方面,这个策略评估算法将作为策略迭代算法的一部分,用于最优策略的求解;另一方面,在这个策略评估算法的基础上进行修改,可以得到迭代求解最优策略的算法。

Policy Improvement


这个过程类似策略评估,同样是先计算每个动作的值,然后得到贪心策略,如果新的策略与旧的策略不一致,就更新。

正如之前所说,G(v)G({\bf{v}})G(v)代表贪心策略,BG(v)v=B∗v{\bf{B}}_{G({\bf{v}})}{\bf{v}}={\bf{B}}_*{\bf{v}}BG(v)​v=B∗​v,每次策略改进其实就是应用B∗{\bf{B}}_*B∗​,也就是说对于迭代数kkk:
B∗vπk=BG(vπk)vπk=Bπk+1vπk{\bf{B}}_*{\bf{v}}_{\pi_k}={\bf{B}}_{G({\bf{v}}_{\pi_k})}{\bf{v}}_{\pi_k}={\bf{B}}_{\pi_{k+1}}{\bf{v}}_{\pi_k}B∗​vπk​​=BG(vπk​​)​vπk​​=Bπk+1​​vπk​​
由算子定义可知,对于任意策略π\piπ,都有B∗v≥Bπv{\bf{B}}_*{\bf{v}}\ge{\bf{B}}_{\pi}{\bf{v}}B∗​v≥Bπ​v,并且因为策略评估收敛了,有Bπkvπk=vπk{\bf{B}}_{\pi_{k}}{\bf{v}}_{\pi_{k}}={\bf{v}}_{\pi_{k}}Bπk​​vπk​​=vπk​​,所以:
B∗vπk=Bπk+1vπk≥Bπkvπk=vπk{\bf{B}}_*{\bf{v}}_{\pi_k}={\bf{B}}_{\pi_{k+1}}{\bf{v}}_{\pi_k}\geq {\bf{B}}_{\pi_{k}}{\bf{v}}_{\pi_{k}}={\bf{v}}_{\pi_{k}}B∗​vπk​​=Bπk+1​​vπk​​≥Bπk​​vπk​​=vπk​​
因此每次策略改进都是单调递增的。

之后又会进行策略评估,因此策略评估是重复应用Bπk+1{\bf{B}}_{\pi_{k+1}}Bπk+1​​,由上可知,重复应用产生的是单调递增序列,所以改进后策略对应的值函数为:
vπk+1=lim⁡N→∞Bπk+!Nvπk≥vπk{\bf{v}}_{\pi_{k+1}}=\lim_{N\to \infty}{\bf{B}}_{\pi_{k+!}}^N{\bf{v}}_{\pi_k}\geq{\bf{v}}_{\pi_k}vπk+1​​=N→∞lim​Bπk+!​N​vπk​​≥vπk​​
也就是说,策略迭代过程中产生的值函数序列是单调递增的,同时B∗{\bf{B}}_*B∗​只有一个不动点,所以策略迭代会收敛到最优值函数v∗{\bf{v}}_*v∗​。

Value Iteration


值迭代是一种利用迭代求解最优价值函数进而求解最优策略的方法。策略迭代中,策略评价利用Bellman期望方程迭代求解给定策略的值函数。与之相对,值迭代利用Bellman最优方程迭代求解最优策略的值函数,并进而求得最优策略。

值迭代相当于去掉策略评估,也就是不使用Bπ{\bf{B}}_{\pi}Bπ​,只使用B∗{\bf{B}}_{*}B∗​。已知B∗v{\bf{B}}_{*}{\bf{v}}B∗​v是单调递增的运算,之前也证明过其能收敛至唯一不动点,即:
lim⁡N→∞B∗Nv=v∗,for any VF v\lim_{N\to \infty}{\bf{B}}_{*}^N{\bf{v}}={\bf{v}}_{*}, \text{for any VF }{\bf{v}}N→∞lim​B∗N​v=v∗​,for any VF v
所以值迭代可以收敛收敛到最优值函数v∗{\bf{v}}_*v∗​。

Greedy Policy from Optimal VF is an Optimal Policy

可以通过证明两个策略对应的值函数等价证明两个策略等价。

上面已经说过BG(v)v=B∗v{\bf{B}}_{G({\bf{v}})}{\bf{v}}={\bf{B}}_*{\bf{v}}BG(v)​v=B∗​v,所以对于B∗{\bf{B}}_*B∗​的不动点v∗{\bf{v_*}}v∗​有:
BG(v∗)v∗=B∗v∗=v∗{\bf{B}}_{G({\bf{v_*}})}{\bf{v_*}}={\bf{B}}_*{\bf{v_*}}={\bf{v_*}}BG(v∗​)​v∗​=B∗​v∗​=v∗​
不过BG(v){\bf{B}}_{G({\bf{v}})}BG(v)​同样有其不动点vG(v){\bf{v}}_{G({\bf{v}})}vG(v)​,所以有:
vG(v∗)=v∗{\bf{v}}_{G({\bf{v_*}})}={\bf{v}}_{*}vG(v∗​)​=v∗​
也就是说简单地遵循贪心的确定性策略G(v∗)G({\bf{v}}_*)G(v∗​)实际上就实现了最优值函数v∗{\bf{v}}_*v∗​。

换句话说,G(v∗)G({\bf{v}}_*)G(v∗​)是最优确定性策略。

https://towardsdatascience.com/mathematical-analysis-of-reinforcement-learning-bellman-equation-ac9f0954e19f
https://developer.aliyun.com/article/726187
http://blog.franktian.xyz/2020/12/10/%E7%94%A8Bellman%E7%AE%97%E5%AD%90%E7%90%86%E8%A7%A3%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/

通过Bellman算子理解动态规划相关推荐

  1. 【动态规划模型】金矿模型理解动态规划!(精彩的故事)

    对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划.本 ...

  2. 巧妙理解动态规划算法

    我们先来看一个题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶.要求用程序来求出一共有多少种走法. 很显然可以使用暴力破解求出所有的排列组合,但是时间复杂度是指数级的. ...

  3. 简单粗暴地理解动态规划

    动态规划可以说是做题时比较难以理解的算法了,我之前也不是很理解,直到在随机过程中学习了马尔科夫过程后,再看动态规划就觉得很简单了. 本文只是帮助简单粗暴的理解动态规划,熟练地运用需要亲自进行大量的习题 ...

  4. 初学者怎么理解动态规划

    通过金矿模型介绍动态规划 本文转载于https://blog.csdn.net/lyh__521/article/details/46595339 对于动态规划,每个刚接触的人都需要一段时间来理解,特 ...

  5. java动态规划鸡蛋问题_教你彻底理解动态规划——扔鸡蛋问题 Drop Eggs2

    问题 有一个n层的建筑.如果一个鸡蛋从第k层及以上落下,它会碎掉.如果从低于这一层的任意层落下,都不会碎. 有m个鸡蛋,用最坏的情况下实验次数最少的方法去找到k, 返回最坏情况下所需的实验次数. 样例 ...

  6. matlab 背包问题动态规划,从01背包问题理解动态规划---初体验

    这个问题有两种解法,动态规划和贪婪算法.本文仅涉及动态规划. 先不套用动态规划的具体定义,试着想,碰见这种题目,怎么解决? 首先想到的,一般是穷举法,一个一个地试,对于数目小的例子适用,如果容量增大, ...

  7. 【算法】-- LintCode经典算法题理解动态规划

    动态规划有多重要? 科技公司面试必考算法 根据面试经验,一半失败的面试都与动态规划有关 动态规划题目特点 1.计数题 -有多少种方式走到右下角 -有多少种方法选出k个数使得和是Sum 2.求最大最小值 ...

  8. 01背包问题:图表法带你快速理解动态规划解决01背包问题 附C++源码

    0-1背包问题 所谓0-1背包问题,也就是给你一个重量为M的背包和n种物品,每种物品有一定的重量和价值,在每种物品均可装入背包1次或不装入(不能仅装入物品的一部分)且不超过背包载重量的前提下,问你怎样 ...

  9. ReduceByKey算子理解

    前言 最近经常使用到reduceByKey这个算子,想着结合*ByKey算子和stage划分一起总结一下,所以沉下心来仔细过了一遍相关的博客和帖子,在此整体过一遍这个算子,那么我们开始: 国外的大牛一 ...

最新文章

  1. 女生做软件测试需要学习什么技术?
  2. 工作一周了,紧张 + 累
  3. OO学习之二——面向对象分析(OOD)的介绍
  4. rpm打包的流程包括以下哪些_卖房流程包括哪些
  5. LIST_VIEW_和LVITEM用法
  6. LeetCode 2099. 找到和最大的长度为 K 的子序列
  7. Java 代码性能优化总结
  8. 阿里云前端周刊 - 第 15 期
  9. centos下安装和卸载jdk
  10. mysqld got signal 11处理
  11. 彻底关闭win10自动更新
  12. 建模实训报告总结_计算机三维建模实训报告
  13. 用python分析股票收益影响因素的方法_【Python】用Python分析股票的收益和风险
  14. 李嘉诚:孤独是他的能量
  15. 第一届全国大学生GIS应用技能大赛试题答案及数据下载(下午)
  16. b450支持服务器内存,b450支持内存频率是多少
  17. 国内APP消息推送机制以及微信消息延迟问题剖析
  18. 读 活着 【思维导图版】
  19. 快速幂+矩阵快速幂(总结+例题)
  20. 【深度学习】如何封装可维护的restiful api

热门文章

  1. ancestral 箭头符号,英文字典
  2. JAVA后端如何保证业务操作的幂等性
  3. 论机电一体化的发展By integration of machinery development
  4. 视频会议软件的使用形式
  5. sap系统中的batch_SAP 批次管理(Batch management)配置介绍
  6. matlab绘制x坐标是底数为2的幂函数的折线图
  7. FRM-91500: Unable to start/complete the build.
  8. AI芯片科普/MAC(Multiplier and Accumulation)是乘累加器
  9. C 宏定义实现字符大小写转换
  10. 风云岛行动电脑版模拟器使用体验报告