ODIN: reward에서 길이 성분을 떼어내다
ODIN: Disentangled Reward Mitigates Hacking in RLHF (Chen et al., UMD/NVIDIA, ICML 2024)
Introduction
11편에서 확인한 것은 불편한 사실이었다. RLHF로 정책을 학습시키면 응답이 점점 길어지고, reward도 같이 올라간다. 문제는 그 reward 상승분 중 상당 부분이 실제 내용의 질 향상이 아니라 그냥 길어졌기 때문에 생긴다는 점이다. Singhal et al.(2023)은 심지어 “길이만 보고 주는 가짜 reward”로도 RLHF가 만들어내는 개선의 대부분을 재현할 수 있음을 보였다. reward model이 “장황함”과 “좋은 답변”을 구분하지 못하고 있다는 뜻이다.
11편은 이 현상을 진단했다. 이 글이 다루는 ODIN은 그 진단에 대한 아키텍처 수준의 처방이다. 아이디어는 단순하다. reward model의 head를 하나가 아니라 둘로 늘린다. 하나는 응답 길이를 예측하도록 학습시키는 length head, 다른 하나는 길이와 최대한 무관하도록 학습시키는 quality head다. RM을 학습시킬 때는 두 head를 같이 쓰지만, 정책을 강화학습으로 최적화할 때는 quality head만 reward로 넘긴다. 길이를 흡수하는 쓰레기통을 하나 따로 만들어 두고, 정책에게는 그 쓰레기통이 안 보이게 하는 셈이다.
비유하자면 이렇다. 채점관 한 명이 답안지를 채점할 때 “글씨를 얼마나 빽빽하게, 많이 썼는가”와 “내용이 얼마나 알찬가”를 무의식적으로 섞어서 점수를 매기면, 학생들은 내용보다 분량을 늘리는 쪽으로 전략을 짠다. ODIN은 이 채점관에게 칸을 두 개 주는 것과 같다. “분량 칸”과 “내용 칸”을 따로 채우게 하고, 최종 성적에는 내용 칸 점수만 반영한다고 미리 공지한다. 그러면 학생은 분량을 늘려봐야 성적에 반영되지 않는다는 걸 알기 때문에 분량 늘리기 전략을 버린다.
11편은 “길이 페널티를 reward에서 빼면 되지 않냐”는 소박한 해법도 이미 시도된 바 있다고 언급했다. ODIN 논문은 정확히 이 소박한 해법을 베이스라인으로 놓고, 왜 부족한지를 직접 실험으로 보여준다. 이 글은 다음 순서로 진행한다.
- 왜 단순 길이 페널티가 실패하는가 — 11편에서 시도된 개입들과 ODIN이 비교하는 베이스라인들
- 두 head를 어떻게 분리시키는가 — 상관계수 손실과 직교성 손실, 그리고 이 둘이 트릭 없이는 붕괴(collapse)하는 이유
- RM 학습부터 RL까지 숫자로 검증 — Pearson 상관 0.451 → -0.03이라는 실제 결과
- 한계 — 길이 축은 막았지만, ODIN은 “다른 hacking 축은 무방비”임을 스스로 인정한다. 이 부채가 13편으로 이어진다.
Background
reward model에 head가 하나뿐일 때 생기는 문제
표준 RLHF reward model은 SFT LM 위에 선형 head를 하나 얹어 스칼라 점수 하나를 낸다. 선호 쌍 \((x, y_w, y_l)\)(같은 프롬프트 \(x\)에 대해 사람이 \(y_w\)를 \(y_l\)보다 선호)에 대해 Bradley-Terry cross-entropy로 학습한다.
\[\mathcal{L}(\theta) = -\mathbb{E}\Big[\log \sigma\big(r_\theta(x, y_w) - r_\theta(x, y_l)\big)\Big]\]이 손실은 \(y_w\)가 \(y_l\)보다 높은 점수를 받도록만 강제할 뿐, 왜 높아야 하는지는 전혀 지정하지 않는다. 그런데 선호 데이터 자체에 이미 “더 긴 답변을 사람이 더 선호하는” 편향이 섞여 있다면(11편에서 다룬 것처럼), 이 손실을 최소화하는 가장 쉬운 지름길 하나는 길이와 상관된 방향으로 점수를 매기는 것이다. RM은 진짜 내용을 이해하려 애쓰는 대신 “길다 → 높은 점수”라는 얕은 상관관계를 배워버린다. ODIN 논문은 실제로 학습된 vanilla RM의 점수와 응답 길이 사이 Pearson 상관계수가 0.451에 달한다고 보고한다 — 무시할 수 없는 수준의 얽힘이다.
왜 “그냥 길이 페널티를 빼자”로는 부족한가
가장 직관적인 대응은 RL 단계에서 reward에서 길이에 비례하는 항을 빼는 것이다.
\[\hat r^{lp}_\theta(x, y) = \hat r_\theta(x, y) - \alpha \cdot L(y)\]기호를 풀면, \(L(y)\)는 응답 \(y\)의 토큰 수, \(\alpha > 0\)은 사람이 고르는 고정 상수다. Singhal et al.(2023)은 여기서 한 발 더 나아가 \(\alpha\)를 reward의 표준편차에 비례하도록 스케일링하는 방법을 제안하기도 했다. ODIN 논문은 이 계열의 접근을 직접 베이스라인으로 실험하고, 세 가지 이유로 근본적인 해법이 못 된다고 지적한다.
| 문제 | 설명 |
|---|---|
| 공분산이 계속 움직인다 | RL 도중 정책이 만드는 응답의 분포가 계속 바뀌므로, reward와 길이 사이의 공분산도 계속 바뀐다. 학습 시작 시점에 고정한 \(\alpha\) 하나로는 이 움직이는 목표를 못 쫓아간다 |
| 선형 상관만 지운다 | \(\alpha L(y)\)를 빼는 연산은 선형(linear) 관계만 제거한다. 순위 기반 상관(Kendall \(\tau\), Spearman \(r_s\))까지는 못 없앤다 |
| 새 하이퍼파라미터가 는다 | \(\alpha\) 자체를 RL 튜닝 과정에서 새로 탐색해야 한다. RM은 그대로 두고 문제를 RL 쪽으로 떠넘기는 셈이다 |
비유하자면 이렇다. 환율이 시시각각 바뀌는데 첫날 정해놓은 고정 환율로 계속 환전해주는 환전소와 같다. 첫날은 얼추 맞아도, 환율이 크게 움직인 뒤에는 완전히 틀린 값을 계속 뱉어낸다. 길이-reward 공분산도 정책이 학습되는 내내 흔들리므로, RL이 시작되기 전에 정한 상수 \(\alpha\)는 며칠만 지나도 낡은 환율표가 된다.
reward clipping도 함께 비교되는 또 다른 베이스라인이다.
\[\hat r^{clip}_\theta(x, y) = \text{clip}\big(r_\theta(x, y), -c, c\big) - \beta \log \frac{\pi_w(y \mid x)}{\pi^{SFT}(y \mid x)}\]\(c\)는 clipping 범위, \(\beta\)는 SFT 정책으로부터의 이탈을 억제하는 KL 계수다. 극단적으로 큰 reward를 잘라내면 과최적화 자체는 어느 정도 누그러들지만, 이 역시 길이와 quality를 분리하는 것이 아니라 증상만 완화하는 접근이고, \(c\)와 \(\beta\)를 태스크마다 그리드서치해야 한다.
ODIN의 전략은 이 두 베이스라인과 방향이 다르다. RL 단계에서 사후적으로 손보는 대신, RM을 학습시키는 단계에서 아예 길이 성분을 별도 head로 흡수시켜 놓는다. RL에는 새 하이퍼파라미터를 추가하지 않고, 그냥 “quality head만 쓴다”는 스위치 하나만 바뀐다.
Method
아키텍처: head를 하나에서 둘로
ODIN은 SFT LM으로 RM을 초기화하는 것까지는 vanilla RM과 동일하다. 차이는 마지막 선형 layer의 출력 차원을 1에서 2로 늘린다는 것뿐이다. 같은 backbone 표현 \(h(x,y)\) 위에 두 개의 선형 projection이 얹힌다.
\[r^Q_\theta(x, y) = W_Q \, h(x, y), \qquad r^L_\theta(x, y) = W_L \, h(x, y)\]- \(r^Q_\theta\): quality head. 길이와 무관하게 내용의 질을 반영하도록 학습된다.
- \(r^L_\theta\): length head. 반대로 길이 자체를 예측하도록 학습된다.
- \(W_Q, W_L\): 두 head의 projection 가중치 벡터(shape \(1 \times d\), \(d\)는 backbone hidden dim).
RM을 학습시킬 때는 두 head의 합을 “전체 reward”로 보고 표준 Bradley-Terry 손실을 적용한다.
\[\mathcal{L}^R_\theta(x, y_w, y_l) = -\mathbb{E}\Big[\log \sigma\big(r^Q_\theta(x,y_w) + r^L_\theta(x,y_w) - r^Q_\theta(x,y_l) - r^L_\theta(x,y_l)\big)\Big]\]이 식은 사실상 원래 하나였던 projection 가중치를 두 세트로 쪼갠 것과 동치다. 그것만으로는 아무것도 분리되지 않는다 — 두 head를 각각 아무렇게나 초기화해도 합만 맞으면 손실이 줄어들기 때문이다. 분리를 강제하는 건 다음 두 손실이다.
길이-상관 손실: 한쪽은 죽이고 한쪽은 살린다
\[\mathcal{L}^L_\theta(x, y) = \big\lvert \rho\big(r^Q_\theta(x,y), L(y)\big) \big\rvert \;-\; \rho\big(r^L_\theta(x,y), L(y)\big)\]- \(L(y)\): 응답 \(y\)의 토큰 수.
- \(\rho(X, Y)\): 미니배치 안에서 계산한 Pearson 상관계수. 여러 GPU에 걸친 데이터를 forward 단계에서 모아 배치 전체 기준으로 계산한다(각 샘플의 예측은 서로 독립이라 그래디언트 계산에는 문제가 없다).
- 첫째 항 \(\lvert \rho(r^Q, L) \rvert\): quality head 점수와 길이 사이 상관의 절댓값. 이 값이 작을수록(0에 가까울수록) 좋다.
- 둘째 항 \(-\rho(r^L, L)\): length head 점수와 길이 사이 상관에 마이너스를 붙인 것. 이 항을 줄이려면 \(\rho(r^L, L)\)이 1에 가까워야 한다.
두 항을 더해 최소화(이론적 하한 \(-1\))하면, quality head는 길이와 상관관계가 0으로 밀리고 length head는 길이와 상관관계가 1로 밀린다. 한쪽에는 길이 정보를 몰아주고, 다른 쪽에는 길이 정보를 짜낸다 — 스펀지 하나를 짜서 물기(길이 정보)를 다른 그릇(length head)에 모조리 옮기고, 원래 스펀지(quality head)는 바짝 말리는 것과 같은 그림이다.
직교성 손실과 붕괴 문제
\[\mathcal{L}^O_\theta = \big\lvert W_Q W_L^T \big\rvert\]\(W_Q, W_L\)은 앞서 정의한 두 head의 projection 가중치 벡터다. 두 벡터의 내적의 절댓값을 최소화하면 두 가중치 벡터가 서로 직교(orthogonal)하는 방향을 가리키게 된다 — 즉 quality head와 length head가 backbone 표현 공간에서 서로 다른 축을 바라보게 강제한다.
그런데 \(\mathcal{L}^L_\theta\)와 \(\mathcal{L}^O_\theta\) 둘 다 아주 손쉬운 지름길로 최소화될 수 있다. \(W_Q = 0\)으로 만들어버리면 어떨까. \(r^Q_\theta\)가 항상 0이 되므로 길이와의 상관계수도 정의상 0이 되고(첫째 항 만족), \(W_Q W_L^T\)도 자동으로 0이 된다(직교성도 만족). 두 손실을 공짜로 풀어버리는 것이다. 문제는 이렇게 되면 quality head가 죽어버려 애초에 학습시킨 의미가 없어진다.
논문은 이 붕괴를 막기 위해 \(W_Q, W_L\)에 weight normalization(Salimans & Kingma, 2016)을 적용한다. 가중치 벡터를 방향과 크기로 분리해서 다음과 같이 다시 쓴다.
\[W = g \cdot \frac{v}{\lVert v \rVert}\]\(v\)는 방향을 결정하는 벡터, \(g\)는 크기를 결정하는 스칼라다. 핵심은 \(v / \lVert v \rVert\)가 정의상 항상 단위벡터라는 점이다 — \(v\) 자체가 0으로 무너지지 않는 한 방향은 절대 사라지지 않는다. 이 재매개변수화를 거친 뒤의 \(W_Q, W_L\)로 손실과 reward를 계산하기 때문에, “그냥 죽여서 손실을 0으로 만드는” 지름길이 막힌다. quality head는 어쩔 수 없이 길이와 무관하면서도 뭔가 실질적인 방향을 찾아야 한다.
전체 학습 손실
세 손실을 합쳐 RM을 학습시킨다.
\[\mathcal{L}(x, y_w, y_l) = \mathcal{L}^R_\theta(x, y_w, y_l) + \lambda_L \mathcal{L}^L_\theta(x, y_w) + \lambda_L \mathcal{L}^L_\theta(x, y_l) + \lambda_O \mathcal{L}^O_\theta\]\(\lambda_L\)은 길이-상관 손실의 가중치, \(\lambda_O\)는 직교성 손실의 가중치다. 논문은 별다른 튜닝 없이 \(\lambda_L = \lambda_O = 1.0\)을 기본값으로 쓴다.
RL 단계: length head는 버린다

