Chapter 9: 스펙트럼에서 시그널로 — 학습 파이프라인의 정보 이론

의문

Ch8에서 DPO의 변형들이 모두 "오프라인 파인튜닝"이라는 틀을 공유한다는 걸 봤다. 이 틀의 한계를 이해하려면, 한 발 물러서서 더 근본적인 질문을 해야 한다:

프리트레인, SFT, 그리고 RL은 각각 모델에게 무엇을 하는가? 세 단계가 왜 이 순서여야 하는가? 그리고 DPO 같은 오프라인 RL은 이 중 어디에 해당하는가?

합의 길과 곱의 길

모델이 정보를 획득하는 방식은 두 가지로 나뉜다:

합의 길 (additive, mixture):
서로 다른 데이터 소스를 섞어서 모델의 표현 공간을 넓힌다.

  • 프리트레인: 웹 텍스트 + 코드 + 논문 + 대화 + …
  • SFT: 다양한 태스크 형식을 보여준다 (Q&A, 요약, 번역, …)
  • 결과: 모델 내부에 풍부한 "스펙트럼"이 형성된다
  • 정보기하학적으로: 정책 매니폴드 위에 넓은 서포트(support)를 깔아놓는다

곱의 길 (multiplicative, selection):
스펙트럼 위에서 특정 방향을 강화하고 나머지를 억제한다.

  • RL/RLHF/DPO: “이 방향은 좋다, 저 방향은 나쁘다”
  • 결과: 넓은 스펙트럼에서 날카로운 "시그널"을 추출한다
  • 정보기하학적으로: 정책 분포의 모드를 선택적으로 첨예화(sharpening)한다
graph LR
    subgraph add["합의 길 (additive)"]
        direction LR
        PT["프리트레인<br/>웹+코드+논문+대화"] --> SFT["SFT<br/>다양한 태스크 형식"]
    end
    SFT -->|"스펙트럼 완성"| RL_START((" "))
    subgraph mul["곱의 길 (multiplicative)"]
        direction LR
        RL_START --> RL["RL/DPO/GRPO<br/>특정 방향 강화·억제"]
    end

    style add fill:#e3f2fd,stroke:#1565C0
    style mul fill:#fff3e0,stroke:#E65100
    style RL_START fill:#fff,stroke:#999

이 구분이 중요한 이유: 곱의 길은 합의 길이 먼저 깔려 있어야 작동한다.\

스펙트럼이 없으면 선택할 시그널이 없다.
태양빛을 프리즘을 투과시키면 무지개색이 펼쳐지지만, 형광등 불빛은 프리즘을 투과시켜도 무지개가 나오지 않는다.

정보기하학과의 연결 — 더 알고 싶은 독자를 위한 키워드

"합의 길"과 "곱의 길"은 이 교재에서 직관적으로 만든 이름이지만, 확률 분포의 기하학을 다루는 **정보기하학(Information Geometry)**에는 이와 대응하는 엄밀한 개념이 있다.

  • m-접속(mixture connection): 분포를 **혼합(mixture)**으로 연결하는 기하학. 두 분포 ppqq 사이를 (1t)p+tq(1-t)p + tq로 잇는다. 프리트레인이 다양한 데이터 소스를 섞어 스펙트럼을 넓히는 것이 m-접속 위의 이동에 대응한다.

  • e-접속(exponential connection): 분포를 **지수족(exponential family)**으로 연결하는 기하학. 두 분포 사이를 p1tqtp^{1-t} \cdot q^t (정규화 후)로 잇는다. RL이 특정 방향을 선택적으로 강화·억제하는 것 — 즉 분포의 모드를 곱셈적으로 첨예화하는 것이 e-접속 위의 이동에 대응한다.

이 두 접속이 **쌍대(dual)**라는 것이 정보기하학의 핵심 정리 중 하나다.
합의 길과 곱의 길이 서로 보완적이라는 직관은 이 쌍대성에 뿌리를 두고 있다.
관심 있는 독자는 Amari의 Information Geometry and Its Applications, 또는 “e-connection”, “m-connection”, "dually flat manifold"를 검색해보라.

