카트 막대기의 균형을 잡으면서, 카트를 일정 간격 이상 좌우로 번갈아가면서 움직이는 모델을 만듭니다. 좌우로 번갈아가는 조건은 설계하는 사람 마음대로 하면 됩니다.
카트를 직접 조작하면서 점수를 획득합니다.
균형을 잡으면서 좌우로 번갈아 움직이는 cartpole을 학습할 수 있는 코드를 만듭니다.
학습을 마치면 인퍼런스에 사용할 모델을 세이브 합니다.
# 모델을 저장하는 코드
model = DQN()
####################
# 학습을 진행 후... #
####################
model.save_weights('your_model_name', save_format='tf')
세이브 한 모델을 불러와서 greedy한 action 환경에서 잘 작동하는지 확인해봅니다.
# 모델을 불러오는 코드
model = DQN() # 이때, DQN 클래스는 save_weights를 사용한 객체의 클래스 구조가 동일해야 함
model.load_weights("your_model_name") # 경로 잘 확인하기!
마지막 차시의 과제는 어렵습니다. 물론 저는 여러분들이 잘 해내서 높은 성취를 이룰 것이라는 믿음을 갖고 있지만 한편 너무 어려워 반포기 할 수도 있을 것 같다는 생각이 들어서 그런 분들을 위해 공략 가이드를 제공해드립니다. 공략 가이드에는 제가 해결했던 방법을 바탕으로 한 힌트와 강화학습 보상 함수 설계 팁에 대해 설명되어 있습니다. 물론, 최종적으로 프로그래밍은 여러분의 몫입니다. 도움이 꼭 필요한 분들만 보세요!