首页 理论教育 A3CQ-Learning算法优化

A3CQ-Learning算法优化

时间:2026-01-23 理论教育 眠眠 版权反馈
【摘要】:A3CQ-Learning的伪代码如下。循环内部就是针对每一个Agent的内容。A3C版的DQN具有如下特性。2013版DQN和2015版DQN都使用了Replay Memory,主要目的是消除样本之间的关联性。所以,A3C果断地采用了双重异步的方式,意在使网络的收敛更加平稳,而且在训练中可以根据网络的实际表现调整异步的节奏,例如Itarget和IAsyncUpdate的大小。

A3CQ-Learning的伪代码如下。

首先,假设在全局范围内,主网络θ和目标网络θ是共享的,此外有一个全局性的计步器T=0。然后,初始化一个线程内的私有计数器t,使t=0。将目标网络θ赋值为主网络θ的值。将更新主网络θ的梯度dθ赋值为0。

启动一个循环。这个循环一共要走Tmax次。需要注意的是,这个循环的计步器T是全局共享的,也就是说,在训练整个模型的过程中可能启动了5个或者10个Agent,但它们各自每一刻的Step都将计入T。任何一个Agent在发现全局累积的步数大于最大的步数时就应该终止。

循环内部就是针对每一个Agent的内容。

在循环内部,以概率ε做一个随机动作,以概率1-ε做从Q(s,a|θ)里查表得出的估值最大的动作。此时,会得到一个转移的状态s′和一个瞬时奖励值r。

使用如下表达式计算目标值:

对于终止的状态,使用瞬时奖励值就可以。对于非终止的状态,要使用目标网络进行估算。

到目前为止,除了全局共享主网络θ和目标网络θ的参数,其他音§分与2015版DQN几乎没有区别。但大的区别还是有的,即以下这个更新:(https://www.xing528.com)

在某个Agent的一个Step中,并没有像在2015版DQN中那样急着更新和优化主网络,即Loss=(yi-Q(φj,a;θ))2,而是一步步累积需要更新的梯度dθ。

周期性地对网络进行更新。当全局计步器T的值为Itarget的整数倍时,将目标网络θ赋值为主网络θ的值。当本地计步器t的值为IAsyncUpdate的整数倍或者当前Agent正处在一个Episode的结束时,用θ=θ-dθ对主网络θ进行更新。

A3C版的DQN具有如下特性。

第一,A3C版DQN没有使用像Replay Memory这样的东西。2013版DQN和2015版DQN都使用了Replay Memory,主要目的是消除样本之间的关联性。样本之间的关联性对于估值计算来说是有害的,因为如果使用同一个策略或者从同一个Episode中走出来,序列s→a→r→s′之间的因果关系(或者说依赖性)会很强。而使用Replay Memory的作用就是将收集到的样本混在一起,随机抽取,进行贝尔曼方程的更新,从而有效地破坏相关性,使估值更为准确。

第二,A3C允许并行化。A3C是第一个以显式方式表示可以使用并行化的强化学习算法,这绝对是值得肯定的。要知道,在线学习可以成倍提高样本收集效率,拿CPU换时间是非常划算的事情。这种并行化还可以“K.O.”Replay Memory,这虽然节省了存储空间,但会消耗一定的CPU资源。A3C的并行化要收集s→a→r→s′,在这个过程中GPU是帮不上忙的,GPU能帮忙的地方仅仅在图示和θ=θ-dθ中。所以,要想让A3C的执行速度快一些,CPU的处理速度和线程数量是关键条件。

第三,在单个Agent中对θ=θ-dθ的更新是异步的,在全局范围内对θ=θ的更新也是异步的。异步的间隔越大,就越像离线学习,估值越稳定,收敛越平稳。所以,A3C果断地采用了双重异步的方式,意在使网络的收敛更加平稳,而且在训练中可以根据网络的实际表现调整异步的节奏,例如Itarget和IAsyncUpdate的大小。这些值的意义,就是在Agent所表现出来的进步效率和收敛的稳定性之间找平衡,因此,建议把这两个值设置得大一些。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