LLM 심판의 수명 주기: 대규모로 만들고, 정렬하고, 모니터링하기

TMT

https://netflixtechblog.medium.com/the-lifecycle-of-llm-as-a-judge-building-aligning-and-monitoring-at-scale-c95bd8283508

들어가며

LLM으로 텍스트를 대규모로 생성하는 팀은 모두 같은 문제에 부딪힙니다. 모든 결과물을 사람이 직접 평가할 수는 없습니다. 어떤 출력이 훌륭하고 어떤 것이 평범하고 어떤 것이 해로운지 알 수 없습니다. 전부 읽어 볼 방법이 없기 때문입니다. 여기서 흔히 쓰는 해법이 LLM 심판(LLM-as-a-Judge)입니다. 사람 평가자를 대신해 첫 번째 모델의 출력에 점수를 매기는 두 번째 모델입니다. 빠르고 저렴하며 붙이기도 쉽습니다. 하지만 새롭고 중대한 질문이 하나 생깁니다. 평가자는 누가 평가할까요? 게다가 심판이 서서히 어긋나면서, 그러니까 조용히 성능이 떨어지고 나쁜 출력을 통과시키기 시작해도, 뒤쪽 어디에서도 이를 알려 주지 않습니다.

이 글은 저희가 그 문제를 어떻게 푸는지 다룹니다. LLM 심판을 만들고 사람과 정렬하고 계속 모니터링해서, 시간이 지나도 믿을 수 있게 유지하는 방법입니다. 핵심 원칙은 단순합니다. LLM 심판은 절대 혼자 돌아가서는 안 됩니다. 사람의 판단에 닻을 내려야 합니다. 그래서 저희는 수명 주기의 모든 단계에서 사람을 루프 안에 둡니다(human-in-the-loop, HITL). 사람이 '좋다'가 무엇인지 정하고, 심판을 학습시키고 검증할 라벨링된 벤치마크 데이터셋을 만들고, 심판이 시스템에서 돌아가는 동안 그 동작을 지켜보고, 변경 사항을 배포하기 전에 검토하고 승인합니다.

저희 생각은 이렇습니다.

믿을 수 있는 LLM 심판은 한번 만들어 두면 끝나는 산출물이 아닙니다. 수명 주기가 있습니다.

믿을 수 있는 사람 라벨을 기준으로 만들고, 사람의 선호와 추론에 정렬하고, 사람이 정한 정책 아래에서 운영하고, 데이터와 사용 패턴이 변하는 대로 유지 보수해야 합니다. 각 단계마다 책임지는 사람이 있습니다. 아래에서는 이 네 단계와 각 단계의 핵심 설계 결정, 그리고 직접 LLM 심판을 만드는 팀에 전하고 싶은 교훈을 하나의 구체적인 과제, 즉 추천 설명문을 예로 들어 설명합니다.

추천 설명문(recommendation explanation)은 추천된 작품에 함께 붙는 짧은 자연어 문구이고, 사용자가 추천 시스템을 어떻게 받아들이고 얼마나 믿을지를 좌우합니다. 저희 작업에서 설명문은 회원이 전에 본 작품을 근거로 이 작품을 추천했는지 사람이 읽을 수 있게 밝힌 근거이고, 작품 상세 페이지에 표시됩니다. 상세 페이지는 회원이 홈 화면에서 작품을 선택하면 들어가는 화면입니다. 저희는 유사도 기반 설명문에 집중합니다. 추천 작품과 회원이 이미 본 기준 작품 하나를 장르나 분위기 같은 공통 속성으로 이어 주는 방식입니다. 예를 들면 이렇습니다.

사랑과 새로운 시작을 그린, 웃음과 따뜻함이 있는 연말 로맨스. "My Secret Santa"와 많이 닮았습니다.

여기서 품질이 중요한 이유는, 오해를 부르거나 근거가 부실한 설명문이 정작 설명문으로 쌓으려던 그 신뢰를 깎아내리기 때문입니다.

