POMDP详解

举个例子,有A,B 两种状态。Agent一开始可能在两种状态中的一种,并且有两种可能的action, 要么stay, 要么move。 在A的时候utility0 为0, B的时候utility为1。从A出发只有0.9的概率会达到B,0.1的概率出发然后回到A,从B出发同理。
MDP: 已知agent一开始是在状态A,

Q(A, stay) = Uo + [0.9 * 0 + 0.1 * 1] = 0 + 0.1 = 0.1     
Q(A, move) = Uo + [0.1 * 0 + 0.9 * 1] = 0 + 0.9 = 0.9 
Umax = Max( Q(A, stay), Q(A, move) ) = move

已知agent一开始是在状态B,

Q(B, stay) = Uo + [0.9 * 1 + 0.1 * 0] = 0.9 + 1 = 1.9  
Q(B, move) = Uo + [0.1 * 1 + 0.9 * 0] = 0.1 + 1 = 1.1
Umax = Max( Q(B, stay), Q(B, move) ) = stay 

POMDP: 由于信息不完全,可能一开始agent并不知道自己在A还是在B,于是需要给分别可能在A,或者B的可能性赋予权重,权重:假设有0.4的可能一开始在A,0.6的可能性一开始在B。

U (stay) =  0.4 * 0.1 +  0.6 * 1.9 = 0.04 + 1.14 = 1.18 
U (move)  = 0.4 * 0.9 + 0.6 * 1.1 = 0.36 + 0.66 = 1.12
Umax = Max( Q(B, stay), Q(B, move) ) = stay

对于控制决策问题,我们设计一个回报函数(reward function),如果learning agent(如机器人、象棋AI程序)在决定一步后,获得了较好的结果,那么我们给agent一些回报(比如回报函数结果为正),得到较差的结果,那么回报函数为负。比如机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。

马尔可夫模型的几类子模型
大家应该还记得马尔科夫链(Markov Chain),了解机器学习的也都知道隐马尔可夫模型(Hidden Markov Model,HMM)。它们具有的一个共同性质就是马尔可夫性(无后效性),也就是指系统的下个状态只与当前状态信息有关,而与更早之前的状态无关。

马尔可夫决策过程(Markov Decision Process, MDP)也具有马尔可夫性,与上面不同的是MDP考虑了动作,即系统下个状态不仅和当前的状态有关,也和当前采取的动作有关。还是举下棋的例子,当我们在某个局面(状态s)走了一步(动作a),这时对手的选择(导致下个状态s’)我们是不能确定的,但是他的选择只和s和a有关,而不用考虑更早之前的状态和动作,即s’是根据s和a随机生成的。

我们用一个二维表格表示一下,各种马尔可夫子模型的关系就很清楚了:
POMDP详解_第1张图片

详细讲解:http://blog.csdn.net/app_12062011/article/details/50673060

你可能感兴趣的:(C++)