근접 정책 최적화(PPO)란 무엇인가요?

공의 추상 이미지

근접 정책 최적화(PPO)는 강화학습을 사용하여 모델의 성능을 향상시키는 심층 강화학습 알고리즘입니다. PPO에서 정책은 로봇이나 프로그램과 같은 에이전트가 환경에서 어떻게 행동하도록 학습했는지를 나타냅니다. 이 접근 방식은 학습 방식에 혁신을 가져왔으며, 에이전트와 시스템이 사용자 및 주변 환경과 상호작용하면서 학습하는 핵심 요소입니다. 최신 대규모 언어 모델(OpenAI의 ChatGPT 기반 모델 등)은 인간 피드백을 통한 강화학습(RLHF)에 PPO를 사용합니다. PPO는 비디오 게임, 로봇 프로세스 자동화, 자율주행 자동차에서 에이전트를 학습시키는 데 가장 널리 사용되는 알고리즘 중 하나이기도 합니다.

PPO는 John Schulman, Filip Wolski 등1이 Proximal Policy Optimization Algorithms라는 논문에서 처음 제안했습니다. PPO의 작동 방식과 그 중요성을 이해하려면 먼저 강화학습(RL)을 살펴봐야 합니다. 강화학습은 머신 러닝을 사용하여 시스템이 환경과 목표를 바탕으로 적절한 행동을 선택하도록 학습시킵니다. 사람은 이러한 결정을 항상 내립니다. 예를 들어 블랙잭에서는 "히트"(카드를 한 장 더 받기)할지, "스테이"(현재 가지고 있는 카드를 유지하기)할지를 결정합니다. 강화학습은 에이전트, 환경, 행동, 보상이라는 네 가지 기본 요소로 구성됩니다. 블랙잭을 예로 들면 다음과 같습니다.

에이전트: 게임을 하는 사람 

환경: 플레이어가 가지고 있는 카드와 플레이어가 확인할 수 있는 딜러의 카드

행동: "히트"(카드를 한 장 더 받기)하거나 "스테이"(현재 카드를 유지하기) 

보상: 해당 판에서 승리했는지 또는 패배했는지 

정책은 로봇이나 소프트웨어 프로그램과 같은 에이전트가 환경을 바탕으로 특정 행동을 선택하기 위해 따르는 전략 또는 규칙의 집합입니다. 정책은 각 환경에서 에이전트가 취할 수 있는 행동을 대응시키는 기준을 제공합니다. 정책은 각 상태에서 항상 동일한 행동을 선택하는 단순한 형태일 수도 있고, 추정이나 계산, 학습 메커니즘을 활용하여 최적의 행동을 선택하는 복잡한 형태일 수도 있습니다. 목표는 시간이 지남에 따라 에이전트가 얻는 누적 보상을 최대화하는 정책을 찾는 것입니다. 예를 들어 블랙잭에서는 "패의 합이 17 미만이면 히트하고, 18을 초과하면 스테이한다."와 같은 단순한 정책을 생각할 수 있습니다. 에이전트는 현재 환경을 정책과 비교한 후 정책에 따라 행동을 선택합니다.

에이전트가 PPO를 사용하여 환경으로부터 학습하고 정책을 업데이트하는 방법 Proximal policy optimization diagram

강화학습은 에이전트가 보상을 최대화하기 위해 어떤 행동을 선택해야 하는지를 결정하는 정책을 학습하도록 돕는 방법입니다. PPO는 에이전트가 더욱 효과적으로 학습하도록 지원하는 강력한 기법입니다. PPO는 로봇 개발부터 대규모 언어 모델(LLMs)의 추론 능력과 프롬프트에 대한 응답 방식을 개선하는 데까지 다양한 분야에서 활용되고 있습니다. PPO는 LLMs를 학습시키는 데 사용되는 인간 피드백을 활용한 강화학습(RLHF)의 핵심 구성 요소 중 하나입니다. 이들 방법 가운데 후자가 최근 강화학습 연구의 상당 부분을 이끌고 있습니다.

정책 학습

