Chapter 7: 다차원 보상 — 스칼라를 넘어서

의문

보상이 하나의 숫자가 아니라 벡터(정확성, 유창함, 안전성, …)라면, "이 응답이 좋다"는 판단을 어떻게 내리는가?

핵심: 파레토 프론티어

자동차를 고른다고 생각하자. 두 가지만 따진다: 성능(마력)과 연비(km/L).

성능 (마력) 연비 (km/L) D C B A 스포츠카 세단 하이브리드 경차

A, B, C, D 모두 파레토 최적이다 — 하나를 올리면 다른 하나가 내려간다. 이 곡선 위의 어떤 점이 "최고"인지는 운전자의 가중치가 결정한다. 출퇴근용이면 C나 D, 서킷용이면 A.

그런데 어느 날 신차 E가 출시된다:

성능 (마력) 연비 (km/L) D C B A E ★ 신차 프론티어 확장 영역

E는 C를 **지배(dominate)**한다 — 성능도 C 이상, 연비도 C 이상이므로 C는 더 이상 파레토 최적이 아니다. 프론티어가 바깥으로 밀려났다. 이것을 "파레토 프론티어를 확장했다"고 말한다.

이 비유가 LLM에서 정확히 대응하는 지점:

기존 프론티어: 정확성과 간결성 사이에서 트레이드오프
  → 정확하게 답하려면 길어지고, 짧게 답하면 부정확해진다

모델 개선 (더 좋은 프리트레인, 더 나은 RL):
  → "짧으면서도 정확한" 응답을 생성할 수 있게 된다
  → 기존에 불가능했던 영역이 가능해진다
  → 파레토 프론티어가 바깥으로 확장된다

Ch9에서 배울 "스펙트럼에서 시그널로":
  프리트레인이 프론티어의 위치를 결정하고 (스펙트럼 = 프론티어의 범위)
  RL이 프론티어 위의 어디에 서는지를 결정한다 (시그널 = 가중치 선택)
  더 좋은 프리트레인 = 프론티어 자체를 바깥으로 밀어내는 것

LLM 응답도 같다:

스칼라로 축약하는 세 가지 방법

R(x, y) = Σ_d w_d × r_d(x, y)

1. 고정 가중치: 모든 프롬프트에 w = (0.5, 0.3, 0.2)
   → 단순, 하지만 "코드 질문에도 안전성 가중치 0.3?"

2. 맥락 의존 (ArmoRM MoE): 프롬프트를 보고 w를 자동 결정
   → "코드 질문 → 정확성↑", "민감한 질문 → 안전성↑"

3. 추론 시 조절: 사용자가 w를 직접 설정
   → 파레토 프론티어 전체를 학습해두고, 추론 시 선택

스칼라로 축약하는 순간, 리워드 해킹의 문이 열린다:

자동차 비유로 돌아가면:
  "성능 0.5 + 연비 0.3 + 안전성 0.2"로 종합 점수를 매긴다고 하자.
  자동차 제조사가 이 점수를 최적화하면?
  → 안전성(가중치 0.2)을 약간 희생하면 성능(가중치 0.5)을 크게 올릴 수 있다.
  → 종합 점수는 올라가지만, 브레이크가 약한 차가 나온다.
  → 가중치가 "안전성은 좀 덜 중요하다"는 의미가 아닌데,
    최적화 알고리즘은 그렇게 해석한다.
LLM에서 실제로 벌어지는 일:
  R = 0.4 × 유용성 + 0.3 × 정확성 + 0.3 × 안전성

  모델이 발견하는 해킹 전략:
    "질문에 직접 답하지 않고 장황하게 배경 설명을 하면
     유용해 보이고(+유용성), 틀린 말을 안 하고(+정확성),
     위험한 내용도 피할 수 있다(+안전성)."
    → 종합 점수는 높지만, 사용자 질문에 대한 답이 없다.
    → 가중합 보상의 구조적 한계: 차원 간의 트레이드오프를
      "적정 수준"이 아니라 "최적화에 유리한 방향"으로 해결해버린다.

이것이 다차원 보상을 연구하는 근본적 동기다:\

평가기준 기반 보상(Rubrics-as-Rewards) — 최신 흐름

시각화 계획

다음 장으로의 질문

DPO의 여섯 요소를 해부했다. 각 요소를 바꾸면 다른 알고리즘이 나왔다. 이 변형들을 전체 지도로 정리하면? 그리고 이 변형들이 공유하는 근본 한계는 없는가? — DPO에서 출발해서, 어디까지 갈 수 있고, 어디서 다른 길이 필요한가?