强化学习(三):有限马尔可夫决策与贝尔曼方程

强化学习(三):有限马尔可夫决策与贝尔曼方程

在这里插入图片描述
夏栀的博客——王嘉宁的个人网站 正式上线,欢迎访问和关注:http://www.wjn1996.cn


1、有限马尔可夫决策过程

  有限马尔可夫决策过程(MDP)是强化学习的主要思想,也是后续多个解决强化学习目标的基本假设。
在这里插入图片描述
  我们先来回顾一下强化学习的学习过程。强化学习的主体是智能体,与之相互交互的事物称为环境。当 t t t时刻智能体所处某一个状态 S t S_t St时,其会根据一些策略 π \pi π(例如上一节讲的贪心策略)选择一些动作 A t A_t At,然后会有一定的状态转移概率 p ( S t + 1 , R t + 1 ∣ S t , A t ) p(S_{t+1},R_{t+1}|S_t,A_t) p(St+1,Rt+1St,At) 由当前状态转移到下一时刻状态 S t + 1 S_{t+1} St+1,同时环境也会给予智能体一个收益 R t + 1 R_{t+1} Rt+1。而这一过程,则被称为马尔可夫决策过程中的“智能体-环境”交互过程。这一过程产生的序列如下:

S 0 , A 0 , R 1 , S 1 , A 1 , R 2 , S 2 , . . . , S T − 1 , A T − 1 , R T , S T S_0,A_0,R_1,S_1,A_1,R_2,S_2,...,S_{T-1},A_{T-1},R_T,S_T S0,A0,R1,S1,A1,R2,S2,...,ST1,AT1,RT,ST

有限马尔可夫决策的一个假设是,当前时刻的状态 S t S_{t} St以及该时刻环境反馈的回报 R t R_{t} Rt只取决于上一时刻状态 S t − 1 S_{t-1} St1,这一假设就是隐马尔科夫链的假设,而这一假设主要由状态转移概率 p ( S t + 1 , R t + 1 ∣ S t , A t ) p(S_{t+1},R_{t+1}|S_t,A_t) p(St+1,Rt+1St,At) 来体现。