강화학습 방법은 크게 두 가지 계열로 나눌 수 있습니다. 첫 번째는 가치 기반 방법으로, 환경을 평가하고 기대 보상을 기준으로 해당 환경에서 가장 적절한 행동을 결정합니다. 가능한 모든 행동을 평가한 후 에이전트는 기대 보상이 가장 높은 행동을 선택합니다. 이를 위해 에이전트는 각 환경 또는 환경-행동 쌍에서 얻을 것으로 예상되는 누적 보상(수익)을 추정하는 가치 함수를 학습하는 데 집중합니다. 정책은 가치 함수를 사용하여 추정된 가치가 최대가 되는 행동을 선택하는 방식으로 간접적으로 도출됩니다. 핵심은 최적의 정책으로 이어지는 각 가능한 행동에 대한 최적의 가치 함수를 찾는 것입니다. 탐색해야 할 행동과 환경의 조합이 제한적인 경우에는 이 접근 방식이 매우 효과적일 수 있습니다. 에이전트는 각 행동의 기대 보상을 계산한 후 그 추정값을 바탕으로 행동을 선택합니다. 행동 공간이 커져 가능한 행동의 수가 많아지면 각 행동의 수익을 추정하기가 어려워집니다. 예를 들어 3차원 공간에서 여러 관절을 가진 로봇 팔을 어떻게 움직일지 결정하는 로봇은 수천 가지의 가능한 선택지에 직면하게 되며, 관절 위치의 모든 조합에 대해 함수를 계산하는 것은 사실상 불가능합니다. 또한 에이전트는 미리 정의된 행동으로 제한되므로 새로운 전략이나 창의적인 전략을 스스로 만들어낼 수 없습니다.

이러한 한계로 인해 두 번째 접근 방식인 정책 기반 방법이 등장했습니다. 정책은 로봇이나 소프트웨어 프로그램과 같은 에이전트가 환경을 바탕으로 이산 행동을 선택하기 위해 따르는 전략 또는 규칙의 집합입니다. 정책은 각 환경에서 에이전트가 취해야 할 가능한 행동을 대응시켜 줍니다. 정책은 각 상태마다 고정된 행동을 선택하는 단순한 형태일 수도 있고, 어드밴티지 추정값과 계산, 학습 메커니즘을 활용해 최적의 행동을 결정하는 복잡한 형태일 수도 있습니다. 목표는 시간이 지남에 따라 에이전트가 얻는 누적 보상을 최대화하는 정책을 찾는 것입니다. 특정 주식을 언제 매수하고, 매도하고, 보유할지를 결정하는 모델을 생각해 보겠습니다. 정책은 개별 주식의 추세나 전체 주식 시장의 움직임에 따라 에이전트가 언제 주식을 매수하거나 매도할지를 결정하는 기준을 제공합니다.

정책 기반 학습 방법은 각 행동의 기대 결과를 직접 추정하지 않고도 주어진 상태에서 어떤 행동을 우선적으로 선택해야 하는지를 학습합니다. 이 접근 방식에서는 에이전트가 각 상태에서 훨씬 다양한 행동을 학습할 수 있으며, 각각의 행동에 대해 별도의 가치 함수를 추정할 필요도 없습니다. 에이전트는 각 행동에 대한 어드밴티지 함수를 추정하지 않고도, 기대 수익을 최대화하도록 각 행동을 선택할 확률을 조정하여 정책을 최적화합니다. 주어진 상태에서 가능한 행동의 수는 이론적으로 무한하기 때문에, 이 과정에는 훨씬 더 많은 데이터와 복잡한 학습 아키텍처가 필요합니다. 정책 그래디언트는 이러한 두 번째 범주에 속하는 방법입니다.

정책 학습에서는 에이전트의 정책을 학습하는 두 가지 기본적인 접근 방식이 있습니다. 온-정책 방법은 현재 수행하는 행동만을 바탕으로 학습합니다. 즉, 현재 수행하고 있는 행동으로부터 학습하는 방식입니다. 예를 들어 여러 차례의 주행을 통해 목적지까지의 최적 경로를 찾으려는 자율주행 자동차를 생각해 보겠습니다. 온-정책 학습에서는 자동차가 자신이 실제로 주행한 경로를 통해서만 학습합니다.

정책은 학습 과정의 의사결정을 포함하여 모든 환경에서 에이전트의 행동을 결정합니다. 에이전트는 현재 수행한 행동의 결과를 평가하고, 이를 바탕으로 전략을 점진적으로 개선합니다. 이 방법을 사용하면 에이전트는 환경과 직접 상호작용하고 실시간 상호작용에서 학습함으로써 의사결정 능력을 지속적으로 향상시킬 수 있습니다.

오프-정책 방법에서는 자동차가 다른 자율주행 자동차의 주행 경로를 관찰하며 그들의 행동으로부터 학습합니다. 자동차는 관찰 대상 차량과 동일한 정책을 따를 필요는 없으며, 그들이 행동을 통해 어떤 보상을 얻는지를 관찰한 뒤 이를 바탕으로 자신의 정책을 업데이트할 수 있습니다. 이 방법은 에이전트 자신의 행동과는 독립적으로 최적 정책의 가치를 학습합니다. 이러한 방법을 사용하면 에이전트는 최적 정책을 직접 따르지 않더라도 이를 관찰하면서 학습할 수 있습니다. 이 방법은 고정된 데이터세트나 교사 정책으로부터 학습할 때 유용합니다.

