值迭代的缺点:当多个策略有同样的v(s)的时候,可能无法收敛,循环不会停止。
In Policy Iteration algorithms, you start with a random policy, then find the value function of that policy (policy evaluation step), then find an new (improved) policy based on the previous value function, and so on. In this process, each policy is guaranteed to be a strict improvement over the previous one (unless it is already optimal). Given a policy, its value function can be obtained using the Bellman operator.
1.initialization
初始化所有状态的v(s)以及π(s)(初始化为随机策略)
2.poicy evaluation
用当前的v(s)对当前策略进行评估,计算出每一个状态的v(s),直到v(s)收敛,才算训练好了这个状态价值函数V(s)
3.policy improvement
既然上一步已经得到了当前策略的评估函数V(s),那么就可以利用这个评估函数进行策略改进啦。
在每个状态s时,对每个可能的动作a,都计算一下采取这个动作后到达的下一个状态的期望价值。看看哪个动作可以到达的状态的期望价值函数最大,就选取这个动作。以此更新了π(s)
然后再次循环上述2、3步骤,直到V(s)与π(s)都收敛。
In Value Iteration, you start with a randon value function and then find a new (improved) value function in a iterative process, until reaching the optimal value function. Notice that you can derive easily the optimal policy from the optimal value function. This process is based on the Optimality Bellman operator.
1.initialization
初始化所有状态的v(s)
2.finding optimal value function(找到最优的价值函数)
注意伪代码里的max,对每一个当前状态s,对每个可能的动作a,都计算一下采取这个动作后到达的下一个状态的期望价值。看看哪个动作可以到达的状态的期望价值函数最大,就将这个最大的期望价值函数作为当前状态的价值函数v(s) 循环执行这个步骤,直到价值函数收敛,就可以得到最优optimal的价值函数了
3.policy extraction
利用上面步骤得到的optimal价值函数和状态转移概率,就计算出每个状态应该采取的optimal动作,这个是deterministic
转载地址:https://blog.csdn.net/panglinzhuo/article/details/77752574