p ( S t + 1 , R t + 1 ∣ S t , A t ) = p ( S t + 1 = s ′ , R t + 1 = r ∣ S t = s , A t = a ) p(S_{t+1},R_{t+1}|S_t,A_t) = p(S_{t+1} = s',R_{t+1} = r|S_{t}=s,A_{t}=a) p(St+1,Rt+1St,At)=p(St+1=s,Rt+1=rSt=s,At=a)

这是一个联合条件概率分布,给定一个状态 S t S_t St以及当前执行的动作 A t A_t At,环境将会给予智能体一个收益 R t + 1 R_{t+1} Rt+1以及当前转移到状态 S t + 1 S_{t+1} St+1的概率,其是一个四元组 ( S , R , S , A ) (S,R,S,A) (S,R,S,A),或四维的一个张量,其满足对于所有的状态 s ∈ S s\in S sS和动作 a ∈ A a\in A aA,都有 ∑ s ′ ∈ S ∑ r ∈ R p ( s ′ , r ∣ s , a ) = 1 \sum_{s'\in S}\sum_{r\in R}p(s',r|s,a)=1 sSrRp(s,rs,a)=1

  有限MDP就是建立在这个状态转移概率上,实现单步的智能体-环境交互过程,其发挥的非常重要的作用。

  下面引入一个简单的示例,来自《强化学习(Sutton)第二版》例3.3(回收机器人),如图所示:
在这里插入图片描述
一个回收机器人是一个智能体,其只有两个状态,high表示电量高,low表示电量低。其可选择的动作有三个,分别是等待wait、充电recharge以及搜索垃圾search。当电量high时,其可以选择动作wait,此时电量有1的概率保持不变,当选择搜索时,会有一定概率 1 − α 1-\alpha 1α电量下降到low状态,因为高电量不需要充电,因此没有充电的动作。当状态为low时,其有三种选择,继续搜索可能会有 1 − β 1-\beta 1β的概率导致没有电,此时强制充电到高电量,但会获得-3的收益,当选择wait时,则有1的概率保持不变,当选择充电时,则会有1的概率到达高电量状态。整个决策的状态转移如上图所示。

2、收益、回报、分幕与折扣

  收益是强化学习另一个重要的概念,当智能体执行某个动作且转移到下一个状态时,环境会给予智能体一个评价,即对该智能体在状态 S t S_t St时执行动作 A t A_t At的一个评价,也称为收益、回报、奖励,其是强化学习的主要动力来源。强化学习的目标则是最大化累计这些收益,使得在决策过程中能够达到最好结果
  收益分为两种,一种是局部收益,一种是累计收益。在一些书本或文献中,定义收益是某一个时刻环境给予的反馈,也就是单步的局部的收益;而累计收益(也称为回报)则被定义为收益的总和。一般地,从某个时刻 t t t开始到整个决策序列结束 T T T时刻后,智能体在 t t t时刻获得的回报为:

G t = R t + 1 + R t + 2 + . . . + R T G_t=R_{t+1} + R_{t+2} + ... + R_T Gt=Rt+1+Rt+2+...+RT

  另外,强化学习有几个设定,分别为分幕折扣收益(在后续还会引入平均收益)。在一般的强化学习系统中,对于从一个初始状态 S 0 S_0 S0开始,经过一系列的决策达到一个终止状态 S T S_T ST,这一过程称为一个决策轮回,称为一(episode)。例如在围棋中,从游戏开始(初始状态 S 0 S_0 S0都是整个棋盘是空的),一直到可以分出胜负时(例如已经无子可下等情况),这个下棋的过程(落子序列)被称为一幕,再例如智能体在玩一个游戏时 ,每一局可以被认为一个幕。而这种可以以幕为单位的任务被称为分幕式任务。但是需要注意的是,并不是所有的任务都是分幕式任务,有些任务可能只有起始,没有终止或终止状态时无限的,这一类称为持续性任务。一般来说,在分幕式任务中,每一幕的终止状态时间 T T T值是不同的,例如下五子棋,有时候只需下8,9步就可以决出胜负,而有时候整个棋盘下满了才决出胜负。

  另一个设定是折扣。在有些任务中,对时间要求非常高,其认为时间拖得越长,获得的局部收益就会越少,这种设定比较符合现实生活,例如走迷宫游戏,我们希望尽可能的最早能够走出来,而不是一直在里面转悠。显然很早走出迷宫和在里面转悠很久才走出得到的回报应该不同,这一机制则是由折扣率 γ \gamma γ 决定的,带有折扣的收益称为折扣收益,智能体获得的累计收益则称为折扣回报,记做

G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + . . . = ∑ k = 0 ∞ γ k R t + k + 1 G_t = R_{t+1} + \gamma R_{t+2} + \gamma^{2}R_{t+3} + ... =\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1} Gt=Rt+1+γRt+2+γ2Rt+3+...=k=0γkRt+k+1

γ = 0 \gamma=0 γ=0时, G t = R t + 1 G_t=R_{t+1} Gt=Rt+1,即整个决策过程,智能体只接受当前时刻决策后得到的收益,因此此时学习的目标为最大化当前收益,这时候的智能体是目光短浅的。当 γ = 1 \gamma=1 γ=1时,所有时刻的局部收益都被原封不动的累加起来,此时也是目光长远的(甚至可以说如果 T = ∞ T=\infty T=,则这个收益是无限的)。通常 γ \gamma γ会取介于0-1之间的数,其可以保证收益是有限的,例如若收益 R t = 1 R_t=1 Rt=1,则有 ∑ k = 0 ∞ γ k R t + k + 1 = ∑ k = 0 ∞ γ k = 1 1 − γ \sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}=\sum_{k=0}^{\infty}\gamma^{k}=\frac{1}{1-\gamma} k=0γkRt+k+1=k=0γk=1γ1

  强化学习还有一个设定是无折扣的平均收益,这主要是针对在基于函数逼近方法中用于策略控制过程带有折扣无法让神经网络很好拟合的问题,而选择平均收益代替折扣收益,这时候不会出现不稳定的情况。

