强化学习:动态规划(DP)
为什么可以使用动态规划解MDP问题?
动态规划能够解决的问题通常含有两个性质:
1) 拥有最优子结构:最优解可以分解为多个子问题。
2)含有重复子问题:子问题重复了很多次,其解可以存储下来重复利用。
马尔科夫决策过程满足上述两个性质:
1)贝尔曼方程给出了递归分解;
2)价值函数可以被存储及重复利用。
MDP使用DP时,需要知道全部的知识,也就是说模型 是已知的。如果求解最优策略 和最优价值函数 ,则是控制问题;如果策略 也已知求解最优值函数 则是预测问题。
策略迭代
策略评估
评估给定的策略
在一个MDP
问题中,当策略
是已知的时候,我们有:
在上述方程中,
均是已知的,需要求解的是
。对于每一个状态
,我们均可以得到一个这样的方程。因此,我们就可以获得
个(状态的个数)方程构成的线性方程组。当问题规模较小时,可以使用闭式解直接求得价值函数的值;当问题规模较大时,需要使用迭代的方法来求得解。此处使用高斯-赛德尔迭代算法来进行求解。
————————————————–伪——码————————————————————
v(1) = 0;
while 1
for 1 : n
v(k+1) = f(v(k));
endfor
if |v(k+1) - v(k)| < err
break;
endif
endwhile
————————————————–伪——码————————————————————
策略改进
求解最优策略
已知当前策略的价值函数时,如何改进策略从而获得最优策略。可以使用贪婪策略获取一个比当前策略要好的策略:
针对每一个状态,求取全部可能的策略所对应的行为价值函数值,取其最大值所对应的策略为新确定的“策略”中的一部分。
策略迭代算法
策略迭代算法包括策略评估和策略改进两个步骤。在策略评估中,给定策略,通过数值迭代算法不断计算该策略下每个状态的值函数,利用该值函数和贪婪策略得到新的策略。如此循环下去,最终得到最优策略。这是一个策略收敛的过程。
————————————————–伪——码————————————————————
v(1) = 0;
pi(1) = random();
Repeat l = 0,1,...
寻找当前策略下最好的V(l);
贪婪地更新策略 pi(l+1)
until pi(l+1) = pi(l)
————————————————–伪——码————————————————————
价值迭代算法
在策略评估过程中,并不需要等到策略评估收敛之后才能进行策略改进。如果在进行一次评估之后就进行策略改善,则称为值函数迭代算法。值函数迭代是动态规划算法最一般的计算框架。
最优性原理
任何最优的策略都可以被分解为两部分:
一次最优的行为 ;
后续状态 的一个最优策略。
————————————————–伪——码————————————————————
v(1) = 0;
pi(1) = random();
Repeat l = 0,1,...
for every s do
值函数迭代公式;
until v(l+1) = v(l)
————————————————–伪——码————————————————————
需要注意的是在每次迭代过程,需要对状态空间进行一次扫描,同时在每个状态对动作空间进行扫描以便得到贪婪的策略。