我的强化学习笔记(1)马尔可夫决策过程

我的强化学习代码仓库
https://github.com/ZiyiLiubird/MyRLcodes

首先,什么是强化学习?笔者的理解是,强化学习是一种半监督学习方式,系统与环境产生交互,做出一系列的行为,环境状态系统状态因此发生改变,环境最终给予系统一个反馈信号,也就是一个reward或punish。系统通过反馈信号来调整自己的行为,使其更加适应这个环境(接受更多的reward)。

强化学习的一个特点之一是,它每一次产生的行为不一定是当前最优的,但若算法收敛的情况下,将是一个全局最优解。每一步只选择当前最优,这属于贪心算法,例如梯度下降算法就属于这种类型,它很容易陷入局部最优解而难以跳出。人生又何尝不是如此呢?许多人往往重视眼前的利益而忽视了长远的发展,这从全局来看,自然对一个人的发展是不良的。

下面归结一下强化学习的特点:

  • 没有监督数据,只有奖励信号;
  • 奖励信号不一定是实时的,而很可能是延后的,有时甚至延后很- 多。比如下围棋,系统在游戏结束时候收到最终奖励/惩罚信号,当然,中间过程也可能会收到许多反馈信号。
  • 时间(序列)是一个很重要的因素。
  • 当前的行为影响后续接收到的数据。

强化学习主要基于这样的”奖励假设”:所有问题解决的目标都可以被描述成最大化累积奖励。

不过这个假设是否足够合理,或者是否足够优秀,笔者是存疑的。这儿涉及到现实社会中关于AI伦理问题的讨论。举一个比较接地气的例子,在自动驾驶系统的开发中,一个问题是,当汽车在大桥上行驶,前面出现了一批行人,车祸即将发生,而汽车此时无法立即停车,那么系统应该是选择保护驾驶员,还是前方的行人呢?这取决于强化学习中价值函数的选择。

马尔可夫决策过程

本篇文章的主要内容:

  • 马尔科夫过程(Markov Process)
  • 马尔科夫奖励过程(Markov Reward Process),贝尔曼方程(Bellman Equation)
  • 马尔科夫决策过程(Markov Decision Process),贝尔曼期望方程(Bellman Expectation Equation)
  • 贝尔曼最优性方程(Bellman Optimality Equation),回溯图

马尔科夫过程

首先介绍马尔科夫性:
简单说,马尔科夫性意味着给定现在的状态,过去的状态与将来的状态独立;也可以理解为过去所有的状态信息都蕴含在了现在的状态信息中。
数学表达:状态 S t S_t St 具有马尔科夫性当且仅当:
P [ S t + 1 ∣ S t ] = P [ S t + 1 ∣ S 1 , … , S t ] P[S_{t+1}|S_t]=P[S_{t+1}|S_1,\ldots,S_t] P[St+1St]=P[St+1S1,,St]
接下来介绍状态转移概率和状态转移矩阵的概念,一下我们默认所有的状态均具有马尔科夫性,特殊情况会单独说明:
对状态 s s s和后继状态 s ′ s^{'} s ,状态转移概率定义为:
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]
状态转移矩阵 P \mathbf{P} P 定义了从状态 s s s 转移到所有后继状态 s ′ s' s的概率:
状态转移矩阵

马尔科夫过程(马尔科夫链)是一个二元组 < S , P > <S,P> <S,P> ,其中:

  • S S S 是状态的集合
  • 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]
  • 马尔科夫过程具有时间齐次性,也就是状态转移概率只与前驱和后继状态有关,与时间 t t t 无关。
    详细数学定义可以参考随机过程中有关马尔科夫过程的定义。
    马尔科夫过程满足马尔科夫性。

马尔科夫奖励过程