정책 그래디언트

정책 그래디언트는 정책 매개변수에 대한 기대 수익의 그래디언트를 따라 정책 자체를 직접 최적화하는 온-정책 방식입니다. 개념적으로는 손실 함수를 사용하여 예측 오차를 최소화하는 확률적 경사 하강법(SGD)과 유사합니다. 하지만 중요한 차이점이 있습니다. SGD는 일반적으로 손실을 최소화하도록 매개변수를 추정합니다. 반면 정책 그래디언트는 보상을 최대화하는 행동의 우선순위를 높이도록 정책 분포의 매개변수를 추정합니다. 목표는 가능한 모든 행동에 대한 확률 분포를 만들어, 더 큰 보상을 가져오는 행동은 선택될 가능성을 높이고 더 작은 보상을 가져오는 행동은 선택될 가능성을 낮추는 것입니다.

정책 그래디언트는 액터-크리틱 방법에 속합니다. 액터는 행동을 선택하는 정책 네트워크이며, 크리틱은 해당 정책이 각 상태에서 특정 보상을 얻는 데 얼마나 적절한 행동을 선택하는지를 평가합니다.

정책이  πθ(a|s) (행동에 대한 확률 분포)이며, 에이전트의 목표는 다음과 같이 표시되는 기대 수익을 최대화하는 것입니다. J(θ)  그러면 다음과 같이 정의된 그래디언트 상승 단계를 수행합니다.

 θ←θ+a∇θJ(θ) 

여기서 θ 는 행동의 확률 분포를 결정하는 정책 매개변수 벡터입니다. 기존 정책은  ← 이전 정책에 학습률을 적용한 값과  a 정책 그래디언트를 더하는 방식으로 업데이트됩니다. 정책 그래디언트는  ∇θ 에 대한 그래디언트와  θ 목적 함수를 곱한 값이며,  J(θ) 이 목적 함수는 해당 정책의 기대 수익을 나타냅니다.

정책 그래디언트는 현재 정책을 적용하여 행동을 선택하고, 보상을 평가한 뒤 목적 함수의 그래디언트를 계산하는 방식으로 학습합니다. 그런 다음 알고리즘은 다음 반복을 위해 정책을 업데이트하고, 행동을 수행하여 업데이트로 얻은 어드밴티지를 관찰합니다.

정책 그래디언트 접근 방식의 핵심에는 정책 그래디언트 정리가 있으며, 이 정리는 정책을 어떻게  Jθ 최적화할 수 있는지를 보여줍니다. 그래디언트는 정책이 특정 행동의 선택 확률을 얼마나 높이거나 낮추는지와 해당 행동으로 얻은 보상을 곱한 값으로 이해할 수 있습니다. 정책 그래디언트 정리는 다음 식으로 나타낼 수 있습니다.

 ∇θJ=E[∇θ·logπ(a∣s)A(s,a)]

 

이 식은 주어진 정책의 그래디언트가  J 매개변수에 대해  θ 기댓값으로 나타낼 수 있음을 의미합니다.  E . 이 기댓값은 점수 함수와  ∇θ  선택한 행동의 로그 확률  logπ(a∣s) 그리고   A(s,a) , 에이전트가 행동을 수행하여 얻는 보상  a 상태에서  s .

정책 그래디언트를 사용하면 에이전트는 다양한 행동을 탐색하고, 그중 어떤 행동이 가장 큰 보상을 가져오는지 빠르고 효율적으로 계산할 수 있습니다. 하지만 이 기법에도 한계는 있습니다. 예를 들어 정책 그래디언트 방법은 전역 최적해가 아닌 국소 최적해에 수렴하는 경우가 많습니다. 정책 그래디언트는 다른 온-정책 방법보다 학습에 더 오랜 시간이 걸릴 수 있습니다. 정책 그래디언트 자체는 분산이 크게 발생할 수 있으며, 이는 그래디언트 추정의 정확도가 낮아질 수 있음을 의미합니다. 그 결과 그래디언트의 변화 방향과 정책 변경이 미치는 영향을 잘못 추정할 수 있습니다.

정책 그래디언트 알고리즘의 대표적인 예로는 신뢰 영역 정책 최적화(TRPO)2가 있습니다. TRPO는 처음 제안되었을 당시 획기적인 발전으로 평가받았지만, 실제로 적용하기 어렵게 만드는 몇 가지 잘 알려진 한계가 있습니다.

