PPO(Proximal Policy Optimization)는 2017년에 소개된 강화학습 알고리즘의 일종이다.
강화학습은 기본적으로 아무것도 모르는 상태에서 직접 다 수행해보고 방황하며 지식을 얻고 최적의 결정을 내려나가는 학습을 의미한다.
출처 | [HUFS RL] 강화학습 : Reinforcement Learning: PPO (Proximal Policy Optimization)
아타리 게임을 통해서 강화학습을 처음 구현해보는 경우가 많기 때문에 아래에 위의 게임의 상황을 가정하고 예시를 함께 들었다.
PPO는 여러 강화학습 중에서도 Model-free, Policy Optimization, On-Policy 방법에 속한다. 여기서 Policy는 현재 State에 따른 Action의 확률분포를 나타내는 것이다. 즉 최적의 Policy(= 현재 상황에서 해야하는 가장 좋은 행동을 아는 것)를 찾는 것이 목적이다.
Model-based는 Environment의 다음 State와 Reward가 어떨지에 대해서 Agent가 어느정도 알고 Action을 선택하는 것을 의미한다. Model-free는 현재 Model에 대한 정보가 전혀 없는 상태에서 Onteraction을 통해서 하나씩 학습해나가는 것을 의미한다.
Policy Optimization은 말그대로 Policy 함수( )를 모델링하고 학습과정에서 이를 최적화 시키는 것을 의미한다. Q-learning은 Q함수(Q(s,a) = 현재 State s에서 Action a를 한 뒤 끝까지 진행했을 때 얻는 리워드)를 직접 모델링하고, 이를 최적화 시킨다. 둘 모두 현재 State s에서 어떤 Action을 해야할지 판단하는 최적의 정책을 얻고자 한다는 점에서는 동일하다.
On-Policy는 실제로 행동을 하고 있는 가장 최신 버전의 Policy로 수집된 데이터만 Policy 업데이트에 사용하는 방식이다. Off-Policy는 이전 정책으로 탐색한 결과까지 학습 데이터로 사용하는 방식이다.
하지만 강화학습은 그 특성상 명확하게 위와 같은 태그를 분리하기가 쉽지 않다. PPO도 On-Policy로 설명하지만 실제 학습시에는 Off-Policy와 같이 업데이트 된다. PPO는 TRPO라는 이전의 강화학습 알고리즘을 계산하기 쉽고 학습 안정성을 높이는 방향으로 개선시킨 알고리즘이다.
요약하자면 기존에 TRPO는 믿을 만한 구역 안에서만 Policy가 업데이트 되도록 Constraint를 거는데, 이것이 TRPO가 상당히 복잡한 계산식을 갖도록 했다. 하지만 PPO는 이를 Clipped Surrogate Objective를 사용하여 더 간단한 형태로 풀어내어 학습해 최적의 성능을 내었다.
[출처 | 딥다이브 Code.zip 매거진]