PPO

일반적으로 PPO를 사용하여 액터(actor) 모델을 학습하는 동안 보상(reward) 모델은 학습하지 않고 고정(frozen)된 상태로 유지됩니다.

이 과정을 단계별로 나누어 보면 왜 그런지 명확하게 이해할 수 있습니다. LLM을 인간의 피드백으로 강화학습(RLHF)하는 일반적인 프로세스는 다음과 같습니다.

A.1.1) RLHF의 3단계 프로세스

  1. 1단계: SFT (Supervised Fine-Tuning, 지도 미세 조정)

    • 기본 LLM(Pre-trained LLM)을 사람이 직접 작성한 고품질의 질의응답 데이터셋으로 미세 조정합니다.

    • 이 단계의 목표는 모델이 특정 도메인이나 스타일에 대한 기본적인 지식과 응답 능력을 갖추게 하는 것입니다. 이 결과로 나온 모델이 PPO 단계의 초기 액터 모델이 됩니다.

  2. 2단계: 보상 모델 학습 (Reward Model Training)

    • 하나의 프롬프트에 대해 SFT 모델이 여러 개의 답변을 생성합니다.

    • 사람(labeler)이 이 답변들을 보고 어떤 답변이 더 나은지 순위를 매깁니다. (예: “답변 A가 B보다 좋다”, “D가 C보다 낫다” 등)

    • 이 ‘인간 선호도 데이터’를 사용하여 **별도의 보상 모델(RM)**을 학습시킵니다. 이 모델은 프롬프트와 답변을 입력받아 ‘인간이 얼마나 선호할지’를 나타내는 점수(reward)를 출력하도록 학습됩니다.

    • 이 단계가 완료되면, 보상 모델은 인간의 선호도를 잘 모방하는 ‘심판’ 역할을 할 준비가 된 것입니다.

  3. 3단계: PPO를 이용한 강화학습 (Reinforcement Learning with PPO)

    • 1단계에서 만든 SFT 모델을 ‘액터(actor)’ 정책으로 가져옵니다.

    • 2단계에서 학습시킨 보상 모델은 여기서 ‘심판’ 또는 ‘환경’의 일부로 사용되며, 더 이상 가중치가 업데이트되지 않도록 고정(freeze)됩니다.

    • 학습 루프는 다음과 같습니다.

      1. 프롬프트를 액터 모델에 입력하여 답변을 생성합니다. (Action)

      2. 생성된 답변을 고정된 보상 모델에 넣어 점수(reward)를 받습니다.

      3. 이 보상 점수를 사용하여 액터 모델의 정책을 업데이트합니다. (PPO 알고리즘 사용) 목표는 보상 모델로부터 더 높은 점수를 받는 답변을 생성하도록 액터 모델을 학습시키는 것입니다.

A.1.2) 왜 보상 모델을 고정(Freeze)하는가?

  • 학습 안정성 (Training Stability): 만약 액터 모델이 학습하는 동시에 보상 모델도 계속 변한다면, 액터는 ‘움직이는 목표물’을 쫓는 셈이 됩니다. 이는 학습 과정을 매우 불안정하게 만듭니다. 목표(보상 모델)가 고정되어 있어야 액터가 일관된 방향으로 자신의 정책을 개선해 나갈 수 있습니다.

  • 명확한 목표 설정 (Clear Objective): 보상 모델은 ‘인간의 선호도’라는 고정된 기준을 대표합니다. 이 기준을 정해두고, 액터가 그 기준을 만족시키도록 학습시키는 것이 프로세스를 더 명확하고 효과적으로 만듭니다.

  • 프로세스의 분리 (Separation of Concerns): ‘선호도 판단’을 배우는 것(보상 모델 학습)과 ‘선호도 높은 답변을 생성하는 법’을 배우는 것(액터 모델 학습)은 서로 다른 과제입니다. 이 둘을 분리함으로써 각 단계에 더 집중하고 문제를 더 쉽게 해결할 수 있습니다.

따라서 PPO 학습 단계에서 업데이트되는 것은 오직 액터 모델이며, 보상 모델은 잘 정의된 보상 함수로서의 역할만 충실히 수행합니다.

B) On-Policy

PPO는 근본적으로 On-Policy 알고리즘입니다. 하지만 Off-Policy의 아이디어를 일부 차용하여 데이터 효율성을 높였기 때문에 질문하신 내용처럼 혼동이 생길 수 있습니다.

