我正在使用深度强化学习方法来预测时间序列行为。我是一个新手,所以我的问题比计算机编程的问题更具概念性。我的同事给了我以下图表,其中包括使用深度强化学习的时间序列数据分类的训练,验证和测试准确性。
从该图可以看出,验证和测试准确性都是随机的,因此,代理当然是过拟合的。
但是让我感到惊讶的是我的同事如何训练他的经纪人(也许是由于缺乏知识,这就是为什么我在这里问你)。在此图表的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()
根据图表和代码,对我来说奇怪的是,代理已多次安装,彼此独立,但是训练精度随时间增加。似乎以前的经验正在帮助代理商提高培训准确性。但是,如果重置环境并且代理又简单地重新安装,那怎么可能呢?以前配件的误差是否向后传播,这有助于代理提高其在后续配件中的精度?
答案 0 :(得分:2)
重置的是环境,而不是代理。因此,座席实际上是在每次迭代中积累经验。
答案 1 :(得分:1)
环境正在重置,但代理未重置。
可学习的参数属于代理,而不是环境。因此,agent的参数在所有情节中都在变化,也就是说,每次您拟合数据时agent都会学习。
如果在您适合的所有时间数据都相同,那么只会使我们的代理人过度拟合数据分布