Я использую метод глубокого обучения для прогнозирования поведения временных рядов.Я новичок в этом, поэтому мой вопрос более концептуален, чем вопрос компьютерного программирования.Мой коллега дал мне следующую таблицу с точностью обучения, проверки и тестирования классификации данных временных рядов с использованием обучения с глубоким подкреплением.
![enter image description here](https://i.stack.imgur.com/W1AMY.png)
Из этого графика, можно увидеть, что и валидация, и точность тестирования являются случайными, поэтому, конечно, агент переоснащается.
Но что меня больше удивляет (может быть, из-за недостатка знаний, и именно поэтому яздесь, чтобы спросить вас), как мой коллега обучает своего агента.На оси X этой диаграммы вы можете найти номер «эпохи» (или итерацию).Другими словами, агент подгоняется (или обучается) несколько раз, как в приведенном ниже коде:
#initiating the agent
self.agent = DQNAgent(model=self.model, policy=self.policy,
nb_actions=self.nbActions, memory=self.memory, nb_steps_warmup=200,
target_model_update=1e-1,
enable_double_dqn=True,enable_dueling_network=True)
#Compile the agent with the Adam optimizer and with the mean absolute error metric
self.agent.compile(Adam(lr=1e-3), metrics=['mae'])
#there will be 100 iterations, I will fit and test the agent 100 times
for i in range(0,100):
#delete previous environments and create new ones
del(trainEnv)
trainEnv = SpEnv(parameters)
del(validEnv)
validEnv=SpEnv(parameters)
del(testEnv)
testEnv=SpEnv(parameters)
#Reset the callbacks used to show the metrics while training, validating and testing
self.trainer.reset()
self.validator.reset()
self.tester.reset()
####TRAINING STEP####
#Reset the training environment
trainEnv.resetEnv()
#Train the agent
self.agent.fit(trainEnv,nb_steps=floor(self.trainSize.days-self.trainSize.days*0.2),visualize=False,verbose=0)
#Get metrics from the train callback
(metrics)=self.trainer.getInfo()
#################################
####VALIDATION STEP####
#Reset the validation environment
validEnv.resetEnv()
#Test the agent on validation data
self.agent.test(validEnv,other_parameters)
#Get the info from the validation callback
(metrics)=self.validator.getInfo()
####################################
####TEST STEP####
#Reset the testing environment
testEnv.resetEnv()
#Test the agent on testing data
self.agent.test(testEnv,nb_episodes=floor(self.validationSize.days-self.validationSize.days*0.2),visualize=False,verbose=0)
#Get the info from the testing callback
(metrics)=self.tester.getInfo()
Что странно для меня согласно таблице и коду, что агент подгоняется несколько раз,независимо друг от друга, но точность обучения увеличивается со временем.Кажется, что предыдущий опыт помогает агенту повысить точность обучения.Но как это возможно, если среда перезагружается и агент просто снова подключается?есть ли обратное распространение ошибки из предыдущих фитингов, которые помогают агенту повысить его точность в следующих фитингах?