本实验仅仅是一个简单的实验,用于比较在 “Pendulum-v1”(gym提供的一个小游戏,用于训练RL模型)环境下,使用:
- double net:critic和actor都拷贝一个副本,并延迟同步参数,在计算目标q值时使用改副本进行计算
- 每轮迭代次数:之前都是一局游戏结束就从历史数据中sample一批数据更新一次网络,而这里就是进行多次sample然后更新多次
- replay buffer:将之前采样的数据都保持在一个队列中,训练时就从队列中随机采样数据
三者对模型训练性能的影响。注意:这个实验的结果并不能说明太多问题,不同的环境下,它们的作用肯定也不尽相同,我也仅仅是做一个记录而已。
下图为各组实验在运行几个小时之后,在游戏中可以得到的reward

以full(所有trick都用上)作为对比,每个实验都做两组(上图中name后标有1,2),实验表明,在没有 “muti_update”(每一局游戏结束后,都对模型进行n轮训练,数据也都是历史数据中sample) 时,性能不会下降,只是比full收敛更慢,说明它不是很重要,只影响收敛速度,而不用 double net 时,一次可以达到理想水平,一次每练出来,即使是达到理想水平那一次,也可以看到其前面有一个不小的波动,也说明了 double net 可能对模型训练的稳定性起到了一定的作用,而没有 replay buffer 的两个实验和什么都没有的两个实验都gg了,可能说明了replay buffer的重要性。