0

我开发了一个小型强化学习练习。问题是重新开始训练后训练的准确性大大下降,我不太明白。

环境: - 我使用 keras rl,一个简单的神经元模型,DQNAgent

from keras.models import Sequential
from keras.layers import Dense, Activation, Flatten
from keras.optimizers import Adam

from rl.agents.dqn import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory

model=createModel_SlotSel_drn_v2(None, env)
#Finally, we configure and compile our agent. You can use every built-in Keras optimizer and  even the metrics!
memory = SequentialMemory(limit=5000000, window_length=1)
policy = BoltzmannQPolicy()

dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=130,
               target_model_update=1e-3, policy=policy)
dqn.compile(Adam(lr=1e-4), metrics=['categorical_accuracy'])

...
h=dqn.fit(env, nb_steps=steps, visualize=False, verbose=1)

我可以准确地测量模型的准确度,所以每走 10k 步后我就进行一次测量。一开始内存是空的,权重都为零。下图显示了前 120 x 10k 步中的准确度

在此处输入图像描述

模型学习到一定程度并保存最佳权重。

现在我不明白的是,当我在休息几天后重新开始训练时,我恢复了权重,但内存又是空的,模型的准确性大幅下降,除此之外,它甚至没有达到以前达到的精度。看下图和开头的大跌幅:在此处输入图像描述

我认为恢复权重后训练的结果不会比以前差很多,但事实并非如此。空的 SequentialMemory 会导致学习/训练下降,并且可能不会导致与以前相同的水平。

有什么提示吗?

干杯,费伦茨

4

0 回答 0