强化学习(三)——动态规划解决MDP

前言

从本篇开始,我的强化学习博客行文方式与之前有很大的不同。之前我侧重于基础知识的描述,无非是看一些公开课,和博客,把他们写成型的东西照搬过来,过于注重细枝末节。现在我意识到,那些人都已经总结好了一篇完整的博文,我七拼八凑出来一篇又有多大区别呢?不如把我看博客的过程,想法,疑问以及答案写出来,反而变成我自己的一种思考方式,同时也给大家一个学习的思路参考,岂不是更有意义?好了,废话不多说,开始吧。

能够用动态规划解决的问题需要满足一下两个特性:

  • 最优化结构:将某些整体性问题分解成两个或多个子问题。在得到这些问题的最优解后,我们也就知道了该整体问题的最优解。例如:最短路径问题。
  • 重叠子问题:子问题是在不断重复的,这样我们就可以分解后解决问题。

我们的MDP问题满足贝尔曼方程。这个方程是一个递归的过程,正因为该方程,我们的MDP问题满足这两个特性。当前是最优步,以后仍旧选择最优步。

值迭代和策略迭代

  • 首先,动态规划求解的是基于模型的强化学习问题,即状态转移概率P是已知的。与基于模型相对的另外一类强化学习,是无模型的强化学习,即agent不了解环境,状态转移概率P是未知的。无模型的强化学习方法主要通过实际中与环境交互,获取交互序列,方法有蒙特卡洛方法(MC),时序差分方法(TD)。具体在下一节会介绍。
  • 明确强化学习的两个问题:评估和预测。预测,即给定强化学习的6个要素:状态集S, 动作集A, 模型状态转化概率矩阵P, 即时奖励R,衰减因子γ, 给定策略π, 求解该策略的状态价值函数v。控制,也就是求解最优的价值函数和策略。给定强化学习的5个要素:状态集S, 动作集A, 模型状态转化概率矩阵P, 即时奖励R,衰减因子γ, 求解最优的状态价值函数v和最优策略π。在讨论值迭代和策略迭代这两种方法,主要是学习如何求解这两类问题。
  • 参看刘建平:动态规划求解,偏向解释动态规划的公式,但该博客未清晰列出算法伪代码,以至于我对自己的理解很困惑,不知道是否正确。
  • 参看值迭代和策略迭代伪代码,明确列出了两种方法的伪代码,可以清晰地看出,策略迭代是先对全部状态价值一轮轮地迭代收敛,收敛后再进行策略改进,随后根据新策略继续迭代状态价值,直到状态价值和策略都收敛,算法结束。值迭代每次选取动作对应值函数最大的作为新的状态价值,迭代收敛后,策略即选取价值最大的对应动作即可。在这里插入图片描述

策略迭代中,如果当前策略收敛,算法停止;否则,对新策略继续执行策略评估,再继续执行策略提升。值迭代和策略迭代更新值函数的方法不同,值函数收敛后,策略也就随之确定了。

发布了164 篇原创文章 · 获赞 69 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/wqy20140101/article/details/78586000