最近在写代码跑实验,以后有空再更新叭
强化学习_知识点笔记
1. 马尔科夫性(Markov Property)
- 马尔科夫性是一种假设的性质,某个环境具有Markov性,则表现为下一时刻的state,仅由当前state决定,与过去的history没有太大关系。如果身处markov状态,就会一直在markov状态。数学表达式: P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , … , S t ] \mathbb{P}\left[S_{t+1} | S_{t}\right]=\mathbb{P}\left[S_{t+1} | S_{1}, \ldots, S_{t}\right] P[St+1∣St]=P[St+1∣S1,…,St]
- 我们要做的是定义这样的一个state,令它具有markov性,这样就可以丢弃history了。即state是关于history的一个函数。
2. 马尔科夫奖励过程(Markov Reward Process,MRP)<为MDP做铺垫>
- MRP可以用元组 ⟨ S , P , R , γ ⟩ \langle\mathcal{S}, \mathcal{P}, \mathcal{R}, \gamma\rangle ⟨S,P,R,γ⟩来表示。指的是:对于一个动态图,有许多的状态 S \mathcal{S} S,这些状态之间通过状态转移函数 P \mathcal{P} P进行连接,每个状态有相应的奖励 R \mathcal{R} R(即reward与state挂钩)。
- 收获(return) G t G_{t} Gt是一个累积折损奖励,来自MRP的一个状态序列(Sample Episodes,该序列来自动态图的随机采样)。 G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + … = ∑ k = 0 ∞ γ k R t + k + 1 G_{t}=R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+\gamma^3R_{t+4}+\ldots=\sum_{k=0}^{\infty} \gamma^{k} R_{t+k+1} Gt=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+…=k=0∑∞γkRt+k+1其中折扣因子 γ \gamma γ越大,代表着侧重于exploration,越小代表着侧重于 Exploitation。
- 价值函数 v ( s ) v(s) v(s)表示某一状态 s s s的长期价值,或者说当前状态有多好。 v ( s ) v(s) v(s)是return G t G_{t} Gt的期望: v ( s ) = E [ G t ∣ S t = s ] v(s)=\mathbb{E}\left[G_{t} | S_{t}=s\right] v(s)=E[Gt∣St=s]一种可能的形式是对 G t G_{t} Gt多次随机采样,取平均得到当前状态的 v ( s ) v(s) v(s)。
- MRP的Bellman方程可以写成: v ( s ) = R s + γ ∑ s ′ ∈ S P s s ′ v ( s ′ ) v(s)=\mathcal{R}_{s}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}} v\left(s^{\prime}\right) v(s)=Rs+γs′∈S∑Pss′v(s′)其中 R s \mathcal{R}_{s} Rs是状态 s s s的即时奖励, s ′ s' s′是下一时刻可能的状态, P s s ′ \mathcal{P}_{s s^{\prime}} Pss′是状态转移概率,表示从状态 s s s到状态 s ′ s' s′的概率。当一个MRP模型建立完成,可以通过贝尔曼方程求解得到各个状态的value。
- 下图是一个MRP示例。
R
R
R是各个状态的reward(人为设定),箭头上的数字是状态转移概率(人为设定),红色字体是
γ
=
1
\gamma=1
γ=1时各个状态的value(可以通过贝尔曼方程直接求得)。
3. 马尔科夫决策过程(Markov Decision Process,MDP)
- MDP可以用元组 ⟨ S , A , P , R , γ ⟩ \langle\mathcal{S}, \mathcal{A},\mathcal{P}, \mathcal{R}, \gamma\rangle ⟨S,A,P,R,γ⟩来表示,相较于马尔科夫奖励过程(MRP),元组中多了一个有限的行为集合A(区别于连续的行为集合)。这里的 P \mathcal{P} P和 R \mathcal{R} R都与具体的行为 a a a对应,而不像马尔科夫奖励过程那样仅对应于某个状态 S \mathcal{S} S,表达式略有改变: P s s ′ a = P [ S t + 1 = s ′ ∣ S t = s , A t = a ] \mathcal{P}_{s s^{\prime}}^{a}=\mathbb{P}\left[S_{t+1}=s^{\prime} | S_{t}=s, A_{t}=a\right] Pss′a=P[St+1=s′∣St=s,At=a] R s a = E [ R t + 1 ∣ S t = s , A t = a ] \mathcal{R}_{s}^{a}=\mathbb{E}\left[R_{t+1} | S_{t}=s, A_{t}=a\right] Rsa=E[Rt+1∣St=s,At=a]注:在状态 s s s下采取动作 a a a,下一个状态 s ′ s^{\prime} s′不一定是唯一的,比如饿了的状态下,采取吃饭的动作,下一个状态可能饿也可能饱。另外还看到一个说法: P s s ′ a \mathcal{P}_{s s^{\prime}}^{a} Pss′a表示根据当前状态和接收到的动作,预测下一个状态的概率。
- 策略(policy)表现为一个概率分布,用 π ( a ∣ s ) \pi(a | s) π(a∣s)表示,描述在某一状态 s s s下采取可能的行为 a a a的概率。像这样的一个概率(随机)的形式,agent就能够进行探索(exploration)。 π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a | s)=\mathbb{P}\left[A_{t}=a | S_{t}=s\right] π(a∣s)=P[At=a∣St=s]
3.1 贝尔曼期望方程(基于某一个策略)——进行策略评估
- 基于策略的价值函数有两个,分别是状态价值函数(State-Value function) v π ( s ) v_{\pi}(s) vπ(s),表示从状态s开始,遵循策略 π \pi π时所获得的return的期望: v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=\mathbb{E}_{\pi}\left[G_{t} | S_{t}=s\right] vπ(s)=Eπ[Gt∣St=s]以及动作价值函数(Action-Value function) q π ( s , a ) q_\pi(s,a) qπ(s,a),表示在执行策略 π \pi π时,当前状态 s s s下执行某一具体行为 a a a所能的到的return的期望: q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] q_{\pi}(s, a) =\mathbb{E}_{\pi}\left[G_{t} | S_{t}=s,A_{t}=a\right] qπ(s,a)=Eπ[Gt∣St=s,At=a]他们一个是对state的评价(有多好),一个是对元组 ( s , a ) (s,a) (s,a)即状态下的具体动作的评价。
- 动作价值函数和状态价值函数可以互相表示: v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) ( 01 ) v_{\pi}(s)=\sum_{a \in \mathcal{A}} \pi(a | s) q_{\pi}(s, a) (01) vπ(s)=a∈A∑π(a∣s)qπ(s,a) (01) q π ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ a v π ( s ′ ) ( 02 ) q_{\pi}(s, a)=\mathcal{R}_{s}^{a}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{a} v_{\pi}\left(s^{\prime}\right) (02) qπ(s,a)=Rsa+γs′∈S∑Pss′avπ(s′) (02)注:状态 s s s下执行动作 a a a所对应的奖励 R s a \mathcal{R}_{s}^{a} Rsa可能不唯一,因为执行动作 a a a之后可能有多个状态,也就有多个奖励。此时每个奖励都要乘以一个权重(即状态转移概率),求和得到的最终结果才是 R s a \mathcal{R}_{s}^{a} Rsa。
- 将上面两个式子组合起来,用代入法消去其中一种价值,就得到了贝尔曼期望方程的两种形式(递归表达式):贝尔曼期望方程是和策略相挂钩的,常用来进行策略评估。通过贝尔曼期望方程可以直接求解出在策略 π \pi π下,各个state的价值函数以及各个 ( s , a ) (s,a) (s,a)的价值函数。进而和别的策略下的价值函数相比,判断策略的好坏。
3.2 贝尔曼最优方程(基于最优策略)——寻找最优策略
- 最优价值函数也有两个,分别是最优状态价值函数(optimal state value function): v ∗ ( s ) = max π v π ( s ) v_{*}(s)=\max _{\pi} v_{\pi}(s) v∗(s)=πmaxvπ(s)即遍历所有的policy,取最大的 v π ( s ) v_{\pi}(s) vπ(s)即最优状态价值;以及最优动作价值函数(optimal actionvalue function): q ∗ ( s , a ) = max π q π ( s , a ) q_{*}(s, a)=\max _{\pi} q_{\pi}(s, a) q∗(s,a)=πmaxqπ(s,a)即遍历所有的policy,取最大的 q π ( s , a ) q_{\pi}(s, a) qπ(s,a)即最优动作价值。只要求得了最优价值函数,就可以直接得到一个最优策略,其中一种选取方法是选择这样的确定性策略: π ∗ ( s ) = arg max a ∈ A q ∗ ( s , a ) \pi_{*}(s)=\argmax _{a\in\mathcal{A}} q_{*}(s, a) π∗(s)=a∈Aargmaxq∗(s,a)
- 最优策略的性质: π ∗ ( a ∣ s ) = { 1 if a = argmax a ′ ∈ A q ∗ ( s , a ′ ) 0 其他 \pi_{*}(a | s)=\left\{\begin{array}{cc} 1 & \text { if } a=\underset{a^{\prime} \in \mathcal{A}}{\operatorname{argmax}} q_{*}(s, a^{\prime}) \\ 0 & \text { 其他 } \end{array}\right. π∗(a∣s)={10 if a=a′∈Aargmaxq∗(s,a′) 其他 当动作 a a a是最优动作时, π ∗ ( a ∣ s ) \pi_{*}(a | s) π∗(a∣s)取1,否则取0。将这个表达式,代入3.1里面的两个基于策略 π \pi π的价值函数(01)和(02),即用最优策略代替一般性策略,得到可以互相表示的最优动作价值函数和最优状态价值函数: v ∗ ( s ) = max a q ∗ ( s , a ) ( 03 ) v_{*}(s)=\max _{a} q_{*}(s, a) (03) v∗(s)=amaxq∗(s,a) (03) q ∗ ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ a v ∗ ( s ′ ) ( 04 ) q_{*}(s, a)=\mathcal{R}_{s}^{a}+\gamma \sum_{s^{\prime} \in \mathcal{S}} \mathcal{P}_{s s^{\prime}}^{a} v_{*}\left(s^{\prime}\right) (04) q∗(s,a)=Rsa+γs′∈S∑Pss′av∗(s′) (04)注意:这里的 R s a \mathcal{R}_{s}^{a} Rsa也可能不唯一,参照3.1。
- 将上面两个式子(03)、(04)组合起来,用代入法消去其中一种价值,就得到了贝尔曼最优方程的两种形式(递归表达式):通过列出各个状态的Bellman方程或者各个动作的Bellman方程,联立起来就能解出最优价值。但是最优方程有 m a x ( ) max() max()运算,可以通过分类讨论转化为多个线性方程组求解。理论上,通过求解Bellman最优方程,可以找到最优价值函数,进而轻易找到最优策略:对于每个状态 s ∈ S s\in\mathcal{S} s∈S,总是选择让 q ∗ ( s , a ) q_{*}(s, a) q∗(s,a)最大的动作 a a a。实际上,使用Bellman最优方程求解最优策略会遇到一些困难。主要是难以列出Bellman最优方程,还有就是实际问题的状态空间非常大,没有足够的计算资源来求解方程,这时可以考虑间接的方法求解甚至用近似值。