12. 다차원 보상 — 스칼라를 넘어서

스칼라 보상의 빈틈: 최적화는 가중치를 글자 그대로 읽는다

가중합이 닿지 못하는 타협안이 있다는 것은 가중치를 고르기 전의 문제다. 가중치를 고른 뒤에도 물음이 남는다. 가중치에는 "이 기준이 얼마나 중요한가"라는 뜻을 담았다. 그 점수를 최대로 만드는 최적화도 그 뜻대로 읽을까?

가중치에 담은 뜻과 최적화가 읽는 것

"성능 0.5 + 연비 0.3 + 안전성 0.2"로 종합 점수를 매긴다고 하자. 제조사가 이 점수를 최적화하면, 안전성을 조금 희생하고 성능을 크게 올리는 편이 이득이다. 가중치 0.2는 "안전성은 조금 덜 중요하다"는 뜻이었지 "브레이크를 약하게 만들어도 된다"는 뜻이 아니었는데, 최적화는 그렇게 읽는다.

정책도 마찬가지다. 스칼라 하나로 줄이는 순간 리워드 해킹(보상 점수는 오르는데 사람이 바란 행동은 아닌 쪽으로 정책이 가는 일)의 문이 열린다. 유용성·정확성·안전성을 가중합으로 섞은 보상을 정책이 최대로 만들면, 정책은 사람이 가중치에 담은 뜻이 아니라 점수가 가장 쉽게 오르는 길을 따라간다. 어떤 응답이 그렇게 이기는지는 아래 문제 7에서 숫자로 따져 본다.

그래서 보상을 숫자 하나로 줄이기 전에 차원별로 따로 보려는 연구가 나왔다.

ML에서: 평가기준 기반 보상(Rubrics-as-Rewards)

차원별로 평가하는 방법 가운데 최근 흐름은 프롬프트마다 채점 기준표를 만드는 것이다.

전통적 RLHF (사람 선호 → 보상 모델 → 강화학습) 평가기준 기반
학습 신호(시그널)의 출처 사람의 쌍비교 → BT 보상 모델 프롬프트마다 평가기준 목록(rubric)을 만들고, 심사 모델(채점을 맡은 다른 LLM)이 항목별로 채점
보상의 모양 스칼라 하나 항목별 점수 (체크리스트)
장점 데이터 수집이 단순 해석 가능, 어느 항목에서 깎였는지 보임

기준표가 어떻게 생겼는지 작은 예로 보자. 「파이썬에서 리스트를 거꾸로 뒤집는 법을 알려 줘」라는 프롬프트라면 이런 꼴이다(설명을 위해 만든 예다).

항목 등급
실제로 동작하는 방법을 하나 이상 보인다 필수
원래 리스트를 바꾸는 방법과 새 리스트를 만드는 방법을 구별한다 중요
짧은 실행 예를 붙인다 선택
없는 함수를 지어내지 않는다 함정 피하기

평가기준 기반 보상을 제안한 연구(Gunjal et al., 2025)는 프롬프트마다 이런 항목을 7~20개 만들고 「필수·중요·선택·함정」 네 등급을 붙여, 등급마다 정한 비중으로 항목 점수를 모았다. 함정 항목은 「잘못된 정보를 피한다」처럼 지키면 점수가 오르는 꼴로 적는다. 항목별 점수도 끝내 하나로 모이지만, 어느 항목에서 깎였는지 보이고 항목마다 따로 손볼 수 있다.

이 방법은 “정답을 자동으로 검증할 수 있는” 수학·코드 밖으로 RLVR(검증 가능한 보상으로 하는 강화학습)을 넓히려는 시도이기도 하다. 항목 하나하나를 작은 검증기로 보는 것이다. 한편 쌍 대신 여러 응답을 한꺼번에 순위로 다루는 리스트와이즈 선호 최적화(LiPO: Listwise Preference Optimization, Liu et al. 2024)도 같은 방향 — BT의 "두 개씩, 점수 하나로"라는 틀에서 벗어나려는 — 의 시도다.

문제 6 — 조교의 채점표

조교의 보고서 채점표는 내용 50%, 분량 30%, 참고문헌 수 20%다(항목마다 10점 만점). 보고서 가는 내용 9, 분량 6, 참고문헌 5점이고, 보고서 나는 내용 6, 분량 10, 참고문헌 10점이다. 어느 보고서가 더 높은 점수를 받는가? 이긴 보고서는 어느 항목에서 점수를 벌었는가?

김민준 (평상)
김민준
가는 4.5+1.8+1.0=7.34.5 + 1.8 + 1.0 = 7.3, 나는 3.0+3.0+2.0=8.03.0 + 3.0 + 2.0 = 8.0. 나가 더 좋은 보고서네요.
이서연 (평상)
이서연
잠깐, 나는 내용이 6점이야. 분량이랑 참고문헌 수는 늘리기만 하면 오르는 점수잖아.
선생님 (질문)
선생님
민준 학생, 나가 가보다 더 받은 0.7점은 어느 항목에서 왔어요?
김민준 (생각)
김민준
내용에서는 1.5점 지고, 분량에서 1.2점, 참고문헌에서 1.0점을 이겼어요. 이긴 점수가 전부 늘리기 쉬운 항목에서 왔네요.
선생님 (평상)
선생님
채점표는 좋은 보고서를 가리려고 만든 거였죠. 그런데 채점표가 실제로 재는 것은요?
김민준 (깨달음)
김민준
세 항목을 섞은 숫자요. 그 숫자는 내용이 얕은 걸 분량으로 메웠는지는 안 봐요. "더 좋은 보고서"가 아니라 "점수가 더 높은 보고서"였네요.