3、状态价值与动作价值

  强化学习的目标是什么?总的来说是最大化累计收益,但具体累计收益是什么?本节将引入两个重要的概念,分贝是状态价值和动作价值。状态价值(亦称为状态价值函数,记做 v π v_{\pi} vπ),其是衡量智能体处于当前状态有多好,是智能体在当前状态下,采取所有动作后得到的回报的期望值。动作价值(亦称动作价值函数Q函数,记做 q π q_{\pi} qπ),是衡量在当前状态下执行某个动作后,能够得到的价值的期望。 π \pi π 是一个策略,准确的来说是一个概率分布,即其保存一个概率分布,保存着在每个状态下,采取某一个动作的概率。因此在有限马尔科夫决策过程中,给定一个已知的 π \pi π分布,则对应的两个价值函数则可以求解出。

  状态价值函数,是指智能体从当前状态 s s s开始,按照给定的策略 π \pi π进行决策所获得回报的概率期望,定义为:

v π ( s ) = E π [ G t ∣ S t = s ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s ] , ∀ s ∈ S v_{\pi}(s) = \mathbb{E}_{\pi}[G_t|S_t=s] = \mathbb{E}_{\pi}[\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}|S_t=s] , \forall s\in S vπ(s)=Eπ[GtSt=s]=Eπ[k=0γkRt+k+1St=s],sS

由定义可知,当给定一个状态,其价值函数就是从这个状态开始,按照策略 π \pi π对应的概率分布依次执行每一个动作,将所有动作执行后得到的回报求一个数学期望。当处于倒数第二个状态时,这个回报恰巧就是局部收益。 E [ . . . ∣ S t = s ] \mathbb{E}[...|S_t=s] E[...St=s]表示当前时刻 t t t的状态为 s s s条件下的价值期望。

  动作价值函数,是指智能体在某个状态 s s s下,有策略 π \pi π执行了一个动作 a a a后,所有可能决策序列的期望回报。定义为:

q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] = E π [ ∑ k = 0 ∞ γ k R t + k + 1 ∣ S t = s , A t = a ] q_{\pi}(s,a) = \mathbb{E}_{\pi}[G_t|S_t=s, A_t=a] = \mathbb{E}_{\pi}[\sum_{k=0}^{\infty}\gamma^{k}R_{t+k+1}|S_t=s,A_t=a] qπ(s,a)=Eπ[GtSt=s,At=a]=Eπ[k=0γkRt+k+1St=s,At=a]

可知,其表示的是一个状态动作二元组 ( s , a ) (s,a) (s,a)的价值,其实就是在当前状态执行某个动作之后,智能体可能所处所有可能的下一个状态价值函数的期望。

4、贝尔曼方程

  为了能够比较形式化的描述状态价值和动作价值的迭代关系,我们引入贝尔曼方程。定义如下:
(1)状态价值函数的贝尔曼方程:

v π ( s ) = E π [ G t ∣ S t = s ] v_{\pi}(s) = \mathbb{E}_{\pi}[G_t|S_t=s] vπ(s)=Eπ[GtSt=s]

= ∑ a π ( a ∣ s ) q π ( s , a ) =\sum_{a}\pi (a|s)q_{\pi}(s,a) =aπ(as)qπ(s,a)

= ∑ a π ( a ∣ s ) ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] =\sum_{a}\pi (a|s)\sum_{s',r}p(s',r|s,a)[r + \gamma v_{\pi}(s')] =aπ(as)s,rp(s,rs,a)[r+γvπ(s)]

我们来理解一下这个贝尔曼方程。其表示的实质就是一个递推关系式。第一行表示的是价值函数的定义,第二行可知,状态价值就是在当前状态 s s s所有可能采取的动作 a a a得到的动作价值的期望,第三行则表示当前状态 s s s的价值 v π ( s ) v_{\pi}(s) vπ(s)与下一个状态 s ′ s' s的价值 v π ( s ′ ) v_{\pi}(s') vπ(s)之间的递归关系。事实上符合我们的理解,如下图:

在这里插入图片描述
这被称为回溯图(或者回溯树)。白色圆圈表示状态,黑色圆圈表示状态动作二元组,第三行的递推关系式则可以用这个图表达。我们要求的是最顶端状态价值,其可以根据后续的状态来反推,贝尔曼方程便是反推至下一个时刻所有可能的状态的价值期望。从顶端状态开始,有 π ( a ∣ s ) \pi(a|s) π(as)概率选择其下的两个动作,又有 p ( s ′ , r ∣ s , a ) p(s',r|s,a) p(s,rs,a)的概率转移到下一个状态 s ′ s' s和获得收益 r r r。而新的状态 s ′ s' s本身也有价值,又因为我们讨论的是带有折扣的回报,因此再乘以一个折扣率。

(2)动作价值的贝尔曼方程:

q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] q_{\pi}(s,a) = \mathbb{E}_{\pi}[G_t|S_t=s, A_t=a] qπ(s,a)=Eπ[GtSt=s,At=a]

= ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v π ( s ′ ) ] =\sum_{s',r}p(s',r|s,a)[r + \gamma v_{\pi}(s')] =s,rp(s,rs,a)[r+γvπ(s)]

= ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ ∑ s ′ , a ′ π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) ] =\sum_{s',r}p(s',r|s,a)[r + \gamma \sum_{s',a'}\pi (a'|s')q_{\pi}(s',a')] =s,rp(s,rs,a)[r+γs,aπ(as)qπ(s,a)]

