马尔可夫决策过程

马尔可夫决策

马尔可夫理论是强化学习中重要的思想之一,以下是笔者在自学过程中的一些总结。

1、马尔可夫

为了更好地理解马尔可夫决策过程,我们由简单至复杂先来介绍马尔可夫过程以及马尔可夫奖励过程。

1.1 马尔可夫过程(Markov Process,MP)

  • 定义:马尔可夫过程是一个由状态空间(State Space)状态转移概率(State trasition Probability) 构成的随机过程。

  • 特点:他满足马尔可夫性质,即 当前状态只取决于当前状态,而与过去状态无关 如下式所示:
    P ( s t + 1 ∣ s t ) = P ( s t + 1 ∣ s 1 , s 2 , . . . , s t ) P(s_{t+1}|s_t) = P(s_{t+1}|s_1,s_2,...,s_t) P(st+1st)=P(st+1s1,s2,...,st)

  • 组成:状态空间S和状态转移概率矩阵 P ( s ′ ∣ s ) P(s'|s) P(ss)

1.2 马尔可夫奖励过程(Marakov Reward Process,MRP)

  • 定义:马尔可夫奖励过程在马尔可夫过程的基础上引入了奖励的概念,用于描述一个带有奖励机制的系统。
  • 特点:在每个状态转移的过程中,系统会得到一个奖励。该奖励是当前状态所带来的即时回报。
    ( S , P , R ) (S,P,R) (S,P,R)
    其中, R ( s ) R(s) R(s)表示在状态 s 下的奖励函数。
  • 组成:状态空间 S,状态转移概率矩阵 P(s’|s)、奖励函数 R(s)

1.3 马尔可夫决策过程(Markov Decision Process,MDP)

  • 定义:马尔可夫决策过程实在马尔可夫奖励过程的基础上加入了决策(Action)的概念,广泛应用于强化学习和其他决策理论中,也是本文讨论的主要内容。
  • 特点:在每一个状态下,决策者可以选择一个动作(Action)来影响状态转移,并因此获得不同的奖励。
    ( S , A , P , R , γ ) (S,A,P,R,\gamma) (S,A,P,R,γ)
    其中, A A A是动作空间, P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a)是状态在选择动作 a a a后转移到状态 s ′ s' s的概率, R ( s , a ) R(s,a) R(s,a)是采取动作 a a a后得到的奖励, γ \gamma γ是折扣因子,用于衡量未来奖励的重要性。
  • 组成:状态空间 S S S,动作空间 A A A,状态转移概率矩阵 P ( s ′ ∣ s , a ) P(s'|s,a) P(ss,a),奖励函数 R ( s , a ) R(s,a) R(s,a),折扣因子 γ \gamma γ

1.4 价值函数

进一步的,为了能够对智能体的决策进行评估,我们引入了状态价值函数以及动作价值函数。
对于状态 s s s,其对应的价值应当考虑到即时奖励以及延迟奖励,同时还有就是动作奖励。
这里我们给出两种方式计算,
1、基于蒙特卡洛
2、基于贪心算法
基于贝尔曼方程,我们可以分别得到V以及Q:

  • 状态价值函数(State-value Function)V(S)
  • 动作价值函数(Action-state Funcion)Q(S)

以上两者的详细推导过程,读者可自行查阅书籍或相关视频,此处不作赘述。

通过求出每个状态的对应的价值,我们后续就可以得到价值函数。

1.5总结

总的来说,马尔可夫以及马尔可夫奖励过程,这两者与马尔可夫决策过程最大的区别就是,马尔可夫是智能体自身做出了对应动作后从而引起状态的改变,而前两者则是随波逐流。

2、价值迭代和策略迭代

动态规划(Dynamic programming,DP):
分析问题,得到子问题的表达式,然后将整体问题变成多个子问题即可,这与递归不同,因为通常会用空间换时间。

为了找到最佳策略和最佳价值函数,这里有两种方法——策略迭代和价值迭代

2.1价值迭代

伪代码
1、while(1):(执行以下循环直至满足收敛条件)
 	max_dif = 0 (用于记录该次迭代的最大差值)
2、	for s in 状态空间:  (对于每个状态s)
3、		V(s) = 0  (初始化每个状态价值为0)
4、		基于式(2.1)更新每个状态的价值V
5、	更新max_dif
6、if max_dif < theta:break如果小于阈值,则退出循环
7、此时的V*便是最佳价值函数

V ( s ) = R ( s ) + max ⁡ a ∈ A γ ∑ π P ( s ′ ∣ s , a ) V ( s ′ ) (2.1) V(s) = R(s) + \max_{a\in A} \gamma \sum_\pi P(s'|s,a)V(s') \tag{2.1} V(s)=R(s)+aAmaxγπP(ss,a)V(s)(2.1)

	进一步的,根据最优理论,我们便可以从最优价值函数中提取处最优策略\pi

2.2策略迭代

策略迭代可以分为 策略评估、策略提升 两个步骤:
策略迭代的过程就是反复的进行策略评估,然后对策略进行提升,直至收敛。

2.2.1策略评估

伪代码
根据当前的策略计算当前的价值函数
1、while(1):循环保证V(s)收敛,因为计算价值函数是一个迭代的过程
	max_dif = 0 
2、	for s in 状态空间:
3、		V(s) = 0 初始化V为0
4、 	根据式(2.2)更新V(s),这里注意区别π和P:
5、		更新max_dif
6、if max_dif < theta:break如果小于阈值,则退出循环
7、结束这一轮策略评估

V ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R ( s ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V ( s ′ ) ) (2.2) V(s) = \sum_{a\in A} \pi(a|s) \left (R(s) + \gamma\sum_{s'} P(s'|s,a)V(s')\right)\tag{2.2} V(s)=aAπ(as)(R(s)+γsP(ss,a)V(s))(2.2)
其中π表示状态s下的动作概率(一般是用一个列表存储),P则表示状态s和a下转移到s’的概率。

2.2.2策略提升

伪代码
计算每个状态的Q函数,Q函数对应最大的动作作为当前状态的策略,然后更新π
1、for s in state_range
2、	for a in aciton_range
3、		q_sa_list.append()	根据式2.2计算对应状态下采取不同动作的的Q值
4、	根据式2.3更新π函数
5、遍历完所有状态,策略提升即完成。

π ( s ) = arg max ⁡ a Q π ( s , a ) (2.3) \pi(s) = \argmax_a Q_\pi (s,a) \tag{2.3} π(s)=aargmaxQπ(s,a)(2.3)

2.2.3策略迭代

结合以上两个过程,不断循环迭代从而确定最佳策略。

伪代码
1、while(1):
2、	policy_evalution	对当前策略进行评估从而初始化(更新)当前的价值函数
3、	new_policy = policy_improvment	策略提升
4、	if old_policy == new_policy :break	如果策略在提升后不再发生改变,退出循环,当前策略即为最佳策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值