TRPO와 PPO

범용적으로 적용할 수 있는 Reinforcement Learning 알고리즘의 개발은 쉽지 않다. 그러므로, 여전히 새로운 알고리즘이 계속 발표되고 있는데, 오늘은 PPO(Proximal Policy Optimization) 알고리즘에 관한 내용이다. OpenAI의 논문에서 벤치마킹 결과를 보면 이 알고리즘은 여러 분야에 적용가능하고 성능도 매우 우수한것으로 보인다.

PPO

PPO는 TRPO(Trust Region Policy Optimization)알고리즘에서 기원한 것이다. 이 두 알고리즘은 모두 알고리즘의 안정성을 높이는데 사용된 기술(target network, experience replay)을 사용함과 동시에, network weights를 update하는 동안 너무 공격적 update를 수행하지 않도록 제한을 두는 방식을 채용하였다. 물론, weight update를 위한 gradient에 붙이는 hyperparameter를 적절히 선정하거나 조절하는 방법이 사용되기도 하고 기존 weight와 new weight의 비례조합을 이용하여 update하는 방법(conservative policy iteration update)을 사용하기도 한다.

이러한 경험적 기법에서 벗어나서 이론적 기반을 가진 update rule을 제안한 것이 TRPO알고리즘이다. TRPO에서는 Kullback-Liebler divergence를 사용하는 방법으로 optimization objective function에 constraint를 두는 형식으로 최적화 문제를 구성하였다. PPO 논문에서는 이러한 KL divergence도 시도해 보았지만, 결론적으로 clipping이 더 좋은 결과를 보여준다고 한다.

TRPO와 PPO 알고리즘은 “surrogate” objective function개념이 있다. 이 개념은 total accumulated reward의 최대화문제를 policy gradient theorem에 의해 “Expectation”으로 변경한것을 다시 한번 “Expectation”을 적용한 것으로 보인다.

L^{CPI} (\theta) =  \mathbb{E}_t  \left [ \frac {\pi_{\theta} (a_t | s_t )} {\pi_{\theta_{old}} (a_t | s_t )} A_t \right] =  \mathbb{E}_t  \left [ r_t (\theta) A_t \right ]

PPO에서는 위의 “surrogate” objective function의 constraint를 부여하는 방법으로 clipping기법을 채용하였으며 아래와 같이 표현된다.

L^{CPI} (\theta) =  \mathbb{E}_t  \left [ min(r_t (\theta) A_t , clip (r_t (\theta) , 1- \epsilon, 1+\epsilon ) A_t ) \right ]

PPO_clip

위 그림에서 알 수 있듯이, PPO알고리즘은 “surrogate” objective function이 커지는 방향으로 너무 공격적으로 weight가 update되지 않도록 제한한다.

Unity와 Learning Agent

Unity는 게임개발에 사용되는 platform이지만 reinforcement learning등 인공지능 연구에 활용할수 있도록 learning envirionment를 제공하고 있다. OpenAI나 MuJoCo가 그동안 이런 기능을 제공하여 연구자들에게 매우 유용하였으나, Unity가 여기에 가세해서 매우 현실적 simulation이 가능해 졌다. PPO는 OpenAI에서도 구현가능하나 이번에는 Unity를 활용하여 알고리즘을 테스트해보았다. Unity Machine Learning Agent Toolkit을 통해 인공지능 연구에 사용하는 방식은 아래 그림과 같이 Unity내부에 Agent, Brain, Academy라는 개념을 도입하고, 핵심 알고리즘은 External Communicator를 사용하여 외부 Python API와 정보를 교환하는 방식을 사용한다.

Unity_learning_environment.png

아래는 Unity환경을 활용한 PPO알고리즘을 적용해본 결과이다. Unity는 PPO가 default RL policy로 사용하며, example은 모두 PPO를 사용해 학습시킨 결과들이다. 구르는 공으로 표현된 Agent가 target인 cube에 다가가는 것이 목적이며, 구가 경계밖으로 나가 떨어지지 않아야 한다.

 

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중