强化学习——MDP框架的搭建

强化学习框架

数学符号释义

  1. S S S指状态(state)空间
  2. A A A指动作(action)空间
  3. R R R指reward奖励, R s = E [ R t + 1 ∣ S t = s ] R_s =E[R_{t+1}|S_t=s] Rs=E[Rt+1St=s]
  4. P P P指状态转移矩阵,其中的元素为: P s s ′ = P [ S t + 1 = s ′ ∣ S t = s ] P_{ss'}=P[S_{t+1}=s'|S_{t}=s] Pss=P[St+1=sSt=s]
  5. γ \gamma γ指折扣因子

马尔科夫链

简单的说:下一个所处的状态只取决于当前的状态

用数学语言描述: P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S t , S t − 1 , S t − 2 . . . . . . S 1 ] P[S_{t+1}|S_{t}] = P[S_{t+1}|S_t,S_{t-1},S_{t-2}......S_1] P[St+1St]=P[St+1St,St1,St2......S1]

好处就是:只要当前状态包含的信息足够多,我们就可以只使用当前的信息来推断出下一个状态。

状态+状态转移矩阵

首先我们仅引入 S , P S,P S,P,我们当前的策略可以理解为:随着 P P P矩阵记录的概率在各个状态之间转移。我们可以得到这样的一组马尔可夫决策链 S 0 , S 1 , S 2 . . . . . . S_0,S_1,S_2...... S0,S1,S2......

引入 R , γ R,\gamma R,γ γ ∈ ( 0 , 1 ) \gamma \in (0,1) γ(0,1)

我们引入奖励函数,以及折扣因子。每当我们从一个状态转移到另一个状态时,我们的agent就会获得一份奖励(可正可负)。此时我们可以得到这样的一个马尔可夫过程: S 0 , R 1 , S 1 , R 2 . . . . . . S_0,R_1,S_1,R_2...... S0,R1,S1,R2......,这个过程叫做马尔可夫奖励过程。注意,此时我们的策略仍然是跟随P矩阵进行状态转移。

引入状态价值评估函数 v ( s ) v(s) v(s),收益函数 G t G_t Gt,贝尔曼方程 v = R + γ P v v=R+\gamma Pv v=R+γPv

G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 . . . . . G_t=R_{t+1}+\gamma R_{t+2}+\gamma^2R_{t+3}..... Gt=Rt+1+γRt+2+γ2Rt+3.....,代表从当前时刻起,依据现在的策略,我们预期获得的总收益。

v ( s ) = E [ G t ∣ S t = s ] v(s)=E[G_t|S_t=s] v(s)=E[GtSt=s],评估当前状态,根据当前的策略,未来收获的期望。这个期望就是这个状态目前的价值。

我们可以看见,这里引入了折扣因子 γ \gamma γ,一方面这有利于 G t G_t Gt收敛,另一方面也是考虑到未来的不确定性。

那么我们应该如何求出每个状态对应的 v ( s ) v(s) v(s)呢?由于状态的数量可以是无限的,状态之间的转移可以是循环的,所以顺序求解并不可行。这是我们引入贝尔曼方程来求解问题。 v = R + γ P v v=R+\gamma Pv v=R+γPv是一个线性方程,可以直接求出 v v v,只要 R , P R,P R,P已知。

引入 A A A动作空间, p o l i c y = π ( a ∣ s ) policy = \pi(a|s) policy=π(as)策略

之前的模型中,我们都没有引入策略,仅仅是跟着 P P P矩阵走。现在我们引入策略,将模型变为MDP(马尔可夫决策过程)。

引入策略之后,我们需要对原来的一些参数作出修改:

1. P s s ′ → P s s ′ a = P [ S t + 1 ∣ S t = s , A t = a ] P_{ss'} \rightarrow P_{ss'}^a = P[S_{t+1}|S_t=s,A_t=a] PssPssa=P[St+1St=s,At=a]。意思是:在s状态下,选择动作a时,能转移到s’状态的概率。注意:这句话体现出一个关键点,选择一个动作之后,并不能百分百的转移到想去的状态,因为我们对于环境的观测是有限的,状态的转移还要受到环境的影响。

