在epsilon上使用带有线性退火的epsilon贪婪策略时测量情节奖励

时间:2019-02-20 23:24:33

标签: python tensorflow keras keras-rl

Keras中是否有一个标准的实践或工具可以估算与训练过程中与epsilon相关的情节奖励?

在训练以下dqn网络时,我可以测量训练期间随时间变化的情节奖励,但是由于问题的性质,随着epsilon的减少,无论模型是否从训练中得到了改善,情节奖励都会增加。因此,很难判断模型是否在改进/收敛,或者发作回报的增加仅仅是由于ε的线性退火。

如果我必须手动解决此问题,我将训练全部期望的训练步骤的一部分,然后以epsilon = 0进行测试,记录当时的平均情节奖励,手动更改epsilon,然后执行同样的周期。不过,这似乎是一种破解,我认为使用epsilon线性退火的其他任何人也会遇到同样的问题。

有想法吗?

我的模型的构造如下:

model = Sequential()
model.add(Flatten(input_shape=(WINDOW_LENGTH,) + (observation_space_count,)))
for i in range(hidden_layer_count):
    model.add(Dense(observation_space_count*layer_width))
    model.add(Activation('relu'))
model.add(Dense(nb_actions))
model.add(Activation('linear'))

memory = SequentialMemory(limit=memory_length, window_length=WINDOW_LENGTH)
policy = LinearAnnealedPolicy(EpsGreedyQPolicy(), attr='eps', value_max=0.75, value_min=.01, value_test=.0, nb_steps=TOTAL_STEPS)

dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=memory_length, target_model_update=1e-2, policy=policy, gamma=.99)
dqn.compile(Adam(lr=LEARNING_RATE), metrics=['mae'])

典型的训练图可能如下所示: typical training metrics

0 个答案:

没有答案