위 그림(논문 Figure 1)이 전체 그림을 요약한다. 왼쪽(RM Training)에서는 vanilla RM이 head 하나로, ODIN은 두 head의 합으로 Bradley-Terry 손실을 계산한다. 오른쪽(RL Finetuning)에서 vanilla RM은 그 하나뿐인 head를 그대로 reward로 쓰지만, ODIN은 length head에 빨간 X, quality head에 초록 체크가 붙어 있다 — RL 단계에서 정책에게 실제로 전달되는 reward는 quality head 하나뿐이다.
\[\hat r(x, y) = r^Q_\theta(x, y) - \beta \log \frac{\pi_w(y \mid x)}{\pi^{SFT}(y \mid x)}\]표준 KL-정규화 reward 식에서 \(r_\theta\) 자리에 \(r^Q_\theta\)만 들어간다는 점이 유일한 차이다. length head가 학습 중에 배운 “길이 정보”는 정책에 그대로 전달되지 않고 RM 내부에만 남는다. 논문은 PPO(Schulman et al., 2017)와 ReMax(Li et al., 2023) 두 알고리즘 모두에 이 방식을 그대로 적용한다.
토이 예제: 같은 두 응답, 두 head, 그리고 뒤바뀌는 순위
가상의 숫자로 메커니즘을 직접 따라가 보자. 같은 질문에 대한 두 응답이 있다고 하자.
- \(y_1\): 40토큰짜리 짧고 알찬 답변
- \(y_2\): 200토큰짜리 길고 같은 말을 반복하는 답변
backbone이 각 응답에 대해 3차원 표현 \(h(x,y)\)를 냈고(설명용 축약), weight-normalize를 거친 두 head의 가중치가 다음과 같이 학습되었다고 하자.
\[W_Q = [\,0.95,\ 0.30,\ -0.05\,], \qquad W_L = [\,0.05,\ -0.05,\ 0.99\,]\] \[h(y_1) = [\,0.9,\ 0.1,\ 0.2\,], \qquad h(y_2) = [\,0.5,\ 0.1,\ 0.9\,]\]세 번째 축이 “길이와 강하게 얽힌 특징”이라 하면, \(W_L\)은 그 축만 바라보고(0.99), \(W_Q\)는 그 축을 거의 무시한다(-0.05) — 직교성 손실이 만들어낸 결과다. 각 head의 점수를 계산해보자.
| 응답 | \(r^Q = W_Q \cdot h\) | \(r^L = W_L \cdot h\) | \(r^Q + r^L\) (RM 학습용) |
|---|---|---|---|
| \(y_1\) (짧고 알찬 답변) | \(0.95(0.9)+0.30(0.1)-0.05(0.2) = 0.875\) | \(0.05(0.9)-0.05(0.1)+0.99(0.2) = 0.238\) | \(1.113\) |
| \(y_2\) (길고 반복적인 답변) | \(0.95(0.5)+0.30(0.1)-0.05(0.9) = 0.460\) | \(0.05(0.5)-0.05(0.1)+0.99(0.9) = 0.911\) | \(1.371\) |
여기서 흥미로운 반전이 보인다. 합산 reward \(r^Q+r^L\)만 보면 길고 반복적인 \(y_2\)(1.371)가 짧고 알찬 \(y_1\)(1.113)보다 높다 — vanilla RM이 흔히 빠지는 길이 함정을 그대로 재현한 셈이다. 하지만 RL에는 \(r^Q\)만 넘어간다.
\[r^Q(y_1) = 0.875 \; > \; r^Q(y_2) = 0.460\]quality head만 놓고 보면 순위가 뒤집힌다. 짧고 알찬 \(y_1\)이 이긴다. 정책은 바로 이 \(r^Q\)를 최적화 목표로 받기 때문에, 길이를 늘려 점수를 벌 수 있는 지름길 자체가 존재하지 않는다.
Experiments
실험 세팅
RM과 RL 정책 모두 vicuna-7b-v1.5(7B)에서 초기화한다. 선호 데이터는 OpenAssistant를 대화 형식으로 전처리해 순위가 매겨진 응답 집합에서 가능한 모든 쌍을 뽑았고, RM 학습에 22,065건, RL 프롬프트로 7,494건을 썼다. 학습 인프라는 DeepSpeed-Chat과 HuggingFace Transformers, 8×A100 80GB다. RL 알고리즘은 PPO와 ReMax 두 가지를 모두 실험했고, DPO는 별도로 재구현해 비교군으로만 사용했다.
RM 자체의 길이 상관: 0.451 → -0.03
OpenAssistant 테스트셋(참고로 이 중 66%는 chosen 응답이 rejected보다 길다)에서 RM의 점수와 길이 사이 상관을 측정한 결과다.
| RM | Pearson \(\rho\) | Kendall \(\tau\) | Spearman \(r_s\) | 검증 정확도 |
|---|---|---|---|---|
| Vanilla RM | 0.451 | 0.422 | 0.338 | 70.1% |
| ODIN (\(\lambda_L{=}1.0, \lambda_O{=}0.0\)) | -0.05 | -0.04 | -0.05 | 70.1% |
| ODIN (\(\lambda_L{=}1.0, \lambda_O{=}1.0\)) | -0.03 | 0.008 | 0.006 | 69.2% |
세 상관계수 모두 0 근처로 무너진다. 특히 눈여겨볼 대목은, 학습 손실 \(\mathcal{L}^L_\theta\)는 Pearson 상관만 직접 겨냥했는데도 Kendall \(\tau\), Spearman \(r_s\) 같은 순위 기반 상관까지 함께 사라졌다는 점이다. 이건 위에서 지적한 “선형 페널티는 선형 상관만 지운다”는 한계를 ODIN이 넘어섰다는 증거다. 정확도는 70.1%에서 69.2%로 1%p 남짓만 떨어져, 길이 상관을 지우는 대가가 크지 않았다.
직교성 손실(\(\lambda_O=1.0\))을 켜면 Pearson 자체는 큰 차이가 없지만(-0.05 → -0.03), Kendall·Spearman이 0에 더 가까워지고, 뒤에서 볼 최종 RL 정책 품질도 더 좋아진다. 아래 표는 “chosen이 더 긴 경우”와 “rejected가 더 긴 경우”로 나눈 정확도다.
| RM | chosen이 더 긴 경우 정확도 | rejected가 더 긴 경우 정확도 |
|---|---|---|
| Vanilla RM | 86.8% | 39.3% |
| ODIN (\(\lambda_O{=}0.0\)) | 83.3% | 44.8% |
| ODIN (\(\lambda_O{=}1.0\)) | 82.4% | 45.4% |
vanilla RM은 “chosen이 더 길면” 잘 맞히고 “rejected가 더 길면” 절반도 못 맞힌다 — 길이만 보고 찍는 것과 다를 바 없는 패턴이다. ODIN은 두 상황에서 정확도가 훨씬 균형 잡혀 있다. 쉬운 쪽(chosen이 김) 정확도를 조금 내주고, 어려운 쪽(rejected가 김에도 정답을 맞혀야 하는 경우)의 정확도를 크게 끌어올린 것이다.
정책 품질: Pareto front로 본 win score

