基于动态规划的强化学习
一、MDP目标和策略
相关概念
目标:选择能够最大化累积奖励期望的动作
E [ R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋯ ] \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
即,在状态 s s s下采取动作 a = π ( s ) a=\pi{(s)} a=π(s)
给定策略 π \pi π定义价值函数
V π ( s ) = E [ R ( s 0 ) + γ R ( s 1 ) + γ 2 R ( s 2 ) + ⋯ ∣ s 0 = 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 π 定义价值函数
最优价值函数
对状态 s s s 来说的最优价值函数是所有策略可获得的最大可能折扣奖励的和
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 ′ ∈ S P s a ( 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
)
=
arg
max
a
∈
A
∑
s
′
∈
S
P
s
a
(
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′)
对状态 s s s 和策略 π \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 ′ ∈ S P s π ( 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 ) = arg max a ∈ A ∑ s ′ ∈ S P s a ( 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∣<∞
价值迭代过程
- 对每个状态 s s s ,初始化 V ( s ) = 0 V(s)=0 V(s)=0
- 重复以下过程直到收敛
对每个状态,更新
$ V ( s ) = R ( s ) + max a ∈ A γ ∑ s ′ ∈ S P s a ( 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 S S 中的所有状态 s s s
V n e w ( s ) ← max a ∈ A ( R ( s ) + γ ∑ s ′ ∈ S P s a ( s ′ ) V o l d ( 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′)) -
更新
V o l d ( s ) ← V n e w ( s ) {V_{old}{(s)}}\leftarrow{V_{new}{(s)}} Vold(s)←Vnew(s)
需要两倍的空间进行存储
异步价值迭代: 异步价值迭代只储存一份价值函数
- 对
S
S
S 中的所有状态
s
s
s
V ( s ) ← max a ∈ A ( R ( s ) + γ ∑ s ′ ∈ S P s a ( 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 ) = arg max s ′ ∈ S P s a ( 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 , … , 14 1,\dots,14 1,…,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上可以收敛很快,但是策略本身是基于当前状态动作的分布;
- 价值迭代是对于通过对状态评估间接得出最优的策略,价值迭代本身是基于状态的分布,所以更加稳定高效。