Существует ли в Керасе стандартная практика или инструмент, который дает оценку вознаграждений за эпизоды, которые связаны с эпсилоном во время обучения?
При обучении в следующей сети dqn я могу измерить награды за эпизоды повремя во время обучения, однако из-за характера проблемы, поскольку эпсилон уменьшается, награды за эпизоды будут увеличиваться независимо от того, улучшилась модель или нет по сравнению с тренировкой.Из-за этого трудно сказать, улучшается ли модель / сходится, или увеличение награды за эпизод происходит только из-за линейного отжига эпсилона.
Если бы мне пришлось обходить это вручную, я бы тренировалчасть всех желаемых тренировочных шагов, затем протестируйте модель с epsilon = 0, запишите среднюю награду за эпизод в этот момент, вручную измените 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'])
Типичный график обучения может выглядеть следующим образом: Типичные показатели обучения