Я занимаюсь политическим градиентом, и я пытаюсь выяснить, что является лучшей целевой функцией для задачи. Задачей является открытая ai CartPole-v0 среда, в которой агент получает вознаграждение 1 за каждый оставшийся период времени, а также вознаграждение 0 после прекращения. Я пытаюсь выяснить, что является лучшим способом моделирования целевой функции. Я пришел с 3-х возможных функций:Какова лучшая объектная функция задачи CartPole?
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, если я не вмешиваться и изменять функцию вознаграждения возвращать отрицательное значение по окончании. Причина, по которой я прошу, а не просто запустить несколько экспериментов, заключается в том, что в других случаях есть ошибки. Поэтому, если кто-то может указать мне на хорошую практику в этой области, я мог бы сосредоточиться на более значительных ошибках в алгоритме.