基于动态规划的强化学习

基于动态规划的强化学习

一、MDP目标和策略

相关概念

目标:选择能够最大化累积奖励期望的动作

E[R(s0)+γR(s1)+γ2R(s2)+⋯ ]\mathbb{E}{[R(s_{0})+\gamma R(s_{1}) + \gamma^{2} R(s_{2})+\cdots]}E[R(s0)+γR(s1)+γ2R(s2)+]

γ∈[0,1]\gamma \in [0,1]γ[0,1]是未来奖励的折扣因子,使得和未来奖励相比起来智能体更重视即时奖励

以金融为例,今天的$1比明天的$1更有价值

给定一个特定的策略

π(s):S→A\pi{(s)}:S \rightarrow Aπ(s):SA

即,在状态sss下采取动作a=π(s)a=\pi{(s)}a=π(s)

给定策略π\piπ定义价值函数

Vπ(s)=E[R(s0)+γR(s1)+γ2R(s2)+⋯∣s0=s,π]{V^{\pi}{(s)}}={\mathbb{E}{[R(s_{0})+{\gamma}R(s_{1})+{\gamma^{2}}R(s_{2})+\cdots|s_{0}=s,\pi]}}Vπ(s)=E[R(s0)+γR(s1)+γ2R(s2)+s0=s,π]

即,给定起始状态和根据策略 π\piπ 采取动作时的累积奖励期望

价值函数的Bellman等式

给策略 π\piπ 定义价值函数

在这里插入图片描述

最优价值函数

对状态 sss 来说的最优价值函数是所有策略可获得的最大可能折扣奖励的和

V∗(s)=max⁡πVπ(s){V^{*}(s)=\max\limits_{\pi}{V^{\pi}(s)}}V(s)=πmaxVπ(s)

最优价值函数的Bellman等式