马尔科夫奖励过程与马尔科夫过程的区别是加入了奖励函数 R 和折扣因子 γ \gamma γ。于是我们可以定义每一个状态的价值。具体定义如下:
马尔科夫奖励过程是四元组 < S , P , R , γ > <S,P,R,\gamma> <S,P,R,γ> S , P S,P SP的定义与马尔科夫过程中的定义相同。

  • R 是奖励函数, R s = E [ R t + 1 ∣ S t = s ] R_{s}=E[R_{t+1}|S_{t}=s] Rs=E[Rt+1St=s]
  • γ \gamma γ是折扣因子, γ ∈ [ 0 , 1 ] \gamma\in[0,1] γ[0,1]

回报Return的定义:
回报 G t G_t Gt是从时间步 t 开始一直到结束这一条轨迹上所获得的累积奖励之和。
G t = R t + 1 + γ R t + 2 + … = ∑ k = 0 ∞ γ k R t + k + 1 G_t=R_{t+1}+\gamma R_{t+2}+\ldots=\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1} Gt=Rt+1+γRt+2+=k=0γkRt+k+1
注意,这里的 G t G_t Gt是采样出的一条轨迹的累积奖励函数,并不是一个期望回报奖励。使我们从全部可能的轨迹当中抽出了一条单独来看时的值。
折扣因子 γ \gamma γ对未来的奖励打折扣,代表了未来的奖励在当下的价值。

  • γ \gamma γ越靠近 0 说明我们越看重当下的利益
  • γ \gamma γ越靠近 1 说明我们越看重未来的回报

为什么要引入 γ \gamma γ?主要原因有一下几条:

  • 从数学角度考虑,为了防止回报 G t G_t Gt是一个无穷级数的时候会发散到无穷大,不收敛。
  • 受到经济学或者心理学的启发,例如投资人可能更看重眼前的利益,或者说未来的利益会有较大的不确定性,例如股票市场的波动等等。
  • 当轨迹在有限步终止时,我们有时也考虑采用无折扣形式,即 γ = 1 \gamma=1 γ=1

价值函数

