私はポリシーのグラデーションを行っています。私は、タスクにとって最良の目的関数が何であるかを把握しようとしています。タスクは、エージェントが存続するタイムステップごとに1の報酬を受け取り、終了時に報酬を受け取るオープンai CartPole-v0環境です。私は目的関数をモデル化する最良の方法であることを理解しようとしています。私が介入し、終了時に負の値を返すために、報酬関数を変更しない限り、平均報酬目的関数のために常に1を返すこと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)])
注:私は3つの可能な機能を作ってみました。いくつかの実験を実行するのではなく、私が求めているのは、他の場所でエラーがあるためです。だから誰かがこの分野の良い練習に向いてくれたら、私はアルゴリズムのより重大な間違いに焦点を当てることができた。