强化学习笔记(二)

强化学习笔记(二)

  • 策略评估
  • 预测与控制
  • 动态规划
  • 马尔可夫决策过程中的策略评估(预测)
  • 马尔可夫决策过程控制
  • 策略迭代
    • 贝尔曼最优方程
  • 价值迭代
    • 最优性原理定理
    • 确认性价值迭代
    • 价值迭代算法
    • 价值迭代和策略迭代的区别
  • 动态规划算法总结表

参考书目:蘑菇书,链接蘑菇书
本系列笔记仅为个人学习所用,不涉及商业价值

策略评估

已知马尔可夫决策过程、要采取的策略 π \pi π,计算价值函数 V π ( s ) V_\pi (s) Vπ(s)的过程就是策略评估,又称为价值预测。
可以通过贝尔曼方程得到价值函数:
V π k ( s ) = r ( s , π ( s ) ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , π ( s ) ) V π k − 1 ( s ′ ) ‘ (2.37) V_\pi^k (s) = r (s, \pi(s)) + \gamma \sum_{s' \in S} p(s' \vert s, \pi(s)) V_\pi^{k-1} (s') \tag{2.37}` Vπk(s)=r(s,π(s))+γsSp(ss,π(s))Vπk1(s)(2.37)其中 k k k是迭代次数。通过不停迭代之后V会收敛,收敛之后,V的值就是每一个状态的价值。例如,现在有随机策略,在每个状态 s s s下,都有0.5的概率向左走,0.5的概率向右走,即 p ( π ( s ) = 左 ) = 0.5 , p ( π ( s ) = 右 ) = 0.5 p(\pi(s)=左)=0.5, p(\pi(s)=右)=0.5 p(π(s)=)=0.5,p(π(s)=)=0.5;可以先对 V ( s ′ ) V(s') V(s)初始化,不同的 V ( s ′ ) V(s') V(s)都有一个值;之后将 V ( s ′ ) V(s') V(s)代入贝尔曼期望方程(2.37)进行迭代,最终收敛即可。

预测与控制

预测:输入是马尔可夫决策过程 < S , A , P , R , γ > <S,A,P,R,γ>与策略 π \pi π,输出是价值函数 V π V_\pi Vπ。预测是指给定一个马尔可夫决策过程、一个策略 π \pi π,计算其价值函数,即每个状态的价值V。
预测实质是评估一个给定的策略
控制:输入是马尔可夫决策过程 < S , A , P , R , γ > <S,A,P,R,γ>与策略 π \pi π,输出是最佳价值函数 V ∗ V^* V与最佳策略 π ∗ \pi^* π
控制实质是寻找一个最佳策略,然后输出对应的最佳价值函数和最佳策略
二者一个在于评估,一个在于寻找。因此,可以通过解决预测问题,进而解决控制问题(理解:在控制过程中将会不断尝试不同的策略,二每个策略都需要进行评估,即预测过程。评估后才能保留下来好的策略,逐步找到最佳策略,也就是达到了控制)。

动态规划

动态规划适合解决满足最优子结构重叠子问题两个性质的问题。
最优子结构:问题可以拆分成一个个小问题,通过解决小问题,组合小问题的答案,得到原问题的解。
重叠子问题:子问题出现多次,且其解决方案可以重复使用,可以保存子问题的首次计算结果,后续直接调用。
马尔可夫决策过程满足动态规划,在贝尔曼方程中可以把它分解成递归的结构(此处关于递归的理解:通过不断迭代贝尔曼方程,最终“递归”到最佳策略)。
注意:动态规划应用在马尔可夫决策过程的规划问题而不是学习问题,必须对环境完全已知,即需要知道状态转移概率和对应的奖励,否则贝尔曼方程无法求解,也就无法递归。

马尔可夫决策过程中的策略评估(预测)