价值函数 v ( s ) v(s) v(s)给出了状态 s 下累积回报 G t G_t Gt的期望。前面我们提到, G t G_t Gt是采样出来的一条轨迹上的累积回报,因此它具有随机性,会随着轨迹的不同而发生变化,无法完整刻画状态 s 的价值大小。而 v ( s ) v(s) v(s)便是通过求期望消除了这种随机性。
v ( s ) = E [ G t ∣ S t = s ] v(s)=E[G_t|S_t=s] v(s)=E[GtSt=s]
例如从状态 s 1 s_1 s1出发我们可以到达 s 2 , s 3 , s 4 s_2,s_3,s_4 s2s3s4,而从状态 s 2 , s 3 , s 4 s_2,s_3,s_4 s2s3s4我们又可以到达其他状态,所有状态之间的连接构成了一张图, s 1 → s 2 → … s_1\rightarrow s_2\rightarrow\ldots s1s2 便构成了一条轨迹,我们可以计算这条轨迹的累积回报 G t G_t Gt,而从 s 1 s_1 s1出发这样的轨迹有许多条,将它们求期望即可得到消除了随机性的累积回报,能够准确衡量状态 s 1 s_1 s1处的价值。
MRPs的贝尔曼期望方程
我们可以将 v ( s ) v(s) v(s)分为两部分:
一部分是转移一步得到的即时奖励 r r r
另一部分是转移到新状态后的价值函数 v ( s ′ ) v(s') v(s)
根据这个思想我们可以将价值函数做递归分解,得到贝尔曼期望方程:
贝尔曼期望方程
在这里插入图片描述

用矩阵形式表示为:
V = R + γ P V \mathbf{V}=\mathbf{R}+\gamma\mathbf{PV} V=R+γPV,其中 V , R , P \mathbf{V,R,P} V,R,P均为列向量, P \mathbf{P} P是状态转移矩阵。
在环境转移状态矩阵完全可知的情况下,理论上我们可以通过求解线性方程组的形式求解价值函数,但是计算的时间复杂度过高,并且大多数情况下我们都无法获取环境的动态信息。因此衍生出了一系列迭代求解算法:例如Monte-Carlo evaluation,Temporal-Difference learning等等。

马尔可夫决策过程

马尔可夫决策过程(Markov Decision Process)在马尔可夫奖励过程的定义之上,增加了动作空间 A ,也因此具有了决策能力,即选择做出哪一个动作。具体定义如下:
马尔可夫决策过程可以由五元组 < S , A , P , R , γ > <S,A,P,R,\gamma> <S,A,P,R,γ>描述。其中 S , P , R , γ S,P,R,\gamma S,P,R,γ的定义与马尔可夫奖励过程相同,不再赘述。下面解释一下 A :
A 代表了动作的集合,也就是智能体agent的动作空间,能够在每一步决策时选择哪些动作。
有了动作以后,我们还需要定义根据什么样的准则选择动作,也就是所谓的策略:
策略 π ( a ∣ s ) \pi(a|s) π(as)是给定状态之后在动作空间上的一个条件概率分布函数:
π ( a ∣ s ) = P [ A t = a ∣ S t = s ] \pi(a|s)=P[A_t=a|S_t=s] π(as)=P[At=aSt=s]
策略完全定义了agent的行为
策略只与当前的状态 S t S_t St有关,与历史信息无关,这是由马尔科夫性决定的
策略具有时间齐次性
P s s ′ π = ∑ a ∈ A π ( a ∣ s ) P s s ′ a P_{ss'}^{\pi}=\sum_{a\in A}\pi(a|s)P_{ss'}^{a} Pssπ=aAπ(as)Pssa
R s π = ∑ a ∈ A π ( a ∣ s ) R s a R_{s}^{\pi}=\sum_{a\in A}\pi(a|s)R_{s}^{a} Rsπ=aAπ(as)Rsa

价值函数
  1. 状态价值函数
    MDP的状态价值函数是从当前的状态 s 出发,follow当前的policy π \pi π ,所得到的累积奖励的数学期望:
    v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s)=E_{\pi}[G_t|S_t=s] vπ(s)=Eπ[GtSt=s]

  2. 动作价值函数
    MDP的动作价值函数是从当前的状态 s 出发,采取动作 a ,然后follow当前的policy \pi ,所得到的累积奖励的数学期望:
    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]
    贝尔曼期望方程
    与马尔可夫奖励过程中贝尔曼期望方程的定义类似,我们同样可以将MDP中的价值函数分解为当前状态或状态-动作下获得的即时奖励 r 加上一部状态转移之后后继状态或状态-动作的价值函数之和。
    v π ( s ) = E π [ R t + 1 + γ v π ( S t + 1 ) ∣ S t = s ] v_{\pi}(s)=E_{\pi}[R_{t+1}+\gamma v_{\pi}(S_{t+1})|S_t=s] vπ(s)=Eπ[Rt+1+γvπ(St+1)St=s]
    q π ( s , a ) = E π [ R t + 1 + γ q π ( S t + 1 , A t + 1 ) ∣ S t = s , A t = a ] q_{\pi}(s,a)=E_{\pi}[R_{t+1}+\gamma q_{\pi}(S_{t+1},A_{t+1})|S_t=s,A_t=a] qπ(s,a)=Eπ[Rt+1+γqπ(St+1,At+1)St=s,At=a]

下面给出状态价值函数与动作价值函数之间的关系:
在这里插入图片描述
在这里插入图片描述

