0

저는 정책 그라디언트를하고 있으며 최선의 목적 함수가 작업에 무엇인지 알아 내려고하고 있습니다. 작업은 에이전트가 살아남은 타임 스텝마다 보상 1 점을 받고 종료시 보상 0 점을받는 열린 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 개 가능한 기능을 마련했습니다. 몇 가지 실험을 실행하는 것보다 제가 묻는 이유는 다른 곳에 오류가 있기 때문입니다. 따라서 누군가가이 분야의 우수 사례를 가르쳐 주면 알고리즘의 더 중요한 실수에 집중할 수 있습니다.

답변

2

장바구니 문제가 무한한 수평선 인 MDP (가능한 한 장대를 균형 잡기를 원한다)이기 때문에 마지막 것 (할인 된 보상의 합계)을 사용해야합니다. The answer to this question은 왜 무한 호라이즌 MDP에서 할인 요인을 사용해야하는지 설명합니다.

첫 번째 것은 보상의 할인되지 않은 합계입니다. 에피소드의 길이가 고정 된 경우 (예 : 10 초의 궤적을 수행하는 로봇의 경우) 사용할 수 있습니다. 두 번째 것은 일반적으로 유한 지평선 MDP에서 사용되지만, 나는 그것에 익숙하지 않다.

장바구니의 경우 0.9의 할인 계수가 적용됩니다 (또는 사용 된 알고리즘에 따라 과학 논문을 검색하고 사용 된 할인 계수를 볼 수 있음).

마지막 메모. 기술 한 보상 기능 (각 타임 스텝에서 +1) 만 문학에 사용 된 것은 아닙니다. 공통점 (그리고 나는 또한 "원래"것이라고 생각합니다)은 각 타임 스텝에서 0을주고, 폴이 떨어지면 -1을줍니다. 다른 보상 기능은 장대와 장바구니 사이의 각도와 관련이 있습니다.