4.5 —— 异步动态规划(Asynchronous Dynamic Programming)

Expensive Sweep Operation

书接上文,每次进行价值估计和更新时都要对全部的状态进行一次sweep,这未免太过繁琐,尤其是当状态空间足够大时,消耗在sweep上的资源就不尽人意了。那能不能一次更新只针对部分状态进行呢?只更新部分状态还能保证价值更新的收敛吗?

Asynchronous DP

异步动态规划(这里简记为ADP),顾名思义,对所有状态价值的更新不是同步进行的,而是存在某种先后顺序,这就有大大减少单次更新量的可能。此外,ADP还是一种“in place”更新方法,即我们不需要额外存储新旧价值,甚至可能能享受到“in place”所带来的加速效果~

价值更新的先后顺序,不是唯一的,有可能在某一状态的价值只被更新了一次的同时,别的状态都已经更新多次一骑绝尘而去了。但为了保证价值函数的收敛,我们不能忽略任何一个状态,所以即使是ADP也要为那些许久没有更新价值的状态考量,做出弥补。一种常用的ADP思路是只更新当前时间步所处的状态的价值,按照时间步递增排列出来会形成一个更新序列 \{s_{k}\} ,在continuing tasks中,只要 \gamma<1 且每个状态都能出现在更新序列中无数次,理论上就能保证价值函数的收敛。而在episodic tasks中,有些更新顺序是不能够满足价值函数的收敛要求的,为了收敛这时候就需要考虑更新过少的状态价值的更新频次,而episodic情况的一些bug是比较容易避免的,做好algorithm design就行~

在以学习optimal policy为目标的过程中,有时则不需要过分地关注中间价值函数与当前policy的一致情况,因为有些状态的价值改变对于已经确定的optimal policy的影响是微乎其微的,我们可以称作irrelevant state,它可以被更新的次数很少,因为算是局外人(如之前grid-world的例子,optimal policy稳定了之后,即使某些状态价值在收敛之前变化很大,optimal policy也不会发生改变)。这样思考来看,其实可以忽略一部分价值一致性要求进行value iteration中的truncation,可以有效提升到达optimal policy的效率。

Asynchronous设置还为学习提供了更多的可能,如它可以在智能体与环境交互的同时进行DP,这就呈现了一种online的学习模式。又因为智能体的交互经验来自于当前交互的policy,所以聚焦于这些经验就是一种on-policy的做法,但是更新仅针对智能体访问到的状态(相当于智能体学习policy的过程建立在on-policy的经验状态访问分布上),expected updates具体是以关于策略分布的期望形式还是最大动作价值的乐观形式还是要依据切实的方法选择。

编辑于 2022-07-05 11:15