B.1.1) On-Policy와 Off-Policy의 핵심 차이

  • On-Policy (정책 내 학습): “자신이 현재 하고 있는 행동에서 직접 배운다.”

    • 행동을 결정하는 정책(Policy)과, 그 행동을 평가하고 업데이트하는 데 사용되는 데이터의 정책이 동일합니다.

    • 즉, 현재 정책 π_k가 데이터를 수집하면, 그 데이터로 딱 한 번 (또는 몇 번의 epoch) 학습하여 정책을 π_{k+1}로 업데이트합니다.

    • 업데이트가 끝나면 이전에 수집한 데이터는 버립니다. 새로운 정책 π_{k+1}은 다시 새로운 데이터를 수집해야 합니다.

    • 단점: 데이터 효율성이 매우 낮습니다. (매번 데이터를 새로 수집해야 하므로)

  • Off-Policy (정책 외 학습): “과거의 나 또는 다른 사람의 행동을 보고 배운다.”

    • 행동을 결정하는 정책(행동 정책, behavior policy)과, 업데이트 대상이 되는 정책(타겟 정책, target policy)이 다를 수 있습니다.

    • 과거의 경험(다른 정책이 생성한 데이터 포함)을 리플레이 버퍼(Replay Buffer) 같은 곳에 저장해두고, 이 데이터들을 재사용하여 현재 정책을 업데이트합니다.

    • 장점: 데이터 효율성이 높습니다. (한 번 수집한 데이터를 여러 번 재사용 가능)

B.1.2) PPO는 왜 On-Policy인가?

PPO의 기본적인 학습 루프는 On-Policy의 구조를 따릅니다.

  1. 데이터 수집: 현재의 액터 모델(정책 π_θ_old)을 사용하여 일정량의 경험 데이터(프롬프트, 생성된 답변, 보상 점수 등)를 수집합니다.

  2. 정책 업데이트: 수집된 이 데이터를 사용하여 정책 π_θ를 여러 번의 epoch 동안 최적화합니다.

  3. 데이터 폐기: 최적화가 끝나면, 1단계에서 수집했던 경험 데이터를 버립니다.

  4. 반복: 업데이트된 새로운 정책으로 1단계로 돌아가 다시 데이터를 수집합니다.

“데이터를 버리는” 과정이 바로 PPO를 On-Policy로 분류하는 핵심적인 이유입니다. Off-Policy 알고리즘처럼 과거의 모든 경험을 리플레이 버퍼에 쌓아두고 무작위로 샘플링하여 재사용하지 않습니다.

B.1.3) PPO는 왜 Off-Policy처럼 보이는가? (혼동의 지점)

PPO가 순수한 On-Policy와 다른 점은, 수집된 한 묶음의 데이터(a batch of data)를 가지고 여러 번의 epoch에 걸쳐 정책을 업데이트한다는 점입니다.

  • 첫 번째 epoch에서 정책 π_θ_old는 π_θ_1로 업데이트됩니다.

  • 두 번째 epoch에서는 π_θ_1을 업데이트하기 위해 여전히 처음에 수집된 데이터(정책 π_θ_old가 생성한 데이터)를 사용합니다.

바로 이 지점에서 π_θ_1을 업데이트하는데 π_θ_old가 만든 데이터를 사용하므로, 아주 약간의 Off-Policy적인 상황이 발생합니다.

PPO는 이 문제를 해결하기 위해 중요도 샘플링(Importance Sampling)클리핑(Clipping) 이라는 두 가지 핵심 장치를 사용합니다.

  • 중요도 샘플링 (Importance Sampling): 이전 정책과 현재 정책의 행동 확률 비율(r(θ))을 계산하여, 이전 데이터의 가치를 현재 정책에 맞게 보정해주는 역할을 합니다.

  • 클리핑 (Clipping): 이 확률 비율(r(θ))이 너무 커지거나 작아지지 않도록 특정 범위 (예: [0.8, 1.2]) 내로 잘라버립니다. 이는 정책이 한 번에 너무 크게 변하는 것을 막아 학습의 안정성을 확보하는 PPO의 핵심 아이디어입니다. 즉, “정책이 너무 많이 벗어나지 않았으니(Off-Policy 정도가 심하지 않으니), 이 데이터를 사용해도 괜찮다”고 제한을 두는 것입니다.

B.1.4) 결론: On-Policy 기반의 효율적인 알고리즘

  • 고정된 보상 모델의 역할: 보상 모델은 ‘환경(Environment)‘의 일부로, 액터의 행동에 대해 점수를 주는 ‘심판’일 뿐입니다. 보상 모델이 고정되어 있다는 사실은 학습 알고리즘이 On-Policy인지 Off-Policy인지 결정하는 요인이 아닙니다.

  • PPO의 정체성: PPO는 큰 틀에서는 On-Policy입니다. 현재 정책으로 데이터를 수집하고 학습 후 버리는 루프를 따르기 때문입니다.

  • PPO의 영리함: 하지만 한 번 수집한 데이터를 버리기 전에 여러 번의 업데이트(mini-batch updates)에 재사용함으로써 On-Policy의 단점인 데이터 비효율성을 크게 개선했습니다. 이때 발생하는 미세한 Off-Policy 문제를 ‘클리핑’이라는 안정적인 장치로 해결한 것이 PPO의 혁신입니다.

따라서 PPO를 **“중요도 샘플링과 클리핑을 통해 데이터 재사용 효율성을 높인 On-Policy 알고리즘”**이라고 이해하는 것이 가장 정확합니다.