Я разработал небольшое упражнение для обучения.Проблема в том, что после возобновления тренировки точность обучения сильно падает, чего я не очень понимаю.
Окружающая среда: - Я использую 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)
Я могу точно измерить точность модели, поэтому после каждых 10 тыс. Шагов я делаю измерение.В начале память пуста, а все веса равны нулю.Следующий график отображает точность в течение первых шагов 120 x 10k
Модель обучается до определенного уровня, и лучшие веса сохраняются.
Что я не понимаю, так это то, что когда я возобновляю тренировку после нескольких дней перерыва, я восстанавливаю веса, но память снова пуста, точность модели значительно падает,и вдобавок к этому, он даже не достигает точности, достигнутой ранее.См. Следующий рисунок и большое падение в начале:
Я думал, что после восстановления веса результаты тренировки не будут значительно хуже, чем прежде, но это не такправда.Пустая SequentialMemory вызывает падение в обучении / обучении и не может привести к тому же уровню, что и раньше.
Любые подсказки?
Cheers, Ferenc