아래 내용은 모두 설명문 기능을 놓고 실제 사용자를 대상으로 진행한 온라인 통제 실험에서 나왔습니다. Netflix 모바일 앱에서 한 달간 진행한 실험도 여기 포함됩니다. 이 실험에서는 LLM으로 설명문을 생성했고, 계속 바뀌는 카탈로그를 대상으로 주당 수십만 건을 만들었습니다. 이 규모를 사람이 직접 검수하는 건 불가능하니, 평가를 맡길 두 번째 LLM을 투입했습니다.

무엇이 좋은 설명문인지는 저희 과제에만 해당하는 이야기입니다. 하지만 설명문을 평가하는 LLM 심판을 만들고 정렬하고 모니터링하는 방식은 다른 과제에도 그대로 가져다 쓰고 일반화할 수 있을 것입니다.

수명 주기 한눈에 보기

그림 1은 저희 LLM 심판 수명 주기의 네 단계와 그 단계들을 잇는 데이터 흐름을 정리한 것입니다.

Image

그림 1. LLM 심판의 4단계 수명 주기와 단계 사이를 흐르는 데이터.

먼저 탄생: 벤치마크 데이터 만들기 단계입니다. 사람 전문가가 어렵거나 경계선에 가까운 예시를 만들고, 사람 평가자가 통과/탈락 판정과 서술형 근거를 달아 라벨링합니다. 여기에 LLM이 생성한 회색지대 예시를 더해 더 풍부한 벤치마크 데이터셋을 만듭니다.

두 번째 단계는 학습: LLM 심판 개발입니다. 탄생 단계에서 얻은 사람의 라벨과 근거에 맞춰 LLM 심판을 조정합니다. 자기 성찰로 심판과 사람이 어긋난 지점을 찾아내고, 그 불일치와 기준점 예시를 바탕으로 루브릭을 고칩니다. 지표상 심판이 사람 평가자와 충분히 정렬됐다고 나올 때까지 이 단계를 반복합니다.

세 번째 단계는 배포입니다. 심판을 설명문 생성 시스템에 관문과 비평가라는 두 역할로 넣습니다. LLM 생성기가 설명문을 쓰고, LLM 심판이 점수를 매겨 통과시키거나 막습니다. 막을 때는 근거를 함께 내놓고, 생성기는 그 근거로 스스로 고쳐 다시 시도합니다. 통과한 설명문은 회원에게 노출되고, 품질이 낮은 설명문은 관문에서 걸러집니다.

마지막 네 번째 단계는 HITL 정렬 및 드리프트 모니터링입니다. 시간이 지나도 심판이 사람과 정렬된 상태를 유지하게 합니다. 여기서 '사람을 루프 안에 둔다'는 말은, 나중에 결과만 훑어보는 게 아니라 사람이 결정에 직접 참여한다는 뜻입니다. 훈련받은 평가자를 기준으로 심판을 벤치마크하고, 어떤 변경이든 시스템에 반영되기 전에 사람이 승인합니다. 실험 기간에는 매주 설명문을 표본으로 뽑았습니다. 통과한 것과 걸러진 것을 모두 포함하고, 새로 들어온 작품 쪽에 비중을 두었습니다. 사람 평가자가 라벨과 근거를 달아 검토하게 하고, 이 평가와 심판의 판정을 비교했습니다. 드리프트(drift)가 임계값을 넘으면 재학습과 벤치마크 데이터 보강을 시작했습니다. 이렇게 사람이 새로 라벨링한 데이터와 갱신된 신호를 벤치마크 단계와 개발 단계로 되돌려 보내면서 순환이 닫힙니다.

시스템 구성 요소

