·目录
Iterative Policy Evaluation (迭代策略估计)
Prioritised Sweeping:优先级sweeping
Contraction Mapping Theorem 压缩映射定理
Dynamic :sequential or temporal ;问题与时间/顺序有关
Programming :
动态规划是求解复杂问题的一类方法:它有两个特性:
- 最优子结构Optimal substructure:问题的最优解可以分解为子问题的最优解
- 重叠子问题Overlapping subproblems: 子问题重复出现多次,因此可以将其存储起来并反复利用。
而MDP【马尔科夫决策过程,Markov decision processes】 满足上述两点,
- Bellman 方程给出了MDP的递归分解方法
- 值函数 存储并反复利用 解
动态规划假设对MDP的结构、动态变化&奖励,也就是完全了解环境的运行原理。
有两类问题,分别是预测和控制
(1)预测:输入 MDP和 或 MRP,输出值函数。
(2)控制:输入 MDP,输出最优值函数和最优策略。
动态规划的其他应用:Scheduling algorithms调度算法,字符串算法(序列对齐sequence alignment),图论算法(最短路径),图模型( Viterbi算法),生物信息(晶格模型);这些字符串、晶格、图通常具有最优子结构。
Policy Evaluation(策略评估)
Iterative Policy Evaluation (迭代策略估计)
用于解决问题:评估一个给定的策略,
从任意一个值(通常取0)出发,在每一步都运用贝尔曼方程往前看一步,来得到新的值函数,最终得到 。
每当进行一次迭代时,都要考虑到MDP中的所有状态;即 同步备份【synchronous backups】,最终值函数会收敛到
它 使用贝尔曼期望方程迭代更新值函数,公式如下:
那些有一个中止状态的任务被称为episodic tasks。
例子:方格游戏
估计一个方格上的随机策略:假设可采取的动作有东南西北四个方向,方格上的两个阴影区域代表终点,对于下图的这个没有折扣因子的 episodic MDP (γ = 1) ,有14个非终结状态1,2,...,14,一个终止状态(在图中用了两个方框表示,但它们是一个状态。)移动到方格之外的动作不会改变状态。在到达终止状态之前,每移动一步带来的回报是-1,agent遵循如下的均匀随机策略(其中e,s,w,n分别代表东、南、西、北四个方向):
k取无穷大时,值函数会稳定下来,收敛到最终表格所示的值,对表格中的值求平均说明:如果采取随机的动作,那么走到最终状态所花的时间步大致是多少。-——大致是20.
上图中 右边的那个带箭头方向的一栏告诉我们如何选择更好的策略。
从k= 1到K=2处, -1.7 = -1.0 +0.25*(-1.0 -1.0 -1.0 + 0)=-1.75 ,也就是说,1.7那个位置对应的上一步的值为-1.0 ,而它往四个方向移动的值分别为三个-1.0 和0 ,为0是因为有一个会移到阴影框中,而移到方格之外的那次不改变它的值就还是-1.0.
同理可验证,从k=2 到k=3, 在下图的红色框中,它的四个移动后的状态是4个标号的蓝色框这样,这几个位置在k=2时的值是-2.0,-2.0,-2.0,和一个0.0 .再更新value时由于每转移一步的return都是-1, 所以要加上-1 .
look one-step ahead!
策略迭代 policy iteration
怎么优化一个策略? 不断地 evaluate再 greedy !用贪心算法。策略的评估和改进交替进行。
先用值函数评估一个给定的策略,
再对 策略的值函数 用贪婪法优化策略 :
策略迭代过程总能收敛到最优值函数
策略改进 Policy Improvement
不仅可以用状态值函数,也可以用动作-值函数来更新策略!当更新停止后,状态值函数、动作值函数和策略函数均为最优。
考虑一个确定性策略: ,可以acting greedily 来改进策略:
这样能改进 任一状态s在一个时间步上的值:
因此也优化了值函数 ,
如果停止了优化改进,那么
那么也满足了贝尔曼最优方程:
因此对所有状态 有 ,所以 是一个最优策略。
Modified Policy Iteration
在前面的基础上,加上迭代停止条件。
策略估计需要收敛到 吗?
或者需要引入一个停止条件吗(比如,值函数的 收敛)?
或者在策略估计迭代k次后停止迭代? 比如之前的方格游戏在k=3时就足以找出最优策略。
为什么不在每轮迭代都更新策略,也就是说,在k=1之后停止 ——> 这样做就相当于值迭代了。
广义的策略迭代
任何一个最优策略可以分解为两个部分:
- 一个最优的 first action ;
- Followed by an optimal policy from successor state
当且仅当 对任一状态 到状态s(经有限步后)都是可达的。。。策略才能从状态s处开始找出最优解。
如果我们知道子问题的解 ,那么可以通过向前看一步 【one-step lookahead】 来找出
值迭代的思想:不断地重复更新,apply these updates iteratively 。 值迭代方法对于loopy, stochastic MDPs仍然可用。
对于没有终止状态的MDP,通过乘以折扣因子,仍然可以用动态规划求解/。
直觉上怎么理解它的原理: start with final rewards and work backwards 。从最终的回报开始,用逆序解法【回溯】。下面以最短路径为例:箭头表示的最短路径不唯一。
值迭代 Value Iteration
- 用于解决问题:找出最优策略 【已知环境的运行原理】
- 解法:迭代使用贝尔曼最优方程。
- 再用同步评估【 synchronous backups,如下图描述。】这样可以更快收敛到最优解。
- 与策略迭代的不同是,他没有具体的策略,中间过程产生的值函数可能不与任一策略相关。
同步DP: Synchronous
- 算法是基于状态-值函数 或者 ,
- 对于有m个和n个状态的情形,每次迭代的复杂度为
- 算法也同样适用于 或者 :每次迭代的复杂度为
- 目前为止所讲的动态规划都是同步动态规划,它使用了 synchronous backups, 也就是所有状态都并行备份了,一次性更新所有S的value。
异步DP :
只要持续地选择所有的状态,不论以怎样的顺序选择,孙发会更高效地收敛到最优值函数。
显著地减少了计算量,如果 all states continue to be selected 则算法保证收敛。
异步动态规划的三种类型:In-place dynamic programming、 Prioritised sweeping 、Real-time dynamic programming
In-place DP
同步动态规划会保存两份值函数的copies, 且对所有S中的状态s,
但 In-place 值迭代只保存一份值函数的copies, 且对所有S中的状态s,
i.e.(由于本轮的value本就是上一轮优化的结果 ),不对上一轮的value进行备份,直接使用这一周期的value)
Prioritised Sweeping:优先级sweeping
使用贝尔曼误差的大小 衡量 值函数与最优的差距,每次只备份使贝尔曼误差最大的状态,然后更新这个状态,再计算相应的贝尔曼误差。贝尔曼误差可以定义如下(不唯一):
- i.e.计算优化目标值和现实值之差,对多个S计算后排成一列,差值大的在前,依次优化对应的s的value。
- 这种方法需要已知reverse dynamics (predecessor states)的信息,可以通过 maintaining a priority queue来高效地实现。
real-time DP : 实时动态规划
- real-time 实际上是 real time step【在环境中运行一个agent,选择那些被agent真正访问过的状态,来搜集到真是实样本】:,只更新经历过的S,不管其它的。
- 与agent有关的只有状态,因此用agent的经验来指导状态的选择,在每个时间步 之后,更新
Full-Width Backups
DP使用Full-Width Backups,也就是在每次同步or异步备份时,会考虑到所有的动作和所有的后续状态,并使用MDP的转移和回报函数的信息。
DP非常适合中等规模的问题求解,也就是状态数为百万级的。对于大规模问题DP会 有Bellman维灾难的问题。也就是状态数目随着状态变量的数目增加承指数增长。即便是一次备份的成本也会很高。
sample backups
在后续课程里会考虑用样本备份:用样本回报和样本转移 而不是用回报函数R和转移概率阵P。
它的优势在于:
- model-free :不需要MDP的先验知识。
- 通过采样解决了 维灾难【 curse of dimensionality】
- 每次备份的花销是常数级,与状态数目无关。
Approximate DP
它使用一个函数近似器 来近似值函数,对运用DP求解,比如,
- 在每/(第k)轮 迭代时重复用 Fitted Value Iteration,
- 从S中采样得到状态 ,
- 对每一个状态 使用贝尔曼最优等式【Bellmanoptimality equation】估计目标值。
- 使用目标值 训练下一个值函数
值函数空间 Value Function Space
值函数上的向量空间 是维的,这个空间中的每个店都对应一个值函数,在这个向量空间中, Bellman backup 使得这些值函数更近,因此备份最终会收敛到唯一解。
压缩映射
值函数的无穷范数 ∞-Norm
对于状态-值函数u和v的距离,我们用无穷范数来衡量:也就是状态值的largest difference
Bellman期望备份是一种 Contraction
定义一个贝尔曼期望备份算子【Bellman expectation backup operator】,它是 -contraction ,能使值函数至少以 的速度互相靠拢。
Contraction Mapping Theorem 压缩映射定理
这个定理可以回答一下问题:
策略估计和策略迭代的收敛
由于 贝尔曼期望算子 有唯一 一个固定点,并且 【由贝尔曼期望方程可知】 是 的一个固定点,再根据压缩映射定理,迭代策略估计 会收敛到 , 而 策略迭代会收敛到 .
定义一个贝尔曼最优备份算子【Bellman optimality backup operator】,
它是 -contraction ,能使值函数至少以 的速度互相靠拢。【证明过程与前面的类似】
值迭代的收敛
由于 贝尔曼最优 算子 有唯一 一个固定点,并且 【由贝尔曼最优方程 可知】 是 的一个固定点,再根据压缩映射定理,值迭代会收敛到 .
参考:【1】David silver 强化学习公开课的屁屁踢
【2】 David silver 强化学习公开课笔记(三):Planning by Dynamic Programming