Machine learning 什么';CartPole任务的最佳目标函数是什么?
我在做政策梯度,我想找出任务的最佳目标函数。该任务是开放式ai CartPole-v0环境,在该环境中,代理每生存一个时间步将获得1的奖励,终止时将获得0的奖励。我试图找出哪种方法是建立目标函数模型的最佳方法。我提出了3种可能的功能:Machine learning 什么';CartPole任务的最佳目标函数是什么?,machine-learning,gradient-descent,reinforcement-learning,Machine Learning,Gradient Descent,Reinforcement Learning,我在做政策梯度,我想找出任务的最佳目标函数。该任务是开放式ai CartPole-v0环境,在该环境中,代理每生存一个时间步将获得1的奖励,终止时将获得0的奖励。我试图找出哪种方法是建立目标函数模型的最佳方法。我提出了3种可能的功能: def total_reward_objective_function(self, episode_data) : return sum([timestep_data['reward'] for timestep_data in timestep_data
def total_reward_objective_function(self, episode_data) :
return sum([timestep_data['reward'] for timestep_data in timestep_data])
def average_reward_objective_function(self, episode_data):
return total_reward_objective_function(episode_data) / len(episode_data)
def sum_of_discounted_rewards_objective_function(self, episode_data, discount_rate=0.7)
return sum([episode_data[timestep]['reward'] * pow(discount_rate, timestep)
for timestep in enumerate(episode_data)])
请注意,对于平均奖励,目标函数将始终返回1,除非我干预并修改奖励函数以在终止时返回负值。我之所以这么问,而不是仅仅进行一些实验,是因为其他地方存在错误。因此,如果有人能给我指出这方面的一个好做法,我可以把重点放在算法中更重要的错误上。你应该使用最后一个(折扣奖励的总和),因为cart-pole问题是一个无限期MDP(你希望尽可能长地平衡极点)。解释为什么在无限期MDP中应使用折扣因子 取而代之的是,第一个奖励只是一个未贴现的奖励总额,如果情节长度固定(例如,一个机器人执行10秒的轨迹),就可以使用这个奖励。第二种方法通常用于有限水平MDP,但我不太熟悉 对于cart-pole,折扣系数应为0.9(或者,根据使用的算法,您可以搜索科学论文并查看使用的折扣系数)
最后一个音符。您描述的奖励函数(每个时间步+1)不是文献中唯一使用的函数。一个普通的(我认为也是“原始的”一个)在每一个时间步都给出0,如果磁极下降,则给出-1。其他奖励函数与杆和车之间的角度有关。您应该使用最后一个(折扣奖励之和),因为车杆问题是一个无限水平MDP(您希望尽可能长时间平衡杆)。解释为什么在无限期MDP中应使用折扣因子 取而代之的是,第一个奖励只是一个未贴现的奖励总额,如果情节长度固定(例如,一个机器人执行10秒的轨迹),就可以使用这个奖励。第二种方法通常用于有限水平MDP,但我不太熟悉 对于cart-pole,折扣系数应为0.9(或者,根据使用的算法,您可以搜索科学论文并查看使用的折扣系数) 最后一个音符。您描述的奖励函数(每个时间步+1)不是文献中唯一使用的函数。一个普通的(我认为也是“原始的”一个)在每一个时间步都给出0,如果磁极下降,则给出-1。其他奖励功能与杆和车之间的角度有关