모든 단계에 걸쳐 자동화된 구성 요소 네 개가 등장하고, 이를 정의하고 검증하고 감독하는 사람의 역할이 함께 붙습니다.

  • 생성기(Generator): 설명문 텍스트를 만듭니다. 고쳐 쓸 때는 앞서 심판이 남긴 근거와 이력을 프롬프트에 넣어 쓸 수 있습니다.
  • 심판(Judge): 설명문을 평가해 통과/탈락 라벨과 서술형 근거를 함께 돌려줍니다. 배포된 파이프라인에서는 안전장치(나쁜 출력을 걸러 냄)와 비평가(스스로 고칠 수 있도록 피드백을 제공)의 역할을 동시에 합니다.
  • 리플렉터(Reflector): 심판이 실수했을 때 심판의 루브릭을 고칩니다. 어긋난 예시와 사람이 쓴 근거, 기준점 예시를 바탕으로 루브릭을 갱신합니다. 루브릭을 손보는 역할이고, 설명문을 직접 평가하지는 않습니다.
  • 메타 심판(Meta-Judge): 심판이 쓴 근거를 사람 평가자가 쓴 근거와 비교해, 심판이 설명문을 탈락시킨 이유가 제대로 된 이유였는지 확인합니다.
  • 사람 전문가와 평가자: 품질 기준을 정하는 전문가, 심판을 조정하고 측정하는 기준이 되는 라벨과 서술형 근거를 쓰는 평가자, 그리고 심판이 돌아가는 동안 지켜보다가 변경 사항이 반영되기 전에 명시적으로 승인하는 검토자입니다.

1단계 탄생: 정답 기준 세우기

뒤따르는 모든 일이 '좋다'가 무엇인지 아는 데 달려 있으니, 이 단계에 사람 손이 가장 많이 들어갑니다. 사내 글쓰기 전문가들이 설명문이 반드시 만족해야 하는 필수 기준을 정하고, 상세한 라벨링 지침을 쓰고, 까다로운 적대적 예시를 직접 만듭니다. 이 지침은 두 가지 일을 합니다. 사람 평가자를 위한 규칙집이면서, 나중에 조정할 LLM 심판의 출발 루브릭이기도 합니다.

벤치마크를 직접 만든 이유

이미 나와 있는 LLM 심판 벤치마크는 범용 텍스트 평가에 맞춰져 있어서, 저희 과제만의 특징을 잡아내지 못합니다. 설명문은 짧고, 작품마다 다르고, 맥락에 좌우됩니다. 설명문 하나가 대상 작품 하나와 회원이 본 기준 작품 한두 개에 묶여 있습니다. 또 일반적인 문장 품질만이 아니라 저희 자체 편집 기준에 맞는지도 중요합니다. 그래서 서로 보완되는 세 가지 출처를 모아 저희만의 벤치마크를 만들었습니다.

  • 전문가가 만든 적대적 사례: 실패 양상을 미리 알고 사람이 직접 쓴 통과/탈락 예시입니다. 다른 방법으로는 안정적으로 만들어 낼 수 없는 극단 사례입니다.
  • 경계 예시: LLM이 통과와 탈락의 경계에 일부러 바짝 붙여 만든 설명문을 사람이 평가한 것입니다. 실제 트래픽에서 표본만 뽑아서는 좀처럼 드러나지 않는 애매한 사례를 담아냅니다.
  • 실제 표본 설명문: 실험을 돌리는 동안 저희 LLM 생성기가 낸 출력에서 뽑은 설명문입니다.

중요하게 작용한 두 가지

  • 벤치마크는 고정되어 있지 않습니다. 모니터링 파이프라인(4단계)이 매주 사람이 평가한 설명문을 새로 한 묶음씩 덧붙입니다. 그래서 실험이 진행되는 동안 벤치마크가 낡지 않고 현재 카탈로그와 새로운 사용 패턴을 따라갈 수 있었습니다.
  • '탈락' 라벨에는 예외 없이 자유 서술 근거가 붙습니다. 그 설명문이 탈락했는지 적는 것입니다. 사소한 기록 습관처럼 보이지만 다음 단계에서는 결정적입니다. 심판의 추론을 조정하고 감사하는 데 바로 이 근거를 쓰기 때문입니다.

2단계 학습: 심판을 사람에게 정렬하기

실패 양상: 답은 맞고 이유는 틀림

라벨 일치도 지표에는 전혀 잡히지 않는 실패 양상이 하나 있습니다. 심판이 라벨은 사람과 똑같이 낼 수 있습니다. 사람이 통과시킬 것을 통과시키고 탈락시킬 것을 탈락시키면서도, 엉뚱한 이유로 그 결론에 도달할 수 있습니다. 대시보드에서는 완벽하게 정렬된 것처럼 보입니다. 하지만 왜 탈락시켰는지 설명해 보라고 시키는 순간 오해를 부르는 지침을 내놓을 수 있고, 저희 파이프라인은 자체 수정을 유도하려고 실제로 그렇게 시킵니다.

