좋은 전략도 한 번에 바꾸면 무너진다
게임을 하다 보면 이런 순간이 있습니다. 어제까지는 조심스럽게 방어하며 이기던 플레이어가, 오늘 갑자기 공격적인 전략을 시도합니다. 처음 몇 번은 멋지게 성공합니다. 적을 빠르게 제압하고 점수도 크게 오릅니다. 그러면 마음이 들뜹니다.
"이거다. 이제부터 무조건 공격적으로 가자."
문제는 그다음입니다. 방어를 거의 포기하고 앞으로만 달리기 시작하자, 조금만 강한 상대를 만나도 순식간에 무너집니다. 처음에는 좋은 변화처럼 보였지만, 전략을 너무 크게 바꾼 탓에 원래 갖고 있던 안정성까지 잃어버린 것입니다.
강화학습의 정책 학습에서도 비슷한 일이 벌어집니다. Policy Gradient와 Actor-Critic은 좋은 행동의 확률을 높이고 나쁜 행동의 확률을 낮추는 방식으로 정책을 바꿉니다. 이전 장에서 배운 Advantage는 이때 방향을 알려 줍니다. Advantage가 양수면 그 행동을 더 자주 하게 만들고, 음수면 덜 하게 만듭니다.
그런데 여기서 조심해야 할 점이 있습니다.
방향이 맞다고 해서, 한 번에 멀리 가도 되는 것은 아닙니다.
좋은 행동처럼 보였다고 해서 그 행동의 확률을 갑자기 10배, 100배 올리면 정책 전체가 흔들릴 수 있습니다. 한 경험에서 우연히 좋았던 행동을 지나치게 믿게 되고, 아직 충분히 검증되지 않은 전략으로 급하게 이동합니다. 강화학습에서는 데이터가 에이전트 자신의 행동에서 나오기 때문에, 정책이 크게 바뀌면 다음에 수집하는 데이터의 성격도 갑자기 바뀝니다. 그러면 Critic의 평가도 흔들리고, Advantage 추정도 흔들리고, 다시 정책 업데이트가 흔들립니다.
PPO는 바로 이 문제에서 출발합니다.
PPO, 즉 Proximal Policy Optimization은 이름 그대로 "가까운 범위 안에서 정책을 최적화하자"는 생각입니다. 여기서 가까운 범위란 이전 정책에서 너무 멀리 벗어나지 않는 범위를 말합니다. 더 좋은 방향으로 움직이되, 너무 큰 보폭으로 뛰지는 말자는 것입니다. PPO는 현대 강화학습에서 널리 쓰인 알고리즘이며, 이후 LLM 정렬과 RLHF를 이해할 때도 반드시 다시 만나게 됩니다.1