정리 나가 8.0점으로 가(7.3점)를 이긴다. 내용에서 진 1.5점을 분량(1.2점)과 참고문헌 수(1.0점)로 메웠다. 섞은 점수는 그 점수가 어느 항목에서 왔는지 보지 않는다.

문제 7 — (킬러) 가중치를 고치면 해킹이 사라지는가

보상을 R=w⋅유용성+1−w2(정확성+안전성)\textcolor{#d9670b}{R} = \textcolor{#0033ff}{w} \cdot \text{유용성} + \frac{1-\textcolor{#0033ff}{w}}{2}(\text{정확성} + \text{안전성}) 으로 정했다. 후보 응답은 셋이다: 직답(0.9, 0.8, 0.6), 회피성 배경 설명(0.6, 1.0, 1.0), 자신만만한 오답(1.0, 0.3, 0.8). (가) w=0.4\textcolor{#0033ff}{w} = 0.4 에서 누가 이기는가? (나) 직답이 회피성 설명을 이기려면 w\textcolor{#0033ff}{w} 가 얼마보다 커야 하는가? (다) 그래서 w=0.65\textcolor{#0033ff}{w} = 0.65 로 올렸다. 이제 누가 이기는가? 이 결과가 말해 주는 것은?

김민준 (평상)
김민준
(가) w=0.4\textcolor{#0033ff}{w} = 0.4 면 나머지 두 축은 0.3씩. 직답 0.36+0.3×1.4=0.780.36 + 0.3 \times 1.4 = 0.78, 회피 0.24+0.3×2.0=0.840.24 + 0.3 \times 2.0 = 0.84, 오답 0.4+0.3×1.1=0.730.4 + 0.3 \times 1.1 = 0.73. 회피가 이겨요.
선생님 (평상)
선생님
질문에 답을 안 하는 쪽이 이기네요. (나)는요?
이서연 (평상)
이서연
직답 0.9w+0.7(1−w)0.9\textcolor{#0033ff}{w} + 0.7(1-\textcolor{#0033ff}{w}) 이 회피 0.6w+1.0(1−w)0.6\textcolor{#0033ff}{w} + 1.0(1-\textcolor{#0033ff}{w}) 보다 크려면 0.2w+0.7>−0.4w+10.2\textcolor{#0033ff}{w} + 0.7 > -0.4\textcolor{#0033ff}{w} + 1, w>0.5\textcolor{#0033ff}{w} > 0.5 예요.
김민준 (자신만만)
김민준
그럼 간단하네요. w=0.65\textcolor{#0033ff}{w} = 0.65 로 넉넉하게 올리면 해결이죠.
선생님 (질문)
선생님
해 보죠. w=0.65\textcolor{#0033ff}{w} = 0.65 에서 세 후보의 점수는요?
김민준 (평상)
김민준
직답 0.585+0.175×1.4=0.830.585 + 0.175 \times 1.4 = 0.83, 회피 0.39+0.175×2.0=0.740.39 + 0.175 \times 2.0 = 0.74, 오답 0.65+0.175×1.1=0.84250.65 + 0.175 \times 1.1 = 0.8425.
김민준 (놀람)
김민준
오답이 이겨요! 자신만만하게 틀린 답이.
이서연 (평상)
이서연
그럼 가중합 말고 세 축 중 최솟값을 보상으로 쓰면 어때? 약한 축을 올리게 만드니까 해킹이 안 되잖아.
선생님 (질문)
선생님
계산해 볼까요, 서연 학생?
이서연 (생각)
이서연
최솟값은 직답 0.6, 회피 0.6, 오답 0.3. 오답은 떨어지는데… 직답이랑 회피가 동점이에요. 최솟값은 유용성 0.9와 0.6의 차이를 아예 못 봐요. 한 축만 보니까 나머지 정보가 다 버려지네요.
이서연 (깨달음)
이서연
결국 어떤 식으로 스칼라 하나로 줄이든, 그 식이 못 보는 방향이 생기고 최적화는 그쪽으로 가는 거군요.
선생님 (평상)
선생님
그게 이 장의 결론이에요. 가중치를 고치면 해킹이 사라지는 게 아니라 자리를 옮겨요. 그래서 차원별 제약을 따로 두거나(“정확성 0.7 미만이면 탈락”), 평가기준 항목으로 쪼개서 보거나, 검증 가능한 부분은 검증기로 바꾸는 쪽으로 가는 거예요.
김민준 (평상)
김민준
아까 조교 채점표랑 같네요. 거기서 “분량” 항목을 없애도 이번엔 "참고문헌 수"로 몰릴 거고요.
이서연 (평상)
이서연
최적화 수업에서 "목적함수에 안 들어간 것은 최적해가 신경 쓰지 않는다"고 배운 게 딱 이거예요. 제약으로 넣어야 지켜져요.

정리 (가) 직답 0.78, 회피 0.84, 오답 0.73 — 회피가 이긴다. (나) w>0.5\textcolor{#0033ff}{w} > 0.5. (다) w=0.65\textcolor{#0033ff}{w} = 0.65 에서 직답 0.83, 회피 0.74, 오답 0.8425 — 이번엔 자신만만한 오답이 이긴다. 최솟값으로 바꿔도 직답과 회피가 0.6으로 동점이다. 스칼라로 줄이는 방식을 바꾸면 해킹은 사라지지 않고 자리를 옮긴다. 필요한 것은 차원별 제약, 항목별 평가, 검증기다.