将状态-动作行为树和动作-状态行为树合并展开,我们就得到了两个递归方程:
状态价值函数的贝尔曼期望方程:
v π ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v π ( s ′ ) ) v_{\pi}(s)=\sum_{a\in A}\pi(a|s)(R_{s}^{a}+\gamma \sum_{s'\in S}P_{ss'}^{a}v_{\pi}(s')) vπ(s)=aAπ(as)(Rsa+γsSPssavπ(s))
合并后的行为树如下图所示:
在这里插入图片描述

动作价值函数的贝尔曼期望方程:
q π ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ a ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) q_{\pi}(s,a)=R_{s}^{a}+\gamma\sum_{s'\in S} P_{ss'}^{a}\sum_{a'\in A}\pi(a'|s')q_{\pi}(s',a') qπ(s,a)=Rsa+γsSPssaaAπ(as)qπ(s,a)
行为树:
在这里插入图片描述

最优价值函数

最优状态价值函数 v ⋆ ( s ) v_{\star}(s) v(s)是遍历策略空间的所有状态后值最大的价值函数
v ⋆ = max ⁡ π v π ( s ) v_{\star}=\max_{\pi} v_{\pi}(s) v=maxπvπ(s)
最优动作价值函数 q ⋆ ( s , a ) q_{\star}(s,a) q(s,a)是遍历策略空间的所有状态后值最大的动作价值函数
q ⋆ ( s , a ) = max ⁡ π q π ( s , a ) q_{\star}(s,a)=\max_{\pi} q_{\pi}(s,a) q(s,a)=maxπqπ(s,a)
对于一个MDP问题,如果我们求得了最优q函数,那么这个MDP问题也就被解决了。
最优策略
首先定义一个偏序关系:
π ≥ π ′ i f v π ( s ) ≥ v π ′ ( s ) , ∀ s \pi\geq\pi' if v_{\pi}(s)\geq v_{\pi'}(s),\forall s ππifvπ(s)vπ(s),s
定理:对于任意一个马尔科夫决策过程:
总存在一个最优策略 π ⋆ \pi_{\star} π不差于其他策略: π ⋆ ≥ π , ∀ π \pi_{\star}\geq\pi,\forall \pi ππ,π
所有的最优策略都能取得最优价值函数: v π ⋆ ( s ) = v ⋆ ( s ) v_{\pi_{\star}}(s)=v_{\star}(s) vπ(s)=v(s)
所有的最优策略都能取得最优动作价值函数: q π ⋆ ( s , a ) = q ⋆ ( s , a ) q_{\pi_{\star}}(s,a)=q_{\star}(s,a) qπ(s,a)=q(s,a)
如何求解最优策略
最优策略可以通过对 q ⋆ ( s , a ) q_{\star}(s,a) q(s,a)在已知状态求最大值下的动作 a 得到:
π ⋆ ( x ) = { 1 i f a = arg ⁡ max ⁡ a ∈ A q ⋆ ( s , a ) 0 o t h e r w i s e \pi_{\star}(x)=\left\{ \begin{aligned} &1\qquad if\quad a=\arg\max_{a\in A}q_{\star}(s,a)\\ &0 \qquad otherwise \end{aligned} \right. π(x)=1ifa=argaAmaxq(s,a)0otherwise
因此如果我们知道 q ⋆ ( s , a ) q_{\star}(s,a) q(s,a) 我们就可以立即得到最优策略
利用贝尔曼最优方程 v ⋆ ( s ) = max ⁡ a q ⋆ ( s , a ) v_{\star}(s)=\max_{a}q_{\star}(s,a) v(s)=maxaq(s,a)
q ⋆ ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ a v ⋆ ( s ′ ) q_{\star}(s,a)=R_s^a+\gamma\sum_{s'\in S}P_{ss'}^{a}v_{\star}(s') q(s,a)=Rsa+γsSPssav(s)
综合上述两式我们有:
v ⋆ ( s ) = max ⁡ a R s a + γ ∑ s ′ ∈ S P s s ′ a v ⋆ ( s ′ ) v_{\star}(s)=\max_{a}R_s^a+\gamma\sum_{s'\in S}P_{ss'}^av_{\star}(s') v(s)=maxaRsa+γsSPssav(s)
q ⋆ ( s , a ) = R s a + γ ∑ s ′ ∈ S P s s ′ a max ⁡ a ′ q ⋆ ( s ′ , a ′ ) q_{\star}(s,a)=R_s^a+\gamma\sum_{s'\in S}P_{ss'}^{a}\max_{a'}q_{\star}(s',a') q(s,a)=Rsa+γsSPssamaxaq(s,a)
贝尔曼最优方程是一个非线性方程,没有闭式解,但可用迭代法求解:

  • 值迭代
  • 策略迭代
  • Q-learning
  • Sarsa

以上算法我将在后面内容中继续介绍

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值