그래서 저희는 라벨 일치뿐 아니라 추론 정렬도 중요하게 봅니다. 저희 구성에서 심판은 항상 다음 두 가지를 내놓게 되어 있습니다.

  • 라벨 (예: PASS/FAIL)
  • 그 라벨에 대한 짧은 자연어 근거

예를 하나 들어 보겠습니다. 회원이 뮤지컬 한 편을 봤습니다. 어린 여주인공이 나오고 잘 알려진 배우들이 함께 출연하는 가족 판타지 작품입니다. 저희는 어드벤처 영화 한 편을 추천합니다. 이 작품도 어린 여주인공이 나오는 가족 판타지이고, 추천 시스템이 둘을 묶은 이유도 그것입니다. 하지만 노래도, 여러 배우가 어우러지는 앙상블도 공통점이 아닙니다.

Image

라벨(FAIL)은 맞고, 심판이 댄 이유도 처음 보면 그럴듯합니다. 하지만 아래에서 보이듯이, 단순한 라벨 일치로는 잡아낼 수 없는 방식으로 그 이유가 불완전합니다.

추론 정렬 루브릭 튜닝

저희는 기준마다 하나씩 두는 LLM 심판을 추론 정렬 루브릭 튜닝(Reasoning-Aligned Rubric Tuning, RART)이라고 부르는 절차로 조정합니다. 앞의 시스템 구성 요소에서 소개한 대로 심판, 메타 심판, 리플렉터는 서로 다른 구성 요소입니다. 심판은 루브릭을 기준으로 설명문에 점수를 매기고 근거를 답니다. 메타 심판은 그 근거를 사람이 쓴 근거와 비교합니다. 리플렉터는 루브릭 문구 자체를 고칩니다. RART는 이 셋을 하나의 학습 루프로 엮는 방식입니다.

심판은 모두 루브릭을 매개변수로 받는 고정된 프롬프트 템플릿입니다. 그래서 심판을 조정한다는 것이 기반 모델을 다시 학습시킨다는 뜻은 아닙니다. 대신 심판의 동작이 사람의 라벨 사람의 근거에 모두 맞아떨어질 때까지 루브릭 문구를 반복해서 다듬습니다. i번째 반복에서 심판은 현재 루브릭 문구를 조건으로 받아, 설명문 하나를 라벨과 근거라는 한 쌍으로 대응시킵니다.

Image

R_i는 현재 루브릭 문구, y_J(x)는 라벨, r_J(x)는 근거입니다.

큰 흐름에서 RART의 각 반복은 이렇게 진행됩니다.

  1. 현재 루브릭으로 학습 데이터에 점수를 매깁니다.
  2. 따로 떼어 둔 검증 세트에서 가중 정렬 지표를 계산합니다. 기준별 지표가 모두 임계값을 넘으면 멈춥니다.
  3. 그렇지 않으면 어긋난 예시를 모아 오류 기반 집중 세트를 만들고 리플렉터에 넘깁니다. 리플렉터는 수정한 루브릭을 제안합니다.

일반적인 루프와 가장 다른 점은 '실수'를 어떻게 정의하는가입니다. 대부분의 자기 개선 루프는 라벨 불일치만 봅니다. RART는 두 번째 오류 유형을 더합니다. 메타 심판은 심판과 사람이 둘 다 탈락으로 판정한 사례를 살펴보고, 심판이 댄 이유를 사람이 쓴 근거와 비교합니다. 둘이 갈라지면 답은 맞고 이유는 틀린 오류이고, 이것도 리플렉터에 넘깁니다. 구체적으로 리플렉터에 넘기는 집중 세트는 두 오류 유형의 합집합입니다.

  • 라벨 불일치: 심판의 라벨이 사람의 라벨과 다른 예시입니다.
  • 라벨은 맞고 이유는 틀림: 심판과 사람이 모두 FAIL로 판정했지만, 메타 심판이 두 근거가 서로 맞지 않는다고 본 예시입니다.

즉 리플렉터는 평범한 라벨 오류 '라벨은 맞고 이유는 틀림' 오류를 모두 근거로 루브릭을 고칩니다. 두 번째 항이 RART의 핵심입니다. 심판은 사람의 결정을 맞히는 데 그치지 않고, 메타 심판이 사람의 추론과 정렬됐다고 인정할 만한 방식으로 그 결정을 정당화하도록 압박받습니다.