근접 정책 최적화의 이해

PPO는 정책 그래디언트를 사용하는 학습 방식을 개선한 알고리즘입니다. 기본적으로 PPO는 현재 데이터를 활용해 정책을 가능한 한 크게 개선하면서도, 성능이 저하될 정도로 정책을 과도하게 업데이트하지 않는 방법을 찾습니다. 정책 그래디언트 방법에서는 기대 보상이 증가하는 방향으로 정책의 매개변수를 조금씩 조정하여 정책을 개선합니다. 하지만 업데이트 폭이 너무 크면 성능이 크게 저하될 수 있으며, 한 번의 과도한 그래디언트 업데이트만으로도 에이전트의 행동이 급격히 변해 학습이 실패할 수 있습니다. 기존 알고리즘(TRPO 등)은 새로운 정책이 기존 정책에서 일정 범위 이상 벗어나지 못하도록 제약을 두어 이 문제를 해결했지만, 수학적으로 매우 복잡했습니다.

PPO는 복잡한 제약을 사용하지 않으면서도 정책 업데이트가 이전 정책에서 크게 벗어나지 않도록 유지합니다. PPO는 다음 업데이트를 확률적으로 선택하는 대신 클리핑된 대리 목적 함수를 사용하여 정책이 크게 변경되지 않도록 합니다. 에이전트가 정책을 적용하고 그 결과를 관찰하면서 보상의 그래디언트를 따라 정책은 계속 개선되지만, 그 과정이 보다 안정적으로 이루어집니다.

정책 그래디언트에서는 반복마다 정책 목적 함수에 대해 그래디언트 상승 단계를 수행합니다. 이때 업데이트 크기를 결정하는 것이 중요한 과제입니다. 스텝 크기가 너무 작으면 학습 속도가 느려지고, 너무 크면 정책의 변동성이 지나치게 커져 에이전트가 최적의 해를 찾기 어려워집니다.

클리핑된 대리 목적 함수

PPO는 정책 변화가 일정 범위를 벗어나지 않도록 클리핑된 대리 목적 함수를 사용해 정책 업데이트를 제한합니다. 이 함수는 다음과 같이 정의됩니다.

 LCLIP(θ)=Et[rt(θ)At,clip(rt(θ),1-ϵ,1+ϵ)At)] 


이 공식을 구성하는 첫 번째 요소는 비율 함수입니다.  rt(θ) . 이 비율 함수는 다음과 같습니다.

 rt(θ)=πθ(at∣st)πθold(at∣st) 


현재 정책에서 행동  at 에서   st 에서 선택할 확률을 이전 정책에서의 해당 확률로 나눈 값입니다. 즉, 현재 정책과 이전 정책의 확률 비율을 계산합니다. 만약  rt(θ)>1 , 그러면 해당 행동은  at 상태에서   st 에서 현재 정책이 이전 정책보다 선택할 가능성이 더 높다는 의미입니다. 반대로 비율이 1보다 작으면 해당 행동은 현재 정책에서 이전 정책보다 선택될 가능성이 더 낮다는 의미입니다.

이 항은  clip(rt(θ),1-ϵ,1+ϵ) PPO가 비율이 1에서 크게 벗어나는 변화를 억제하기 위해 대리 제약을 사용하여 함수를 클리핑하는 방식을 보여줍니다. 이 단계는 알고리즘이 정책을 변경하더라도 엡실론 값에 의해 그 변화의 폭이 작게 유지됨을 보여줍니다. ϵ .

이 클리핑된 대리 목적 함수의 가장 큰 장점은 정책을 조금씩 안정적으로 업데이트하면서도 계산 효율이 높다는 점입니다. TRPO와 같은 기존 방법은 목적 함수를 계산한 후 KL 발산을 사용하여 정책 업데이트를 제한합니다. 이 방법은 업데이트를 제한하는 데 효과적이지만 구현이 복잡하고 계산 시간도 더 오래 걸립니다. PPO는 확률 비율에 대한 클리핑을 목적 함수에 직접 적용하여 각 학습 에포크의 수행 속도를 높입니다.

PPO의 또 다른 장점은 다른 많은 방법보다 샘플 효율성이 높다는 것입니다. 즉, 환경과 한 번 상호작용할 때마다 정책이 더 효과적으로 개선됩니다. PPO는 동일한 상호작용 데이터를 여러 차례의 업데이트에 재사용할 수 있는 롤아웃 데이터의 미니배치를 생성하여 이러한 효율성을 달성합니다. Deep Q-Networks와 같은 다른 접근 방식은 더 높은 효율성을 제공할 수 있지만 계산 비용이 더 많이 들기 때문에 충분한 데이터가 있는 경우에는 일반적으로 선호되지 않습니다.

