体验重播让我的经纪人变得更糟[关闭]

问题描述 投票:0回答:1

我已经'成功'建立了一个Q-network来解决OpenAI健身房的'FrozenLake-v0'环境(至少,我认为..不是100%肯定我的得分 - 我在100个成功剧集中得到70到80个在没有经验重播的5k次训练之后)。我对这些编程问题还很陌生,但我确实有几年的整体编程经验。我使用最新的健身房,Python 3.6.4(x64)和Tensorflow 1.7。我还没有在家里的980 Ti装备上设置Tensorflow-GPU(从我读过的内容中我将CPU从水中吹出来)。

现在,我试图通过实施经验重播来改进:每一步(=一个'经验')都保存为(s, a, r, s'):状态,动作,奖励,新状态。在采取了最小的pre_train_steps之后(换句话说:如果采取了一定数量的'有机'步骤),每25步(if total_steps % 25 == 0),我从记忆中抽取4个随机剧集(记忆是最后1000集),以及对于这4集中的每一集,我在该集(episode[n:n+4] where n=rand(0, len(episode) + 1 - 4))中采样4个随机的连续步骤。

结果是4 * 4 = 16个(s, a, r, s')元组作为样本。对于每个样本,我得到Q(s, a)Q(s', a')max(Q(s', a'))。然后,我计算目标Q值,为每个样本设置targetQ(:,a) = r + gamma * max(Q(s', a')) where gamma = .99。然后我使用定义为GradientDescentOptimizer(learning_rate=0.1)loss = reduce_sum(square(targetQ - Q))和损失函数进行训练

测试,没有应用经验重播,运行10k集(aprox.290k'有机'步骤)所有参数(伽马,LR等)等于上面写的那些,我得到一致的结果,每100集测试70-80成功。在我的Lenovo T440s笔记本电脑上运行大约需要9分钟。

然而,实现经验重播,运行10k集(aprox.240k'有机'和115k'训练'步骤),pre_train_steps = 50ktrain_freq = 25,结果始终较低(每100集65-70成功),略短(aprox.8分钟)在我的旧T440s上。

为什么?我对这次体验重播有什么期待吗?我认为这会减少我的时间并提高我的准确性(特别是阻止网络只选择它被锁定的某些路径),但它似乎根本没有帮助。也许我的代码错了,也许我使用了错误的参数?如果有人能够看到这一点并指出我正确的方向,这将是一个很大的帮助,因为我想继续增加我的网络的复杂性和尝试不同的环境,但在我做之前我想要我知道我没做错事......

TIA!

完整代码:https://pastebin.com/XQU2Tx18

python tensorflow reinforcement-learning q-learning openai-gym
1个回答
1
投票

通过检查链接中的代码,我得到的印象是:

  • eepsilon-greedy策略的epsilon参数
  • batch_train似乎是决定是否使用体验重播的参数?

假设上述内容是正确的:有一点让我感到惊讶的是这段代码

for i, experience in enumerate(training_batch):
    s, a, r, ss, d = experience # s a r s' d

    if int(r) == 1:
        e -= e_factor

        if e < e_end:
            e = e_end

    target_Qs[i][int(a)] = r + QN1.gamma * new_Qs_max[i]

它位于以if为条件的batch_train == True块内,换句话说,上面的代码片段仅在使用Experience Replay的情况下运行。该代码似乎在衰减您的epsilon参数。

一般来说,你不希望epsilon根据你从中学到的经验样本数量而衰减;您希望它根据您在环境中实际采取的操作数量而衰减。这应该与您是否使用体验重播无关。所以,一个可能的解释是,在使用体验重放的情况下,你只是过快地腐烂epsilon

除此之外,您还可以在最新的体验样本上执行直接学习步骤,此外还可以通过体验重播来学习旧样本。更常见的是只从您的体验重放缓冲区中随机抽取样本,而不是直接从最新样本中学习。简单地在重放缓冲区中对(s, a, r, s')元组进行故事报道更为常见,而不依赖于它们来自哪一集,然后比每25个动作更频繁地学习一次学习步骤。

这些都是您可以查看的更常见的实现和实现之间的差异,但直观地说,我不希望它们解释您正在观察的性能降低。由于您在更常见的实现方面存在差异,因此您仍然更接近“无体验重放”设置,因此我真的希望您能够获得与该设置非常相似的性能而不是更差的性能。

© www.soinside.com 2019 - 2024. All rights reserved.