앞의 예로 돌아가 보면, LLM 심판도 FAIL이었고 사람도 FAIL이었으니 라벨만 보는 점검에서는 일치로 기록됩니다. 두 이유를 나란히 놓아 보면 그 점검이 무엇을 놓치는지 드러납니다.

Image

RART는 이런 사례를 집중 세트로 보내니, 다음 루브릭 수정에서 반드시 이를 반영해야 합니다.

메타 심판도 LLM이니 먼저 사람을 기준으로 검증했습니다. 훈련받은 사람 평가자가 양쪽 모두 탈락으로 본 근거 쌍을 표본으로 뽑아 라벨링했고, 메타 심판은 거의 모든 사례에서 이들의 판정과 일치했습니다.

정렬 지표

심판은 기준마다 하나씩 돌립니다. 각자 자기 루브릭을 갖고, 따로 조정되고 따로 채점됩니다. 그래서 아래 내용은 모두 따로 떼어 둔 데이터에서 기준별로 측정한 값입니다. 기준마다 세 가지 지표를 봅니다.

  • 특이도(탈락 재현율): 심판이 나쁜 설명문을 제대로 걸러 내는 비율입니다. 저희가 가장 중요하게 보는 지표입니다. 나쁜 설명문이 관문을 그냥 통과해 버리면 신뢰가 위험해지기 때문입니다.
  • 재현율(통과 재현율): 좋은 설명문을 제대로 통과시키는 비율입니다. 이 값이 높아야 노출 범위를 넓게 유지하면서 고쳐 쓰는 비용을 낮출 수 있습니다.
  • 추론 일치도: 양쪽이 모두 탈락시킨 설명문에서, 탈락시킨 이유까지 같은 비율입니다.

기준마다 심판이 이 세 지표를 따로 갖기 때문에, 하나는 건강한데 다른 하나는 미끄러질 수 있습니다. 관문을 엄격하게 두는 이유도 여기 있습니다. 설명문이 노출 대상이 되려면 필수 기준을 하나도 빼놓지 않고 통과해야 합니다.

애블레이션 실험: 추론 신호가 도움이 될까요?

추론 신호의 효과만 떼어 보려고, RART를 라벨 불일치만 쓰고 나머지 조건은 동일한 루프와 비교했습니다. 이 기준선을 바닐라라고 부릅니다. 리플렉터도 심판도 데이터도 같지만, 메타 심판이 없고 사람의 근거도 쓰지 않습니다.

Image

그림 2. 추론을 함께 보는 튜닝(RART)과 라벨만 보는 튜닝(바닐라)의 기준별 출발 루브릭 대비 개선폭.

그림 2가 그 결과입니다. 세 가지 필수 기준 중 둘에서는 바닐라와 RART가 같은 지점에 도달합니다. 출발 루브릭이 이미 천장에 가까워서 지표가 올라갈 여지가 거의 없었기 때문입니다. 세 번째 기준에서는 바닐라, 즉 라벨만 보는 방식의 성능이 나빠집니다. 바닐라 루프의 리플렉터가 루브릭을 퇴화된 형태로 고쳐 쓰고, 반복할 때마다 특이도와 추론 일치도가 떨어져서 결국 출발 루브릭보다도 못해집니다. RART는 같은 기준에서 안정적으로 유지되면서 두 지표를 모두 끌어올리고, 재현율도 조금 좋아집니다. 이유는 이렇습니다. 라벨만 보는 최적화는 엉성한 추론으로도 맞는 라벨에 도달할 수 있고, 엉성한 추론은 새 데이터에 일반화되지 않습니다. 신호를 근거에 묶어 두면 이 문제가 막힙니다. 추론 정렬은 올라갈 여지가 있는 곳에서는 도움이 되고, 여지가 없는 곳에서도 해가 되지 않습니다.

3단계 배포: 심판을 실제로 일하게 하기

배포한 뒤 심판은 생성 파이프라인 안에 자리 잡고, 실험 기간에 설명문이 만들어지는 대로 걸러 내고 비평했습니다.

