在强化学习中,我们有兴趣确定一种最大化获取奖励的策略。最近我们被客户要求撰写关于MDP的研究报告,包括一些图形和统计输出。假设环境是马尔可夫决策过程 (MDP)的理想模型 ,我们可以应用动态编程方法来解决强化学习问题。
在这篇文章中,我介绍了可以在MDP上下文中使用的三种动态编程算法。为了使这些概念更容易理解,我在网格世界的上下文中实现了算法,这是演示强化学习的流行示例。
相关视频:马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例
马尔可夫链原理可视化解释与R语言区制转换Markov regime switching实例
,时长07:25
相关视频
马尔可夫链蒙特卡罗方法MCMC原理与R语言实现
,时长08:47
在开始使用该应用程序之前,我想快速提供网格世界上后续工作所需的理论背景。
MDP的关键强化学习术语
以下各节解释了强化学习的关键术语,即:
- 策略: 代理应在哪种状态下执行哪些操作
- 状态值函数: 每个州关于未来奖励的期望值
- 行动价值函数: 在特定状态下针对未来奖励执行特定行动的预期价值
- 过渡概率: 从一种状态过渡到另一种状态的概率
- 奖励功能: 代理在状态之间转换时获得的奖励
状态值函数
给定策略ππ,状态值函数Vπ(s)Vπ(s)将每个状态ss映射到代理在此状态下可获得的预期收益:
式中,stst表示时刻tt的状态。参数γ∈[0,1]γ∈[0,1]称为 折扣因子。它决定了未来奖励的影响。
动作值函数
给定策略ππ,动作值函数Qπ(s,a)Qπ(s,a)确定在状态ss中执行动作aa时的预期奖励:
转移概率
在状态ss中执行动作aa可以将代理转换为状态s's'。通过Pass'Pss'a描述发生此过渡的可能性。
奖励函数
奖励函数Rass'Rss'a指定当代理通过动作aa从状态ss过渡到状态s's'时获得的奖励。
Gridworld中的三种基本MDP算法的演示
在本文中,您将学习如何在网格世界中为MDP应用三种算法:
- 策略评估: 给定策略ππ,与ππ相关的价值函数是什么?
- 策略迭代: 给定策略ππ,我们如何找到最佳策略π∗π∗?
- 值迭代: 如何从头开始找到最佳策略π∗π∗?
在gridworld中,代理的目标是到达网格中的指定位置。该代理可以向北,向东,向南或向西移动。这些动作由集合{N,E,S,W} {N,E,S,W}表示。请注意,代理始终知道状态(即其在网格中的位置)。
网格中存在一些壁,代理无法通过这些壁。
基本的Gridworld实施
我已经以面向对象的方式实现了gridworld。以下各节描述了我如何设计地图和策略实体的代码。
Gridworld地图
为了实现gridworld,我首先要做的是代表地图的类。我定义了以下格式来表示各个网格单元:
#
指示墙壁X
表明目标- 空白表示空块
依靠这些符号, 构造 了下面的map :
#################