일반화 어드밴티지 추정

정책을 업데이트하는 과정에서 중요한 단계는 현재 정책이 이전 반복의 정책보다 얼마나 우수한지를 추정하는 것입니다. 이 과정은 특정 단계에서 두 정책의 보상 차이만 계산하는 것보다 계산적으로 훨씬 더 복잡합니다. 에이전트는 여러 단계에 걸친 행동 선택 확률의 분포를 학습해야 합니다. 비교적 단순한 게임인 블랙잭에서도 에이전트가 선택한 행동의 결과는 몇 차례의 플레이가 지난 뒤에야 나타납니다. 이러한 방법은 체스와 같은 게임이나 로봇 내비게이션과 같은 환경에서는 더욱 중요해집니다.

PPO는 이러한 업데이트를 학습하기 위해 반복적 일반화 어드밴티지 추정(GAE) 전략을 사용합니다. 이 단계는 현재 정책이 얼마나 잘 작동하는지와 성능을 향상시키기 위해 현재 정책에서 어느 정도 벗어나야 하는지를 판단하는 데 도움이 됩니다. GAE는 미래의 오차에 지수적으로 가중치를 부여하여 어드밴티지를 계산합니다. 이를 통해 PPO는 분산과 편향이 모두 낮은 학습 신호를 얻을 수 있으며, 정책 업데이트를 더욱 안정적이고 샘플 효율적으로 수행할 수 있습니다.

실제 보상을 너무 이른 시점에 누적하는 것을 중단하면 실제 수익의 일부와 적은 양의 실제 보상만 반영되므로 편향이 커질 수 있습니다. 반대로 너무 많은 보상을 누적하면 더 많은 실제 샘플에 의존하게 되어 추정값이 불안정해질 수 있으므로 분산이 커집니다.

PPO 적용

Stable-Baselines3 및 RLlib와 같은 라이브러리는 다양한 분야와 문제에 적용할 수 있는 완전한 기능의 PPO 구현을 제공합니다. CleanRL과 같이 더 가벼운 구현도 있으며, PyTorch와 TensorFlow로 작성된 자기 학습용 튜토리얼을 GitHub에서 확인할 수 있습니다.

HuggingFace의 transformer reinforcement learning (TRL)과 같은 라이브러리는 PPO와 같은 강화학습 알고리즘을 사용하여 트랜스포머 언어 모델을 학습시키는 데 최적화되어 있습니다. 이러한 환경에서 PPO는 모델이 모델 개발자의 목표와 인간의 피드백에 더욱 부합하는 응답을 선택하도록 학습하는 데 도움을 줍니다.

작성자

Joshua Noble

Data Scientist

관련 솔루션
IBM watsonx.ai

AI 빌더를 위한 차세대 엔터프라이즈 스튜디오인 IBM watsonx.ai로 생성형 AI, 파운데이션 모델 및 머신 러닝 기능을 학습, 검증, 조정 및 배포하세요. 적은 데이터로 짧은 시간 내에 AI 애플리케이션을 구축하세요.

watsonx.ai에 대해 알아보기
인공 지능 솔루션

업계 최고의 AI 전문성과 솔루션 포트폴리오를 보유한 IBM과 함께 AI를 비즈니스에 활용하세요.

AI 솔루션 살펴보기
AI 컨설팅 및 서비스

AI 추가를 통해 중요한 워크플로와 운영을 혁신함으로써 경험, 실시간 의사 결정 및 비즈니스 가치를 극대화합니다.

AI 서비스 살펴보기
다음 단계 안내

AI 개발 라이프사이클 전반에 걸친 기능에 원스톱으로 액세스하세요. 사용자 친화적인 인터페이스, 워크플로, 업계 표준 API 및 SDK에 대한 액세스를 통해 강력한 AI 솔루션을 제작할 수 있습니다.

  1. watsonx.ai 살펴보기
  2. 라이브 데모 예약하기
각주

1. Schulman, J., Wolski, F., Dhariwal, P., Radford, A., & Klimov, O. (2017). 근접 정책 최적화 arXiv 사전 공개 논문, arXiv:1707.06347.

2. Schulman, J., Levine, S., Abbeel, P., Jordan, M., & Moritz, P. (2015년 6월). 신뢰 영역 정책 최적화. 국제 머신 러닝 학회(ICML) 논문집(pp. 1889-1897). PMLR.