版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Solo95/article/details/100160595
information state: sufficient statistic of history State sts_tst is Markov if and only if: p(st+1∣st,at)=p(st+1∣ht,at)p(s_{t+1}|s_t,a_t)=p(s_{t+1}|h_t,a_t)p(st+1∣st,at)=p(st+1∣ht,at) Future is independent of past given present
无记忆性随机过程
马尔科夫过程(Markov Process)的定义:
注意:没有奖励(reward),也没有动作(actions)
如果状态数(N)是有限的,可以把P表示成一个矩阵:
马尔科夫奖励过程 = 马尔科夫过程 + 奖励
马尔科夫奖励过程(MRP)的定义:
注意:没有动作
如果状态数(N)有限,R可以被表示成一个向量。
窗口(horizon)的定义:
返回(return)的定义:
状态奖励方程(State Value Function foe a MRP)的定义:
如果过程是确定的,那么返回和奖励是相等的;大部分情况下过程是随机的,它们会是不同的。
折扣因子一方面是由于被启发创造的,另一方面也是为了数学上的方便。
但是上述过程没有利用任何world是马尔科夫的这个事实。为了得到更好的估计有额外的结构。
矩阵形式
然后就可以以解析方式求解:
V=R+γPVV=R+\gamma PVV=R+γPV V−γPV=RV-\gamma PV = RV−γPV=R (I−γP)V=R(I - \gamma P) V = R(I−γP)V=R V=(I−γP)−1RV = (I -\gamma P)^{-1} RV=(I−γP)−1R
直接求解的算法复杂度是O(n3)O(n^3)O(n3)
矩阵P必须是定义良好即能求逆的。在以上过程中,我们假定是固定的horizon,价值函数是固定的,所以状态的下一个状态可以指向自己,self-loop是允许存在的。
一定可以求逆吗?
因为P是马尔科夫矩阵(随机矩阵),那么它的特征值将总是小于等于1,如果折扣因子小于1,那么I−γPI-\gamma PI−γP总是可逆的(证明略,感兴趣的朋友可以去查一下,博主数学不是很好。)。
另一种求解方法是动态规划:
Initializa V0(s)=0V_0(s) = 0V0(s)=0 for all s
For k = 1 until convergence
For all s in S
Vk(s)=R(s)+γ∑s′∈SP(s′∣s)Vk−1(s′)V_k(s) = R(s) + \gamma \sum_{s^{'} \in S}P(s^{'}|s)V_{k-1}(s^{'})Vk(s)=R(s)+γs′∈S∑P(s′∣s)Vk−1(s′)
计算复杂度: O(∣s∣2)O(|s|^2)O(∣s∣2) for each iteration (|S| = N)
收敛的条件通常使用范数来衡量,即 ∣Vk−Vk−1∣<ϵ|V_k - V_{k-1}| < \epsilon∣Vk−Vk−1∣<ϵ
这种计算方式的优势在于每次迭代平方复杂度,并且还有一些稍后会提及的引入actions之后的增益。
总结起来,计算MRP的价值有三种方法:
MDP = MRP + actions.
MDP的定义,MDP是一个五元组(quintuple)(S,A,P,R,γ\gammaγ):
MDP + Policy可以指定一个Markov Reward Process,因为Policy里指定了每个状态的动作,MDP就坍缩成了MRP。
更确切的讲,它们指定的是MRP(S,Rπ,Pπ,γ)MRP(S, R^\pi, P^\pi, \gamma)MRP(S,Rπ,Pπ,γ): Rπ=∑a∈Aπ(a∣s)R(s,a)R^\pi=\sum_{a \in A}\pi(a|s)R(s,a)Rπ=∑a∈Aπ(a∣s)R(s,a) Pπ(s′∣s)=∑a∈Aπ(a∣s)P(s′∣s,a)P^\pi(s'|s) = \sum_{a \in A}\pi(a|s)P(s'|s,a)Pπ(s′∣s)=∑a∈Aπ(a∣s)P(s′∣s,a)
这隐含着,只要你有确定的策略,我们可以使用前述的所有用来计算MRP的价值的相同方法,通过使用定义一个RπR^\piRπ和PπP^\piPπ,来计算MDP的一个策略的价值。
Initialize V0(s)=0V_0(s) = 0V0(s)=0 for all s
For k = 1 until convergence
For all s in S
Vkπ(s)=r(s,π(s))+γ∑s′∈Sp(s′∣s,π(s))Vk−1π(s′)V_k^\pi(s) = r(s,\pi(s)) + \gamma\sum_{s' \in S}p(s'|s,\pi(s))V_{k-1}^\pi(s')Vkπ(s)=r(s,π(s))+γ∑s′∈Sp(s′∣s,π(s))Vk−1π(s′)
对于一个特定的策略来说,这是一个Bellman backup。
在RL文献中,上面等式的右边被称作"Bellman backup"。状态或状态 - 动作对的Bellman backup是Bellman方程的右侧:即时奖励加下一个值,这是一个迭代的过程,因此叫backup。
仔细对比一下,跟前面所述MRT计算价值是一样的,只不过因为有固定的策略,所以我们使用策略来索引奖励。即为了学习一个特定策略的价值,我们通过总是采取策略所指定的动作来初始化价值函数。
Vk+1(s6)=r(s6)+γ∗(0.5∗0+0.5∗10)V_{k+1}(s_6)=r(s_6)+\gamma*(0.5*0+0.5*10)Vk+1(s6)=r(s6)+γ∗(0.5∗0+0.5∗10) Vk+1(s6)=0.5∗(0.5∗10)=2.5V_{k+1}(s_6)=0.5*(0.5*10)=2.5Vk+1(s6)=0.5∗(0.5∗10)=2.5 这个真的很简单,单纯的代公式,只要前面所述内容你都记住了,就直接能理解。