위 그림(논문 Figure 2)은 GPT-4를 심판으로 쓴 win score를 응답 길이에 대해 그린 산점도다. win score는 다음처럼 정의된다.
\[\text{Win Score} = 50 + 100 \times \frac{n_{win} - n_{lose}}{n}\]\(n_{win}, n_{lose}\)는 비교 대상(SFT 초기화 모델) 대비 이기고 진 샘플 수, \(n\)은 전체 비교 수다. 50이면 무승부, 100이면 전승이다. 그림에서 ODIN(PPO)과 ODIN(ReMax) 곡선은 vanilla RM으로 학습한 PPO/ReMax 곡선보다 같은 길이 구간에서 일관되게 위에 있고, 특히 길이 210토큰 이상 구간에서 그 격차가 뚜렷하다. 길이 240토큰 근방에서 ODIN(PPO)은 GPT-3.5-turbo에 근접하는 win score(약 95)를 찍는 반면, 같은 길이의 vanilla RM 기반 PPO*는 그 수준에 훨씬 못 미친다. 즉 “같은 길이를 쓴다면 ODIN이 이긴다”는 것이 이 그림의 메시지다 — 길이 축을 없앤 게 아니라, 같은 길이 예산 안에서 quality를 더 짜낸 것이다.
GPT-4 평가와 사람 평가

