决策者在整个决策阶段收到一系列的报酬折现以后累加起来就是具体的效用函数,我们称之为无限阶段的折扣模型。具体的表达如下
Vβ(i,π)=0∑∞βtEπi[r(Yt,Δt)]
从上面的表达式折扣因子就是β, Δt表示采用不同的动作,Yt表示状态的变换。这里给出一个定理
Vβ(i,π)=0∑∞βtEπi[r(Yt,Δt)]=a∈A(i)∑π0(a∣i)[r(i,a)+βj∈S∑p(j∣i,a)Vβ(j,π′)]
其中p(j∣i,a)表示在状态i下采用动作a后到状态j的概率分布。这里和强化学习里的转移概率是一致的。π′表示终止报酬的和。
这里我们直接列举一个MDP的问题,看下面的表格。
状态 |
可用行动 |
转移概率(j=1) |
转移概率(j=2) |
报酬r(i,a) |
1 |
a1 |
0.5 |
0.5 |
5 |
1 |
a2 |
0 |
1 |
10 |
2 |
a3 |
0 |
1 |
-1 |
由于状态空间和行动集合都是有限的,我们知道存在最优的平稳策略(这是一个定理,要记住的)。且平稳策略有两个
f=(a1,a3)g=(a2,a3)
此时的最优方程为
v(1)=max{5+0.5βv(1)+0.5βv(2),10+βv(2)}v(2)=−1+βv(2)
以上方程的v(1)和v(2)表示除以1状态和2状态的效用函数
直接解上面的第二个方程, v(2)=1−β−1,将其带入第一个方程。
v(1)=max{5−0.51−ββ+0.5βv(1),10−1−ββ}=Tv(1)(1.1)
对β=0,0.5,0.9分别解1.1,得到的最优值函数分别为
V0=(10,1)V0.5=(9,−2)V0.9=(1,10)
策略迭代算法
从上面一个例子我们面对一个确定性问题如何求解,那么当我们使用算法的时候怎么表达的,下面就看看迭代策略如何来做。这里需要补充一下,上面那个手算过程可以通过一个方程来表达。
下面我们来看一个定理,如果状态空间S是离散且使用策略是平稳策略,的那么会有如下的一些关系。
vβ(f∞)=f(f)+βP(f)v
也就是说当前的效用函数等于策略回报和折扣指数与效用函数和概率分布的乘积的和。上面的表达式使用矩阵的表达方式如下
vβ(f∞)=(I−βP(f))−1r(f)(1.2)
策略迭代算法
使用当前策略fn, 通过公式1.2能够求得当前策略的效用函数vβ(fn∞)
策略改进选用新的策略fn+1,为一个vβ(fn∞)的改进策略,当满足
fn+1∈arg max{r(f)+βP(f)Vβ(fn∞)}
如果fn+1=fn策略停止,选取最优策略完成,否则n+=1
算法中往往求解以上表达式后,再通过策略更新后比较两个策略的最优解,同样的下面我们也来看一个例子。对于一下的MDP过程,如何求解最优策略,其中β=0.9。
状态 |
可用行动 |
转移概率(j=1) |
转移概率(j=2) |
报酬r(i,a) |
1 |
a1 |
0.5 |
0.5 |
6 |
1 |
a2 |
0.8 |
0.2 |
4 |
2 |
a1 |
0.4 |
0.6 |
-3 |
2 |
a2 |
0.7 |
0.3 |
-5 |
以上决策过程有4个平稳策略
f1=(1,1)f2=(1,2)f3=(2,1)f4=(2,2)
第一个迭代过程求f1为初始策略作为求值运算,就是解以下方程组
v(1)=6+0.9[0.5v(1)+0.5v(2)]v(2)=−3+0.9[0.4v(1)+0.6v(2)]
求得 v(1)=V0.9(1,f1∞)=15.49 v(2)=V0.9(2,f1∞)=5.6.表示在不同的状态下,使用动作1,对应的状态1和2的效用函数。这里V0.9(1,f1∞)表示在0.9折扣回报下,所有的策略在处在状态1下的期望总共的回报和。
下一步进行策略迭代。对于状态1而言
maxa∈(1,2){r(1,a)+0.9j∈S∑p(j∣1,a)v0.9(j,f1∞)}=max(15.49,16.16)
这里就是在状态1下分别采用1和2动作下取得的收益
15.49=6+0.9(0.5∗15.49+0.5∗5.6)16.16=4+0.9(0.8∗15.49+0.2∗5.6)
因此在状态1下行动2是最大值,所以改进策略在状态1应该采用行动2,同样对状态2进行策略改进。
maxa∈(1,2){r(2,a)+0.9j∈S∑p(j∣2,a)v0.9(j,f1∞)}=max(5.6,6.27)
说明状态2,行动2是最大值,故改进策略在状态2应该采用行动2,这样得到改进策略f4.
第二次迭代过程,对f4重复第一个迭代过程。解方程v(1)=V0.9(1,f4∞)=22.2, v(2)=V0.9(2,f4∞)=12.31.并且发现现在策略满足停止条件,这样最优策略就是目前的策略。最优的值函数就是(22.2,12.31).到这里我们的值函数就求解完成,下节会介绍一些求解值函数的算法。