심판 하나가 맡는 두 역할

LLM 심판을 사람과 정렬해 두면, 생성된 모든 설명문에 대해 이 심판을 서로 다른 두 역할로 재사용합니다.

  • 역할 1, 관문. 심판이 설명문마다 필수 기준으로 점수를 매기고, 기준에 못 미치는 것은 모두 걸러 냅니다.
  • 역할 2, 비평가. 설명문이 탈락했다고 그냥 버리지는 않습니다. 심판이 자유 서술로 쓴 이유를 생성기의 프롬프트에 덧붙이고, 생성기가 다시 시도합니다.

두 번째 역할 덕분에 파이프라인은 생성 → 판정 → 수정 루프가 되고, 수정할 때마다 심판의 비평이 방향을 잡아 줍니다.

Image

재시도에 상한을 두고, 노출보다 폐기를 택한 이유

재시도에는 상한을 둡니다. 한 번 고칠 때마다 생성과 판정을 한 번 더 돌려야 하고, 이득은 금방 줄어듭니다. 그림 3은 이 루프가 실제로 무엇을 벌어 주는지 보여 줍니다. 생성된 설명문 1,000건을 생성기 네 종으로 최대 12번까지 고쳐 쓴 결과입니다. 곡선은 모두 올라가고, 이는 심판의 비평이 제 역할을 한다는 뜻입니다. 하지만 급하게 오르는 구간은 앞쪽이고, 생성기 사이의 격차도 분명하게 드러납니다. 고쳐 쓰기는 약한 생성기를 구제해 주는 게 아니라 능력 있는 생성기를 증폭시킵니다. 실험에서는 가장 성능이 좋은 생성기에 재시도 3회의 예산을 줬고, 그래도 탈락한 설명문은 노출하지 않고 폐기했습니다.

Image

그림 3. 고쳐 쓰기를 더 허용해 갈 때 심판을 통과하는 설명문의 누적 비율, 생성기 모델 네 종 비교.

'노출하지 말고 폐기한다'는 규칙은 의도한 것입니다. 두 결과는 대칭이 아닙니다. 나쁜 설명문은 신뢰를 위협하지만, 설명문이 없는 것은 기회를 하나 놓치는 데 그칩니다. 애매하면 차라리 아무것도 보여 주지 않겠다는 것이고, 실제로 대부분의 설명문은 재시도 예산 안에서 기준을 통과했습니다.

심판이 통과시킨 설명문이 회원에게 도움이 될까요?

심판을 통과했다는 것은 그 설명문이 저희 기준에서 좋다는 증거일 뿐, 심판이 통과시킨 설명문이 회원에게 유용하다는 증거는 아닙니다. 그 연결을 확인하려고 Netflix 모바일 앱에서 통제 실험을 한 차례 진행했습니다. 작품 상세 페이지에 설명문을 넣은 경우와 넣지 않은 경우를 약 한 달간 비교했고, 그 기간에 파이프라인은 매주 수십만 건의 설명문을 생성하고 판정했습니다.

설명문을 본 회원은 전에 보지 않았던 작품 쪽으로 시청이 옮겨 갔고, 둘러보다가 의미 있는 재생으로 이어지는 세션도 늘었습니다. 두 효과 모두 통계적으로 유의했고, 실험 기간에 설명문 품질을 두고 회원이 먼저 내려 달라고 요구하거나 문제를 제기한 사례는 없었습니다. 다른 곳에 가져갈 만한 결론은 효과의 크기가 아닙니다. 이 설명문이 제대로 작동하는 데 평가자와의 오프라인 일치는 필요했지만, 회원에게 도움이 된다는 것을 보여 주기에는 결코 충분하지 않았다는 점입니다. 심판과 정렬된 설명문이 품질 기준을 지키는 수준을 넘어 실제로 유용하다는 것은 온라인 A/B 테스트만이 확인해 줄 수 있었습니다.

4단계 모니터링: 심판을 계속 정렬된 상태로 두기

출시 시점에 잘 정렬된 심판이라도 그 상태가 유지되지는 않습니다. 카탈로그가 바뀌고, 무엇을 높은 품질로 볼지도 바뀝니다. 그래서 수명 주기가 순환을 닫아야 합니다.