2. R s → R s a = E [ R t + 1 ∣ S t = s , A t = a ] R_s \rightarrow R_s^a = E[R_{t+1}|S_t=s,A_t=a] RsRsa=E[Rt+1St=s,At=a]

3. v ( s ) → v π ( s ) = E π [ G t ∣ S t = s ] v(s) \rightarrow v_\pi(s) = E_\pi[G_t|S_t=s] v(s)vπ(s)=Eπ[GtSt=s]

另外,我们要引入一些新的函数:

1. π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a|s) = P[A_t=a|S_t=s] π(as)=P[At=aSt=s]

2. P s s ′ π = ∑ a ∈ A P s s ′ a π ( a ∣ s ) P_{ss'}^\pi = \sum_{a \in A}P_{ss'}^a\pi(a|s) Pssπ=aAPssaπ(as),在策略 π \pi π的情况下,转移的概率。

3. R s π = ∑ a ∈ A π ( a ∣ s ) R s a R^\pi_s=\sum_{a \in A}\pi(a|s)R^a_s Rsπ=aAπ(as)Rsa

4. q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] q_\pi(s,a) = E_\pi[G_t|S_t = s,A_t=a] qπ(s,a)=Eπ[GtSt=s,At=a],用来衡量动作a的好坏。

有了上述的函数,我们就可以很好的衡量一个策略的好坏,例如:对于两个策略 π , π ′ \pi,\pi' π,π,如果其中一个策略的所有状态的价值都大于等于另一个。那么该策略就是更好的策略。

问题是,我们如何计算呢?如何计算出一个策略下每个状态对应的价值函数呢?

v π ( s ) , q π ( s , a ) v_\pi(s),q_\pi(s,a) vπ(s),qπ(s,a)的计算

首先我们来阐述两者之间的联系:

v π ( s ) = ∑ a ∈ A π ( a ∣ s ) q π ( s , a ) v_\pi(s)=\sum_{a \in A}\pi(a|s)q_\pi(s,a) vπ(s)=aAπ(as)qπ(s,a) q π ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ π v π ( s ′ ) q_\pi(s,a)=R_s^a+ \gamma \sum_{s' \in S}P_{ss'}^\pi v_\pi(s') qπ(s,a)=Rsa+γsSPssπvπ(s)

不好理解的话,请各位画一幅图。一个圆圈代表初始状态,延伸出几根线代表有几个动作可以选择。每一个动作再延伸出几个圆圈代表所有可能的下一步状态。

其次再看看两者各自与自身的递推关系:

v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ π v π ( s ′ ) ) v_\pi(s)=\sum_{a \in A}\pi(a|s)\big(R_s^a+ \gamma \sum_{s' \in S}P_{ss'}^\pi v_\pi(s')\big) vπ(s)=aAπ(as)(Rsa+γsSPssπvπ(s))

q π ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ π ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) q_\pi(s,a)=R_s^a+ \gamma \sum_{s' \in S}P_{ss'}^\pi \sum_{a' \in A}\pi(a'|s')q_\pi(s',a') qπ(s,a)=Rsa+γsSPssπaAπ(as)qπ(s,a)

其实就是把之前两个式子相互带换一下。

现在我们知道两者的递推关系,接下来我们就可以开始计算 v π ( s ) , q π ( s , a ) v_\pi(s),q_\pi(s,a) vπ(s),qπ(s,a)了。

计算的方法有很多,例如下一章节的动态规划算法。

有一个笨办法,我们可以写出贝尔曼方程,然后通过线性方程组算出来。不过计算量太大,一般采用其他的方法。

v ∗ ( s ) , q ∗ ( s , a ) v_*(s),q_*(s,a) v(s),q(s,a)最优策略

利用之前提到的比较两个策略哪个更优的方法,我们可以得到最优策略。最优策略对应的状态价值函数,策略价值函数就以 ∗ * 作为下标。至于两者关系,和上面一样。一般来说,如果我们得到了最优状态价值函数或者最优策略价值函数,我们就可以以此得出最优策略。

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值