온라인/오프라인과 온폴리시/오프폴리시 — 분포 이동의 문제

Ch2에서 이 두 축의 정의와 조합표(DPO=오프라인·오프폴리시, GRPO=온라인·온폴리시 등)를 다뤘다. 여기서는 이 구분이 학습 시그널의 유효성에 어떤 영향을 미치는지를 본다.

오프라인·오프폴리시의 핵심 문제 — 분포 이동(distribution shift):

데이터: π_old가 생성한 (x, y_w, y_l) 고정 데이터셋
학습 중: π_θ가 업데이트되면서 π_old에서 점점 멀어짐

→ π_θ가 절대 생성하지 않을 응답에 대해 학습하고 있다
→ importance weight로 보정 가능하지만, 분산이 폭발한다 (아래 설명)

이것은 RL의 고전적 문제다:

  • Q-learning (off-policy): 경험 재활용 가능, 하지만 불안정
  • SARSA / Policy Gradient (on-policy): 안정적, 하지만 데이터 비효율
  • LLM에서는 on-policy가 압도적으로 우세 → 왜? → 행동 공간이 거대하고(전체 어휘 × 시퀀스 길이), off-policy 보정의 분산이 감당 불가능하기 때문

임포턴스 샘플링 — 오프폴리시 보정의 원리와 한계

위에서 "importance weight로 보정 가능하지만 분산이 폭발한다"고 했다. 이것이 무슨 뜻인지 풀어보자.

임포턴스 샘플링(Importance Sampling)의 핵심 아이디어:

“다른 분포에서 뽑은 샘플로, 내가 관심 있는 분포의 기대값을 추정한다.”

수식으로 쓰면:
Eπθ[f(y)]=Eπold[f(y)×πθ(y)/πold(y)]E_{\pi_\theta}[f(y)] = E_{\pi_{old}}[ f(y) \times \pi_\theta(y) / \pi_{old}(y) ]

πθ(y)/πold(y)\pi_\theta(y) / \pi_{old}(y) — 이것이 임포턴스 가중치(importance weight)다.
직관: “π_old가 이 샘플을 너무 자주 뽑았으면 가중치를 낮추고,
너무 드물게 뽑았으면 가중치를 높여서, π_θ의 기대값에 맞춘다.”

장난감 예제 — 주사위로 이해하는 임포턴스 샘플링:

상황: "공정한 주사위(π_θ)의 기대값"을 알고 싶다.
하지만 공정한 주사위가 없다. 찌그러진 주사위(π_old)만 있다.

π_θ (공정): 각 면 확률 = 1/6 ≈ 0.167
π_old (찌그러진): [1]=0.4, [2]=0.2, [3]=0.15, [4]=0.1, [5]=0.1, [6]=0.05

찌그러진 주사위로 6번 던져서 [1, 1, 2, 1, 3, 4]가 나왔다고 하자.

단순 평균 (보정 없이):
(1+1+2+1+3+4)/6 = 2.0
→ 공정한 주사위의 진짜 기대값 3.5와 한참 다르다.
→ 찌그러진 주사위가 1을 자주 뽑으니까 평균이 낮게 나온다.

임포턴스 가중치로 보정:
각 샘플에 w = π_θ(y) / π_old(y)를 곱한다.

  • y=1: w = 0.167/0.4 = 0.42 → “1이 과대표집됐으니 가중치를 낮춘다”
  • y=2: w = 0.167/0.2 = 0.83
  • y=3: w = 0.167/0.15 = 1.11
  • y=4: w = 0.167/0.1 = 1.67 → “4가 과소표집됐으니 가중치를 높인다”