위 그림(논문 Figure 6)은 길이를 맞춰놓은 상태에서 ODIN 기반 정책과 vanilla RM(+길이 페널티) 기반 정책을 직접 맞대결시킨 결과다. GPT-4 심판(포지션 편향 통제, 2-pass)과 사람 평가(대학생 평가자 8명, 그룹당 LIMA 60개 프롬프트, 샘플당 최소 3인 평가) 양쪽 모두에서 ODIN이 이기는 비율(짙은 막대)이 지는 비율(옅은 막대)보다 꾸준히 높다. 예를 들어 ReMax·사람 평가 기준 길이 260토큰 구간에서는 승률이 약 58%, 무승부 약 17%, 패배 약 25%로 ODIN이 크게 앞선다.
하이퍼파라미터 그리드서치를 대체한다
논문은 KL 강도 \(\beta\), PPO clip 범위 \(\epsilon\), off-policy 배치 크기, reward clipping 임계값 \(c\)를 각각 스윕한 별도 실험도 진행했는데, 어느 조합을 골라도 vanilla RM 계열은 “길이를 늘려 점수를 버는” 패턴에서 근본적으로 못 벗어났다. 반대로 ODIN은 이런 RL 쪽 하이퍼파라미터를 추가로 건드리지 않고도 더 나은 Pareto front를 보였다. RM 학습 단계에서 문제를 미리 풀어두면, RL 단계의 하이퍼파라미터 탐색 부담 자체가 줄어든다는 뜻이다.
부수 효과: 다른 벤치마크는 유지되고, 사실성은 오히려 개선
| 벤치마크 | SFT 초기값 | ODIN(230) | Vanilla(230) | ODIN(260) | Vanilla(260) |
|---|---|---|---|---|---|
| BBH | 36.92 | 37.07 | 36.94 | 37.10 | 37.55 |
| DROP | 29.02 | 29.05 | 28.70 | 28.94 | 28.27 |
| MMLU | 49.81 | 49.86 | 49.85 | 49.87 | 49.96 |
| TruthfulQA (mc1) | 32.68 | 34.64 | 33.90 | 34.63 | 33.66 |
괄호 안 숫자는 해당 정책이 생성한 평균 응답 길이(토큰)를 맞춘 구간이다. BBH·DROP·MMLU는 ODIN과 vanilla 사이에 유의미한 차이가 없어, 길이 상관을 지운다고 다른 능력이 희생되지는 않았음을 보여준다. TruthfulQA(mc1)만은 ODIN이 매 길이 구간에서 일관되게 vanilla보다 높다 — 장황하게 둘러대는 대신 사실에 부합하는 답을 내놓는 경향이 강해졌다는 정황이다.
ArmoRM과 비교하면: 축을 더할 것인가, 하나를 버릴 것인가
7편에서 다룬 ArmoRM도 “reward를 여러 성분으로 나눈다”는 점에서 ODIN과 닮았다. 하지만 둘의 철학은 정반대 방향을 향한다.
| 항목 | ArmoRM (7편) | ODIN (본 편) |
|---|---|---|
| 분해하는 이유 | 정직성·장황함·안전성 등 여러 해석 가능한 축을 모두 살려서 상황별로 조합하기 위해 | 길이라는 한 축을 골라내 RL에서 버리기 위해 |
| head/expert 구조 | 다차원 절대 평가(absolute rating)를 예측하는 다목적 head + Mixture-of-Experts 게이팅 네트워크 | quality/length 2개 head, 게이팅 없음 |
| 학습 신호 | 축마다 사람이 매긴 절대 점수(예: honesty, verbosity 등) | pairwise 선호 데이터 하나(OpenAssistant)에서 길이 상관·직교성 손실로 자기지도적으로 분리 |
| RL에 최종적으로 넘기는 값 | 게이팅 네트워크가 문맥에 맞게 여러 축을 가중합한 스칼라 | quality head 단독, 나머지는 폐기 |
| 강점 | 해석 가능성 + 다목적 최적화. 새로운 축을 추가하기 쉬움 | 구조가 단순하고 RL에 새 하이퍼파라미터가 없음 |
| 약점 | 축이 늘어날수록 게이팅 학습이 복잡해지고, 애초에 정의하지 않은 hacking 축은 여전히 못 잡음 | 길이 외의 축(형식, 반복 등)은 아예 다루지 않음 — 애초에 “길이”라는 축을 미리 지정해야 함 |
정리하면 ArmoRM은 “reward를 쪼개서 더 많이 쓰는” 접근이고, ODIN은 “reward를 쪼개서 일부를 버리는” 접근이다. 둘 다 단일 스칼라 reward의 한계를 head 여러 개로 풀지만, ArmoRM은 다양성을 보존하는 쪽, ODIN은 특정 hacking 신호를 제거하는 쪽으로 설계 목적이 갈린다.
Conclusion
한 줄로 요약하면: ODIN은 reward model에 quality/length 두 head를 두고, 상관계수 손실과 직교성 손실로 둘을 분리한 뒤, RL에는 quality head만 넘겨서 길이 hacking을 원천에서 차단한다. 핵심을 정리하면,
- 문제: RM은 길이와 quality를 구분하지 못하고 섞어서 배운다(Pearson \(\rho = 0.451\)). RL 단계의 사후적 길이 페널티는 움직이는 공분산을 못 쫓아가고 선형 상관만 지운다.
- 해법: 같은 backbone 위에 quality head와 length head를 두고, 길이-상관 손실 \(\mathcal{L}^L_\theta\)과 직교성 손실 \(\mathcal{L}^O_\theta\)로 둘을 분리한다. weight normalization으로 “head를 죽여서 손실을 회피하는” 붕괴를 막는다. RL에는 quality head만 쓴다.
- 효과: Pearson 상관이 0.451 → -0.03으로, Kendall·Spearman도 0 근처로 떨어진다. RM 정확도 손실은 1%p 남짓. 같은 응답 길이 기준으로 win score Pareto front가 vanilla RM보다 일관되게 위에 있고, TruthfulQA는 오히려 개선된다.
- 부채: 논문 스스로 “다른 종류의 hacking으로 ODIN을 확장·평가하는 것은 흥미로운 향후 방향”이라 못 박는다. 길이라는 미리 지정된 축 하나만 제거했을 뿐, 형식적 표현 패턴이나 반복 같은 다른 hacking 축은 여전히 무방비다. 애초에 “무엇을 제거할지” 사람이 지정해야 한다는 전제 자체가 한계다.
13편이 다루는 WARM은 이 부채를 정반대 방향에서 공략한다. 특정 hacking 축을 미리 지정하고 head를 나누는 대신, 여러 개의 독립적으로 학습된 reward model 가중치를 평균내어 어떤 축이 hacking에 취약한지 모르는 상태에서도 일반적으로 방어하려는 시도다. ODIN이 “이미 알고 있는 적(길이)을 정조준”했다면, WARM은 “누가 적인지 몰라도 버티는 방법”을 찾는다.
RLHF Reward 설계 시리즈
이 글은 RLHF Reward 설계 시리즈의 열두 번째 글이다.
1부. 지형도
- Deep RL from Human Preferences (Christiano 2017) — 선호로 보상을 배우는 원형
- InstructGPT (Ouyang 2022) — RLHF 3단계 표준 레시피
- HH-RLHF (Bai 2022) — helpful·harmless preference model
2부. 스칼라 RM 해부
- Rethinking Bradley-Terry (2024) — reward 변환의 수학적 기반
- Secrets of RLHF II (2024) — 선호 데이터 노이즈와 RM 일반화
- Skywork-Reward (2024) — 데이터 큐레이션이 아키텍처를 이긴다
- ArmoRM (2024) — 다목적 분해와 MoE 게이팅
- Llama 2 (2023) — helpfulness·safety RM 분리 프로덕션 레시피
- RewardBench 2 (2025) — RM을 어떻게 평가할 것인가
3부. Reward Hacking
- Overoptimization Scaling Laws (2022) — Goodhart의 법칙 정량화
- Length Correlations in RLHF (2023) — 성능 향상의 얼마가 길이인가
- (현재 글) ODIN (2024) — 길이를 reward에서 분리
- WARM (2024) — weight averaging으로 hacking 방어
4부. reward를 정책으로
- PPO (2017) — clipped surrogate objective
- Secrets of RLHF I (2023) — PPO 학습 안정화 트릭
- GRPO / DeepSeekMath (2024) — value network를 버리다
- RLOO (2024) — REINFORCE로 충분한가
- DPO (2023) — reward를 없애면 어떻게 되는가
5부. Process & Verifiable Reward
- Let’s Verify Step by Step (2023) — 과정 감독이 결과 감독을 이긴다
- Math-Shepherd (2023) — 사람 라벨 없는 PRM
- DeepSeek-R1 (2025) — RLVR, 규칙이 reward가 될 때
6부. Generative Reward Model
- Generative Verifiers (2024) — reward를 next-token prediction으로
- Generative Reward Models (2024) — GenRM과 선호 학습의 결합
- DeepSeek-GRM / SPCT (2025) — inference-time scaling
- Rubrics as Rewards (2025) — 비검증 도메인으로
- One Token to Fool LLM-as-a-Judge (2025) — GenRM도 뚫린다
참고 문헌
- Chen et al., 2024. ODIN: Disentangled Reward Mitigates Hacking in RLHF. ICML 2024.
- PMLR: ODIN official proceedings page — venue·저자 소속 확인.
- ar5iv: ODIN (HTML rendering) — 본문 그림 원본.
- GitHub: lichang-chen/odin — 공식 구현.
- Singhal et al., 2023. A Long Way to Go: Investigating Length Correlations in RLHF. COLM 2024. (11편 및 ODIN이 비교하는 길이 페널티 베이스라인의 출처)
- Wang et al., 2024. Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts. EMNLP Findings 2024. (7편 ArmoRM, 비교 대상)
- Salimans, T. and Kingma, D. P., 2016. Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks. (ODIN이 head 붕괴를 막는 데 쓴 기법)
- Schulman et al., 2017. Proximal Policy Optimization Algorithms. (ODIN이 사용한 RL 알고리즘 중 하나)
Enjoy Reading This Article?
Here are some more articles you might like to read next: