强化学习基础-有模型学习

强化学习基础-有模型学习

  • 1 马尔科夫决策过程(MDP)
  • 2 Bellman方程
  • 3 MDP问题建模
  • 4 价值迭代(Value Iteration)
  • 5 策略迭代(Policy Iteration)
    • 5.1 策略评估
    • 5.2 策略改进
  • 6 价值迭代与策略迭代
  • 参考文献

1 马尔科夫决策过程(MDP)

通常用马尔科夫决策过程Markov Decision process,MDP描述强化学习问题。一个基本的MDP问题可以用一个五元组 ( S , A , P , R , γ ) (S,A,P,R,\gamma) S,A,P,R,γ来表示,其中

  • S 有限状态空间
  • A 有限动作空间
  • P 状态转移概率矩阵

P a ( s , s ′ ) = P ( s t + 1 = s ′ ∣ s t = s , a t = a ) P_a(s, s')=P(s_{t+1}=s'|s_t=s, a_t=a) Pa(s,s)=P(st+1=sst=s,at=a) 表示在状态 s s s下执行 a a a动作,从状态 s s s转移到 s ′ s' s的概率

  • R 表示奖励函数
  • γ \gamma γ 表示折扣因子

用来衡量当前奖励与未来奖励,可以理解为权重,一般会将未来的奖励权重调低

这样,MDP的目标就是找到一种 π ( s ) \pi(s) π(s),使得agent在状态 s s s下能做出对应动作 a a a,使得回报 G t G_t Gt能够达到最大
(1) G t = R t + 1 + γ 1 R t + 2 + γ 2 R t + 3 + . . . = ∑ k = 0 ∞ γ k R t + k + 1 \begin{aligned} G_t &= R_{t+1}+\gamma^1R_{t+2}+\gamma^2R_{t+3}+...\\ &= \sum^{\infty}_{k=0}{\gamma^kR_{t+k+1}} \end{aligned} \tag{1} Gt=Rt+1+γ1Rt+2+γ2Rt+3+...=k=0γkRt+k+1(1)

​ 价值函数(Value Function),定义为回报的期望,表示当前状态的未来潜在价值
(2) V ( s ) = E [ G t ∣ S t = s ] V(s)=E[G_t|S_t=s] \tag{2} V(s)=E[GtSt=s](2)

Reward(奖励)指agent采取某个动作后的奖励,是短期的即时的奖励
Return(回报)指各个短期奖励加权之和可以视为长远的奖励
Value(价值)指的是上述长远奖励的期望

​ 当前,强化学习的有两种思路:基于策略(Policy)函数的强化学习和基于价值(Value)函数的强化学习。

  • 基于价值(Value)函数的强化学习,它需要首先对价值进行估计,然后间接地去求解如何选择动作。
  • 基于策略(Policy)梯度的强化学习,其基本原理是通过反馈调整策略,具体来说就是在得到正向奖励时,增加相应的动作的概率;得到负向的奖励时,降低相应动作的概率。

2 Bellman方程

​ 将公式(1)代入公式(2),得
(3) V ( s ) = E [ G t ∣ S t = s ] = E [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . ∣ S t = s ] = E [ R t + 1 + γ ( R t + 2 + γ R t + 3 + . . . ) ∣ S t = s ] = E [ R t + 1 + γ G t + 1 ∣ S t = s ] \begin{aligned} V(s)&=E[G_t|S_t=s]\\ &=E[R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+...|S_t=s]\\ &=E[R_{t+1}+\gamma (R_{t+2}+\gamma R_{t+3}+...)|S_t=s]\\ &=E[R_{t+1}+\gamma G_{t+1}|S_t=s] \end{aligned}\tag{3} V(s)=E[GtSt=s]=E[Rt+1+γRt+2+γ2Rt+3+...St=s]=E[Rt+1+γ(Rt+2+γRt+3+...)St=s]=E[Rt+1+γGt+1St=s](3)
​ 又 V ( s t + 1 ) = E [ G t + 1 ] V(s_{t+1})=E[G_{t+1}] V(st+1)=E[Gt+1],所以有
(4) V ( S ) = E [ R t + 1 + γ G t + 1 ∣ S t = s ] = E [ R t + 1 + γ V ( S t + 1 ) ∣ S t = s ] \begin{aligned} V(S)&=E[R_{t+1}+\gamma G_{t+1}|S_t=s]\\ &=E[R_{t+1}+\gamma V(S_{t+1})|S_t=s] \end{aligned} \tag{4} V(S)=E[Rt+1+γGt+1St=s]=E[Rt+1+γV(St+1)St=s](4)

