我开发了一个小型强化学习练习。问题是重新开始训练后,训练的准确性大大降低,我对此并不了解。
环境: -我使用了简单的神经元模型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会导致学习/培训下降,并且可能不会达到以前的水平。
有任何提示吗?
干杯, 费伦茨