参考书目:蘑菇书,链接蘑菇书
本系列笔记仅为个人学习所用,不涉及商业价值
已知马尔可夫决策过程、要采取的策略 π \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))+γs′∈S∑p(s′∣s,π(s))Vπk−1(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=a∈A∑π(a∣s)(R(s,a)+γs′∈S∑p(s′∣s,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π(s′∣s)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} π∗(a∣s)={1,a=argmaxa∈AQ∗(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)+γs′∑p(s′∣s,a)Vπ(s′)→Q∗=a∗maxQ→贪心算法,下一次经过该状态时,采取动作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)+γs′∈S∑p(s′∣s,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π=∑π(a∣s)Q(s,a)有了最佳策略后,每个状态下应该采取的动作就确定了,因此每个状态下 π ( a ∣ s ) = 1 \pi( a \vert s) = 1 π(a∣s)=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))=a∈AmaxQπ(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)=a∈AmaxQπ(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)+γs′∈S∑p(s′∣s,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)+γs′∈S∑p(s′∣s,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)+γs′inS∑p(s′∣s,a)V∗(s′))(2.53)
动态规划的方法把优化问题分成2部分:1)执行最优动作;2)后继的状态每一步都按照最优的策略去做,最后结果就是最优的。
最优性原理定理:一个策略 π ( a ∣ s ) \pi(a \vert s) π(a∣s)在状态 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)←a∈Amax R(s,a)+γs′∈S∑p(s′∣s,a)V(s′) Q(s,a) (2.54)即强行把 max Q \max Q maxQ直接赋值给V, V ← max Q V \leftarrow \max Q V←maxQ。
只有当整个马尔可夫决策过程达到最佳状态时上式才满足,但仍然可以使用它不断迭代贝尔曼最优方程,价值函数逐渐趋向最佳。这是价值迭代算法的精髓。
对每个状态的V,直接通过贝尔曼最优方程进行迭代,迭代多次之后,价值函数就会收敛。这种价值迭代算法发也被称为确认性价值迭代。
问题 | 贝尔曼方程 | 算法 |
---|---|---|
预测 | 贝尔曼方程 V = R + γ ∑ P ( s ′ ∣ s ) V ( s ′ ) V = R + \gamma \sum P(s' \vert s) V(s') V=R+γ∑P(s′∣s)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′∗ | 价值迭代 |