在这个系列的马尔可夫决策过程与动态规划
这篇文章中我们是有说这个策略迭代和值迭代的,但是说的更公式化一点,本文主要是对其进行一个更加深刻的理解。
为什么需要值迭代
其实我们更希望强化学习直接学习出来一个policy
直接用这个policy
解决问题就可以,那为什么还需要value function
呢?其实这个value function
是非常重要的,当我们拿到一个state
之后,follow
当前的policy
,可以得到一个值函数
,这样不仅可以横向地和其它state
进行比较,还可以横向地与其它policy
进行比较。
那既然可以和其它state
,其它policy
进行比较,那我们就可以去找一个optimal state
,也可以去找optimal policy
。
那是怎么找的呢?上一节我们也有说过,这里重复一下,如果我们已知state
的情况下,希望找一个optimal state
,也就是取遍所有的policy
,能够使得当前的state
在某个policy
下值最大,也就找到了最好的这个value
:
如果找到了这个最好的value
的话,通过Bellman function
可以知道这个时候就会是一个完全收敛的情况:
如果不收敛,那它(value
)肯定还没有到达optimal variable
。上述等式在收敛的情况下就会成立,而不仅仅是一个赋值的关系。
如果我们能够得到上述等式这样一个case
的话,里面就蕴含了optimal policy
,也就是上述等式的后面那一项:
因此在这种情况下,对于其它任何的policy
,我们都有:
Value Iteration & Policy Iteration
从上述分析我们也可以知道,其实 value function and policy are correlated :
value function
是在给定policy
的情况下进行的计算,在每个state-value function
算出来之后,我们又可以直接导出来在每个state
应该去take
哪个action
,去max value function
。因此就会有两种方法,到底是基于value function
作为主体来更新还是基于policy
作为主体来进行更新。
- It is feasible to perform iterative update towards the optimal value function and optimal policy
- Value iteration
- Policy iteration
Value Iteration
value iteration
就是不断地去套bellman equation
,就变成了对于每一个state
去计算
。
这里是没有策略
的,整个方程就是在表达,policy
在tack action
的时候,就是在tack
,那在值迭代里面,它自己去维护这样一个value function
就可以了。policy
只要使得后面上述等式后面那个max
成立就可以了。
整个的迭代过程只关心value
是多少就可以了,这里是value
作为主导,policy
包含在了里面。
Synchronous vs. Asynchronous
更细节一点,这里还有我们怎么去做这个value function
的更新,有两种办法Synchronous value iteration
和In-place asynchronous value iteration
。
- Synchronous value iteration
Synchronous value iteration stores two copies of value functions 。
这一轮迭代,我们先把所有的state
更新一下,都先缓存起来,然后我再把缓存覆盖到原来的value function
上面。这里要keep
住当前的state value
去更新new state value
,当所有的state
被更新完成之后,拷贝到之前的value
上面去。
- In-place asynchronous value iteration
In-place asynchronous value iteration stores one copy of value function
相应的asynchronous
的方法从头到尾只有一个寄存器,或者说一个版本的state
,随时更新。
Synchronous value iteration
是更加稳定的asynchronous
的方法中可能刚刚算过的state value
又马上用到了别的state value
上面,这就会非常不稳定,而有些state value
没有更新。
Value Iteration Example: Shortest Path
上图中
,
都表示迭代过程,在每个位置的选择都是随机的,每走一步消耗-1
的奖励。
Policy Iteration
Policy Iteration
中先拿一个策略
,然后计算出稳定的
,再拿这个稳定的
去更新policy
。但是The step of value function update could be time-consuming。
Example
Evaluating a Random Policy in a Small Gridworld
开始,我们拿随机的policy
去评估value
,然后进行赋值更新value
。
得到更新的值之后,我们再使用贪婪策略得到最终的策略。
Value Iteration vs. Policy Iteration
- Value iteration is a greedy update strategy
- In policy iteration, the value function update by bellman equation is costly
- For small-space MDPs, policy iteration is often very fast and converges quickly
- For large-space MDPs, value iteration is more practical (efficient)
Learning an MDP Model
上面的很多例子都是MDP
中状态转移概率被给定的情况,在很多时候不会给定状态转移概率。但是我们可以从agent
与环境交互的数据中反推reward function
和 state transition
。
例如: we have only observed some episodes
拿到这些episode
之后我们可以反推一个MDP
,比如给定一个state
和一个action
其下一个状态的转移概率我们可以从episode
中去统计:
用episode
中的 reward
做平均就是 expected immediate reward
:
在统计了很多情况的基础上,我们就可以基于这个模型去做动态规划、值迭代、策略迭代这些就可以了。整个的算法流程如下图所示:
这是一种解法,在不知道模型的基础之上,自己通过经验数据建立模型,之后再进行迭代求解,收集的数据不够多的情况下,状态转移概率和奖励函数就会差很多。另外一种方法是通过model-free
的强化学习直接去value
。
我的微信公众号名称:深度学习与先进智能决策
微信公众号ID:MultiAgent1024
公众号介绍:主要研究分享深度学习、机器博弈、强化学习等相关内容!期待您的关注,欢迎一起学习交流进步!