V∗(s)=R(s)+max⁡a∈Aγ∑s′∈SPsa(s′)V∗(s′){V^{*}(s)}={R(s)+\max\limits_{a\in A}{\gamma\sum\limits_{s' \in S}{P_{sa}(s')V^{*}(s')}}}V(s)=R(s)+aAmaxγsSPsa(s)V(s)

最优策略
π∗(s)=arg⁡max⁡a∈A∑s′∈SPsa(s′)V∗(s′){\pi^{*}(s)}={\arg\max\limits_{a \in A}{\sum\limits_{s' \in S}{P_{sa}(s')V^{*}(s')}}}π(s)=argaAmaxsSPsa(s)V(s)

对状态 sss 和策略 π\piπ

V∗(s)=Vπ∗(s)≥Vπ(s){V^{*}(s)}={V^{\pi^{*}}(s)\geq V^{\pi}(s)}V(s)=Vπ(s)Vπ(s)

二、价值迭代和策略迭代

价值函数和策略相关

Vπ(s)=R(s)+γ∑s′∈SPsπ(s)Vπ(s′){V^{\pi}(s)}={R(s)+\gamma\sum\limits_{s' \in S}{P_{s\pi{(s)}}V^{\pi}(s')}}Vπ(s)=R(s)+γsSPsπ(s)Vπ(s)

π(s)=arg⁡max⁡a∈A∑s′∈SPsa(s′)Vπ(s′){\pi{(s)}}={\arg\max\limits_{a \in A}{\sum\limits_{s' \in S}{P_{sa}(s')V^{\pi}(s')}}}π(s)=argaAmaxsSPsa(s)Vπ(s)

可以对最优价值函数最优策略执行迭代更新

  • 价值迭代
  • 策略迭代

三、价值迭代

对于一个动作空间和状态空间有限的MDP

∣S∣<∞,∣A∣<∞|S|<\infty,|A|<\inftyS<,A<

价值迭代过程

  1. 对每个状态 sss ,初始化 V(s)=0V(s)=0V(s)=0
  2. 重复以下过程直到收敛
    对每个状态,更新
    $V(s)=R(s)+max⁡a∈Aγ∑s′∈SPsa(s′)V(s′){V(s)}={R(s)+\max\limits_{a \in A}{\gamma\sum\limits_{s' \in S}{P_{sa}(s')V(s')}}}V(s)=R(s)+aAmaxγsSPsa(s)V(s)

注意:在以上的计算中没有明确的策略,只局限于数值计算

同步/异步价值迭代

同步价值迭代: 同步的价值迭代会储存两份价值函数的拷贝

  1. SSS 中的所有状态 sss
    Vnew(s)←max⁡a∈A(R(s)+γ∑s′∈SPsa(s′)Vold(s′)){V_{new}(s)}\leftarrow\max\limits_{a \in A}{\left(R(s)+\gamma\sum\limits_{s' \in S}{P_{sa}{(s')}V_{old}{(s')}}\right)}Vnew(s)aAmax(R(s)+γsSPsa(s)Vold(s))

  2. 更新
    Vold(s)←Vnew(s){V_{old}{(s)}}\leftarrow{V_{new}{(s)}}Vold(s)Vnew(s)

需要两倍的空间进行存储

异步价值迭代: 异步价值迭代只储存一份价值函数

  1. SSS 中的所有状态 sss
    V(s)←max⁡a∈A(R(s)+γ∑s′∈SPsa(s′)V(s′)){V(s)}\leftarrow{\max\limits_{a \in A}{\left(R(s)+\gamma\sum\limits_{s' \in S}{P_{sa}{(s')}V(s')}\right)}}V(s)aAmax(R(s)+γsSPsa(s)V(s))

在中间过程中,可能会有些值提前被更新,导致更新不一致
只需要存储一份价值函数,存在更新紊乱

价值迭代例子:最短路径

在这里插入图片描述

四、策略迭代

对于一个动作空间和状态空间有限的MDP

∣S∣<∞,∣A∣<∞|S|<\infty,|A|<\inftyS<,A<

策略迭代过程

  1. 随机初始化策略 π\piπ
  2. 重复以下过程直到收敛
    1. V:=VπV:=V^{\pi}V:=Vπ
    2. 对每个状态,更新
      π(s)=arg⁡max⁡s′∈SPsa(s′)V(s′)\pi{(s)}={\arg\max\limits_{s' \in S}{P_{sa}{(s')}V(s')}}π(s)=argsSmaxPsa(s)V(s)

更新价值函数会很耗时,即计算 VπV^{\pi}Vπ这个步骤需要很大的计算量

策略评估

  • 估计 VπV^{\pi}Vπ
  • 迭代的评估策略

策略改进

  • 生成 π′≥π\pi'\geq\piππ
  • 贪心策略改进

在这里插入图片描述

在这里插入图片描述

举例:策略评估

在这里插入图片描述

  • 非折扣MDP(γ=1\gamma=1γ=1
  • 非终止状态:1,…,141,\dots,141,,14
  • 两个终止状态(灰色方格)
  • 如果动作指向所有方格以外,则这一步不动
  • 奖励均为-1,直到到达终止状态
  • 智能体的策略为均匀随机策略

π(n∣⋅)=π(e∣⋅)=π(s∣⋅)=π(w∣⋅)=0.25{\pi(n|\cdot)}={\pi(e|\cdot)}={\pi(s|\cdot)}={\pi(w|\cdot)}=0.25π(n)=π(e)=π(s)=π(w)=0.25

在这里插入图片描述

在这里插入图片描述

五、比较价值迭代和策略迭代

  1. 价值迭代是贪心更新法,局部性上进行更新,没有真正意义上去计算 V(、pi)
  2. 策略迭代中,用Bellman等式更新价值函数代价很大
  3. 对于空间较小的MDP,策略迭代通常很快收敛
  4. 对于空间较大的MDP,价值迭代更实用(效率更高)
  5. 如果没有状态转移循环,最好使用价值迭代

六、常见问题

价值迭代的同步更新和异步更新在收敛速度和效果上会有区别吗?
  • 异步更新的收敛一般收敛快一些。但是如果没有达到收敛,异步更新得到的部分状态的价值可能和ground truth差距较大,不敢直接用来构建policy。原因是异步更新可能使得部分状态更新的不如别的状态快。
为什么空间较小的MDP,策略迭代收敛很快;而空间较大,价值迭代更实用?
  • 策略迭代是对于策略的直接优化,所以在空间较小的MDP上可以收敛很快,但是策略本身是基于当前状态动作的分布;
  • 价值迭代是对于通过对状态评估间接得出最优的策略,价值迭代本身是基于状态的分布,所以更加稳定高效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值