정책 학습은 유리 바닥 위를 걷는 일이다
지도학습에서는 데이터셋이 보통 고정되어 있습니다. 고양이 사진과 강아지 사진이 있고, 모델은 그 데이터를 보며 정답에 가까워지도록 학습합니다. 모델이 조금 나빠졌다고 해서 데이터셋 자체가 갑자기 바뀌지는 않습니다.
하지만 강화학습은 다릅니다. 에이전트가 어떤 정책을 갖고 있느냐에 따라 경험하는 상태와 행동이 달라집니다. 정책이 조심스러우면 조심스러운 상황의 데이터가 많이 쌓이고, 정책이 공격적이면 위험한 상황의 데이터가 많이 쌓입니다.
이 말은 곧, 정책을 바꾸는 일이 데이터 생성 과정을 바꾸는 일이라는 뜻입니다.
예를 들어 로봇이 걷는 법을 배우고 있다고 해 봅시다. 현재 정책은 조금 느리지만 넘어지지 않고 앞으로 갑니다. 그런데 어느 업데이트에서 "다리를 더 크게 뻗으면 속도가 빨라진다"는 신호를 강하게 받았습니다. 이 신호 자체는 맞을 수 있습니다. 하지만 정책이 한 번에 너무 크게 바뀌면 로봇은 다음 시도에서 다리를 과하게 뻗고 바로 넘어질 수 있습니다. 그러면 이전에 배우던 균형 감각은 사라지고, 학습은 다시 혼란스러워집니다.
게임 AI도 마찬가지입니다. 에이전트가 어느 전투에서 돌진 행동으로 큰 보상을 받았다고 해서, 돌진 확률을 갑자기 크게 올리면 다양한 상황에서 무모하게 달려들 수 있습니다. 언어 모델도 마찬가지입니다. 어떤 답변 스타일이 보상 모델에게 높은 점수를 받았다고 해서, 그 스타일을 과하게 밀어붙이면 어색하고 장황하거나 안전 문구만 반복하는 답변으로 망가질 수 있습니다.
강화학습의 정책 업데이트는 그래서 유리 바닥 위를 걷는 일과 비슷합니다. 앞으로 가야 하지만, 너무 세게 디디면 바닥이 깨집니다. PPO는 이 유리 바닥 위에서 걷는 법을 알려 주는 알고리즘입니다.
이전 정책과 새 정책을 비교한다
PPO를 이해하려면 먼저 두 정책을 구분해야 합니다.
하나는 이전 정책입니다. 방금 전까지 데이터를 모으는 데 사용한 정책입니다. 보통 old policy라고 부릅니다. 다른 하나는 새 정책입니다. 지금 학습을 통해 업데이트하려는 정책입니다.
정책은 어떤 상태에서 어떤 행동을 선택할 확률을 말합니다. 예를 들어 어떤 게임 상태 s에서 이전 정책이 점프라는 행동 a를 선택할 확률이 20%였다고 합시다.
[ pi_{old}(a mid s) = 0.2 ]
이제 학습을 통해 새 정책이 만들어지고 있습니다. 새 정책에서는 같은 상태에서 같은 행동을 선택할 확률이 24%가 되었다고 합시다.
[ pi_{new}(a mid s) = 0.24 ]
이때 새 정책은 이전보다 점프를 조금 더 자주 하려 합니다. 얼마나 더 자주 하려는지 보려면 두 확률의 비율을 계산하면 됩니다.
[ r = frac{pi_{new}(a mid s)}{pi_{old}(a mid s)} = frac{0.24}{0.2} = 1.2 ]
이 값 r을 보통 확률비, 또는 probability ratio라고 부릅니다. 말 그대로 "새 정책이 이전 정책에 비해 이 행동을 얼마나 더, 또는 덜 선택하려 하는가"를 나타내는 숫자입니다.
r = 1이면 변화가 없습니다. 새 정책과 이전 정책이 그 행동을 같은 확률로 선택합니다.
r > 1이면 새 정책이 그 행동을 더 자주 선택하려 합니다.
r < 1이면 새 정책이 그 행동을 덜 선택하려 합니다.
PPO의 핵심은 이 확률비를 관리하는 데 있습니다. Advantage가 "이 행동을 늘릴지 줄일지"를 말한다면, 확률비는 "정책이 실제로 얼마나 바뀌고 있는지"를 보여 줍니다.
확률비와 Advantage가 만나는 지점
이전 장에서 우리는 Advantage를 배웠습니다. Advantage는 어떤 행동이 기대보다 좋았는지 나빴는지를 알려 주는 신호입니다. 이제 이 신호를 확률비와 곱해 봅시다.
[ r_t(theta) A_t ]
여기서 r_t(θ)는 새 정책과 이전 정책의 확률비입니다. A_t는 그 시점의 Advantage입니다.
이 식의 직관은 단순합니다. Advantage가 양수라면 그 행동은 기대보다 좋았습니다. 그러므로 새 정책이 그 행동의 확률을 높이면 좋습니다. 확률비 r이 커질수록 목적 함수 값도 커집니다. 즉 학습은 그 행동을 더 자주 선택하는 방향으로 움직입니다.
반대로 Advantage가 음수라면 그 행동은 기대보다 나빴습니다. 그러므로 새 정책은 그 행동의 확률을 낮추는 편이 좋습니다. 이때 확률비 r이 작아질수록, 나쁜 행동을 덜 선택하게 되므로 목적 함수 측면에서 유리해집니다.
표로 보면 더 분명합니다.
| Advantage | 행동에 대한 평가 | 바람직한 정책 변화 | 확률비의 방향 |
|---|---|---|---|
| 양수 | 기대보다 좋았다 | 그 행동을 더 자주 선택 | r > 1 |
| 0 근처 | 기대와 비슷했다 | 크게 바꿀 필요 없음 | r ≈ 1 |
| 음수 | 기대보다 나빴다 | 그 행동을 덜 선택 | r < 1 |
여기까지만 보면 Policy Gradient와 크게 다르지 않아 보입니다. 좋은 행동은 늘리고, 나쁜 행동은 줄입니다. 문제는 그 변화가 너무 커질 수 있다는 데 있습니다.
예를 들어 Advantage가 큰 양수로 나왔다고 합시다. 그러면 학습은 그 행동의 확률을 계속 올리려 합니다. 원래 10%였던 행동 확률이 30%, 60%, 90%까지 빠르게 올라갈 수도 있습니다. 그런데 그 Advantage는 제한된 경험에서 나온 추정치입니다. 운이 좋았을 수도 있고, Critic이 잘못 평가했을 수도 있습니다. 이런 불확실한 신호 하나에 정책 전체를 크게 맡기면 위험합니다.
그래서 PPO는 말합니다.
"좋아, 그 행동이 기대보다 좋았다는 건 인정할게. 하지만 확률을 너무 많이 올리는 보상은 여기까지만 줄게."
이것이 클리핑의 시작입니다.
클리핑은 정책 업데이트의 안전벨트다
PPO의 가장 유명한 아이디어는 clipped objective입니다. 여기서 clip은 값을 일정 범위 안으로 잘라 넣는다는 뜻입니다.
자동차를 생각해 봅시다. 속도를 높이는 것은 필요합니다. 하지만 급가속을 무한히 허용하면 위험합니다. 안전벨트와 속도 제한 장치가 있어야 합니다. PPO의 클리핑은 정책 업데이트에 달린 안전벨트와 비슷합니다.
PPO는 확률비 r이 보통 1 - ε와 1 + ε 사이에서 움직이도록 유도합니다. 여기서 ε는 허용할 변화 폭입니다. 예를 들어 ε = 0.2라면, PPO는 대략 다음 범위를 안전한 구간으로 봅니다.
[ 0.8 le r le 1.2 ]
이 말은 새 정책이 이전 정책에 비해 어떤 행동의 확률을 너무 크게 바꾸지 않게 하겠다는 뜻입니다. 물론 모든 상황에서 확률비가 정확히 이 범위 안에만 머무는 것은 아니지만, 목적 함수가 이 범위를 넘어서는 이득을 제한합니다.
PPO의 clipped objective는 보통 다음처럼 씁니다.
[ L^{CLIP}(theta) = mathbb{E}_t left[ minleft(r_t(theta) A_t, text{clip}(r_t(theta), 1-epsilon, 1+epsilon) A_tright) right] ]
처음 보면 다소 복잡해 보입니다. 하지만 겁먹을 필요는 없습니다. 핵심은 한 문장입니다.
Advantage가 말하는 방향으로 정책을 바꾸되, 그 변화가 너무 커지면 더 이상 추가 보상을 주지 않는다.
여기서 min은 조심스러운 선택을 하게 만드는 장치입니다. 원래 목적 함수가 너무 낙관적인 값을 주려고 하면, 잘라낸 값과 비교해서 더 보수적인 쪽을 선택합니다. 그래서 정책이 한 번에 크게 좋아졌다고 착각하며 멀리 뛰는 일을 막습니다.
이제 양수 Advantage와 음수 Advantage를 나누어 직관적으로 보겠습니다.
기대보다 좋았던 행동을 너무 과하게 칭찬하지 않는다
먼저 Advantage가 양수인 경우입니다. 어떤 행동이 기대보다 좋은 결과를 만들었습니다. 예를 들어 게임 캐릭터가 적의 공격 직전에 회피를 했고, 그 덕분에 큰 피해를 피했습니다. Critic의 예상보다 결과가 좋았으므로 Advantage는 양수입니다.
이 경우 정책은 비슷한 상태에서 회피 확률을 높이려 합니다. 여기까지는 좋습니다.
그런데 확률을 얼마나 높여야 할까요? 이전 정책에서 회피 확률이 20%였는데 새 정책에서 22%가 되는 것은 자연스럽습니다. 24%도 괜찮을 수 있습니다. 하지만 한 번의 성공 때문에 갑자기 80%로 올리는 것은 위험합니다. 모든 상황에서 회피만 하다가 공격 기회를 놓칠 수도 있습니다.
PPO는 이때 확률비를 봅니다. ε = 0.2라면 대략 r = 1.2를 넘는 순간부터는 "충분히 올렸다"고 봅니다. 더 올린다고 해서 목적 함수가 계속 더 큰 이득을 주지 않습니다.
즉 PPO는 좋은 행동을 칭찬하되, 과잉 칭찬은 막습니다.
이것은 사람의 코칭과도 비슷합니다. 축구 선수가 한 경기에서 멋진 중거리 슛을 성공시켰다고 해서, 감독이 "이제 너는 공만 잡으면 무조건 중거리 슛을 차라"고 말하지는 않습니다. 좋은 선택이었다고 인정하되, 다음 경기 전체 전략을 그 한 장면에 몰아주지는 않습니다.
PPO의 클리핑은 바로 이 균형 감각입니다.
기대보다 나빴던 행동도 한 번에 지워 버리지 않는다
이번에는 Advantage가 음수인 경우를 봅시다. 어떤 행동이 기대보다 나빴습니다. 예를 들어 로봇이 왼발을 크게 내디뎠는데 균형을 잃었습니다. 또는 게임 에이전트가 돌진했는데 함정에 빠졌습니다. 이때 정책은 그 행동의 확률을 낮추려 합니다.
하지만 여기서도 너무 급격한 변화는 위험합니다. 어떤 행동이 한 번 나쁜 결과를 냈다고 해서 완전히 없애 버리면, 나중에 그 행동이 필요한 상황에서 사용할 수 없습니다. 돌진은 함정 앞에서는 나쁘지만, 적이 빈틈을 보일 때는 좋은 행동일 수 있습니다. 왼발을 크게 내딛는 동작은 특정 자세에서는 위험하지만, 빠르게 방향을 바꿀 때는 필요할 수 있습니다.
PPO는 음수 Advantage에서도 확률비를 제한합니다. 나쁜 행동의 확률을 낮추는 것은 좋지만, 너무 많이 낮추는 방향으로 목적 함수가 계속 이득을 주지 않게 합니다. 쉽게 말해 이렇게 말하는 셈입니다.
"이 행동이 이번에는 나빴다는 건 알겠어. 하지만 한 번에 완전히 버리지는 말자."
강화학습에서 이것은 매우 중요합니다. 정책이 너무 빨리 어떤 행동을 포기하면 탐험 능력을 잃습니다. 아직 충분히 알아보지 않은 선택지를 닫아 버립니다. PPO는 좋은 행동을 과하게 밀어붙이지 않으면서, 나쁜 행동도 과하게 지워 버리지 않도록 돕습니다.
PPO의 학습 흐름
이제 PPO가 실제로 어떻게 돌아가는지 큰 흐름으로 정리해 봅시다. 구현 세부사항은 나중 실습에서 천천히 다룰 수 있으므로, 여기서는 그림을 머릿속에 그리는 것이 중요합니다.
PPO는 보통 Actor-Critic 구조 위에서 작동합니다. Actor는 정책을 담당하고, Critic은 상태의 가치를 평가합니다. 학습은 대략 다음 흐름으로 진행됩니다.
현재 정책으로 환경에서 여러 경험을 모읍니다.
각 시점에서 받은 보상과 Critic의 가치 추정을 이용해 Advantage를 계산합니다.
경험을 모을 때 사용한 이전 정책의 행동 확률을 저장해 둡니다.
새 정책이 같은 상태와 행동에 부여하는 확률을 계산합니다.
새 확률과 이전 확률의 비율인 probability ratio를 구합니다.
clipped objective를 사용해 정책을 업데이트하되, 변화가 너무 커지지 않게 합니다.
이 흐름에서 중요한 점은 PPO가 과거 데이터를 완전히 무시하지 않는다는 것입니다. PPO는 데이터를 수집할 때의 이전 정책과, 지금 업데이트 중인 새 정책을 계속 비교합니다. 이 비교 덕분에 새 정책이 이전 정책에서 얼마나 멀어지고 있는지 알 수 있습니다.
정책 학습은 결국 "더 좋은 쪽으로 바꾸기"입니다. PPO는 여기에 한 가지 질문을 추가합니다.
"그런데 너무 많이 바뀐 것은 아닌가?"
이 질문 하나가 학습을 훨씬 안정적으로 만듭니다.
왜 굳이 이전 정책을 붙잡아 둘까
어떤 독자는 이렇게 생각할 수 있습니다.
"보상을 높이는 게 목표라면, 그냥 보상이 잘 나오도록 최대한 빨리 바꾸면 되는 것 아닌가?"
직관적으로는 맞아 보입니다. 하지만 강화학습에서는 빨리 바꾸는 것이 오히려 멀리 돌아가는 길이 될 수 있습니다. 이유는 세 가지입니다.
첫째, Advantage는 추정치입니다. 진실 그 자체가 아닙니다. Critic이 완벽하지 않으면 Advantage도 틀릴 수 있습니다. 틀릴 수 있는 신호를 바탕으로 정책을 크게 바꾸면, 오류도 크게 반영됩니다.
둘째, 정책이 바뀌면 데이터 분포가 바뀝니다. 이전 정책으로 모은 경험은 이전 정책 근처에서 가장 믿을 만합니다. 새 정책이 너무 멀리 가면, 그 경험을 바탕으로 한 업데이트가 더 이상 적절하지 않을 수 있습니다.
셋째, 강화학습의 보상은 흔들림이 큽니다. 같은 행동도 상황에 따라 결과가 다릅니다. 우연히 좋은 결과를 만든 행동을 과대평가하거나, 우연히 나쁜 결과를 만든 행동을 과소평가하기 쉽습니다.
PPO는 이 세 가지 위험을 줄이기 위해 이전 정책을 기준점으로 삼습니다. 완전히 멈춰 있으라는 뜻은 아닙니다. 이전 정책 주변에서 조금씩 움직이며, 실제로 성능이 좋아지는 방향을 찾자는 뜻입니다.
산을 오르는 장면을 떠올려도 좋습니다. 안개가 짙고 발밑이 미끄럽습니다. 지도도 완벽하지 않습니다. 이럴 때는 멀리 보이는 높은 곳을 향해 전력 질주하는 것보다, 한 걸음씩 디디며 경사를 확인하는 편이 안전합니다. PPO는 강화학습의 안개 낀 산길에서 한 걸음의 크기를 조절하는 방법입니다.
PPO는 TRPO의 실용적인 후배다
PPO를 이야기할 때 종종 함께 등장하는 이름이 TRPO입니다. TRPO는 Trust Region Policy Optimization의 줄임말입니다. 이름에 들어 있는 trust region은 "믿을 수 있는 범위"라는 뜻에 가깝습니다. 정책을 업데이트하되, 이전 정책에서 너무 멀어지지 않도록 제한하자는 생각입니다.
TRPO는 이 아이디어를 비교적 엄격한 수학적 제약으로 다룹니다. 하지만 실제 구현과 계산이 부담스러울 수 있습니다. PPO는 같은 문제의식을 더 단순하고 실용적인 방식으로 풀어낸 알고리즘이라고 볼 수 있습니다. 복잡한 제약 최적화 대신, 확률비를 잘라내는 clipped objective를 사용합니다.
물론 PPO가 모든 면에서 완벽하다는 뜻은 아닙니다. 하지만 구현이 비교적 쉽고, 다양한 문제에서 잘 작동했기 때문에 널리 쓰이게 되었습니다. 강화학습 알고리즘은 이론적으로 아름다워도 실제 학습이 불안정하면 쓰기 어렵습니다. PPO는 이론과 실용 사이의 균형을 꽤 잘 잡은 알고리즘으로 평가받아 왔습니다.
이 지점에서 PPO의 매력이 드러납니다. PPO는 거창한 마법이 아닙니다. 매우 현실적인 태도입니다.
"좋은 방향으로 가자. 하지만 너무 확신하지는 말자."
로봇 제어에서 PPO가 유용한 이유
로봇 제어는 강화학습의 대표적인 응용 분야입니다. 로봇은 걷고, 잡고, 밀고, 피하고, 균형을 잡아야 합니다. 이런 문제에서 행동은 단순히 왼쪽, 오른쪽처럼 몇 개로 나뉘지 않습니다. 각 관절에 어느 정도 힘을 줄지, 어느 방향으로 움직일지처럼 연속적인 값이 많습니다.
가치 기반 방법, 특히 Q-learning 계열은 이런 연속 행동 공간에서 어려움을 겪을 수 있습니다. 가능한 행동이 너무 많기 때문입니다. 반면 정책 기반 방법은 정책이 직접 행동을 출력하거나 행동 분포를 만들 수 있습니다. 그래서 로봇 제어와 잘 맞습니다.
하지만 로봇 제어에서는 안정성이 특히 중요합니다. 정책이 조금만 잘못 바뀌어도 로봇이 넘어지거나 물체를 놓치거나 위험한 움직임을 만들 수 있습니다. 시뮬레이션에서는 다시 시작하면 되지만, 실제 로봇에서는 비용과 안전 문제가 커집니다.
PPO는 이런 상황에서 매력적입니다. 정책을 직접 학습하면서도, 업데이트가 너무 급격해지지 않도록 제한하기 때문입니다. 로봇이 걷는 법을 배울 때 매번 완전히 다른 걸음걸이를 시도하는 것이 아니라, 현재 가능한 걸음걸이에서 조금씩 더 나은 방향으로 조정하도록 돕습니다.
로봇에게 필요한 것은 천재적인 한 번의 도약이 아니라, 넘어지지 않는 꾸준한 개선입니다. PPO의 철학은 여기에 잘 맞습니다.
게임 AI에서 PPO가 사랑받은 이유
게임은 강화학습을 설명하기에 좋은 무대입니다. 상태가 있고, 행동이 있고, 보상이 있습니다. 에이전트는 이기기 위해 전략을 바꿉니다. 하지만 게임에서도 정책이 너무 급격히 변하면 문제가 생깁니다.
예를 들어 어떤 에이전트가 격투 게임을 학습한다고 합시다. 처음에는 방어와 공격을 적당히 섞습니다. 어느 날 특정 콤보 공격이 큰 보상을 만들었습니다. 정책이 그 콤보 확률을 급격히 올리면, 에이전트는 비슷한 상황만 보이면 무리하게 같은 콤보를 시도할 수 있습니다. 상대가 막거나 피하면 오히려 쉽게 당합니다.
좋은 게임 AI는 한 가지 성공 패턴에 매달리지 않습니다. 상황에 따라 공격하고, 물러서고, 방어하고, 속입니다. PPO는 이처럼 다양한 행동을 유지하면서도 점진적으로 더 나은 전략을 찾는 데 도움을 줍니다.
또 게임에서는 보상이 지연되는 경우가 많습니다. 지금의 움직임이 몇 초 뒤 승패에 영향을 줍니다. Advantage 추정은 이런 장기 효과를 반영하려고 노력하지만, 여전히 불확실합니다. PPO는 그 불확실한 학습 신호로 정책을 너무 과격하게 바꾸지 않도록 막아 줍니다.
그래서 PPO는 여러 게임 환경과 시뮬레이션 문제에서 강력한 기본 선택지로 자리 잡았습니다. 가장 빠른 알고리즘이라기보다, 실험을 시작할 때 믿고 써 볼 수 있는 안정적인 기준점에 가까웠습니다.
언어 모델 정렬에서 PPO가 등장하는 이유
이 책의 마지막 부에서는 LLM과 강화학습을 다룹니다. 아직 자세한 내용으로 들어가지는 않았지만, 여기서 PPO가 왜 언어 모델 정렬과 연결되는지 미리 감을 잡아 두면 좋습니다.
언어 모델은 입력 문맥을 보고 다음 토큰을 선택합니다. 이 관점에서 보면 언어 모델도 일종의 정책처럼 볼 수 있습니다. 상태는 지금까지의 문맥이고, 행동은 다음 토큰을 고르는 일입니다. 문장을 끝까지 생성하면 하나의 답변이 만들어집니다.
그렇다면 보상은 무엇일까요? RLHF에서는 사람이 더 선호하는 답변을 바탕으로 보상 모델을 만들고, 그 보상 모델이 언어 모델의 답변에 점수를 줍니다. 모델은 더 높은 보상을 받는 답변을 만들도록 조정됩니다. 실제로 인간 피드백을 이용해 지시를 더 잘 따르는 언어 모델을 학습하는 과정에서 PPO가 사용된 사례가 널리 알려졌습니다.2
하지만 언어 모델에서 정책을 크게 바꾸는 것은 매우 위험합니다. 원래 언어 모델은 방대한 텍스트를 학습해 문법, 지식, 문맥 감각을 갖고 있습니다. 그런데 보상 모델 점수를 높이겠다고 정책을 너무 크게 바꾸면, 모델이 이상한 방향으로 치우칠 수 있습니다. 보상 모델의 빈틈을 이용하거나, 지나치게 비슷한 문구를 반복하거나, 자연스러운 언어 능력을 잃을 수도 있습니다.
그래서 LLM 정렬에서도 핵심 질문은 비슷합니다.
"사람이 선호하는 답변을 더 자주 만들게 하되, 원래 언어 모델에서 너무 멀리 벗어나지 않게 하려면 어떻게 해야 할까?"
PPO는 이 질문에 대한 한 가지 답입니다. 이전 정책과 새 정책의 차이를 관리하면서, 보상 모델이 선호하는 방향으로 언어 모델을 조금씩 조정합니다. LLM에서는 여기에 보통 추가적인 제약도 함께 사용합니다. 예를 들어 새 모델이 원래 모델과 너무 달라지지 않도록 KL penalty 같은 장치를 넣기도 합니다. KL은 두 확률분포가 얼마나 다른지 재는 방법입니다. 지금은 "원래 모델과 너무 멀어지지 않게 붙잡는 끈" 정도로 이해하면 충분합니다.
PPO의 clipped objective와 LLM 정렬의 이런 제약들은 같은 철학을 공유합니다.
더 좋아지되, 정체성을 잃을 만큼 급격히 바뀌지는 말 것.
PPO를 한 문장으로 말하면
PPO를 처음 배울 때는 수식이 복잡해 보일 수 있습니다. old policy, new policy, ratio, clip, Advantage 같은 단어가 한꺼번에 나오기 때문입니다. 하지만 중심 이야기는 간단합니다.
PPO는 좋은 행동의 확률을 높이고 나쁜 행동의 확률을 낮추되, 정책이 한 번에 너무 많이 바뀌지 않도록 제한하는 알고리즘입니다.
이 문장을 조금 더 강화학습의 언어로 바꾸면 다음과 같습니다.
Advantage는 업데이트 방향을 알려 줍니다. 확률비는 새 정책이 이전 정책에 비해 얼마나 달라졌는지 알려 줍니다. 클리핑은 그 변화가 너무 커졌을 때 추가 이득을 잘라냅니다.
세 요소를 연결하면 PPO의 뼈대가 보입니다.
| 요소 | 역할 | 직관 |
|---|---|---|
| Advantage | 행동이 기대보다 좋았는지 평가 | 어느 방향으로 바꿀지 알려 준다 |
| Probability ratio | 새 정책과 이전 정책의 차이 측정 | 얼마나 바뀌었는지 보여 준다 |
| Clipping | 과도한 변화 제한 | 너무 멀리 가지 못하게 막는다 |
이 구조 덕분에 PPO는 단순히 보상을 높이려고 달려드는 알고리즘이 아닙니다. 보상을 높이면서도 조심스럽게 움직입니다. 강화학습에서는 이 조심스러움이 큰 장점입니다.
클리핑이 성능 향상을 막는 것은 아닐까
여기서 자연스럽게 이런 의문이 생깁니다.
"변화를 제한하면 학습이 느려지지 않을까?"
맞습니다. 어떤 면에서는 느려질 수 있습니다. 하지만 강화학습에서는 빠른 업데이트가 항상 좋은 업데이트가 아닙니다. 빠르게 좋아지는 것처럼 보이다가 곧바로 무너지는 경우가 많습니다. 클리핑은 단기적인 폭발적 개선을 조금 포기하는 대신, 장기적으로 안정적인 개선을 얻으려는 선택입니다.
운동을 배울 때도 비슷합니다. 무거운 중량을 빨리 들고 싶다고 자세를 무너뜨리면 부상을 입습니다. 처음에는 가벼운 무게로 정확한 자세를 익히는 편이 더 느려 보이지만, 결국 더 멀리 갑니다. PPO의 클리핑은 강화학습에서 자세를 지키게 하는 장치입니다.
물론 클리핑만으로 모든 문제가 해결되지는 않습니다. ε 값을 어떻게 정할지, Advantage를 어떻게 추정할지, Critic을 얼마나 잘 학습시킬지, 학습률을 어떻게 설정할지에 따라 결과는 크게 달라집니다. PPO는 안정성을 높여 주지만, 강화학습을 자동으로 쉬운 문제로 바꾸지는 않습니다.
그래도 PPO는 중요한 전환점입니다. 이전까지 정책 기반 학습이 "좋은 방향으로 가자"에 초점을 두었다면, PPO는 여기에 "얼마나 조심스럽게 갈 것인가"를 뚜렷하게 추가했습니다.
PPO가 남기는 감각
강화학습을 공부하다 보면 알고리즘 이름이 많아집니다. Q-learning, DQN, Policy Gradient, Actor-Critic, PPO. 이름만 보면 서로 완전히 다른 기술처럼 보일 수 있습니다. 하지만 이 책에서 계속 붙잡아 온 기본 흐름은 같습니다.
상태를 봅니다. 행동을 선택합니다. 보상을 받습니다. 다음 상태로 이동합니다. 그리고 장기 보상을 높이는 전략을 배웁니다.
PPO는 이 기본 흐름 위에서 정책을 직접 바꾸는 방법입니다. 다만 아주 중요한 감각을 더합니다.
정책은 에이전트의 습관입니다. 습관을 바꾸는 데는 조심스러움이 필요합니다. 좋은 경험 하나가 있었다고 모든 습관을 바꾸면 안 됩니다. 나쁜 경험 하나가 있었다고 어떤 선택지를 영원히 버려도 안 됩니다. 여러 경험을 바탕으로 조금씩, 그러나 꾸준히 더 나은 방향으로 움직여야 합니다.
PPO의 핵심은 바로 이 습관 교정의 리듬입니다.
너무 느리면 배우지 못합니다. 너무 빠르면 무너집니다. PPO는 그 사이에서 안전한 보폭을 찾으려 합니다.
이번 장의 정리
PPO는 현대 강화학습에서 매우 중요한 정책 최적화 알고리즘입니다. 특히 Actor-Critic 구조와 Advantage 개념을 이해했다면, PPO의 핵심은 자연스럽게 이어집니다.
PPO는 Advantage를 이용해 기대보다 좋았던 행동의 확률을 높이고, 기대보다 나빴던 행동의 확률을 낮춥니다. 하지만 정책을 한 번에 크게 바꾸면 성능이 무너질 수 있으므로, 이전 정책과 새 정책의 차이를 확률비로 측정합니다. 그리고 clipped objective를 사용해 그 차이가 너무 커졌을 때 추가 이득을 제한합니다.
PPO의 클리핑은 안전장치입니다. 좋은 행동을 과하게 칭찬하지 않고, 나쁜 행동을 한 번에 지워 버리지 않습니다. 덕분에 정책은 이전 정책 근처에서 점진적으로 개선됩니다.
이 조심스러운 업데이트 덕분에 PPO는 로봇 제어, 게임 AI, 시뮬레이션 학습, 언어 모델 정렬과 RLHF에서 중요한 역할을 해 왔습니다. 앞으로 LLM과 RLHF를 다룰 때, 우리는 PPO를 다시 만나게 됩니다. 그때도 핵심은 같습니다.
보상을 높이되, 정책을 너무 급격히 바꾸지 않는다.
다음 장에서는 이 질문을 더 넓게 바라봅니다. 왜 강화학습은 이렇게 안정적으로 학습시키기 어려울까요? 보상, 탐험, 데이터 분포, 함수 근사, 정책 업데이트가 서로 얽히면 어떤 문제가 생길까요? PPO는 강력한 안전장치이지만, 강화학습의 불안정성을 완전히 없애지는 못합니다. 이제 그 어려움의 정체를 살펴볼 차례입니다.
참고
1Proximal Policy Optimization Algorithms
2Training language models to follow instructions with human feedback
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.