ArmoRM: 하나의 스칼라를 해석 가능한 여러 축으로 쪼개다
Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts (Wang et al., UIUC, EMNLP Findings 2024)
Introduction
이 시리즈 #3 HH-RLHF 글은 정확히 이런 실험을 보여줬다. helpfulness와 harmlessness를 각각 100% 비율로만 학습시키면 반대 축의 정확도가 찍기(chance)보다 낮아질 정도로, 두 목표를 하나의 preference model 스칼라에 밀어 넣으면 서로를 갉아먹는다. 저자들 스스로도 “harmlessness는 과최적화되고 helpfulness는 과소최적화된다”고 진단했을 뿐, 이 텐션 자체를 구조적으로 풀지는 못했다.
이 글이 다루는 ArmoRM은 그 질문에 대한 첫 번째 정면 답변이다. 질문을 한 단계 더 일반화하면 이렇게 된다. helpful·harmless 두 축만 문제가 아니다. 정직함(honesty), 장황함(verbosity), 안전성(safety), 코드 품질처럼 사람이 실제로 신경 쓰는 축은 훨씬 많다. 그런데 기존 reward model(RM)은 이 모든 축의 평가를 단 하나의 숫자로 뭉갠다. 그 숫자가 4.7이든 −2.13이든, “왜 이 응답이 저 응답보다 높은 점수를 받았는가”는 RM 안을 열어봐도 알 수 없다. 이게 이 논문이 Introduction에서 던지는 문제, RM의 블랙박스성(black-box nature)이다.
대학 성적표를 떠올리면 이 문제가 손에 잡힌다. “평점 3.8”이라는 숫자 하나는 수학을 잘하는지, 글쓰기를 잘하는지, 아니면 그냥 학점 잘 주는 과목만 골라 들었는지 전혀 구분해주지 않는다. RM의 스칼라 점수도 마찬가지다. 어떤 응답이 8.3점을 받았을 때, 그게 정확해서인지 예의 발라서인지 그냥 길어서인지 점수 하나로는 알 길이 없다. 그리고 실제로 후자 — verbosity bias, 즉 RM이 내용과 무관하게 긴 응답을 선호하는 현상 — 가 널리 관찰된 사례다. 이 verbosity 문제는 이 시리즈 뒷부분 #11 Length Correlations와 #12 ODIN에서 정면으로 다룬다. 이 글은 그 문제를 애초에 reward를 설계하는 단계에서 어떻게 완화하려 했는가의 관점에서 짚는다.
ArmoRM의 해법은 두 단계다.
- 다목적 절대평가 reward model(Absolute-Rating Multi-Objective Reward Model, ArmoRM): honesty, verbosity, safety 같은 사람이 이름 붙일 수 있는 목표마다 독립된 차원을 두고, pairwise 선호가 아니라 절대 점수(absolute rating) 데이터로 학습한다. 이 학습 방식이 기존 Bradley-Terry pairwise 학습과 근본적으로 다른 이유는 Background에서, 그 수학적 배경은 #4 Rethinking Bradley-Terry 글에서 더 다룬다.
- Mixture-of-Experts(MoE) 게이팅: 19개 목표의 점수를 프롬프트 문맥에 따라 자동으로 가중합하는 작은 게이팅 네트워크를 얹는다. 안전이 중요한 질문에는 safety 축에, 수학 문제에는 정확성 축에 자동으로 가중치가 쏠린다.
결과를 먼저 보면, 8B 파라미터짜리 ArmoRM-Llama3-8B는 RewardBench에서 89.0점을 받아 GPT-4 Turbo를 judge로 쓴 LLM-as-a-judge 방식(84.2점)을 4.8점 차로 앞섰고, 파라미터가 약 42배 많은 Nemotron-4 340B reward model(89.3점)에 0.3점 차이로 근접했다. 저자들은 이 결과를 논문에서 직접 “이 접근법의 힘과 가능성을 보여준다”고 표현한다.
이 시리즈에서 reward를 “쪼개는” 접근이 하나 더 있다. #8 Llama 2는 helpfulness RM과 safety RM을 아예 별도로 학습시키고 규칙 기반으로 결합한다. ArmoRM은 하나의 백본에서 여러 축을 동시에 회귀하고 학습된 게이팅으로 결합한다는 점에서 접근이 다르다. 이 차이는 Method 절 마지막에 표로 비교한다.
Background
절대 점수 vs 상대 선호 — 정보가 어디서 사라지는가
#1 Christiano 글부터 이어져 온 표준 RM 학습법은 Bradley-Terry(BT) 손실이다. 사람이 응답 A, B 중 A를 선호했다는 이진 라벨만 주면, \(r_\theta(A) > r_\theta(B)\)가 되도록 RM을 학습한다. 이 방식의 강점은 라벨링이 쉽다는 것이지만, 대가도 있다 — 응답 A, B의 품질 차이가 크든 작든 라벨은 똑같이 “A가 이겼다”는 1비트뿐이다.
문제는 최근 고품질 데이터셋 상당수가 원래 절대 점수(absolute rating)로 수집된다는 데 있다. 예를 들어 UltraFeedback은 응답마다 Overall Score, Instruction Following, Truthfulness, Honesty, Helpfulness 5개 축에 각각 세밀한 점수(대략 1~10점 스케일)를 매긴다. 이 데이터를 BT 학습에 쓰려면 각 축의 점수를 평균 내 이진 선호로 뭉개는(binarize) 과정을 거쳐야 한다. 그런데 점수 1:5로 벌어진 쌍과 2:3으로 근소하게 벌어진 쌍이 이진화 이후엔 완전히 같은 라벨(“전자가 이겼다”)이 된다. 원래 데이터에 있던 정도(degree) 정보가 이진화 과정에서 통째로 사라지는 것이다.
ArmoRM의 첫 번째 선택은 이 이진화 자체를 건너뛰는 것이다. 각 목표의 원래 절대 점수를 회귀(regression) 목표로 직접 쓴다. 그러면 자연히 목표별로 독립된 차원이 생기고, 그 차원 각각에 이름(honesty, verbosity, safety…)이 붙는다. 이게 해석 가능성의 출발점이다.
“왜 이 점수를 받았나”에 답할 수 있어야 하는 이유
논문이 인용하는 사고 실험이 있다. 만약 RM이 “이 응답에 높은 점수를 준 이유는 40%가 helpfulness, 60%가 길이 때문”이라고 설명해줄 수 있다면 어떨까. 그 순간 우리는 이 RM이 verbosity bias를 가지고 있다는 걸 눈으로 확인할 수 있고, 나아가 “길이 요인은 빼고 helpfulness 100%로만 채점해라”라고 고쳐 쓸(debug) 수도 있다. 반면 블랙박스 스칼라 RM은 이런 진단도 수정도 불가능하다. 이게 논문이 말하는 interpretable(해석 가능)과 debuggable(디버깅 가능)의 차이다. RM이 사람 선호의 대리인(proxy) 역할을 하는 이상, 그 대리인의 내부 판단 과정이 사람의 판단과 일치하는지 검증할 수 있어야 하고, 그래야 정책이 RM의 허점을 파고드는 reward hacking을 막을 여지가 생긴다.
이 관찰을 표로 정리하면 다음과 같다.
| 항목 | 기존 스칼라 RM (BT) | ArmoRM |
|---|---|---|
| 학습 라벨 | pairwise 이진 선호 | 목표별 절대 점수(연속값) |
| 출력 | 스칼라 1개 | \(k=19\)차원 벡터 + 스칼라 |
| “왜 이 점수인가” 질문 | 답할 수 없음 | 목표별 기여도로 답 가능 |
| 목표 간 충돌(#3의 텐션) 다루는 법 | 데이터 비율/손실 가중치 조정 | 문맥별 가중치를 학습(Method 참고) |
Method

위 그림(논문 Figure 1)이 전체 구조다. LLM backbone \(f_\theta\)가 프롬프트+응답을 인코딩하면, 그 위에 얹힌 회귀층이 19차원 목표 점수를 뽑아내고(Stage 1), 프롬프트만 다시 보는 게이팅층이 그 19차원을 하나의 스칼라로 합친다(Stage 2). 두 단계를 순서대로 따라가 보자.
Stage 1 — 다목적 절대평가 회귀
프롬프트 \(x\)(이전 대화 맥락 포함), 응답 \(y\), 그리고 \(k\)차원 절대 점수 벡터 \(r \in \mathbb{R}^k\)로 이뤄진 학습 예제를 생각하자. 사전학습된 디코더 전용 LLM에서 마지막 출력층을 떼어내 특징 추출기 \(f_\theta\)로 쓰고, \((x, y)\)를 이어붙여 통과시킨 뒤 마지막 토큰의 마지막 디코더 층 hidden state를 \(d\)차원 특징으로 취한다. 그 위에 새 선형 회귀층 \(w \in \mathbb{R}^{d \times k}\)를 얹어 \(k\)차원 점수를 예측한다. 학습 목표는 다음 회귀 손실이다.
\[\min_{\theta, w} \mathbb{E}_{x,y,r \in D} \lVert w^\top f_\theta(x \oplus y) - r \rVert_2^2\]기호를 하나씩 풀면:
- \(x \oplus y\): 프롬프트와 응답을 이어붙인 시퀀스.
- \(f_\theta(x \oplus y)\): 그 시퀀스를 LLM에 통과시켜 얻은 \(d\)차원 특징 벡터(마지막 토큰 hidden state).
- \(w^\top f_\theta(x \oplus y)\): 특징을 선형 회귀층에 통과시켜 얻은 \(k\)차원 예측 점수 벡터.
- \(r\): 그 예제의 실제 \(k\)차원 절대 점수(정답 라벨).
- \(\lVert \cdot \rVert_2^2\): 예측과 정답 사이의 제곱 오차 — 평범한 MSE 회귀다.
수식만 보면 평범한 다중 출력 회귀지만, 어디서 목표(objective)를 가져오느냐가 이 단계의 핵심이다. 8개 데이터셋에서 총 \(k=19\)개의 사람이 이름 붙일 수 있는 목표를 모았다.
| 데이터셋 | 데이터 규모 | 목표(objective) |
|---|---|---|
| HelpSteer | 35k | helpfulness, correctness, coherence, complexity, verbosity |
| UltraFeedback | 240k | overall-score, instruction-following, truthfulness, honesty, helpfulness |
| BeaverTails-30k | 30k | is-safe |
| CodeUltraFeedback | 50k | code-complexity, code-style, code-explanation, code-instruction-following, code-readability |
| Prometheus | 200k | score |
| Argilla-Capybara | 15k | overall-quality |
| Argilla-OpenOrca | 13k | judge-lm |
| Argilla-Math-Preference | 2.4k | (UltraFeedback의 instruction-following 공유) |
총 약 585k개의 절대 점수 예제, 19개 축이다. 여기서 실무적으로 까다로운 문제 세 가지를 저자들이 명시적으로 짚는다. 첫째, HelpSteer는 0~4점, UltraFeedback은 1~10점처럼 데이터셋마다 척도가 달라 전부 0~1로 선형 변환했다. 둘째, HelpSteer의 helpfulness와 UltraFeedback의 helpfulness처럼 이름이 겹치는 축도 서로 다른 채점자(사람 vs GPT-4)와 다른 rubric을 썼다는 이유로 별도 차원으로 유지했다. 셋째, 각 예제는 자기 출신 데이터셋의 축에만 라벨이 있으므로(예: HelpSteer 예제는 UltraFeedback 축 라벨이 없음), 손실 계산 시 결측 차원은 그냥 무시한다.
학습 자체는 놀랍도록 가볍다. Llama-3 8B를 BT 방식으로 이미 파인튜닝한 FsfairX-LLaMA3-RM-v0.1에서 시작해, 트랜스포머 층은 전부 얼리고 새로 붙인 선형 회귀층만 학습시키는 linear probing을 썼다. 전체 파인튜닝(LP-FT)도 시도했지만 뚜렷한 성능 향상이 없어 이 단순한 방식을 택했다고 밝힌다. 덕분에 이 단계는 특징을 한 번 뽑아 저장해두면 CPU에서 scikit-learn 회귀 solver로 끝낼 수 있을 만큼 저렴하다.
Stage 2 — MoE 게이팅: 왜 고정 가중치가 아니라 문맥 의존 가중치인가
19차원 점수를 얻었다고 끝이 아니다. 랭킹을 매기려면 결국 스칼라 하나가 필요하다. 가장 단순한 방법은 고정된 선형 가중합이다. 그런데 고정 가중치는 상황을 가리지 않는다는 문제가 있다. 저자들이 든 예를 그대로 옮기면, 위험한 응답을 유도하기 쉬운 프롬프트에서는 safety 축에 큰 가중치를 줘야 하지만, 수학 문제 풀이를 돕는 프롬프트에서는 safety 축이 거의 쓸모없고 helpfulness 계열 축이 중심이 돼야 한다.
일상 비유: 맞춤 스타일리스트를 떠올려보자. 결혼식 정장을 고를 땐 “격식”에 가중치를 크게 두고 “통기성”은 거의 무시하지만, 헬스장에 갈 옷을 고를 땐 정반대로 “통기성”이 핵심이고 “격식”은 무의미하다. 옷을 고르는 기준(축) 자체는 똑같지만, 상황(프롬프트)에 따라 그 기준에 매기는 중요도가 완전히 달라져야 한다. 고정 가중치는 결혼식이든 헬스장이든 항상 같은 비율로 격식과 통기성을 섞는 스타일리스트와 같다.
그래서 ArmoRM은 프롬프트 \(x\)만 보고 19개 축의 가중치를 내놓는 게이팅 네트워크 \(g_\phi\)를 학습한다.
\[g_\phi: \mathbb{R}^d \to \{v \in \mathbb{R}^k \mid v_i \geq 0, \sum_i v_i = 1\}\]기호를 풀면 \(g_\phi\)는 프롬프트 특징 \(f_\theta(x)\)(마지막 토큰 hidden state, \(d\)차원)를 입력받아 음이 아니고 합이 1인 \(k\)차원 벡터(단체, simplex 위의 점)를 출력하는 함수다. 구현은 은닉층 3개(각 1024 유닛, ReLU) 뒤에 softmax를 얹은 얕은 MLP다. 여기서 흥미로운 효율성 포인트가 하나 있다. \(f_\theta(x)\)는 \(f_\theta(x \oplus y)\)를 계산하는 forward pass의 앞부분 그대로이므로, 게이팅을 위해 별도로 프롬프트만 다시 인코딩할 필요가 없다 — “공짜로 딸려 나온다.”
Verbosity 편향을 명시적으로 제거하기
문제가 하나 남는다. 19개 축 대부분이 verbosity(장황함)와 강하게 상관돼 있다. 게이팅 계수가 전부 음이 아니므로, 이 상관을 그대로 두면 어떤 축에 가중치를 줘도 결국 verbosity 편향이 최종 점수에 새어 들어간다. 이를 막기 위해 각 축 \(r_i\)를 verbosity 축 \(r_{\mathrm{verbose}}\)(HelpSteer의 verbosity 점수)로 명시적으로 보정한다.
\[r_i' \leftarrow r_i - \lambda_i r_{\mathrm{verbose}}\] \[\mathrm{Corr}_{\mathcal{D}}(r_i', r_{\mathrm{verbose}}) = 0\]- \(\lambda_i\): 축 \(i\)마다 정해지는 보정 계수.
- \(\mathcal{D}\): 보정 계수를 정할 때 쓰는 기준 데이터 분포 — 여기선 이진화된 UltraFeedback 61k 샘플.
- \(\mathrm{Corr}_{\mathcal{D}}(r_i', r_{\mathrm{verbose}})\): 보정된 축 \(r_i'\)와 verbosity 점수 사이의 Spearman 상관계수.
즉 \(\lambda_i\)는 “보정 후 이 축과 verbosity의 상관관계가 정확히 0이 되도록” 역산해서 구한다. 보정된 벡터를 \(r' \in \mathbb{R}^k\)라 하면, 최종 스칼라 reward는 다음과 같다.
\[R = g_\phi(f_\theta(x))^\top r'\]게이팅 가중치 벡터와 verbosity 보정을 마친 점수 벡터의 내적이 최종 점수다. 이 게이팅 층은 backbone과 회귀층을 얼린 채로, BT 손실로 학습한다.
\[\min_{\phi, \beta} \mathbb{E}\left[ -\log \frac{\exp(\beta R_{\mathrm{chosen}})}{\exp(\beta R_{\mathrm{chosen}}) + \exp(\beta R_{\mathrm{rejected}})} \right]\]\(R_{\mathrm{chosen}}\), \(R_{\mathrm{rejected}}\)는 같은 프롬프트에 대한 선호/비선호 응답 각각의 점수다. \(\beta \in \mathbb{R}\)는 100으로 초기화되는 학습 가능한 스케일 변수인데, \(R\)이 \([0,1]\) 근방의 값들을 볼록결합한 작은 스케일을 갖기 쉬워서, 이 스케일을 키워줘야 BT 확률이 응답 간 미세한 점수 차이에도 민감하게 반응한다. 학습 데이터는 HelpSteer·UltraFeedback·SHP·HH-RLHF·PKU-SafeRLHF-30K 등 10개 pairwise 선호 데이터셋, 약 100만 쌍이다. backbone이 완전히 얼려져 있어 게이팅 학습은 A6000 GPU 한 장으로 끝난다(AdamW, lr 0.001, 10,000 스텝, 배치 1024).
토이 예제 — 게이팅이 실제로 어디에 가중치를 주는가
저자들이 공개한 코드 데모에 실제 숫자가 있다. HelpSteer 검증셋의 한 예제를 보자.
- 프롬프트:
"What are some synonyms for the word 'beautiful'?" - 응답:
"Nicely, Beautifully, Handsome, Stunning, Wonderful, Gorgeous, Pretty, Stunning, Elegant" - HelpSteer 5축 실제 라벨(helpfulness, correctness, coherence, complexity, verbosity): \([3, 3, 4, 2, 2]\)
- ArmoRM이 예측한 값(같은 축, 원래 0~4 스케일로 역변환): 약 \([2.78, 2.86, 3.48, 1.38, 1.30]\)
회귀 예측이 정답과 크게 어긋나지 않는다 — helpfulness·correctness·coherence는 오차 0.5 이내, complexity·verbosity는 다소 과소추정하지만 방향은 맞다.
이제 이 응답의 최종 점수에 실제로 기여한 축을 보자. 게이팅 출력에 verbosity 보정 변환까지 반영한 19개 유효 계수 중 절댓값 상위 3개는 다음과 같다.
| 순위 | 축(objective) | 유효 계수 |
|---|---|---|
| 1 | code-complexity | \(+0.199\) |
| 2 | helpsteer-verbosity | \(-0.109\) |
| 3 | ultrafeedback-instruction_following | \(+0.079\) |
단어 뜻풀이 질문인데 code-complexity 축의 계수가 가장 크다는 게 언뜻 낯설다. 하지만 이 예제가 보여주는 진짜 요점은 “직관적으로 말이 되는 축이 1등이냐”가 아니라, 애초에 이 질문 자체를 던질 수 있다는 것이다. BT 스칼라 RM이라면 이 응답이 왜 특정 점수를 받았는지 물어볼 방법 자체가 없다. ArmoRM은 “19개 축 중 이 세 개가 가장 크게 기여했고, verbosity 축의 계수는 음수라서 장황할수록 오히려 점수가 깎였다”까지 숫자로 답한다. 바로 이 지점이 Introduction에서 짚은 “40% helpfulness, 60% 길이” 사고 실험이 실제 모델에서 재현된 예다.
ArmoRM vs Llama 2 — reward를 쪼개는 두 가지 방식
이 시리즈 #8 Llama 2도 helpfulness와 safety를 분리한다. 하지만 방식이 근본적으로 다르다. Llama 2는 helpfulness RM과 safety RM을 처음부터 완전히 별개로 학습시키고, PPO 보상 신호를 다음 규칙으로 조합한다 — 안전 민감 프롬프트로 태깅됐거나 safety RM 점수 \(R_s\)가 0.15 미만이면 \(R_s\)만 쓰고, 그 외에는 helpfulness RM 점수 \(R_h\)만 쓴다. 사람이 정한 0.15라는 임계값과 이진 스위치가 결합 규칙이다.
| 항목 | ArmoRM (#7) | Llama 2 (#8) |
|---|---|---|
| 목표 분해 | 하나의 backbone에서 19축을 동시 회귀 | helpfulness RM, safety RM을 완전히 별개로 학습 |
| 결합 방식 | 학습된 게이팅 네트워크가 연속값 가중치(simplex) 산출 | 사람이 정한 0.15 임계값 기반 이진 스위치 |
| 새 목표 추가 비용 | 회귀층 출력 차원만 늘리면 됨(backbone 재사용) | 목표마다 RM을 통째로 새로 학습 |
| 문맥 반영 | 프롬프트별로 연속적으로 변함 | “안전 민감이냐 아니냐”의 이분법 |
| 해석 가능성 | 축별 점수 + 게이팅 계수를 모두 관측 가능 | 두 RM 출력은 보이지만 결합 규칙은 고정된 수작업 규칙 |
두 접근 모두 “하나의 스칼라에 다 담지 말자”는 #3의 교훈에 대한 답이라는 점은 같다. 차이는 분리의 단위다. Llama 2는 축을 2개로 고정하고 결합을 사람이 짠 규칙에 맡기는 반면, ArmoRM은 축을 19개로 늘리고 결합 자체를 학습시킨다.
Experiments
RewardBench 결과
RewardBench는 Chat, Chat Hard, Safety, Reasoning 4개 주요 카테고리(가중치 1.0)와 Prior Sets 카테고리(가중치 0.5)로 구성된 가중평균 정확도 벤치마크다.
| 방법 | Base Model | Chat | Chat Hard | Safety | Reasoning | Prior Sets | Overall |
|---|---|---|---|---|---|---|---|
| HelpSteer2 RM | Nemotron-4 340B | 95.8 | 87.1 | 91.5 | 93.7 | 67.4 | 89.3 |
| ArmoRM + MoE | Llama-3 8B | 96.9 | 76.8 | 92.2 | 97.3 | 74.3 | 89.0 |
| HelpSteer2 RM | Llama-3 70B | 91.3 | 80.3 | 92.8 | 90.7 | 66.5 | 86.3 |
| Preference Model (SliC-HF) | Llama-3 8B | 98.3 | 65.8 | 89.7 | 94.7 | 74.6 | 85.7 |
| LLM-as-a-judge | GPT-4 Turbo | 95.3 | 74.3 | 87.2 | 86.9 | 70.9 | 84.2 |
| LLM-as-a-judge | GPT-4o | 96.6 | 70.4 | 86.7 | 84.9 | 72.6 | 83.3 |
| Bradley-Terry | Llama-3 8B | 99.4 | 65.1 | 87.8 | 86.4 | 74.9 | 83.6 |
| Bradley-Terry | Yi-34B | 96.9 | 57.2 | 88.2 | 88.5 | 71.4 | 81.4 |
세 가지가 눈에 띈다.
- 초기화 모델 대비 큰 폭 개선: ArmoRM의 시작점이었던
FsfairX-LLaMA3-RM-v0.1(표의 “Bradley-Terry, Llama-3 8B”, 83.6점)과 비교하면 다목적 회귀 + MoE 게이팅만으로 +5.4점 올랐다. backbone은 그대로 두고 학습 방식만 바꾼 결과다. - GPT-4 judge를 능가: GPT-4 Turbo를 judge로 쓴 LLM-as-a-judge(84.2점)보다 4.8점 높다. 저자들은 이를 “많은 어노테이션 작업에서 GPT-4의 더 저렴한 대체재로 쓸 수 있다”는 근거로 든다.
- 340B 모델에 근접: Nemotron-4 340B 기반 HelpSteer2 RM(89.3점)과 0.3점 차이다. 파라미터 수는 8B 대 340B로 약 42배 차이가 나는데, 격차는 거의 사라졌다.
카테고리별로 뜯어보면 그림이 더 뚜렷해진다. ArmoRM은 Reasoning(97.3)과 Safety(92.2)에서 강하고, Chat Hard(76.8)에서 base 모델(65.1) 대비 +11.7점으로 가장 크게 개선됐다. 반면 Chat 카테고리는 오히려 base 모델(99.4)보다 살짝 낮다(96.9). 여러 목표를 동시에 잘하려다 보니 가장 쉬운 카테고리에서 아주 근소하게 여유를 내준 셈인데, 그 대가로 어려운 카테고리(Chat Hard, Reasoning)에서 훨씬 크게 벌었다.
왜 이 결과가 “해석 가능성 → 성능”으로 이어지는가
이 결과에서 흥미로운 지점은, 해석 가능성을 위해 도입한 다목적 분해와 verbosity 디바이어싱이 부수적으로 RewardBench 점수까지 끌어올렸다는 것이다. 순수하게 정보 손실을 줄인 학습 방식(절대 점수 회귀)과 문맥별 재조합(MoE 게이팅)이 단일 스칼라 BT 학습보다 더 정확한 선호 예측기를 만든 셈이다. Toy 예제에서 본 것처럼 verbosity 축 계수가 음수로 나온다는 사실은, 단순히 “해석할 수 있다”는 선언에 그치지 않고 실제로 장황함에 대한 페널티가 최종 점수에 반영되고 있음을 보여준다. 다만 이 논문 자체에는 verbosity 디바이어싱 유무에 따른 정량적 ablation 표는 없다 — “얼마나 줄었는가”를 길이 상관계수로 직접 측정하는 작업은 #11 Length Correlations와 #12 ODIN이 이어받는다.
Conclusion
한 줄로 요약하면: ArmoRM은 스칼라 reward가 잃어버리던 “왜”라는 질문에, 19개의 이름 붙은 축과 문맥 의존 게이팅으로 답하면서, 그 부산물로 SOTA 성능까지 얻었다.
정리하면,
- 문제: 하나의 스칼라 reward는 목표 간 충돌(#3 HH-RLHF)도, verbosity 같은 편향의 원인도 설명하지 못한다.
- 해법: 절대 점수 데이터로 19개 해석 가능한 축을 회귀(#4 Rethinking Bradley-Terry가 다루는 pairwise 변환과 대비되는 방식)하고, 프롬프트 문맥에 따라 축의 가중치를 학습하는 MoE 게이팅으로 스칼라화한다. verbosity와의 상관을 0으로 만드는 명시적 보정도 곁들인다.
- 비용: 두 단계 모두 backbone을 얼린 채 얕은 층만 학습해 대단히 저렴하다 — Stage 1은 CPU 회귀, Stage 2는 GPU 한 장.
- 결과: ArmoRM-Llama3-8B는 RewardBench 89.0점으로 GPT-4 Turbo judge(84.2)를 넘고 340B짜리 Nemotron-4 RM(89.3)에 근접했다.
한계도 분명하다. 19개 축은 논문이 우연히 접근할 수 있었던 8개 데이터셋의 rubric에서 나온 것이지, “이것이 사람 선호를 이루는 완전한 축의 집합”이라는 보장은 없다. 게이팅이 산출하는 계수도 언제나 직관적으로 깔끔하게 해석되지는 않는다는 것을 토이 예제(code-complexity 축이 1위로 나온 사례)가 그대로 보여준다. 그리고 verbosity 하나만 명시적으로 디바이어싱했을 뿐, 다른 축들 사이의 숨은 상관관계는 그대로 남아 있다. 무엇보다, #8 Llama 2식의 완전 분리 RM과 ArmoRM식의 공유 backbone + 학습된 결합 중 어느 쪽이 프로덕션 환경에서 더 견고한지는 이 논문만으로는 답이 나오지 않는다. 두 접근을 #9 RewardBench 2가 어떻게 다시 평가하는지가 이어지는 질문이다.
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도 뚫린다
참고 문헌
- Wang, Xiong, Xie, Zhao, Zhang, 2024. Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts.
- ACL Anthology: Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts — EMNLP Findings 2024 공식 게재본(pp. 10582–10592, Miami, Florida).
- arXiv HTML: Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts — 본문 수식·표·Appendix 확인용.
- RLHFlow blog: Interpretable Preferences via Multi-Objective Reward Modeling and Mixture-of-Experts — 저자 직접 작성 해설 및 코드 데모(토이 예제 출처).
- HuggingFace: RLHFlow/ArmoRM-Llama3-8B-v0.1
- GitHub: RLHFlow/RLHF-Reward-Modeling
- Lambert et al., 2024. RewardBench: Evaluating Reward Models for Language Modeling.
- Touvron et al., 2023. Llama 2: Open Foundation and Fine-Tuned Chat Models. (helpfulness·safety RM 결합 규칙 확인)
- Wang et al., 2024. HelpSteer2: Open-source Dataset for Training Top-performing Reward Models. (Nemotron-4 340B reward model 출처)
- Cui et al., 2023. UltraFeedback: Boosting Language Models with Scaled AI Feedback.
- Singhal et al., 2023. A Long Way to Go: Investigating Length Correlations in RLHF. (verbosity bias 배경)
- 장원범, 2026. HH-RLHF: helpfulness와 harmlessness는 왜 충돌하는가. (이 글이 답하는 텐션의 출처)
Enjoy Reading This Article?
Here are some more articles you might like to read next: