강화학습/논문리뷰

HER 논문 리뷰

APinCan 2021. 9. 15. 23:38

Hindsight Experience Replay - NIPS 2017

 

논문의 핵심

 - sparse and binary reward 환경을 위한 방법

 - 복잡한 reward design 대신 replay buffer에 샘플을 더 추가하는 방법을 사용

 - 에이전트에게 하나의 골이 아닌 여러개의 goal을 주는 방법

 

Introduction

Reward design

RL에서 reward design은 task마다 조심스럽게 다뤄야 하는 문제. 따라서 RL expertise와 domain-specific knowledge가 필요.

사람의 학습방법에서 영감을 얻어서...

사람은 보통 실패에서도 학습 가능함. 예를 들어 축구공을 차서 골대에 넣어야하는 경우를 생각해보면, 우리는 어떻게 차야지 골대에 공이 들어가는지 뿐만 아니라 공이 들어가지 않는 경우에서도 학습을 함. ( 참고로 논문에서는 하키 퍽으로 예를 들었음) 즉 우리는 실패에서도 학습을 하고 있음.

그렇다면 RL에서는...

여기서는 HER이라는 방법을 소개. 쉽게 말해서 RL 에이전트에게 여러개의 goal을 줘서 학습시키는 방법. 위의 축구예제의 맥락에서 생각해보면 잘못 차서 골대 밖으로 공이 나갔을 때도 하나의 goal로 취급하겠다는 말임. HER은 sample efficiency를 확보하고 sparse and binary rweard환경에서 학습을 가능하게 함.

 

Background

 - RL (너무 당연함)

 - DQN (얘도 당연함)

 - DDPG (논문에서는 DDPG로 experiment를 진행했는데, 다른 off-policy 알고리즘에도 적용가능)

 - UVFA (쉽게 생각해서 NN에 input으로 state+goal을 주겠다는 얘기임)

 

Hindsight Experience Replay

복잡한 reward design 대신에....

논문에서는 domain-knowledge가 필요하지 않은 방법을 소개. 핵심적인 아이디어는 에이전트가 지나왔던 trajectory를 원래 설정한 goal (골대에 공넣는 것)이 아닌 다른 goal (골대 밖으로 공이 나간 것)로 re-examine하는 것. 에이전트는 기본적으로 timestep마다 -1의 reward를 받고 goal에 도착하면 0의 reward를 받음. 즉 binary sparse reward.

구체적인 방법?

에이전트가 re-examine하는 trajectory의 모든 transition에 대해 원래의 goal 뿐만 아니라 다른 goal도 같이 replay buffer에 저장시킴. 즉 replay buffer에 sample을 한번에 두번 저장한다고 생각하면 됨 ( 다른 goal들의 갯수에 따라 두번이 아닐 수도 있음).

Algorithm

여기서 strategy는 밑에서 그 내용이 나옴.

요거는 알고리즘

 

(알고리즘은 replay buffer에 저장하는 타이밍이 조금 특이하다는 것만 제외하면 기존의 DQN과 큰 차이는 없어보임)

 

experiments

저자는 HER의 evaluation을 위해 MuJoCo를 기반으로 로봇 컨트롤 환경을 사용. 이는 OpenAI gym에 구현되어 있음 https://openai.com/blog/ingredients-for-robotics-research/ 

뭐 대충 이런 environment

자 그래서 HER은 성능을 올리는데 도움이 되었을까?

DDPG, HER 비교

도움이 잘 됨을 볼 수 있음. 저자들은 이런 단순한 성능비교뿐만 아니라 몇가지 질문을 던짐.

 

또 다른 질문들

과연 HER은 goal이 하나뿐일때도 성능을 올려줄까?

 - 올려줌

binary reward말고 reward design을 좀 더 specific하게 하면 결과가 더 좋게 나올까? (여기서 저자들은 본인들이 디자인한 reward를 사용)

 - 아니, DDPG든 DDPG+HER이든 결과가 더 나쁘게 나옴

근데 왜 더 나쁘지?

저자들은 두가지 이유가 있다고 말함. 첫번째 우리가 reward design을 통해 optimize하려고 하는 것과 success condition 사이에는 큰 갭이 존재. 체스 게임을 생각해보면 success condition은 킹을 잡는건데 우리가 optimize하려는 것은 뭐 그냥 상대 퀸을 잡든 폰을 잡든 했을 때 reward를 주는 것.

두번째 inappropriate behaviour에 의해 패널티를 받고 exploration을 방해함 (e.g., moving the box in a wrong direction).

하지만...

저자들의 결과에서는 domain-agnostic reward desgin이 잘 작동하지는 않았지만, 항상 나쁜 결과를 주는 것은 아님. 다만 좋은 결과를 내게 하기가 매우 힘들것

마지막으로...

어떻게 original goal이 아닌 다른 goal들을 선택해야 할까? 여기에는 꽤 다양한 방법들이 존재함. 저자들은 이 다른 goal들을 선택하는 방법을 strategy라고 부름. 위에 알고리즘에서 본 그 strategy를 의미하는 것이 맞음.

 - final: 현재 episode의 마지막 state를 goal로 사용

 - future: 현재 episode에서 goal을 뽑을건데 replay buffer에 저장하려고하는 현재 transition 이후의 sample들 중에서 랜덤하게 몇개 뽑은 것을 goal로 사용 (말이 좀 어려운데 밑에 references를 참고)

 - episode: episode 에서 랜덤하게 몇개의 sample을 뽑아서 goal로 사용

 - random: training을 진행하며 만난 모든 state들 중에서 랜덤하게 몇개의 sample을 뽑아 goal로 사용

여기서 몇개의 샘플을 뽑을 건지 (k)도 하이퍼파라미터임.

각 strategy에 따른 성능

(다양한 방법들이 존재하는데 future가 가장 좋은듯?)

 

Summary

 - Sprase and binary reward를 해결하기 위한 방법

 - off-policy RL 알고리즘들에 적용 가능

 - 하나의 transition에서 여러개의 goal들을 학습시킴. 즉 실패에서 학습하는 방법

 - 성능은 굳. 특히 goal을 선택하는 방법 중 future가 좀 더 나은 모습을 보임

 

References

[1] https://arxiv.org/abs/1707.01495

[2] https://github.com/DLR-RM/stable-baselines3/blob/f3a35aa786ee41ffff599b99fa1607c067e89074/stable_baselines3/her/her_replay_buffer.py#L235

 

'강화학습 > 논문리뷰' 카테고리의 다른 글

DDPG 논문 리뷰  (0) 2021.09.15