\n","id":"post-head-script"}])

스캐터랩이 가장 재밌는 LLM을 찾는 방법

실제 제품에서 유저 반응으로 LLM 평가하기: A/B 테스트·MAB·리더보드
Feb 12, 2026
스캐터랩이 가장 재밌는 LLM을 찾는 방법
김대진 | 2026년 02월 12일 | #Machine_Learning

100개 중에 제일 재밌는 모델 찾기

현재 스캐터랩은 제타에서 자체 LLM을 이용해 수많은 유저들에게 즐거움을 주고 있습니다. 이 과정에서 저희 ML 리서처는 제타라는 서비스에 최적화된 LLM을 찾기 위해 매주 10개 이상의 모델을 학습하고 배포하고 있는데요. 이때 무엇보다 고민이 되는 지점은 “어떤 기준으로 모델을 업데이트하고 배포해야 할까?”입니다. 다양한 학습 데이터와 방법론도 결국 어떠한 평가에서 좋은 점수를 받을지를 염두에 둬야 고안될 수 있으니까요. 그렇다면 스캐터랩은 유저들이 어떠한 LLM을 가장 좋아하는지 무슨 기준으로 판단하고 있을까요?
현재 다양한 LLM의 성능을 평가하는 가장 대표적인 방법은 벤치마크 점수를 활용하는 것입니다. 정답이 존재하지 않는 문제에 대해서는 LLM을 채점자로 이용하는 LLM-as-a-judge 방식을 이용하기도 하죠. 그러나 벤치마크 성능과 사용성의 불일치는 이미 너무나도 유명한 문제입니다. 실제로 벤치마크에서 좋은 점수를 받는 모델들을 직접 사용해보면 기대했던 만큼의 성능을 체감할 수 없는 경우도 많습니다. 만약에, 우리가 제타에서 정해진 벤치마크로 모델을 평가한다면 “재미”를 측정할 수 있는 벤치마크는 무엇일까요? 본질적으로 “제타에서 유저들이 원하는 재미”는 어떻게 정의할 수 있을까요? 더욱이 이런 재미가 시간에 따라 바뀐다면 우리는 객관적인 평가를 진행할 수 있을까요?
본격적으로 평가 방법론에 대해 이야기하기 전에 저희가 맞닥뜨리고 있는 고민거리를 퀴즈 형태로 가져와 봤습니다. 아래는 실제 모델의 다양한 답변 후보들입니다. 실제 유저들은 어떤 답변을 가장 좋다고 평가할까요?
그림 1. 어떤 답변이 유저의 몰입을 가장 잘 이끌어낼 수 있을까요?
그림 1. 어떤 답변이 유저의 몰입을 가장 잘 이끌어낼 수 있을까요?
어떤 유저는 첫 번째 답변보다는 더욱 묘사가 풍부한 두 번째 답변을 더 선호할 수도 있고, 어떤 유저는 자신의 의도대로 동작하지 않는 세 번째 답변을 받았을 때 더 큰 재미를 느낄 수도 있습니다. 같은 유저라도 오늘의 기분, 혹은 현재 머릿속으로 그리고 있는 장면에 따라 원하는 전개 속도, 분위기, 원하는 턴의 길이가 시시각각 바뀝니다. 이러한 특성 때문인지 내부적으로도 제타에서의 재미”를 정의하기 위해 수많은 시도를 해왔지만, ‘생동감 넘치는 묘사’, ‘더욱 상세한 발화’, ‘시원한 전개’ 같은 카테고리로는 제타에서의 재미”에 해당하는 공식을 찾을 수 없었습니다. 그렇다면 우리는 어떻게 LLM 학습의 목적지를 정할 수 있을까요? 이번 글에서는 스캐터랩이 사용자의 실제 반응 및 지표에 기반하여 LLM의 재미를 측정하기 위해 사용하고 있는 3가지 평가 방식, (1) A/B 테스트, (2) Multi-Armed Bandit(MAB), (3) 자체 리더보드에 대해 얘기해보려고 합니다.

1. 무작위 대조 실험: A/B 테스트

