在体验回放期间,我们从记忆库中随机收集一个小批量。然后我们使用小批量来校正我们的神经网络 q 值函数逼近器。
完成后,我们应该将小批量返回到内存库,还是应该将其丢弃?
执行前者似乎会无限期地增加内存,并且可能会导致将来对某些状态进行多次采样,如果该状态很幸运并最终出现在未来的小批量中。
在体验回放期间,我们从记忆库中随机收集一个小批量。然后我们使用小批量来校正我们的神经网络 q 值函数逼近器。
完成后,我们应该将小批量返回到内存库,还是应该将其丢弃?
执行前者似乎会无限期地增加内存,并且可能会导致将来对某些状态进行多次采样,如果该状态很幸运并最终出现在未来的小批量中。
如果你把它扔掉,训练可能会在一开始就受到影响,因为那时你的数据会更少。
如果您确实将其丢弃,那么您必须了解您的拟合间隔、预期的剧集长度和批量大小,这样您丢弃数据的速度不会比生成数据的速度快。
至于内存无限增长,我使用了一个双端队列来限制它的大小。
from collections import deque
memory = deque(maxlen=10000000)