第一行表示动作价值的定义,第二行指当前动作价值是经过状态转移之后得到局部收益 r r r和所处新的状态的状态价值折扣后和的期望,换句话说是描述状态动作二元组 ( s , a ) (s,a) (s,a)的价值与下一时刻 s ′ s' s的价值之间的关系。第三行则表示相邻两个时刻动作价值的递推关系式。同理,我们用回溯图表示:

在这里插入图片描述
顶部表示要计算的状态动作二元组的价值(Q值),其有一个状态转移概率 p ( s ′ , r ∣ s , a ) p(s',r|s,a) p(s,rs,a) 得到收益 r r r 以及转移到下一状态 s ′ s' s。而所有可能的下个状态的状态价值又满足 v π ( s ′ ) = ∑ a ′ π ( a ′ ∣ s ′ ) q π ( s ′ , a ′ ) v_{\pi}(s') = \sum_{a'}\pi (a'|s')q_{\pi}(s',a') vπ(s)=aπ(as)qπ(s,a),因此代入第二行式子即可得到动作价值贝尔曼方程。

5、最优价值

  我们再次回归问题,强化学习的目标是什么?是最大化累计收益,其实,在实际的应用中,累计收益大并不代表结局有多好,例如下象棋,输赢取决于谁先将军而不是吃子的个数,因此只有让智能体学习到一个最优策略,才是我们更加关心的事情。因此,为了得到一个最好的策略,我们引入最有价值概念。

  定义,如果存在一个策略 π \pi π,其累计回报比其他任意一个策略 π ′ \pi ' π都要高,我们认为这个策略是最优策略 π ∗ \pi_{*} π,记做 π ≥ π ′ \pi \geq \pi' ππ。如果都满足 π ≥ π ′ \pi \geq \pi' ππ,则应有 v π ( s ) ≥ v π ′ ( s ) v_{\pi}(s) \geq v_{\pi'}(s) vπ(s)vπ(s)。最优策略不唯一,但经过证明,最优策略下的状态价值函数一定是最优的。定义为最优状态价值函数: v ∗ ( s ) = m a x π v π ( s ) v_{*}(s) = max_{\pi}v_{\pi}(s) v(s)=maxπvπ(s)。同理动作价值函数的最优称为最优动作价值函数,记做 q ∗ ( s , a ) = m a x π q π ( s , a ) q_{*}(s,a) = max_{\pi}q_{\pi}(s,a) q(s,a)=maxπqπ(s,a)

(1)状态价值贝尔曼最优方程:最优策略下的各个状态的价值一定等于这个状态下最优动作的价值期望回报。