A/B 테스트는 디지털 환경에서 서로 다른 유저에게 알고리즘 혹은 UI를 다르게 적용함으로써 해당 변화가 미치는 영향을 확인하는 방법론입니다. 유튜브와 같은 서비스를 이용하고 있는데, 동일한 팝업에서 누군가에게는 스킵” 버튼이 제공되고 누군가에게는 스킵” 버튼 대신 상단에 X 버튼만 존재한다면, 이러한 A/B 테스트에 할당되었을 가능성이 있는 것이죠. 실제로 많은 글로벌 서비스들은 화면의 문구 하나, 버튼 하나도 A/B 테스트로 검증하며 제품을 운영합니다. 그리고 이런 실험들이 쌓여서 높은 전환율이나 유저 만족도를 기록하는 최적화된 제품 경험이 만들어지게 됩니다.
그림 2. Bing의 광고 헤드라인 A/B 테스트 (좌: 대조군, 우: 실험군). 단순한 헤드라인 변경으로 12%의 매출 상승을 이끌어냈음 (출처: A/B 테스트 [신뢰할 수 있는 온라인 종합 대조 실험]).
그림 2. Bing의 광고 헤드라인 A/B 테스트 (좌: 대조군, 우: 실험군). 단순한 헤드라인 변경으로 12%의 매출 상승을 이끌어냈음 (출처: A/B 테스트 [신뢰할 수 있는 온라인 종합 대조 실험]).
온라인 환경에서 서비스를 운영하는 수많은 기업이 A/B 테스트를 도입하고 있으며, 가장 잘 알려진 A/B 테스트 사례로는 Bing의 광고 헤드라인 변경 실험이 있습니다. 광고 헤드라인 표시 방식을 그림 2의 우측 이미지처럼 변경한 것만으로도 매출이 12%나 올랐는데, 이러한 결과가 너무 놀라운 나머지 회사 내부에서도 이 결과를 믿지 못하고 수많은 재검증을 진행했다고 합니다.
이러한 A/B 테스트가 LLM 평가에는 어떻게 접목될 수 있을까요? 생각해보면 답은 매우 간단합니다. LLM을 하나의 요소로 취급해, 제타에서 같은 플롯을 이용하는 상황에서도 유저군별로 서로 다른 LLM 모델을 사용하도록 하면 됩니다. 실험 기간 중 각 유저군들은 서로 다른 모델 후보들을 경험하면서 플레이를 진행하게 되고, 실험 종료 이후 각 유저군별 지표가 최종 모델 결정을 위한 분석에 쓰이게 됩니다.
그림 3. A/B 테스트에서 각 유저군은 실험 기간 중 자신에게 할당된 모델만을 사용하게 되며, 최종 모델은 실험 종료 이후 유저군별 지표에 기반하여 결정됨.
그림 3. A/B 테스트에서 각 유저군은 실험 기간 중 자신에게 할당된 모델만을 사용하게 되며, 최종 모델은 실험 종료 이후 유저군별 지표에 기반하여 결정됨.
스캐터랩에서는 더 몰입감 넘치는 모델을 만들기 위해, 그리고 이전 모델의 문제를 해결하기 위해 새롭게 학습된 모델들을 기존 모델과 비교하기 위해 수많은 A/B 테스트를 진행하고 있습니다. 반복적으로 A/B 테스트를 진행하다 보면 이론적으로는 당연해 보이지만 신기한 지점들을 마주하게 됩니다. 유저들이 자신도 모르는 새에 바뀐 모델(심지어 변경사항이 매우 미미하더라도)에 일관되게 반응한다는 점입니다. 이런 경향은 현재 모델이 이전 모델 대비 “좋아졌다고 느껴서”만 나타나는 것도 아니고 “나빠졌다고 느껴서”만 나타나는 것도 아닙니다. 자신도 모르게 새로운 모델에서 무의식적으로 더 혹은 덜 몰입을 하게 되는 것입니다.
A/B 테스트와 관련하여 또 하나 재밌는 점은 내부 평가의 결과가 예측대로 흘러가지 않는 경우가 많다는 점입니다. 내부에서는 “문제가 해결되었다” 혹은 “더 재밌다”고 판단되는 모델을 자신 있게 내놓았지만 실험군의 지표가 좋지 않아 좌절을 겪는 것입니다. 처음 제타 서비스를 출시했을 때에는 기본적인 어휘력 능력의 상승처럼 내부의 평가 우위와 유저 선호가 일치하는 경우가 많았으나, ‘정확성’의 단계를 넘어 ‘취향’ 단계로 진입하게 된 지금, 유저의 선호를 정확히 예측하는 일이 점점 어려워지고 있습니다. 이러한 상황에서 유저마다 다른 모델을 사용하는 A/B 테스트야말로 유저의 선호와 가장 근접한 지표를 보여주게 됩니다.
이러한 A/B 테스트는 리텐션과 같은 실제 제품 지표를 추적하기 위한 가장 필수적인 유저 단위의 분석으로, 모델에게는 전체 유저에게 배포되기 전에 반드시 거쳐야 하는 최종 관문이 됩니다. 그런데 여기서 한 가지 고민이 생깁니다. 스캐터랩에서는 매주 한두 개의 모델이 아닌, 최소 20개 이상의 수많은 모델들이 학습되고 사라집니다. 이러한 모델들에 대해 매번 A/B 테스트를 진행해야 할까요? A/B 테스트는 해당 유저군이 반드시 특정 모델만을 사용하게 된다는 점에서, 어찌 보면 모델의 성능이 보장되지 않는다면 치명적일 수 있는 리스크를 안고 있습니다. 많은 모델에 대해 더 적은 리스크로, 더 적은 유저군에 대해 빠르게 결과를 얻을 수 있는 방법은 없을까요? 바로 다음 장에서는 이를 해결하기 위해 도입하고 있는 Multi-Armed Bandit(MAB)에 대해 알아보겠습니다.