매주 사람이 하는 검토

실험이 돌아가는 동안 매주 생성된 설명문 약 300건을 뽑아 사람이 검토하게 했습니다. 심판의 판정(노출, 수정, 폐기)에 따라 층화 표본으로 뽑고, 드리프트가 일어날 가능성이 가장 큰 새로 들어온 카탈로그 작품에 비중을 뒀습니다. 층화 방식은 주마다 그대로 유지해서 이어지는 주끼리 비교할 수 있게 했습니다. 설명문마다 평가자 세 명 이상으로 구성된 패널이 검토했고, 다수결 라벨을 정답으로 삼았습니다. 이 라벨은 두 가지 일을 했습니다. 심판과 사람의 일치도가 떨어지고 있는지 알려 줬고, 벤치마크를 키웠습니다.

사람들 사이의 불일치로 기준선을 정하기

패널은 평가자들이 서로 얼마나 엇갈렸는지도 알려 주는데, 이것이 심판을 재는 알맞은 자였습니다. 고정된 임계값을 들이대는 대신, 심판과 평가자 각자를 같은 다수결 라벨로 채점하고, 심판이 평가자들의 분포 안에 들어오는지를 봅니다.

기준 하나와 그 기준의 지표 M 하나를 놓고 보겠습니다. 그 주의 표본에서 심판에 대해서는 값 M(J) 하나가 나오고, 패널의 세 명 이상 평가자에 대해서는 평가자별 값 M(H)의 집합이 나옵니다. 저희가 요구하는 조건은 다음과 같습니다.

Image

즉 심판의 점수는 평균 평가자보다 표준편차 두 배 아래로 내려가서는 안 됩니다. 어려운 주에는 사람들 사이의 불일치가 커지고 그에 따라 허용 구간도 넓어지니, 사람도 함께 느낀 난이도 때문에 심판이 불이익을 받는 일은 없습니다.

지표와 기준의 조합 중 어느 하나라도 이 구간 아래로 떨어지면 드리프트 사건으로 보고, 보강된 벤치마크로 다시 조정하는 작업(2단계로 복귀)에 들어갑니다. 다시 조정한 루브릭이 자동으로 반영되는 일은 없습니다. 팀원 중 누군가가 제안된 변경 내용을 읽고 승인해야 돌아가는 파이프라인에 들어가고, 즉시 되돌릴 수 있도록 이전 루브릭을 보관해 둡니다.

지표로는 못 잡고 사람 검토로만 잡히는 것

매주 하는 검토는 심판이 여전히 사람 평가자와 의견이 맞는지 확인하는 것 외에 두 번째 질문에도 답을 줍니다. 지금의 지침이 여전히 옳은 것을 요구하고 있는가?

매주 검토를 진행하면서 검토자들은 심판과 평가자의 일치도에는 나타나지 않는 문제들을 끄집어냈습니다. 설명문이 정확한 속성을 쓰면서도 두 작품이 실제로 얼마나 닮았는지를 과장할 수 있습니다. '짜릿하다', '재미있다', '감동적이다' 같은 막연한 형용사 하나로 형식상 루브릭은 만족시키면서 사실상 아무 정보도 주지 않을 수 있습니다. 기준 작품 자체가 문제인 경우도 있습니다. 회원이 애초에 비교 대상으로 떠올리지 않을 작품이라면, 속성이 아무리 잘 맞아떨어져도 비교가 어색하게 다가옵니다. 어떤 장르에서는 같은 문제가 대량으로 나타납니다. 스탠드업 코미디 스페셜은 메타데이터 태그가 비슷할 수 있지만 분위기와 문화적 맥락은 완전히 다릅니다. 그래서 서류상으로는 비교가 타당해 보이고 평가자가 탈락시킬 만큼 나쁘지도 않은데, 회원에게는 잘 와닿지 않습니다. 그리고 필수 기준을 다 만족시키면서도 읽어 보면 사용자에게 별 도움이 안 되는 뻔한 '말 뭉치'처럼 느껴지는 설명문도 있습니다.