v ∗ ( s ) = m a x a ∈ A q π ∗ ( s , a ) = m a x a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ v ∗ ( s ′ ) ] v_{*}(s) = max_{a\in A} q_{\pi_{*}}(s,a) = max_{a}\sum_{s',r}p(s',r|s,a)[r + \gamma v_{*}(s')] v(s)=maxaAqπ(s,a)=maxas,rp(s,rs,a)[r+γv(s)]

(2)动作价值贝尔曼最优方程:

q ∗ ( s , a ) = ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ m a x a ′ q ∗ ( s ′ , a ′ ) ] q_{*}(s,a) = \sum_{s',r}p(s',r|s,a)[r + \gamma max_{a'} q_{*}(s',a')] q(s,a)=s,rp(s,rs,a)[r+γmaxaq(s,a)]

两个最优方程的回溯图如下所示:

在这里插入图片描述
回溯图很清晰的表明,最优策略下状态价值和动作价值的递推关系。形式化和第四节的贝尔曼方程的回溯图一样,可自行理解一下。

  同样,我们引入《强化学习(Sutton)第二版》中的例3.5和例3.8(网格问题),如图:

在这里插入图片描述
在这里插入图片描述
可知在一个表格任务中,经过数轮的迭代,可以形成一个最优策略 π ∗ \pi_{*} π,这个策略对应的最优状态价值函数如中间图所示,其表示每个状态的一个最大价值(或者是对应所有可能的最优Q值的期望);右图中,每个格子表示一个状态,其有四种动作(上下左右),显示出来的箭头则表示其对应的动作价值 q π ( s , a ) q_{\pi}(s,a) qπ(s,a)是最大的。

  事实上,在一些简单的任务中(例如本文给定的两个示例),可以通过这种不断递推的方法求解所有状态价值和动作价值,但在许多强化学习任务中,这回导致大量的计算资源,因此这种基于表格型的学习在后续会有许多解决策略。例如动态规划则是基于这种“穷举”的思想,而蒙特卡洛和时序差分则是基于“采样近似”的方法,基于函数逼近(或深度学习)则是训练一个神经网络或其他回归模型来拟合这些状态价值或动作价值函数,寻找一个近似的求解而不是精确求解,这些策略的目标都是缓解由于过大的搜索空间导致的计算资源和时间问题。在后续我们将一一讲解。

有限马尔可夫决策过程(MDP)中的贝尔曼方程强化学习中的核心概念之一,用于描述状态转移和奖励的期望。在有限MDP中,状态和动作的数量都是有限的。贝尔曼方程包括状态价值函数(Bellman equation for value function)和动作价值函数(Bellman equation for action value function)。 以下是一个简化的示例,使用Python代码来演示如何实现计算状态价值函数的贝尔曼方程。这个例子假设状态转移概率和奖励函数是已知的,并且我们有一个固定的状态和动作集合。 ```python import numpy as np # 定义状态转移概率矩阵P[s][a][s'],即从状态s采取动作a后转移到状态s'的概率 # 定义奖励函数R[s][a][s'],即从状态s采取动作a转移到状态s'后获得的即时奖励 # 假设我们有3个状态和2个动作,且这些概率和奖励都是已知的 P = np.array([[[0.7, 0.3, 0.0], # s0 [0.0, 0.0, 1.0]], # s1 [[0.8, 0.1, 0.1], # s0 [0.0, 1.0, 0.0]], # s1 [[0.4, 0.6, 0.0], # s0 [0.0, 0.0, 1.0]]]) # s1 R = np.array([[[5, 10, 0], # s0 [0, 0, 1]], # s1 [[20, 10, 10], # s0 [0, 20, 0]], # s1 [[10, 30, 0], # s0 [0, 0, 5]]]) # s1 # 假设贴现因子为0.9 gamma = 0.9 # 贝尔曼方程计算状态价值函数的迭代过程 def bellman_value_iteration(P, R, gamma, theta=1e-10, max_iter=1000): num_states = P.shape[0] num_actions = P.shape[1] V = np.zeros(num_states) # 初始化状态价值函数为0 for i in range(max_iter): delta = 0 # 对每一个状态进行更新 for s in range(num_states): v = np.copy(V[s]) # 计算贝尔曼期望方程 V[s] = max(sum(sum(P[s][a][s_prime] * (R[s][a][s_prime] + gamma * V[s_prime]) for s_prime in range(num_states)) for a in range(num_actions))) delta = max(delta, np.abs(v - V[s])) if delta < theta: # 如果改变量小于阈值,则停止迭代 break return V # 运行贝尔曼价值迭代算法 state_values = bellman_value_iteration(P, R, gamma) print("状态价值函数为:") print(state_values) ``` 请注意,这个代码仅作为示例,实际应用中状态转移概率矩阵`P`和奖励函数`R`可能是通过环境动态获取的,并且会更加复杂。另外,状态数量、动作数量以及贴现因子`gamma`都会根据具体问题进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华师数据学院·王嘉宁

$感谢支持$

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值