强化学习douzero模型伪代码
伪代码
中文逻辑
算法1 Douzero的Actor过程
-
Input: 对于每一次entry,共享buffer B L , B U , B D B_L, B_U, B_D BL,BU,BD有B个entries,size为 S S S,探索超参数为 ϵ epsilon ϵ,折扣为 γ gamma γ 初始化本地Q-networks Q L , Q U , Q D Q_L,Q_U,Q_D QL,QU,QD,本地buffers D L , D U , D D D_L,D_U,D_D DL,DU,DD for 迭代=1,2,…,T do 用learner过程异步化 Q L , Q U , Q D Q_L,Q_U,Q_D QL,QU,QD for t = 1,2,…,T do #生成一个回合 Q ← leftarrow ← 基于一个位置, Q L , Q U , Q D Q_L,Q_U,Q_D QL,QU,QD其中的一个 a t ← { a r g m a x a Q ( s t , a ) , w i t h p r o b ( 1 − ϵ ) 随 机 动 作 , w i t h p r o b ϵ a_t leftarrow egin{cases}argmax_aQ(s_t,a), with prob (1-epsilon)\随机动作, with prob epsilon end{cases} at←{ argmaxaQ(st,a),with prob(1−ϵ)随机动作,with prob ϵ 执行 a t a_t at,观察到 s t + 1 s_{t+1} st+1和奖励 r t r_t rt 存 { s t , a t , r t } {s_t,a_t,r_t } { st,at,rt}进相应的 D L , D U , D D D_L,D_U,D_D DL,DU,DD end for for t=T-1,T-2,…,1 do #获得累计奖励 r t ← r t + γ r t + 1 r_t leftarrow r_t+gamma r_{t+1} rt←rt+γrt+1然后更新 D L , D U , D D D_L,D_U,D_D DL,DU,DD中的 r t r_t rt end for for p ∈ { L , U , D } pin {L,U,D } p∈{ L,U,D}do #多线程优化 if D p . l e n g t h ≥ L D_p.length ge L Dp.length≥L then 请求并等待 B p B_p Bp的一个空entry 从 D p D_p Dp中移动大小为 L L L的 { s t , a t , r t } {s_t,a_t,r_t} { st,at,rt}到 B p B_p Bp end if end for end for
算法2 Douzero的Learner过程
-
Input: 对于每一次entry,共享buffer B L , B U , B D B_L, B_U, B_D BL,BU,BD有B个entries,size为 S S S, batch size M M M,学习率为 ψ psi ψ 初始化全局Q-networks Q L g , Q U g , Q D g Q^g_L,Q^g_U,Q^g_D QLg,QUg,QDg for 迭代=1,2,… 知道收敛 do for p ∈ { L , U , D } pin {L,U,D } p∈{ L,U,D} do #多线程优化 if B p B_p Bp中的full entries的数目 ≥ M ge M ≥M then 从 B p B_p Bp中抽样一个 M × S 实 例 { s t , a t , r t } M imes S实例{s_t,a_t,r_t} M×S实例{ st,at,rt}的一个batch然后释放entris 用MSE loss和学习率 ψ psi ψ更新 Q p g Q^g_p Qpg end if end for end for
上一篇:
JS实现多线程数据分片下载
下一篇:
chatGpt怎么部署到本地