같은 패턴이 반복해서 나타나면 1단계 지침을 고쳤습니다. 이 지침이 평가자 안내문과 심판 루브릭 양쪽의 출발점이라서, 한 번 고치면 양쪽이 함께 갱신됩니다. 어떤 경우에는 심판 밖에 제품 규칙을 더했습니다. 예를 들어 특정 유형의 작품은 기준 작품으로 쓰지 못하게 막았습니다.

드리프트 탐지는 사람과 의견이 맞지 않게 된 심판을 잡아냅니다. '좋은 설명문'에 대한 저희 정의가 너무 좁거나 불완전해진 시점은 사람이 계속 검토해야만 알 수 있습니다. 둘 다 필요합니다.

  • 드리프트 탐지는 심판을 현재 루브릭에 정렬된 상태로 유지합니다.
  • 지속적인 사람 검토는 루브릭을 회원에게 실제로 통하는 것에 정렬된 상태로 유지합니다.

배운 것

LLM 심판을 내보내는 어느 팀에나 통할 것이라고 보는 교훈 다섯 가지입니다.

  1. 심판보다 벤치마크에 먼저 투자하십시오. 규모는 작아도 근거가 달린 벤치마크가 라벨만 있는 큰 벤치마크보다 낫습니다. 서술형 근거가 있어야 추론까지 맞추는 튜닝이 가능합니다. 사람의 추론을 적어 두지 않았다면 심판의 추론을 바로잡을 수 없습니다.
  2. 라벨만이 아니라 추론에 맞춰 조정하십시오. 심판은 엉뚱한 이유로도 맞는 결론에 도달할 수 있습니다. 대시보드에서는 괜찮아 보이지만 오해를 부르는 피드백을 주고, 새 데이터에서는 버티지 못합니다. 저희 애블레이션 실험에서 라벨만 보는 루프는, 추론을 함께 보는 루프가 안정적으로 지켜 낸 루브릭을 망가뜨렸습니다.
  3. 잘 정렬된 심판 하나가 여러 역할을 할 수 있습니다. 같은 심판을 관문과 비평가로 함께 쓰면 정렬에 들인 비용을 나눠 갚고, 역할이 달라도 운영 환경에서의 동작이 일관되게 유지됩니다. 비싼 부분은 정렬이니, 심판 하나를 제대로 만들어 두고 여러 번 쓰십시오.
  4. 첫날부터 모니터링을 계획하십시오. 추천 플랫폼의 작품과 회원은 끊임없이 바뀝니다. 그러니 LLM 심판도 다른 머신러닝 모델과 마찬가지로 계속 지켜보고 필요하면 다시 조정해야 합니다. 한 번 내보내고 잊어버릴 수 있는 대상이 아닙니다.
  5. 사람을 예외가 아니라 설계로 루프 안에 두십시오. 평가를 자동화하는 것과 평가의 책임을 넘기는 것은 다릅니다. 저희 수명 주기에서 사람은 기준을 세우고(1단계), 심판이 정렬될 근거를 제공하고(2단계), 의심스러운 출력은 노출하지 말고 버리자는 보수적인 기본값을 정하고(3단계), 실제 판정의 표본을 상시로 검토하며 루브릭 변경을 배포 전에 모두 승인합니다(4단계). 심판이 이미 혼자 결정을 내리기 시작한 뒤에 이런 검문 지점을 끼워 넣기는 훨씬 어렵습니다. 상시 검토는 심판이 미끄러진 시점만 알려 주는 게 아니라, 루브릭에 무엇이 빠져 있는지도 알려 줍니다.

정리하면, 심판은 검토자들이 미칠 수 있는 범위를 넓혀 주고, 그 검토자들이 심판을 믿을 수 있는 근거가 됩니다. 이 관계가 있어야 이 시스템을 대규모로 돌리는 일이 책임 있는 선택이 됩니다. 아무도 감사하지 않는 자동 평가자는 자기가 내리는 판정에 대해 어떤 보증도 해 주지 않습니다.

감사의 말

이 글은 저희 연구 논문 「The Lifecycle of LLM-as-a-Judge for Large-Scale Recommendation Explanations」를 요약한 것입니다. 논문에는 방법론과 지표, 애블레이션 실험이 전부 담겨 있습니다.

Edit this page

Search the archive

Find a page by title, or search the text inside one.