보정된 추정: (1×0.42 + 1×0.42 + 2×0.83 + 1×0.42 + 3×1.11 + 4×1.67) / 6개의 w합
= (0.42 + 0.42 + 1.66 + 0.42 + 3.33 + 6.68) / (0.42+0.42+0.83+0.42+1.11+1.67)
= 12.93 / 4.87
≈ 2.65
→ 2.0보다 3.5에 가까워졌다. 보정이 작동한다!

하지만 여기서 핵심적인 문제가 보인다:
y=6이 한 번도 안 나왔다.
π_old(6) = 0.05이니까 잘 안 뽑힌다.
만약 6이 나왔다면? w = 0.167/0.05 = 3.33 — 가중치가 매우 크다.
→ 드물게 뽑힌 샘플 하나가 전체 추정을 지배한다.
→ 이것이 "분산 폭발"이다.

왜 LLM에서 임포턴스 샘플링이 감당 불가능한가:

주사위는 6개 면이다. LLM의 "면"은?
→ 어휘 크기 × 시퀀스 길이. 예: 32,000^512 ≈ 10^2,300

주사위 예제에서도 6면 중 1면(y=6)이 안 뽑혀서 문제가 됐다.
LLM에서는 가능한 응답의 대부분이 한 번도 안 뽑힌다.

π_old에서 1000개 응답을 생성했다고 치자:

  • 그 중 π_θ가 높은 확률을 부여하는 응답이 하나도 없을 수 있다
  • 혹은 π_old가 0.0001 확률로 뽑은 응답이 π_θ에서는 0.1 → w = 1000
  • 이 하나의 샘플이 전체 그래디언트를 지배한다
  • → 학습이 극도로 불안정해진다

구체적으로:
π_old: "부산입니다"를 P=0.3으로 생성
π_θ (학습 후): "부산입니다"를 P=0.001로 생성
→ w = 0.001/0.3 = 0.003
→ 이 샘플의 학습 시그널은 거의 무시됨. 괜찮다.

하지만 반대 상황:
π_old: "서울특별시는…"을 P=0.001로 생성
π_θ (학습 후): "서울특별시는…"을 P=0.2로 생성
→ w = 0.2/0.001 = 200
→ 이 드문 샘플 하나가 그래디언트의 대부분을 차지
→ 배치 내 다른 999개 샘플은 사실상 의미 없어짐

이것이 "off-policy 보정의 분산이 감당 불가능"한 이유다.
이론적으로 임포턴스 샘플링은 정확하다 — 샘플 수가 무한하면.
하지만 LLM의 행동 공간에서는 "충분한 샘플"이 비현실적이다.

PPO의 해결책 — 임포턴스 비율을 잘라낸다:

PPO는 임포턴스 비율 r = π_θ(y)/π_old(y)를 사용하되,
이 비율을 [1-ε, 1+ε] 범위로 클리핑한다 (보통 ε=0.2).

→ w=200 같은 극단적 가중치가 w=1.2로 잘린다.
→ 분산은 억제되지만, 보정의 정확성을 포기한 것이다.
→ 이것이 PPO가 "약간 오프폴리시"를 허용하면서도 안정적인 이유.
→ 그리고 PPO가 매 배치 이후 π_old를 갱신해야 하는 이유이기도 하다:
클리핑은 "약간"의 분포 차이만 허용하므로, π_old가 너무 낡으면 안 된다.

DPO에는 이 장치가 없다:

→ 고정된 데이터셋(π_old) vs 계속 변하는 π_θ
→ 학습이 진행될수록 임포턴스 비율이 걷잡을 수 없이 벌어진다
→ 클리핑도 없고, π_old 갱신도 없다
→ 이것이 DPO에서 분포 이동이 구조적 문제인 이유다 (Ch11에서 상세히)

다음 장으로의 질문

프리트레인이 스펙트럼을 깔고, RL이 시그널을 추출한다. 알겠다. 그런데 "RL이 추출할 수 있는 시그널"의 양은 어떻게 측정하는가? 그리고 RL이 잘 작동하려면 어떤 조건이 필요한가?