马尔可夫决策过程是强化学习中的基本问题模型之一,而解决马尔可夫决策过程的方法统称为强化学习算法。本章开始学习基础算法之一,动态规划(DP)。指在一个复杂问题中将其分为多个子问题进行求解。RL中,其被用来求解值函数和最优策略。包括值迭代(VI),策略迭代(PI),Q-learning。
3.1 动态规划的编程思想
举个栗子:
要我们求从起点到终点的路径数量之和,每次只能向下或右走一步。此题有很多种做法,例如枚举法等,在动态规划中的做法是:1. 确定状态,2.写出状态转移方程 3. 寻找边界条件。
在此题中首先确定f(i,j),表示从左上角(0,0)到坐标(i,j)的路径数量,,。当机器人处于(i,j)时,它的前一个坐标只能是(i,j-1)或(i-1,j)。建立状态如下:
上述即为状态转移方程。此外有些边界条件需要考虑。即i与j不能为零。
因此完善状态转移方程:
写出代码如下:
def solve(m,n):
#初始化边界条件
f=[[1]*n]+[[1]+[0]*(n-1) for _ in range(m-1)]
#状体转移
for i in range(1,m):
for j in range(1,n):
f[i][j]=f[i-1][j]+f[i][j-1]
return f[m-1][n-1]
一般动态规划有三个性质,最优化原理,无后效性,有重叠子问题。无后效性即马尔可夫性质某状态以后的性质仅与当前状态有关,而不会影响以前的状态。最优化原理指如果问题的最优解所包含的子问题也是最优的,就称该问题具有最优子结构。回顾回报公式:
这就表明当前步的汇报跟以后的汇报有关,如果我们能最大化每一步的回报,就能解决马尔可夫决策问题,我们要解决G(t+1)的问题,可以将其拆解为Gt,Gt-1.......。至于如何解决 ,且看价值迭代和策略迭代算法。
3.2 状态价值函数和动作价值函数
在马尔可夫决策过程中,每一个状态都有价值,
即为状态价值函数,从特定状态出发,按某种策略Π进行决策所能得到的回报期望值,γ为折扣因子。引入动作的元素后有一个 Q函数,也叫做动作价值函数,即
则动作价值函数和状态价值函数间有关系:
其中的表示策略函数,一般指状态s下执行动作a的概率分布。公式意思为给定状态s情况下,智能体所有动作的价值期望(所有动作价值函乘以对应动作的价值之和)。其实就是全期望公式。
3.3 贝尔曼方程
类似于回报公式对状态价值函数和动作价值函数做一个类似推导。如下:
其中R(s)为奖励函数,P为状态转移矩阵,写为p(s'|s),此即为贝尔曼方程。其意义在于满足最优化原理,将前后两个状态联系起来。类似的,动作价值函数贝尔曼方程;
我们的目标是使得累积的回报最大化,则最优化策略下的状态价值函数可以为
称为贝尔曼最优方程,对于动作价值函数同理:
3.4 迭代策略
前述在最优策略Π*下,对于的状态和动作价值也最优,即V*和Q* ,但实际中求解优化策略时,需同时优化状态和动作价值函数,为多目标优化。迭代策略算法思路:固定策略Π,估计状态V,(策略估计),根据V结合策略,推算Q,进而改进策略。(策略改进)用贪心算法。定义策略函数
3.5 价值迭代
价值迭代公式: