안녕하세요. 에디터 느리입니다 :D
최근 AI 에이전트에 대한 연구가 활발하게 진행되고 있습니다. 지난 2월에는 OpenAI에서도 Deep Research라는 새로운 에이전트 기반 AI 도구를 발표했는데요. Deep Research는 다단계 웹 검색 및 데이터 분석을 자동화하여 전문가 수준의 보고서를 생성하는 AI 도구로, 실시간으로 정보를 수집하고 분석할 뿐만 아니라 긴 시간 동안 연구를 수행하여 사용자의 요구사항을 반영한 최적의 연구 결과를 도출합니다.
Deep Research는 OpenAI의 차세대 모델인 o3 모델을 강화학습으로 훈련했으며, 그 결과 GPT-4o 모델보다 문맥을 더 깊이 이해하고 연결하는 방식으로 개선됐습니다. 그렇다면 이전 GPT 모델과 Deep Research는 어떤 면에서 다르다고 할 수 있는 걸까요? 이 둘의 차이를 알기 위해서는 강화학습 방식을 이해해야 합니다.
강화학습이 뭐길래?
©️ deep daiv.
강화학습은 에이전트(Agent)가 환경(Environment)과 상호작용하면서 보상(Reward)을 최대화하도록 학습하는 기계학습 방법입니다. 쉽게 말해 시행착오(Trial-and-error)를 통해 점점 더 나은 방법을 배우는 과정이에요. 게임을 하며 점수 올리는 법을 배우는 플레이어나, 장애물을 피해 길을 찾아가는 로봇들이 모두 강화학습과 비슷한 원리로 학습을 하죠. 강화학습의 목표는 장기적으로 가장 많은 보상을 얻을 수 있는 행동 전략, 즉 정책(Policy)을 찾는 것입니다.
강화학습에서 정책은 ‘지금 이 상태에서 어떤 행동을 할 것인가?’를 결정하는 규칙입니다. 그건 단순한 규칙일 수도 있고, 신경망과 같은 복잡한 모델일 수도 있어요. 처음에는 아무것도 모른 채 시작하지만, 시행착오를 통해 점점 더 나은 결정을 내리도록 학습됩니다.
정책을 최적화하는 방법 중 하나는 바로 정책 그래디언트(Policy Gradient)입니다. 처음에는 임의의 방식으로 행동을 선택하지만 경험을 쌓으면서 어떤 행동이 좋은 결과를 내는지 학습하고 결국 보상을 많이 주는 행동을 더 자주 선택하도록 정책을 업데이트하는 거죠.
Actor-Critic 기반 알고리즘
TRPO와 PPO를 이야기하기 전, 먼저 이 알고리즘의 기본이 되는 Actor-Critic 알고리즘에 대해 알아봅시다. Actor-Critic 알고리즘은 안정적인 학습을 위해 정책 기반(Policy-based) 방법과 가치 기반(Value-based) 방법을 결합했어요.
해당 알고리즘은 크게 두 개의 구성 요소로 나눠집니다.
- Actor: 주어진 상태에서 어떤 행동을 선택할지 결정하는 정책을 학습합니다. 이때 정책이란 쉽게 말해 에이전트가 특정 상태에 있을 때 어떤 행동을 할지에 대한 확률적 규칙을 말합니다.
- Critic: Actor가 선택한 행동이 장기적으로 얼마나 좋은지 평가하는 가치 함수(Value function)를 학습합니다. 즉, Critic은 정책이 선택한 행동의 성과를 수치적으로 평가하여 Actor가 더 좋은 결정을 내릴 수 있도록 안내하는 역할을 합니다.
정책만 학습하면 변동성이 커지기 때문에 Actor-Critic 알고리즘은 가치 함수를 함께 학습해 안정적인 학습을 도모합니다. 하지만 이 방식만으로는 완전히 안정적이라고 보기 어렵습니다. 기본적인 Actor-Critic 방식은 여전히 정책이 급격하게 변하거나 가치 함수 평가가 불안정해지는 문제가 발생할 수 있죠. 게다가 샘플링된 데이터가 특정 상황에 편향될 경우, 해당 상황에 과도하게 최적화된 학습이 이뤄져 다른 상황에서는 성능이 크게 저하될 수 있습니다. 예를 들어 자동차 자율주행 AI가 “급제동이 안전하다!”라는 전략을 학습하면 모든 상황에서 급제동만 하는 문제가 생길 수도 있죠.
이러한 한계를 보완하기 위해 이후에 제안된 TRPO와 PPO는 정책 변화에 제약을 두는 방식으로 학습의 안정성과 일반화를 향상시켰습니다.
TRPO, 안정적인 정책 업데이트
TRPO(Trust Region Policy Optimization)는 학습을 안정시키기 위해 신뢰할 수 있는 영역을 설정하고, 그 범위 내에서만 정책을 업데이트하도록 설계됐습니다. 즉, ‘좋은 방향으로 개선하되, 너무 멀리는 가지마!’라는 원칙을 적용한 거죠.
이때 TRPO가 사용하는 핵심 도구가 바로 KL Divergence(Kullback-Leibler Divergence)입니다. KL Divergence는 두 확률 분포 간의 차이를 나타내는 값인데 쉽게 말해 ‘내가 원래 알고 있던 확률(P)을 다른 확률(Q)로 바꿀 때, 정보가 얼마나 달라지는가?’를 계산하는 겁니다.
예를 들어, 이메일 스팸 필터가 스팸 메일과 일반 메일을 구분한다고 해봅시다. 본래 저는 이메일을 보고 ‘충격!’이라는 단어가 있으면 스팸일 확률이 높다고 생각했습니다. 그런데 실제 데이터를 보니, 스팸 메일에는 그런 단어가 별로 없고 오히려 다른 단어들이 더 자주 등장하더군요. 제가 예상한 단어 분포(P)와 실제 데이터에서 관찰된 단어 분포(Q)가 다르게 나타난 겁니다.
이럴 때 KL Divergence(KLD)를 이용하면 두 확률 분포가 얼마나 차이가 나는지 측정할 수 있습니다. KLD는 특정한 기준 분포(P)가 있을 때, 새로운 분포(Q)가 그 기준과 얼마나 다른지 나타내는 값입니다. 값이 크다면 두 분포가 많이 다르다는 뜻이고, 값이 작다면 두 분포가 유사하다는 뜻이죠. 스팸 필터의 관점에서 봤을 때, 우리가 예상했던 패턴과 실제 패턴 사이의 KLD이 크다면 "필터를 다시 학습해야 한다"는 신호로 볼 수 있습니다.
다시 TRPO로 돌아와 보겠습니다. 강화학습에서는 정책이 확률 분포로 표현되는데, 기존 정책과 새로운 정책이 너무 다르면 학습이 불안정해질 수 있습니다.
TRPO는 위와 같이 KL Divergence 값을 일정 범위 내로 유지하도록 강제하여, 정책이 급격하게 변화하는 것을 막습니다. 만약 새로운 정책이 기존 정책과 너무 다르면 업데이트를 줄이고, 적당한 차이가 있다면 업데이트를 진행하는 방식이죠. 덕분에 TRPO는 정책을 안정적으로 학습하고 갑작스러운 성능 저하를 방지하며, 효율적으로 보상을 최적화할 수 있습니다.
그러나 TRPO는 이차 미분(Hessian) 계산이 필요하고, 최적화 과정이 복잡하며, 계산 비용이 많이 든다는 단점이 있습니다. 이러한 문제를 해결하고자 등장한 알고리즘이 바로 PPO입니다.
PPO, 조금 더 단순하고 실용성 있게
2017년에 나온 강화학습 알고리즘인 PPO는 TRPO의 장점은 살리면서도 구현을 훨씬 단순화한 방법입니다. 접근하기도 쉽고, 산업에서도 사용할 수 있으며, 학습 안정성과 성능도 괜찮기에 강화학습의 대표적인 기법이 되었죠.
PPO는 TRPO에서 사용한 KLD 제약을 클리핑(Clipping) 방식으로 대체해 정책의 급격한 변화를 제한합니다. 여기서 말하는 클리핑이란 무엇인지, 그리고 어떻게 정책 변화를 제한하는지 살펴보겠습니다. 우선 새로운 정책과 이전 정책의 확률 비율(Probability Ratio)을 정의합니다.
이 값은 중요도 샘플링(Importance Sampling) 비율로도 볼 수 있는데, 이전 정책에서 수집된 데이터로 새로운 정책의 기대보상을 추정할 때 사용됩니다. 우리는 이 값이 지나치게 커지지 않도록 제어해야만 합니다. 그래야만 급격한 정책 변경을 막을 수 있으니까요.
다음으로 PPO는 다음과 같은 손실 함수를 구성하는데, 이것이 바로 이전 정책 대비 너무 큰 정책 변경으로 인한 이득(Advantage)을 자르는(Clipping) 방식입니다.
새로운 정책이 이전 정책보다 더 나은 방향으로 너무 크게 변경되면, PPO는 그 이득을 일정 수준에서 잘라버립니다. 이렇게 하면 정책이 한 번에 너무 크게 바뀌어 발생하는 성능 폭락을 막을 수 있습니다. 반대로, 새로운 정책이 이전보다 안 좋은 방향으로 바뀌는 경우에는 클리핑하지 않고 그대로 둡니다. 잘못된 업데이트는 강하게 교정하고, 좋은 업데이트는 적당한 범위 내에서만 반영하는 것이죠.
PPO에서 사용되는 Clipped Objective 함수의 구조
출처 : Proximal Policy Optimization Algorithms (John Schulman et al., 2017)
직관적 이해를 위해 Clipped Objective 함수의 구조를 살펴봅시다. 위의 그림에서 A는 Advantage의 약자로, 어떤 행동이 평균보다 얼마나 좋은지를 나타내는 값입니다. 값이 클수록 더 나은 행동이라는 뜻이죠. x축에 있는 r은 현재 정책이 예전 정책에 비해 특정 행동을 얼마나 더 선택하는지를 나타내는 비율입니다. 값이 1이면 두 정책이 동일하게 행동을 선택하고, 1보다 크거나 작으면 변화가 있다는 뜻입니다. y축에 있는 L_CLIP은 PPO에서 사용하는 목적 함수로, 정책이 지나치게 바뀌지 않도록 억제하는 역할을 합니다.
왼쪽 그림은 Advantage가 양수일 때, 즉 어떤 행동을 강화하면 좋을 경우를 보여줍니다. r값이 커질 수록 목적 함수도 증가하지만, 일정 수준 이상에서는 더 이상 증가하지 않고 수평을 유지합니다. 빨간 점은 현재 샘플이 위치한 지점을 나타내며, 아직 클리핑 영역에는 도달하지 않았음을 의미하고 있죠. 오른쪽 그럼 역시 Advantage가 음수일 때 목적 함수가 일정 수준 이하에서는 더 이상 감소하지 않는 것을 볼 수 있습니다. 이렇게 하면 정책 업데이트를 할 때 일종의 안전벨트를 매는 효과가 생깁니다.
강화학습에서 정책을 업데이트할 때, 이전 정책으로 모은 데이터를 얼마나 효율적으로 사용할 수 있는지는 중요한 문제입니다. 일반적인 Policy Gradient 방법들은 새로운 정책을 학습할 때, 이전 정책으로 수집한 데이터에서 얻은 정보를 한 번만 활용하고 폐기하는 경향이 있습니다. 이는 샘플 효율성(Sample Efficiency)을 떨어뜨리는 주요 원인이 됩니다. 만약 데이터를 더 효과적으로 활용할 수 있다면, 같은 환경에서 더 적은 데이터로도 좋은 정책을 학습할 수 있겠죠.
PPO의 핵심 아이디어는 바로 이 데이터 활용도를 높이는 데 있습니다. 정책 변화 폭을 조절하면 이전 정책으로 모은 데이터를 가지고 새로운 정책을 여러 번 업데이트할 수 있게 됩니다. 이는 데이터의 재사용을 가능하게 하여, 샘플 효율성을 크게 향상시키는 효과가 있습니다.
결과적으로 PPO는 기존 TRPO의 장점을 취하면서도 단점을 줄인 균형 잡힌 알고리즘이기 때문에 폭넓게 사랑받고 있는 것이죠.
PPO에도 한계는 있다
PPO와 같은 Actor-Critic 알고리즘에서 Critic 모델은 각 상태에서의 가치 추정을 통해 이득을 정확히 계산하는 데 필수적인 역할을 합니다. 그러나 정확한 가치 평가를 위해 복잡한 신경망 구조를 사용하는 경우 연산량과 메모리 사용량이 크게 증가하는 단점이 있었습니다.
또한, PPO는 환경에서 제공하는 정량적인 보상을 기반으로 정책을 최적화하는 알고리즘입니다. 점수나 승패처럼 명확한 보상이 존재하는 환경에서는 효과적이지만, 사용자의 선호도를 학습해야 하는 경우 직접적인 보상이 부족해 이를 설계해야 하는 어려움이 있죠. 특히 보상 모델을 따로 학습할 경우 모델 자체가 불완전하거나 편향될 가능성이 있습니다.
최근에는 이러한 문제를 해결하기 위해 Critic 모델을 없애 구조를 간단하게 만들고 명시적인 보상이 없는 환경에서도 학습이 가능한 알고리즘이 만들어졌는데요. 이러한 혁신적 접근법은 바로 Deep Research가 o3 모델 개선에 활용한 강화학습 기법과도 밀접한 연관이 있습니다. 이와 관련된 내용은 다음 글에서 더 깊이 들여다보겠습니다.