动态规划(Dynamic Propramming)
当一个精确的环境模型时,可以用动态规划去解决。总体来说,就是将一个问题分解成子问题,通过解决子问题来解决原问题。动态指针对序列问题,规划指优化,找到策略。
动态规划解决的问题具备两种性质:
- 最优子结构
- 满足最优性原理
- 最优的解可以被分解成子问题的最优解
- 交叠式子问题
- 子问题能够被多次重复
- 子问题的解要能够被缓存并再利用
MDPs满足以上两个特性:
- 贝尔曼方程用递归的形式,把问题分解成子问题
- 值函数有效的存储了子问题的解,能够再利用
因此动态规划可以应用于MDPs的问题,使用动态规划解决强化学习问题时,要求指导MDPs的所有元素:
- 评价
- 输入:MDP<S,A,P,R, γ γ > 和策略 π π 或者 MRP<S, Pπ,Rπ,γ P π , R π , γ >
- 输出:值函数 vπ v π
- 优化
- 输入: MDP<S,A,P,R, γ γ >
- 输出:最优值函数 v∗ v ∗ 和最优策略 π∗ π ∗
策略评价
问题:给定一个策略 π π ,求对应的值函数 vπ(s) or qπ(s,a) v π ( s ) o r q π ( s , a )
解决方法:
直接解: vπ=(1−γPπ)−1Rπ v π = ( 1 − γ P π ) − 1 R π
- 可以直接求得精确解
- 时间复杂度比较高 O(n3) O ( n 3 )
迭代解: v1−>v2−>...−>vπ v 1 − > v 2 − > . . . − > v π
- 利用贝尔曼期望方程迭代求解,可以收敛到最优解
贝尔曼期望方程:
vπ(s)=∑a∈Aπ(a|s)(R(s,a)+γ∑s′∈SPass′vπ(s′)) v π ( s ) = ∑ a ∈ A π ( a | s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P s s ′ a v π ( s ′ ) )
可以得到如下迭代等式:
vk+1(s)=∑a∈Aπ(a|s)(R(s,a)+γ∑s′∈SPass′vk(s′)) v k + 1 ( s ) = ∑ a ∈ A π ( a | s ) ( R ( s , a ) + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) )
简写为
vk+1=Rπ+γPπvk v k + 1 = R π + γ P π v k
同步备份下的迭代式策略评价算法
- 备份: vk+1(s) v k + 1 ( s ) 需要用到 vk(s′) v k ( s ′ ) ,用 vk(s′) v k ( s ′ ) 更新 vk+1(s′) v k + 1 ( s ′ ) 的过程称为备份。更新状态s的值函数称为备份状态s
- 同步:每次更新都需要更新完所有的状态
#伪代码
for k=1,2,... do
for 所有状态s in S do
使用迭代式更新值函数v
end for
end for
策略提升
策略性价值函数通过筛选方式来改进策略,有几个常见的策略筛选方式:
贪婪策略,e-greedy策略,高斯策略,玻尔兹曼策略
策略提升定理
对于两个确定的策略 π′ π ′ 和 π π ,如果满足 qπ(s,π′(s))≥vπ(s) q π ( s , π ′ ( s ) ) ≥ v π ( s ) ,那么我们可以得到