2. Multi-Armed Bandit (MAB)

LLM을 평가하기 위해 A/B 테스트를 도입하면 모든 문제가 해결될 것만 같습니다. 그러나 A/B 테스트만으로 우리가 학습한 수많은 모델들을 평가하려면, 아래와 같은 문제점을 맞닥뜨리게 됩니다.
  1. 신뢰도 있는 실험 결과를 얻기 위해서는 각 유저군별로 매우 많은 유저가 할당되어야 합니다.
  1. 몇 개의 모델이 크게 손상되어 있을 경우, 해당 군에 할당되는 유저는 언제나 나쁜 경험을 하게 되며 이는 곧 제품 지표의 심각한 손상으로 이어집니다.
이에 해당하는 한 가지 사례가 바로 하이퍼파라미터 탐색입니다. 수많은 하이퍼파라미터 조합으로 학습된 모델들을 벤치마크가 아닌 유저가 직접 평가하도록 하자니 모델의 조합도 너무 다양하고 극단적인 하이퍼파라미터로 학습된 일부 모델은 제 기능을 하지 못할 것만 같습니다. 이를 해결하고자 스캐터랩에서는 A/B 테스트를 보완하기 위해 Multi-Armed Bandit(이후 MAB)를 활용하고 있습니다.
그림 4. MAB에서는 각 모델의 할당 비율이 실험 기간 중 지속적으로 변화하며, 최종적으로 가장 높은 성능을 보이는 모델이 가장 높은 비중으로 배포됨.
그림 4. MAB에서는 각 모델의 할당 비율이 실험 기간 중 지속적으로 변화하며, 최종적으로 가장 높은 성능을 보이는 모델이 가장 높은 비중으로 배포됨.
MAB는 본래 추천 시스템에서 고안된 기법으로, 간단히 말하자면 가장 높은 보상을 주는 후보를 점점 더 많이 보여주는 방식입니다. 즉 처음에는 여러 모델을 고르게 노출시키되, 시간이 지날수록 실제 유저 반응으로부터 “지금 사용중인 모델이 더 재미있다”는 신호를 더 많이 얻는 쪽에 트래픽을 점진적으로 몰아줍니다. 아래의 그림 5는 MAB를 가장 직관적으로 나타낸 그림인데, 여러 개의 슬롯 머신(arm)에 돈을 걸어서 가장 많은 돈을 따는 방식을 최적화하기 위해 만들어진 알고리즘이라는 의미에서 multi-armed bandit이라는 용어가 붙게 되었습니다.
그림 5. Multi-Armed Bandits (출처: Microsoft Research)
그림 5. Multi-Armed Bandits (출처: Microsoft Research)
MAB의 핵심 개념은 탐색(exploration)과 활용(exploitation) 간의 트레이드오프를 다루는 것입니다. 간단히 말하자면 좋아보이는 모델이 선택될 확률을 점점 늘리되(exploitation), 처음에는 좋아 보이지 않았던 모델도 사실은 좋은 모델이었을 수 있으니 몇 번의 탐색 기회를 더 주는 것(exploration)이죠. MAB에서는 이러한 과정을 현재 선택을 함으로써 얻는 손실(regret)을 줄이면서 결과적으로 누적 보상(cumulative reward)을 최대화하는 과정으로 설명합니다.
MAB를 위한 대표적인 알고리즘으로는 ϵ\epsilon-greedy, UCB(Upper Confidence Bound), 톰슨 샘플링(Thompson sampling) 등이 존재하며 이 중 톰슨 샘플링은 확률론에 기반해 “해당 모델을 선택하면 우리가 보상을 얻게 될 확률”을 계산하는 방법론입니다. 다른 알고리즘들도 동일한 트레이드오프를 다룬다는 면에서는 유사하지만, 그 과정이 확률론적이냐 혹은 결정론적이냐와 같은 차이점이 존재합니다.
톰슨 샘플링은 기본적으로 켤레사전분포(conjugate prior)에 기반해 베이지안 업데이트를 수행하게 됩니다. 만약 성공 1과 실패 0으로만 이루어지는 게임에 대해 보상(reward) xx 에 대한 사전 분포(prior)를 베타 분포(beta distribution)로 가정한다면, 관측에 기반한 사후 분포(posterior) 역시 베타 분포의 형태를 띠게 됩니다. 구체적으로 수식 1에 따라, 사전 분포가 Beta(α,β)\mathrm{Beta}(\alpha, \beta)를 따르는 경우, 사후 분포는 성공 시 Beta(α+1,β)\mathrm{Beta}(\alpha+1, \beta), 실패 시 Beta(α,β+1)\mathrm{Beta}(\alpha, \beta+1)를 따르게 됩니다. 처음에는 아무 정보가 없는 상태이기 때문에 α=1,β=1\alpha=1, \beta=1 로 세팅하여 사전 분포를 균등 분포(uniform distribution) 형태로 설정해두는 것이 일반적입니다.
p(x)=Beta(xα,β)=1B(α,β)xα1(1x)β1,0<x<1p(x)=\mathrm{Beta}(x\mid \alpha,\beta) =\frac{1}{B(\alpha,\beta)}x^{\alpha-1}(1-x)^{\beta-1}, \quad 0<x<1
p(rx)=Bernoulli(rx)=xr(1x)1r,r{0,1}p(r\mid x)=\mathrm{Bernoulli}(r\mid x)=x^{r}(1-x)^{1-r}, \quad r\in\{0,1\}
p(xr)p(rx)p(x)=(xr(1x)1r)(xα1(1x)β1)=xα+r1(1x)β+(1r)1(by Bayes’ rule; p(r) does not depend on x)p(x\mid r)\propto p(r\mid x)\,p(x) = \big(x^{r}(1-x)^{1-r}\big)\big(x^{\alpha-1}(1-x)^{\beta-1}\big) = x^{\alpha+r-1}(1-x)^{\beta+(1-r)-1} \qquad\text{(by Bayes' rule; }p(r)\text{ does not depend on }x\text{)}
p(xr)=Beta ⁣(xα+r, β+1r).\Rightarrow\quad p(x\mid r)=\mathrm{Beta}\!\big(x\mid \alpha+r,\ \beta+1-r\big).
수식 1. 관측 rr에 따른 xx의 베이지안 업데이트
이러한 톰슨 샘플링에 기반한 MAB를 이용하는 대표적인 사례는 광고 추천 시스템인데, 광고 클릭 여부에 따라 0과 1의 보상을 주면서 가장 높은 보상을 기대할 수 있는 광고 방식을 채택할 수 있습니다.
이제 MAB가 (1) 각 모델마다 보상을 받을 확률이 있음 → (2) 유저가 특정 모델에서 성공 혹은 실패함 → (3) 성공/실패에 따라 해당 모델의 성공 확률을 다시 계산함으로써 이루어진다는 것을 알 수 있습니다. 여기서 중요한 점은, MAB가 단순히 승률이 높은 모델을 고르는 것이 아니라:
  • 불확실성이 큰 후보를 일정 부분 계속 탐색(exploration)하면서도
  • 당장 성능이 검증된 후보를 더 많이 활용(exploitation)
제품에 미칠 안좋은 영향을 최소화한다는 것입니다.
그림 6. A/B 테스트와 MAB의 시간에 따른 모델 트래픽 변화 예시. 실험 시작 이후 유저군별 모델 할당에 변동이 없는 A/B 테스트와 달리 MAB는 시간에 따라 할당되는 비중이 조정됨.
그림 6. A/B 테스트와 MAB의 시간에 따른 모델 트래픽 변화 예시. 실험 시작 이후 유저군별 모델 할당에 변동이 없는 A/B 테스트와 달리 MAB는 시간에 따라 할당되는 비중이 조정됨.
A/B 테스트에서는 실험이 종료될 때까지 모델의 할당 비중이 조절되지 않기 때문에 나쁜 모델을 할당받은 유저들은 실험 기간 내내 피해를 보게 됩니다. 그에 반해 MAB를 도입하면 실험 초반부터 안전하게 나쁜 후보의 비중을 빠르게 줄이고 좋은 후보의 비중을 빠르게 키울 수 있습니다. 이렇게 리스크를 최소화하며 MAB를 하다 보면 유저들이 어떤 모델을 가장 선호하는지도 자연스럽게 알게 됩니다. 그림 6은 A/B 테스트와 MAB 각각에 대해 시간에 따른 각 모델의 트래픽 변화 예시이며, A/B 테스트의 경우 실험이 종료될 때까지 모든 모델의 트래픽이 일정하게 유지되지만 MAB의 경우 모델별 트래픽이 유동적으로 조정되며 최종적으로는 가장 높은 성능을 보이는 모델로 대부분의 트래픽이 집중되게 됩니다.
MAB와 A/B 테스트가 구별되는 또 하나의 특성이 있다면, 한 명의 유저가 하나의 모델에만 할당되는 A/B 테스트와 달리, “한 번의 플레이 경험”이 지표가 되는 MAB에서는 유저들이 매 플레이마다 다른 모델을 경험하게 된다는 것입니다. 즉, 서로 다른 플롯마다 사용하게 되는 모델이 다를 수 있다는 것이죠. 이때에도 같은 유저임에도 모델마다(심지어 그 변화가 매우 미미하더라도) 몰입하는 정도가 다르다는 점은 여전히 신기하고 재밌는 부분입니다.
그림 7. 내부에서 진행한 학습 하이퍼파라미터 탐색을 위한 MAB 결과 (가로축은 시간, 세로축은 해당 군의 트래픽 비중). 최종적으로 A군에 해당하는 하이퍼파라미터가 채택되었음.
그림 7. 내부에서 진행한 학습 하이퍼파라미터 탐색을 위한 MAB 결과 (가로축은 시간, 세로축은 해당 군의 트래픽 비중). 최종적으로 A군에 해당하는 하이퍼파라미터가 채택되었음.
정리해보자면 MAB가 A/B 테스트와 비교하여 가지는 특성은 크게 두 가지입니다.
  • 세션 단위의 분석: 유저 단위 분석이 이루어지는 A/B 테스트의 경우에는 유저에 따라 편차가 크기 때문에 A/A 테스트를 엄밀하게 거치는 등 해당 유저의 특성을 충분히 고려한 뒤 실험이 이루어져야 합니다. 또한 그렇기 때문에 유저 단위의 많은 모수가 필요하게 됩니다.
    • 반면 MAB는 어떤 유저든 다양한 모델을 제공받기 때문에 유저 간 차이로 인해 발생하는 분산을 크게 줄일 수 있고, 10명의 유저가 10번의 플레이를 한다면 총 100번의 이벤트가 발생하므로 동일한 유저 수에 대해서도 분석을 위한 훨씬 많은 관측을 수행할 수 있게 됩니다.
  • 적은 리스크: 처음 할당된 모델을 계속 사용해야 하는 A/B 테스트와 달리, MAB는 (1) 플레이마다 다른 모델이 할당되어 선호하지 않는 모델을 계속 경험하지 않아도 되고, (2) 많은 유저들이 선호하는 모델에 할당될 비중이 자연스럽게 높아진다는 강점을 가집니다. 즉 A/B 테스트에 비해 유저 입장에서 좋은 모델을 사용하게 될 확률이 높아지고, 실험 운영 측면에서도 리스크가 존재하는 모델에 대해 부담 없이 실험을 진행할 수 있습니다.
MAB에 적합한 사례 중 하나는 위에서 언급한 것처럼 하이퍼파라미터 및 학습 데이터 조합의 탐색입니다. 실제로 매우 많은 종류의 하이퍼파라미터 및 데이터 조합에 대해 내부적으로 “어떤 게 제일 재밌는지”를 내부에서 정성적으로 판단하는 것은 매우 소모적이고 어려운 일입니다. 또한 모든 모델을 A/B 테스트하기에는 매우 큰 모수가 요구될 뿐더러 극단적인 하이퍼파라미터로 학습된 모델은 지표를 크게 손상시킬 위험 또한 지니고 있습니다. 이런 경우 MAB를 활용한다면 동일 유저 수에 대해서도 더 많은 관측을 확보하며 빠르게 우위를 판단할 수 있음과 동시에, 나쁜 모델은 빠르게 후보에서 제외시켜 지표 손상 또한 방지할 수 있습니다.
그러나 세상에 공짜는 없는 법. LLM을 평가하기 위해 MAB를 도입하는 것에도 몇 가지 도전적인 과제들이 뒤따르게 됩니다. 가장 먼저, “플레이 경험” 자체를 최적화해야 경우에는 어떤 지표를 보상으로 봐야할지부터 문제가 됩니다. 우리는 결국 설정한 보상을 기준으로 좋은 모델을 선택하게 될 테니까요. 만약 가장 오래 사용하는 모델을 정하고 싶다면 광고처럼 0과 1이 아니라 모델의 사용 시간 그 자체가 지표가 될 수 있고, 그러한 경우 사후 분포를 업데이트하는 방식도 달라지겠지요.
스캐터랩에서는 내부적으로 “유저의 경험”에 대한 다양한 지표를 정의하고 각 지표에 따라 베이지안 업데이트가 가능한 형태의 MAB 시스템을 구축해 두었습니다. 즉 광고 실험에서는 클릭의 횟수를 최대화해야 한다면, 우리는 해당 모델을 사용했을 때의 경험 자체를 최대화하게 되는 것이죠. 이와 별개로 지연 보상 또한 MAB 도입의 큰 장애물이 됩니다. 유저가 모델을 정말 재미있게 사용했는지는 충분한 사용 경험이 쌓인 뒤에야 알 수 있기 때문입니다. 이러한 보상에는 어떻게 대응해야 할까요? 스캐터랩 내부에서는 이러한 고민들을 해결하기 위해 꾸준히 유저 만족도와 강하게 연결된 평가 지표를 고민하고, 다양한 평가 시스템을 시뮬레이션하고 있습니다.

3. 리더보드

여기까지 읽으신 독자분들은 위의 A/B 테스트와 MAB 파트를 보면서 이런 생각을 하셨을 수도 있을 것 같습니다. “그냥 유저한테 직접 물어보면 되는 거 아냐?” 실제로 유저들이 가장 선호하는 LLM을 평가하기 위해, 두 답변을 보여주고 더 좋은 답변을 고르도록 하는 방식들이 최근 AI 기업들로부터 많이 채택되고 있죠. ChatGPT를 사용한다면 언젠가 한 번 그림 8과 같은 화면을 마주친 적이 있을 것입니다.
그림 8. ChatGPT에서의 답변 선택 UI (출처: reddit.com)
그림 8. ChatGPT에서의 답변 선택 UI (출처: reddit.com)
이처럼 좌/우 답변을 놓고 “어느 쪽이 더 좋나요?” 같은 식으로 선택하게 하는 UI는 유저의 선호를 빠르고 명시적으로 수집하기 위해 Arena, Chaiverse를 비롯하여 다양한 기업에서 활용되고 있으며, 제타에서도 “좋아 보이는 모델을 빠르게 검증”하기 위한 방식으로써 그림 9와 같은 UI를 제공하고 있습니다.
이러한 UI를 이용하였을 때의 장점은 전체 제품 경험에 직접적인 영향을 주는 A/B 테스트나 MAB와 달리 개별 유저의 전반적인 경험을 크게 바꾸지 않으면서도 유저의 선호를 빠르게 수집할 수 있다는 것입니다. 한가지 주의해야할 점은 이러한 선호가 제품 지표와 직결되지는 않을 수 있다는 것입니다. 그 당시에 좋아 보이는 모델과 실제로 자신도 모르게 몰입하게 되는 모델은 차이가 있거든요.
그림9. 제타에서의 답변 선택 UI. 대화 중 임의의 타이밍에 더 좋은 답변을 선택할 수 있는 기능이 제공됨.
그림9. 제타에서의 답변 선택 UI. 대화 중 임의의 타이밍에 더 좋은 답변을 선택할 수 있는 기능이 제공됨.
그런데 한 가지 의문이 생깁니다. 어떻게 두 모델 간의 비교만으로 모든 모델의 순위가 정해질 수 있을까요? 많은 리더보드에서는 이를 위해 Elo rating score를 채택하고 있는데, 이는 체스를 즐기는 사람들에게는 다소 익숙한 개념입니다. 일대일로 대결이 이루어지는 체스에서는 한 사람이 전 세계의 체스 플레이어와 모두 대결해서 순위를 매길 수 없습니다. 그렇다면 이러한 상황에서 어떻게 모든 사람의 순위를 정할 수 있을까요? 여기에 답변하기 위해 다음 질문을 던질 수 있을 것 같습니다. 챔피언을 이긴 사람과 어제 막 시작한 플레이어를 이긴 사람 중 어떤 사람에게 더 높은 점수를 주어야 할까요? 이러한 직관에 기반하여 “강한 상대를 이기면 더 크게 올라가고, 약한 상대에게 지면 더 크게 떨어지는” 방식으로 점수를 설계하면, 챔피언과 붙지 않고서도 충분히 자신의 순위를 추정할 수 있게 됩니다.
Elo rating score는 바로 이러한 개념에 기반한 점수입니다. 두 선수 A, B의 현재 레이팅(점수)을 RAR_A, RBR_B라 할 때, 각 선수가 승리할 확률 EAE_A, EBE_B는 아래와 같이 계산되게 됩니다.
EA=11+10(RBRA)/400,EB=11+10(RARB)/400=1EA E_A=\frac{1}{1+10^{(R_B-R_A)/400}},\qquad E_B=\frac{1}{1+10^{(R_A-R_B)/400}}=1-E_A
그리고 이러한 레이팅은 실제 게임 결과가 나왔을 때, “예상보다 잘했는가/못했는가”에 따라 조정되게 됩니다. A의 실제 점수를 SA{1,0.5,0}S_A\in\{1,\,0.5,\,0\} (승/무/패)라고 하면 업데이트는 다음처럼 이루어집니다. 이때 K는 레이팅의 변화율을 조절하는 상수입니다.
RA=RA+K(SAEA),RB=RB+K(SBEB) R_A' = R_A + K\,(S_A - E_A),\qquad R_B' = R_B + K\,(S_B - E_B)
Elo rating score는 기본적으로 “시간이 지날수록 실력이 변한다”는 가정을 전제하고 있는데요 (같은 플레이어를 이겼더라도 언제 이겼느냐에 따라 나의 레이팅이 달라질 수 있음), 내부에서는 이와 다르게 시간에 따른 성능 변화를 가정하지 않는 Bradley–Terry(BT) score를 활용하고, 동시에 유저의 선택에서 필연적으로 발생할 수 있는 일부 편향을 보정한 score를 사용하고 있습니다 (참고: https://lmsys.org/blog/2023-12-07-leaderboard).
그림 10. 분야별 LLM에 대한 성능을 점수화하고 있는 Arena의 리더보드 예시 (출처: arena.ai)
그림 10. 분야별 LLM에 대한 성능을 점수화하고 있는 Arena의 리더보드 예시 (출처: arena.ai)
이제 점수를 계산하는 방식도 알았으니, 두 개의 답변을 보여준 뒤 점수를 고르게 하면 모든 모델의 순위를 매길 수 을까요? 리더보드에서는 유저가 명시적으로 답변을 고르는 특성 때문에 필연적으로 노이즈와 편향이 발생하게 됩니다. A/B 테스트와 MAB의 경우에는 유저가 특정 모델을 의도적으로 고른다기보다는, 해당 모델에 배정되었을 때의 행동을 기반으로 지표가 측정됩니다. 즉 자신도 모르게 진짜 을 먹었을 때와 가짜 약을 먹었을 때 다른 반응을 보이게 되는 것이죠. 하지만 리더보드의 경우에는 “어떤 게 더 좋아?”라는 의도를 직접적으로 전달받게 되고, 이런 경우 많은 사람들은 큰 영향이 없다고 느끼면 자신의 선호와 상관없는 답변을 선택하고 빠르게 넘어가게 되는 문제가 발생하게 됩니다.
실제로 유저는 실제로 좋고 나쁨과 무관하게 위치나 답변 길이 같은 요소 때문에 특정 답변을 선택하기도 합니다. ChatGPT에서 두 개의 답변이 등장했을 때, 모든 유저가 두 개의 답변을 성실히 읽고 고민할까요? 두 답변을 모두 읽고 선택한다고 하더라도 반드시 내용만이 선택의 근거라고 볼 수 있을까요? 이러한 고민은 아래와 같은 고민으로 이어집니다.
  • 왼쪽에서부터 글을 읽는 특성상 왼쪽에 있다는 이유만으로 선택이 될 수 있을까? 혹은 전송 버튼과 가까운 위치(커서가 가까운 곳)가 더 많이 선택될 수 있을까?
  • 내용이 더 길면 퀄리티와 상관없이 더 좋아 보인다고 느껴질 수 있을까? 혹은 반대로 내용이 길면 읽기 귀찮으니 더 짧은 답변을 선택하게 될까?
위 질문에 대한 정답은 상황마다 다르겠지만, 이제 답변 내용이 아닌 “형식”만 보고 고르는 선택이 분명히 섞일 것이라는 것은 자명해 보입니다. 그래서 내부 리더보드를 활용하는 과정에서는 점수 계산 자체도 중요하지만, 의미 없는 선택과 편향을 줄이는 것이 매우 중요해집니다(모델 순서 랜덤 배정, 편향 제거를 위한 UI/UX 설계, 노이즈 후속 필터링 등).
최대한 편향을 제어한다고 해도 리더보드의 순위가 항상 MAB 및 A/B 테스트의 결과와 항상 일치하는 것은 아닙니다. 이 부분은 유저에게 설문을 직접 받는다는 점에서 유도될수도, 서로 다른 평가 방식이 서로 다른 지표를 추종하고 있다는 점에서 기인할수도 있는데요, 이 포스트를 읽으시는 분들도 저희와 함께 고민해보시면 좋을 것 같습니다. 하지만 여전히 리더보드는 노이즈와 편향, 그리고 최종 지표와의 불일치와 같은 우려에도 불구하고 유저의 선호를 빠르고 직접적으로 수집할 수 있다는 점에서 수많은 모델 후보들에 대해 MAB와 A/B 테스트로 넘어가기 전에 “최소한의 선호는 있는가?”를 확인하는 하나의 관문으로써 활용되고 있습니다.

마치며

지금까지 A/B 테스트, MAB, 리더보드의 순서로 스캐터랩 내부에서 “정말로 재밌는 LLM은 무엇인지”를 파악하는 방식에 대해 알아보았습니다. 본 포스트가 독자분들에게 실제 프로덕션에서 서빙되고 있는 LLM이 어떻게 평가되는지 조금이라도 엿볼 수 있는 기회가 되었기를 바랍니다.
마지막으로 스캐터랩이 제타라는 서비스에서 가장 재밌는 LLM을 찾기 위한 여정은 다음 표로 정리할 수 있을 것 같습니다.
notion image
저희는 여전히 제타 서비스를 위해 어떤 평가 방식이 가장 적합한지, 그리고 각각의 방식을 올바르게 채택하고 있는지에 대해 꾸준히 학습하고 있습니다. 유저의 특성은 끊임없이 바뀌고 있으며, 분석을 요하는 지표와 데이터들 또한 다변화되고 있습니다. 스캐터랩은 “빠른 실험 사이클이 빠른 임팩트를 낸다”는 믿음 하에, 테스트/배포가 원활히 이루어질 수 있도록 A/A 테스트, 위험 발화 비중과 이탈 비율같은 가드레일 지표에 대한 모니터링 등 실험 전방위적인 파이프라인을 보조하는 툴을 갖추고 꾸준히 고도화하고 있습니다.
스캐터랩의 ML 리서처는 유저가 좋아할 만한 모델을 학습하는 데서 그치지 않고, 학습한 모델이 실제 유저들에게 얼마나 좋은 경험을 주는지 평가하는 방법을 함께 설계하고 있습니다. 더 나아가 학습과 평가에 필요한 데이터를 서비스 환경에서 자연스럽게 수집할 수 있도록 UI/UX 관점에서도 고민하고 있습니다. 학습한 모델의 재미를 어떻게 측정하고, 이를 실제 환경에서 어떻게 검증하는지, 그리고 선택된 모델이 어떤 과정을 거쳐 서비스에 배포되는지 궁금하신 분들은 아래 링크로 티타임을 요청해 주세요. 언제든 환영합니다! 😃
 
본 포스트에서 다룬 A/B 테스트와 MAB에 대해 더 자세히 학습하고 싶으신 분에게는 아래 서적을 추천합니다.
 
스캐터랩의 ML 리서처 포지션에 관심있다면 아래 링크를 참고해주세요!
 
Share article

Scatter Lab