基于动态规划的强化学习
一、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):S→A
即,在状态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)+maxa∈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)+a∈Amaxγs′∈S∑Psa(s′)V∗(s′)
最优策略
π∗(s)=argmaxa∈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)=arga∈Amaxs′∈S∑Psa(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)+γs′∈S∑Psπ(s)Vπ(s′)
π(s)=argmaxa∈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)=arga∈Amaxs′∈S∑Psa(s′)Vπ(s′)
可以对最优价值函数和最优策略执行迭代更新
- 价值迭代
- 策略迭代
三、价值迭代
对于一个动作空间和状态空间有限的MDP
∣S∣<∞,∣A∣<∞|S|<\infty,|A|<\infty∣S∣<∞,∣A∣<∞
价值迭代过程
- 对每个状态 sss ,初始化 V(s)=0V(s)=0V(s)=0
- 重复以下过程直到收敛
对每个状态,更新
$V(s)=R(s)+maxa∈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)+a∈Amaxγs′∈S∑Psa(s′)V(s′)
注意:在以上的计算中没有明确的策略,只局限于数值计算
同步/异步价值迭代
同步价值迭代: 同步的价值迭代会储存两份价值函数的拷贝
-
对 SSS 中的所有状态 sss
Vnew(s)←maxa∈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)←a∈Amax(R(s)+γs′∈S∑Psa(s′)Vold(s′)) -
更新
Vold(s)←Vnew(s){V_{old}{(s)}}\leftarrow{V_{new}{(s)}}Vold(s)←Vnew(s)
需要两倍的空间进行存储
异步价值迭代: 异步价值迭代只储存一份价值函数
- 对 SSS 中的所有状态 sss
V(s)←maxa∈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)←a∈Amax(R(s)+γs′∈S∑Psa(s′)V(s′))
在中间过程中,可能会有些值提前被更新,导致更新不一致
只需要存储一份价值函数,存在更新紊乱
价值迭代例子:最短路径
四、策略迭代
对于一个动作空间和状态空间有限的MDP
∣S∣<∞,∣A∣<∞|S|<\infty,|A|<\infty∣S∣<∞,∣A∣<∞
策略迭代过程
- 随机初始化策略 π\piπ
- 重复以下过程直到收敛
- 让 V:=VπV:=V^{\pi}V:=Vπ
- 对每个状态,更新
π(s)=argmaxs′∈SPsa(s′)V(s′)\pi{(s)}={\arg\max\limits_{s' \in S}{P_{sa}{(s')}V(s')}}π(s)=args′∈SmaxPsa(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
五、比较价值迭代和策略迭代
- 价值迭代是贪心更新法,局部性上进行更新,没有真正意义上去计算 V(、pi)
- 策略迭代中,用Bellman等式更新价值函数代价很大
- 对于空间较小的MDP,策略迭代通常很快收敛
- 对于空间较大的MDP,价值迭代更实用(效率更高)
- 如果没有状态转移循环,最好使用价值迭代
六、常见问题
价值迭代的同步更新和异步更新在收敛速度和效果上会有区别吗?
- 异步更新的收敛一般收敛快一些。但是如果没有达到收敛,异步更新得到的部分状态的价值可能和ground truth差距较大,不敢直接用来构建policy。原因是异步更新可能使得部分状态更新的不如别的状态快。
为什么空间较小的MDP,策略迭代收敛很快;而空间较大,价值迭代更实用?
- 策略迭代是对于策略的直接优化,所以在空间较小的MDP上可以收敛很快,但是策略本身是基于当前状态动作的分布;
- 价值迭代是对于通过对状态评估间接得出最优的策略,价值迭代本身是基于状态的分布,所以更加稳定高效。