给定马尔可夫决策过程和策略,评估可以获得的价值。可以直接把贝尔曼期望进行备份(即在备份图中往上、往根节点进行回溯),变成迭代过程,反复迭代直到收敛。这个过程可以看做同步备份的过程。
同步备份指每一次的迭代都会完全更新所有状态。
异步备份指每一次跌了不需要更新所有状态。

下式指,我们可以把贝尔曼期望备份转换成动态规划的迭代。当得到上一时刻的 V t V_t Vt时,可以通过递推关系得出下一时刻的值(因为环境完全已知,可以直接推算出来)。反复迭代,最后V的值就是从 V 1 V_1 V1 V 2 V_2 V2直到收敛后的 V π V_\pi Vπ,即当前给定策略 π \pi π的价值函数。
V t + 1 = ∑ a ∈ A π ( a ∣ s ) ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V t ( s ′ ) ) (2.39) V^{t+1} = \sum_{a \in A} \pi (a \vert s) \left( R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s,a) V^t(s') \right) \tag{2.39} Vt+1=aAπ(as)(R(s,a)+γsSp(ss,a)Vt(s))(2.39)策略评估的核心思想就是把式(2.39)所示的贝尔曼期望备份进行反复迭代,得到收敛的价值函数的值。由于策略函数 π \pi π给定,所以可以把上式简化成马尔可夫奖励过程的表达形式,即把 a a a去掉(因策略确定了,即确定了采取什么动作):
V t + 1 ( s ) = r π ( s ) + γ P π ( s ′ ∣ s ) V t ( s ′ ) (2.40) V_{t+1} (s) = r_\pi (s) + \gamma P_\pi (s' \vert s) V_t (s') \tag{2.40} Vt+1(s)=rπ(s)+γPπ(ss)Vt(s)(2.40)通过迭代(2.40),就可以得到每个状态的价值。由于此时策略(即具体采取什么动作)已经确定,因此在不断迭代过程中,得到的是在动作固定的情况下,从当前状态进入未来状态后,未来状态能得到的价值。
注意:这里的迭代,并不是指一直到仿真结束后计算奖励,而是仅仅在 s s s s ′ s' s之间进行反复计算,直到二者的V值稳定。

马尔可夫决策过程控制

策略评估(预测)是指定马尔可夫决策过程和策略,估算V值。
当策略不给定时,只有马尔可夫决策过程,逐步找到最佳价值函数的过程,就是控制。
最佳价值函数为
V ∗ ( s ) = max ⁡ π V π ( s ) V^* (s) = \max_\pi V_\pi (s) V(s)=πmaxVπ(s)当策略为使得V取最大的 π \pi π时,对应的V值,或者说,变换 π \pi π,直到V取最大,这个最大V值就是最佳价值函数。在这个过程中得到的策略,自然也就是最佳策略:
π ∗ ( s ) = arg max ⁡ π V π ( s ) \pi^* (s) = \argmax_\pi V_\pi (s) π(s)=πargmaxVπ(s)最佳策略使每个状态的价值函数都取最大值。因此如果可以得到最佳价值函数,就可认为某个马尔可夫决策过程的环境可解。
注:最佳函数可能是一致的,但最佳策略不唯一。

最佳策略也可以传统弓最大化Q函数来获取:
π ∗ ( a ∣ s ) = { 1 , a = arg max ⁡ a ∈ A Q ∗ ( s , a ) 0 , 其他 \pi^* (a \vert s) = \begin{cases} 1, \quad a = \argmax_{a \in A} Q^*(s,a) \\ 0, \quad 其他 \end{cases} π(as)={1,a=argmaxaAQ(s,a)0,其他当Q收敛后,由于Q是关于 s s s a a a的函数,因此如果Q最大了,那么表明在某个状态下,采取的动作就是最佳动作。换句话说,如果能优化出一个 Q ∗ Q^* Q,就可以直接在Q函数中去一个能让Q最大的 a a a,从而对应最佳策略。

进行策略搜索的方式:
最近单的方式就是穷举
其他常用方法:策略迭代价值迭代
寻找最佳策略的过程就是马尔可夫决策过程的控制过程,马尔可夫决策过程控制就是去寻找一个最佳策略,来得到最大的价值函数。
对一个事先定好的马尔可夫决策过程,当采取最佳策略时,最佳策略一般都是确定的,稳定的,不是时变的,但不一定是唯一的。

策略迭代

由2个步骤组成:策略评估策略改进
先保证策略不变,估计其价值函数,然后进一步推算出Q函数;之后对Q函数直接进行最大化,在Q函数做贪心搜索,进行改进策略。
状态 s → 策略 π → 估计 V π ( s ) → Q π = R ( s , a ) + γ ∑ s ′ p ( s ′ ∣ s , a ) V π ( s ′ ) → Q ∗ = max ⁡ a ∗ Q → 贪心算法,下一次经过该状态时,采取动作 a ∗ 的概率增加 状态s \rightarrow 策略\pi \rightarrow 估计V_\pi(s) \rightarrow Q_\pi = R(s,a) + \gamma \sum_{s'} p(s' \vert s, a) V_\pi (s') \\ \rightarrow Q^* = \max_{a^*} Q \rightarrow 贪心算法,下一次经过该状态时,采取动作a^*的概率增加 状态s策略π估计Vπ(s)Qπ=R(s,a)+γsp(ss,a)Vπ(s)Q=amaxQ贪心算法,下一次经过该状态时,采取动作a的概率增加反复迭代即可。

策略改进的过程:
得到V后,计算Q函数:
Q π i ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V π ( s ′ ) Q_{\pi_i} (s,a) = R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s, a) V_\pi (s') Qπi(s,a)=R(s,a)+γsSp(ss,a)Vπ(s)对每个状态,取使它达到最大值的动作
π i + 1 ( s ) = arg max ⁡ a Q π i ( s , a ) (2.46) \pi_{i+1} (s) = \argmax_a Q_{\pi_i} (s,a) \tag{2.46} πi+1(s)=aargmaxQπi(s,a)(2.46)注意这里的下标, π \pi π Q Q Q对应的后面一步。
得到策略的更新。随着Q越来越大,Q逐渐趋近于一个稳定值,在这个过程中 π \pi π也逐渐趋于稳定值。
把Q函数改写成Q表格:横轴为状态,纵轴为动作,那么得到Q函数后就得到了Q表格。对于某个状态,在每一列中取最大的值,该最大值对应的动作就是应该采取的动作。

贝尔曼最优方程

以上一直采取 arg max ⁡ \argmax argmax操作、使Q不断单调递增的过程,即为贪心操作
由于
V π = ∑ π ( a ∣ s ) Q ( s , a ) V_\pi = \sum \pi ( a \vert s) Q(s,a) Vπ=π(as)Q(s,a)有了最佳策略后,每个状态下应该采取的动作就确定了,因此每个状态下 π ( a ∣ s ) = 1 \pi( a \vert s) = 1 π(as)=1。此时让Q直接取最大,就能直接把上式变为V函数
Q π ( s , π ′ ( s ) ) = max ⁡ a ∈ A Q π ( s , a ) = Q π ( s , π ( s ) ) = V π ( s ) Q_\pi (s, \pi'(s)) = \max_{a \in A} Q_\pi(s, a) = Q_\pi (s, \pi (s)) = V_\pi (s) Qπ(s,π(s))=aAmaxQπ(s,a)=Qπ(s,π(s))=Vπ(s)也就得到了贝尔曼最优方程
V π ( s ) = max ⁡ a ∈ A Q π ( s , a ) (2.49) V_\pi (s) = \max_{a \in A} Q_\pi (s,a) \tag{2.49} Vπ(s)=aAmaxQπ(s,a)(2.49)表明:最佳策略下的一个状态的价值必须等于在这个状态下采取最佳动作得到的回报的期望。换句话说:在采取最佳策略后,V和Q相等。

只有当整个状态收敛后、得到最佳价值函数后,贝尔曼最优方程才满足。当马尔可夫决策过程满足贝尔曼最优方程时,整个马尔可夫决策过程已经达到最佳状态。
Q函数的贝尔曼方程:
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) (2.50) Q^* (s,a) = R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s, a) V^* (s') \tag{2.50} Q(s,a)=R(s,a)+γsSp(ss,a)V(s)(2.50)把(2.49)代入(2.50)有
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) max ⁡ a Q ∗ ( s ′ , a ′ ) (2.51) Q^* (s,a) = R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s, a) \max_a Q^* (s',a') \tag{2.51} Q(s,a)=R(s,a)+γsSp(ss,a)amaxQ(s,a)(2.51)即为Q函数之间的转移。
同样地可以得到V函数之间的转移:
V ∗ ( s ) = max ⁡ a ( R ( s , a ) + γ ∑ s ′ i n S p ( s ′ ∣ s , a ) V ∗ ( s ′ ) ) (2.53) V^* (s) = \max_a \left( R(s,a) + \gamma \sum_{s' in S} p(s' \vert s,a) V^* (s') \right) \tag{2.53} V(s)=amax(R(s,a)+γsinSp(ss,a)V(s))(2.53)

价值迭代

动态规划的方法把优化问题分成2部分:1)执行最优动作;2)后继的状态每一步都按照最优的策略去做,最后结果就是最优的。

最优性原理定理

最优性原理定理:一个策略 π ( a ∣ s ) \pi(a \vert s) π(as)在状态 s s s达到了最优价值,即 V π ( s ) = V ∗ ( s ) V_\pi(s) = V^* (s) Vπ(s)=V(s),当且仅当对于任何能够从 s s s到达的 s ′ s' s,都已经达到了最优价值。换句话说,对于所有的 s ′ s' s V π ( s ′ ) = V ∗ ( s ) V_\pi(s') = V^* (s) Vπ(s)=V(s)恒成立,或者每一个 s s s的V都是最优的。

确认性价值迭代

若知道子问题 V ∗ ( s ′ ) V^*(s') V(s)的最优解,就可以通过价值迭代得到最优的 V ∗ ( s ) V^*(s) V(s)的解。价值迭代就是把贝尔曼最优方程当成一个更新规则来进行,即
V ( s ) ← max ⁡ a ∈ A ( R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V ( s ′ ) ⏞ Q ( s , a ) ) (2.54) V(s) \leftarrow \max_{a \in A} \left( \overbrace{ R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s,a) V(s') }^{Q(s,a)} \right) \tag{2.54} V(s)aAmax R(s,a)+γsSp(ss,a)V(s) Q(s,a) (2.54)即强行把 max ⁡ Q \max Q maxQ直接赋值给V, V ← max ⁡ Q V \leftarrow \max Q VmaxQ
只有当整个马尔可夫决策过程达到最佳状态时上式才满足,但仍然可以使用它不断迭代贝尔曼最优方程,价值函数逐渐趋向最佳。这是价值迭代算法的精髓。
对每个状态的V,直接通过贝尔曼最优方程进行迭代,迭代多次之后,价值函数就会收敛。这种价值迭代算法发也被称为确认性价值迭代

价值迭代算法

  1. 初始化: k = 1 k=1 k=1,对所有状态 s s s V 0 ( s ) = 0 V_0 (s) = 0 V0(s)=0
  2. 对于 k k k从1到迭代次数 H H H
    a) 对于所有状态 s s s
    Q k + 1 ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V k ( s ′ ) (2.55) Q_{k+1} (s,a) = R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s,a) V_k(s') \tag{2.55} Qk+1(s,a)=R(s,a)+γsSp(ss,a)Vk(s)(2.55) V k + 1 ( s ) = max ⁡ a Q k + 1 ( s , a ) (2.56) V_{k+1} (s) = \max_a Q_{k+1} (s,a) \tag{2.56} Vk+1(s)=amaxQk+1(s,a)(2.56)b) k ← k + 1 k \leftarrow k+1 kk+1
  3. 上述a和b一直反复循环,V和Q互相计算。在达到迭代步数 H H H后,提取最优策略,参照式(2.46):
    π ( s ) = arg max ⁡ a Q H + 2 ( s , a ) = arg max ⁡ a [ R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) V H + 1 ( s ′ ) ] \pi(s) = \argmax_a Q_{H+2} (s,a) = \argmax_a \left[ R(s,a) + \gamma \sum_{s' \in S} p(s' \vert s,a) V_{H+1}(s') \right] π(s)=aargmaxQH+2(s,a)=aargmax[R(s,a)+γsSp(ss,a)VH+1(s)]

价值迭代和策略迭代的区别

  1. 价值迭代做的工作类似于价值的反向传播,每次迭代就做一步传播(因为是V和Q在互相利用彼此进行迭代计算)。
    策略迭代的每一次迭代的结果都是有意义的,都是一个完整的策略(因为每一步都得到一个新策略)。
  2. 价值迭代像是从某一个状态反向传播到其他各个状态的过程,每次迭代只影响到与之直接相关的状态,是直接对价值函数V和Q进行操作的,直接进行V和Q之间的互相代入计算
    策略迭代是利用一个策略计算出Q,把Q进行最大化之后,反求出使得Q最大化的那个策略,因此每一步都能产生一个策略
    对于价值迭代来说,如果某次迭代求解的某个状态 s s s的价值函数 V k + 1 V_{k+1} Vk+1是最优解,它的前提是能够从该状态到达的所有状态 s ′ s' s也都已经得到了最优解。如果它的相邻节点价值发生了变化,变得更好了,那么它的价值也会变得更好,如此反复迭代,直到相邻节点都不变。因此,中间迭代过程的数据只是一种暂存的不完整的数据,所以中间生成的策略都是没有意义的不佳的策略。
  3. 策略迭代分2步,首先策略评估,对当前已经搜索到的策略进行估计价值函数,得到估值后进行策略改进,也就是计算出Q函数,使其取最大值,然后反求出策略。不断重复这两步,直到策略收敛。可见策略迭代是在每一次迭代中,都求出了新的策略,不仅Q进行迭代,策略本身也在迭代。
    价值迭代直接使用贝尔曼最优方程进行迭代,即V推出Q、Q代入推出V的相互计算过程,是个纯数学过程,直到该过程收敛,V和Q稳定。稳定后,得到的V就是最佳价值函数,Q亦然。在此基础上求出使Q到达最大化的策略即可。可见价值迭代是在迭代之后,再进行一次单独的求解策略的。

动态规划算法总结表

问题 贝尔曼方程 算法
预测 贝尔曼方程 V = R + γ ∑ P ( s ′ ∣ s ) V ( s ′ ) V = R + \gamma \sum P(s' \vert s) V(s') V=R+γP(ss)V(s) 迭代策略评估
控制 贝尔曼期望方程 Q = R + γ ∑ p V ′ , V = ∑ π ( R + γ ∑ p V ′ ) , Q = R + γ ∑ p ∑ π ′ Q ′ Q = R + \gamma \sum pV', V = \sum \pi \left( R + \gamma \sum p V' \right), Q = R + \gamma \sum p \sum \pi' Q' Q=R+γpV,V=π(R+γpV),Q=R+γpπQ 策略迭代
控制 贝尔曼最优方程 V ∗ = max ⁡ Q ∗ , Q ∗ = R + γ ∑ p max ⁡ Q ′ ∗ V^* = \max Q^*, Q^* = R + \gamma \sum p \max Q'^* V=maxQ,Q=R+γpmaxQ 价值迭代

你可能感兴趣的:(算法,强化学习,笔记,机器学习)