上式即Bellman方程。从Bellman方程可以发现一个规律:当前状态的价值(Value)与两个因素有关:1) 当前的奖励(Reward);2) 下一个迭代时刻的价值(Value)。

3 MDP问题建模

​ 假设已知了状态转移概率矩阵P和奖励函数R,结合Bellman方程,有
(5) π ( s ) = a r g m a x a ∑ s ′ P a ( s , s ′ ) [ R a ( s , s ′ ) + γ ⋅ V ( S ′ ) ] = a r g m a x a E [ R a ( s , s ′ ) + γ ⋅ V ( s ′ ) ] = a r g m a x a V ( s ) \begin{aligned} \pi(s)&= \mathop{argmax}_{a} \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma\cdot V(S')]\\ &= \mathop{argmax}_{a} E[R_a(s,s')+\gamma \cdot V(s')]\\ &= \mathop{argmax}_{a} V(s) \end{aligned} \tag{5} π(s)=argmaxasPa(s,s)[Ra(s,s)+γV(S)]=argmaxaE[Ra(s,s)+γV(s)]=argmaxaV(s)(5)

在状态 s s s,agent会以某种概率执行a,从而到达状态 s ′ s' s。于是,可根据新的状态计算相应的Reward和Value。agent需要在当前状态 s s s下做出一个动作a,使得价值(Value)达到最大。

​ 为了后续方便,将公式(5)最后一行针对价值 V ( s ) V(s) V(s)的展开部分独立出来,有
(6) V ( s ) = E [ R a ( s , s ′ ) + γ ⋅ V ( s ′ ) ] = ∑ s ′ P a ( s , s ′ ) [ R a ( s , s ′ ) + γ ⋅ V ( s ′ ) ] \begin{aligned} V(s) &= E[R_a(s,s')+\gamma \cdot V(s')] \\ &= \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma \cdot V(s')] \end{aligned} \tag{6} V(s)=E[Ra(s,s)+γV(s)]=sPa(s,s)[Ra(s,s)+γV(s)](6)

4 价值迭代(Value Iteration)

(7) V i + 1 ( s ) = max ⁡ a ∑ s ′ P a ( s , s ′ ) [ R a ( s , s ′ ) + γ ⋅ V i ( s ′ ) ] V_{i+1}(s)=\max_{a}\sum_{s'}P_a(s,s')[R_a(s,s')+\gamma \cdot V_i(s')] \tag{7} Vi+1(s)=amaxsPa(s,s)[Ra(s,s)+γVi(s)](7)

基于价值迭代的求解方法中,迭代过程中仅仅更新价值(Value)


Initialization
​  array V V V arbitrary(e.g. V ( s ) = 0 V(s)=0 V(s)=0 for all s ∈ S + s \in S^+ sS+)
repeat
​  Δ ← 0 \Delta \leftarrow 0 Δ0
​​ for each s ∈ S s \in S sS
​ ​  v ← V ( s ) v \leftarrow V(s) vV(s) #当前状态的价值
​​ ​  V ( s ) ← max ⁡ a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ ⋅ V ( s ′ ) ] V(s) \leftarrow \max_{a} \sum_{s',r} p(s',r|s,a) [r+\gamma \cdot V(s')] V(s)maxas,rp(s,rs,a)[r+γV(s)]#在所有可能的动作中找出期望价值最大的案例
​​ ​  Δ ← max ⁡ ( Δ , ∣ v − V ( s ) ∣ ) \Delta \leftarrow \max(\Delta ,|v-V(s)|) Δmax(Δ,vV(s)) #当前状态价值与新状态价值的差距的最大值
​ end for
until Δ < θ , θ \Delta<\theta,\theta Δ<θ,θ is a small positive umber #状态趋于稳定
output: a deterministic policy π ( s ) \pi (s) π(s)

价值迭代方法在求解时,会遍历状态集S,将其具有最大价值所对应的动作保留下来形成策略 π ( s ) \pi (s) π(s)


5 策略迭代(Policy Iteration)

与价值迭代不同,策略迭代的方法在迭代过程中要同时更新价值和策略。通常它分为如下两个主要步骤

5.1 策略评估

对应公式(6)
(6) V ( s ) = E [ R a ( s , s ′ ) + γ ⋅ V ( s ′ ) ] = ∑ s ′ P a ( s , s ′ ) [ R a ( s , s ′ ) + γ ⋅ V ( s ′ ) ] \begin{aligned} V(s) &= E[R_a(s,s')+\gamma \cdot V(s')] \\ &= \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma \cdot V(s')] \end{aligned} \tag{6} V(s)=E[Ra(s,s)+γV(s)]=sPa(s,s)[Ra(s,s)+γV(s)](6)
​策略评估的内涵就是在给定的策略下,迭代更新价值(Value)直至收敛,从而得到稳定的价值函数。这么做的意义在于更好地估计当前策略的价值(Value)

5.2 策略改进

​ 对应公式(5)
(5) π ( s ) = a r g m a x a ∑ s ′ P a ( s , s ′ ) [ R a ( s , s ′ ) + γ ⋅ V ( S ′ ) ] = a r g m a x a E [ R a ( s , s ′ ) + γ ⋅ V ( s ′ ) ] = a r g m a x a V ( s ) \begin{aligned} \pi(s)&= \mathop{argmax}_{a} \sum_{s'}P_a(s,s')[R_a(s,s')+\gamma\cdot V(S')]\\ &= \mathop{argmax}_{a} E[R_a(s,s')+\gamma \cdot V(s')]\\ &= \mathop{argmax}_{a} V(s) \end{aligned} \tag{5} π(s)=argmaxasPa(s,s)[Ra(s,s)+γV(S)]=argmaxaE[Ra(s,s)+γV(s)]=argmaxaV(s)(5)
在策略改进步骤中,代理利用步骤1中更新后的价值(Value)函数,更新每种状态下的策略并迭代,直到策略稳定下来。其迭代算法描述如下所示:


  1. Intialization
    ​  V ( s ) ∈ R V(s) \in \R V(s)R and π ( s ) ∈ A ( s ) \pi (s) \in A(s) π(s)A(s) arbitray for all s ∈ S s \in S sS
  2. Policy Evaluation
    repeat
    ​ ​  Δ ← 0 \Delta \leftarrow 0 Δ0
    ​ ​ for each s ∈ S s \in S sS
    ​ ​ ​  v ← V ( s ) v \leftarrow V(s) vV(s)
    ​ ​ ​  V ( s ) ← ∑ s ′ , r p ( s ′ , r ∣ s , π ( s ) ) [ r + γ ⋅ V ( s ) ] V(s) \leftarrow \sum_{s',r}p(s',r|s,\pi (s)) [r+\gamma \cdot V(s)] V(s)s,rp(s,rs,π(s))[r+γV(s)]
    ​ ​ ​  Δ ← m a x ( Δ , ∣ v − V ( s ∣ ) \Delta \leftarrow max(\Delta,|v-V(s|) Δmax(Δ,vV(s)
    ​ ​ end for
    until Δ < θ \Delta<\theta Δ<θ , θ \theta θ is a small positive number

对于每个状态s不断迭代直至状态稳定,记录其价值

  1. Policy Improvement
    ​  p o l i c y s t a b l e ← t r u e policystable\leftarrow true policystabletrue
    for each s ∈ S s \in S sS
    ​ ​  a ← π ( s ) a \leftarrow \pi(s) aπ(s) #当前策略(动作)
    ​ ​  π ( s ) ← a r g m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ ⋅ V ( s ′ ) ] \pi (s) \leftarrow argmax_{a} \sum_{s',r}p(s',r|s,a)[r+\gamma \cdot V(s')] π(s)argmaxas,rp(s,rs,a)[r+γV(s)] #选择下一个策略,基于2
    ​ ​ if a ≠ π ( s ) a \ne \pi(s) a̸=π(s) then #如果状态没有稳定继续迭代
    ​ ​ ​  p o l i c y s t a b l e ← f a l s e policystable\leftarrow false policystablefalse
    ​ ​ end if
    end for
    if p o l i c y s t a b l e policystable policystable, then #如果状态稳定
    ​ ​ stop and return V V V and π \pi π
    else
    ​​  go to 2
    end if

6 价值迭代与策略迭代

  • Policy Iteration 中两个步骤都有Policy直接关联,首先利用一个给定的Policy,通过迭代方法得到其Value Function; 接下来利用这个价值函数不断迭代各种Policy,最终确定最佳的Policy。
  • Value Iteration 不与Policy直接打交道,这种方法当value最后收敛,也相当于得到最优的policy。
  • 两者在迭代计算中都需要知道状态转移矩阵和奖励函数,即P与R。
  • 如果已知转移概率矩阵P被称为获得了Model,通过模型获取最佳Policy的方法称为Model-based方法。

然而,现实场景下概率转移矩阵很难获得,所以人们需要采用Model-Free的方法来找到最佳Policy。譬如Q-learning,Policy Gradient,Actor-Critic。

参考文献

强化学习笔记

你可能感兴趣的:(强化学习基础,强化学习)