8. 합성 고객(Synthetic Customers), 파트 1: 가짜 쇼핑객이 추천 시스템을 평가할 수 있을까?
요약
본 글은 추천 시스템의 성능 검증에 대한 문제를 다루며, 기존의 오프라인 지표와 온라인 A/B 테스트의 한계를 제시합니다. 특히 '가짜 고객(Synthetic Customers)'을 활용하여 빠르고 효율적으로 모델을 평가하는 방법을 제안하고 있습니다.
핵심 포인트
- 오프라인 지표는 빠르지만, 실제 환경과 괴리되는 오프라인-온라인 격차가 발생할 수 있다.
- A/B 테스트는 정확하지만 시간이 오래 걸리고 트래픽이 많이 필요하다는 단점이 있다.
- 가짜 고객(Synthetic Customers)을 활용하면 두 방법의 장점을 결합하여 효율적인 검증이 가능하다.
- 추천 시스템은 사용자 피드백 루프와 데이터 편향 문제를 고려해야 한다.
source link: https://4thwithme.dev/blog/synthetic-customers-theory/
색깔과 향이 나는 화장지를 파는 가게를 상상해 보세요. 민트, 라벤더, 베이컨 같은 제품들이요. 새로운 '고객들도 좋아한 상품' 코너를 만듭니다. 오프라인(Offline)에서는 점수가 잘 나옵니다. 이 코너를 트래픽의 절반에게 배포합니다. 3주 후, A/B 테스트 (실시간 분할 테스트) 결과 아무 차이가 없다는 것을 알게 됩니다.
이것이 일반적인 이야기입니다. 이 글은 더 빠른 검증 방법, 즉 가짜 고객(fake customers)에 관한 것입니다. 먼저 그들이 당신의 코너를 클릭하게 만드세요. 이것은 2부작 중 파트 1입니다. 파트 1은 연구에서 제시하는 내용이고, 파트 2는 제가 직접 구현한 내용을 다룹니다.
문제점: 두 가지 좋지 않은 선택지
추천 시스템(recommender)은 제품을 제안합니다. 새로운 것을 테스트하기 위해 당신에게는 두 가지 선택지가 있습니다. 둘 다 결점이 있습니다.

의도적으로 중앙에 시뮬레이터가 배치되어 있습니다
**오프라인 지표(Offline metrics)**는 오래된 로그를 재현합니다. 두 가지 예시는 nDCG (정규화 할인 누적 이득, normalized discounted cumulative gain)와 precision@k (상위 k개 선택 중 몇 개가 맞는지). 이것들은 빠르고 저렴합니다. 하지만 모델은 오프라인에서는 승리하고 온라인에서는 패배할 수 있습니다. 이것이 바로 오프라인-온라인 격차(offline-online gap)입니다. 2022년 설문조사(Stavinova et al.)는 네 가지 원인을 제시합니다:
- 로그가 생성된 이후 사이트가 변경됨.
- 지표들이 참신성(novelty)과 다양성(variety)을 무시함.
- 피드백 루프(feedback loops)가 누락됨. 당신이 보여주는 것이 사람들이 다음에 클릭하는 것을 변화시키기 때문입니다.
- 로그 데이터에 편향(biased)이 있음.
**온라인 A/B 테스트(Online A/B tests)**는 정직하지만 느립니다. post 3에서 보여주었듯이, 작은 이득을 위해서는 많은 트래픽과 시간이 필요합니다. 실제 고객들은 더 나쁜 페이지를 볼 수도 있습니다. 또한 개인정보 보호 규정(Privacy rules)도 보관할 수 있는 데이터를 제한합니다.
중간에 **시뮬레이터(simulator)**가 위치합니다. 실제 데이터로부터 가짜 사용자를 학습시키고, 이들이 추천 시스템에 반응하도록 합니다. 그리고 그들의 행동을 계산합니다. 몇 시간 만에 답을 얻을 수 있습니다. 실제 고객은 아무도 건드리지 않습니다.
시뮬레이터의 5가지 구성 요소
설문조사에는 18개의 시뮬레이터가 있었습니다. 이들은 모두 C1부터 C5까지, 다섯 가지 공통된 부분을 공유합니다.

Stavinova et al. (2022)의 표 2에서 가져와 재작성함
모두 C1(가짜 데이터 생성)과 C3(여기에 추천 시스템 실행)을 가지고 있습니다. 약 절반은 '만약 ~라면' 부분인 C2를 가지고 있습니다.

DeepFM vs logistic regression on 11 engineered datasets (Malenšek et al., arXiv:2412.06809, CC BY 4.0)
그들은 함께 중요해지는 피처 쌍들을 숨겼습니다. 규칙은 논리 게이트(AND, OR, XOR)와 제곱의 합이었습니다. 이 쌍들은 수백 개의 쓸모없는 피처들 사이에 놓여 있었습니다. DeepFM (딥 팩토리제이션 머신, 신경망 추천기)은 11개 설정 중 10개에서 로지스틱 회귀(logistic regression)를 능가했습니다. 구성 6에서는 둘 다 우연에 가까웠고, 단순 모델이 승리했습니다. 실제 데이터는 이것을 가르쳐 줄 수 없습니다. 왜냐하면 아무도 진정한 정답을 알려주지 않기 때문입니다.
문제점은 이 방식이 쇼핑객이 아니라 데이터를 만든다는 것입니다. 해당 논문은 또한 자신의 데이터를 실제 데이터와 비교하지 않습니다.
2. 언어 모델(LLM)이 한 명의 쇼핑객 역할을 수행하다
SimUSER (Bougie and Watanabe, Toyota에서 개발한 Woven)는 가짜 사용자 각각에게 LLM (대규모 언어 모델)의 두뇌를 부여합니다. 이 과정은 두 단계로 이루어져 있습니다.

SimUSER 설계 재구성 (논문의 그림은 저작권 보호)
1단계: 페르소나 선택. 실제 사용자가 좋아하거나 싫어했던 약 50개의 아이템을 가져옵니다. LLM이 다섯 가지 페르소나(나이, 직업, Big Five 성격 특성)를 작성합니다. 이 사용자에게 무작위 다른 사용자보다 가장 잘 분리되는 페르소나를 유지합니다.
2단계: 에이전트 실행. 네 개의 모듈을 갖습니다. 페르소나는 까다로움과 습관을 설정합니다. 인식(Perception)은 아이템 썸네일을 읽습니다. 기억(Memory)은 과거 평점과 지식 그래프를 저장합니다. 이 두뇌가 추론한 후, 클릭(CLICK), 다음(NEXT), 또는 종료(EXIT) 중 하나를 선택합니다.
가장 흥미로운 부분은 검증(check)입니다. 저자들은 세션당 방문 페이지 수로 점수를 매긴 실제 A/B 테스트 55건을 수행했습니다. 시뮬레이터가 실제와 같이 변형된 결과들을 순위화했을까요? 그 스피어만 상관계수 (Spearman correlation) (두 순위 목록이 얼마나 일치하는지를 나타냄)가 가장 높았습니다. 이는 Agent4Rec과 RecAgent를 능가했습니다. 이후 그들은 추천 시스템을 두 가지 방식으로 조정(tuning)했습니다. nDCG@10 (상위 10개 항목에 대한 nDCG) 기준으로 조정했을 때는 기준선(baseline)과 비슷한 결과를 얻었습니다. 하지만 SimUSER로 조정하자 실제 서비스 환경에서 참여도(engagement)가 향상되었습니다. 문제는 데이터가 비공개라는 점입니다.
3. 실제 피드백을 이용해 소규모 모델 학습하기
클릭은 '무슨 일이 일어났는지'를 보여줄 뿐, '왜 일어났는지'는 알려주지 않습니다. UserMirrorer (Wei 등, 2025)는 여기에 '이유(why)'를 추가합니다. 각 예시는 한 장면(scene)입니다: 사용자의 프로필과 기록, 그리고 보여준 항목 목록으로 구성됩니다. 모델은 그중 하나의 항목을 선택합니다.

하나의 장면: 왼쪽은 메모리, 오른쪽은 보여진 목록 (Wei 등, arXiv:2508.18142, CC BY-SA 4.0)

장면에서 소규모 사용자 시뮬레이터로 이어지는 네 단계 (Wei 등, arXiv:2508.18142, CC BY-SA 4.0)
대규모 언어 모델(LLM)이 실제 선택 각각에 대한 이유를 작성합니다. 소형 모델은 그 선택과 이유로부터 학습합니다. 비용을 절감하는 두 가지 트릭이 있습니다. 첫째, 약한 모델과 강한 모델이 가장 의견이 다른 시나리오만 유지합니다. 이런 시나리오가 가장 많은 것을 가르칩니다. 둘째, 각 이유를 실제 선택과 비교합니다. 일치하는 이유는 SFT(supervised fine-tuning)의 훈련 데이터가 됩니다. 불일치하는 경우는 DPO(direct preference optimization)를 위한 부정적 예시가 됩니다. 그 결과로 생성된 모델은 30억 개의 파라미터를 가집니다. 이 모델은 여덟 개의 공개 데이터셋으로 테스트되었습니다. 코드와 모델은 공개되어 있습니다.
4. 대화형 가짜 사용자(Chatty fake users)
UserSimCRS v2 (Bernard and Balog)는 대화형 추천 시스템(Conversational Recommender Systems, CRS)을 다룹니다. 이 시스템은 두 가지 설계를 지원합니다. 의제 기반 사용자(agenda-based user)는 명확한 단계, 즉 NLU(natural language understanding), 정책(policy), 그리고 NLG(natural language generation)를 가집니다. 또한 고정된 정보 요구 사항을 가지고 있습니다. v2는 텍스트 읽기와 쓰기를 위해 LLM을 추가합니다. 종단 간 사용자(end-to-end user)는 하나의 LLM입니다. v2는 또한 채팅 점수를 매기는 LLM 심사위원(judge)도 추가합니다. 저자들은 심사위원이 편향되거나 조작될 수 있다고 경고합니다.

검사할 수 있는 부분들, 또는 모든 것을 수행하는 하나의 LLM(UserSimCRS v2에서 재구성)
Micro, meso, macro
이 설문조사는 가짜 사용자를 위한 세 가지 규모를 명명합니다:
- Micro: 한 사용자 기록으로부터 학습합니다. 대부분의 사용자는 충분한 기록을 가지고 있지 않습니다.
- Meso: 유사한 사용자 그룹으로부터 학습합니다. 그룹당 하나의 모델입니다.
- Macro: 모든 사람으로부터 학습합니다. 하나의 모델입니다. 대부분의 시뮬레이터가 이를 수행합니다.

micro, meso, macro, 설문조사에서 정의한 바와 같이
Meso는 드뭅니다. 그래서 파트 2에 선택했습니다. 쇼핑 고객들은 매우 다릅니다. 호텔은 40개의 객실을 위해 구매하고, 선물 구매자는 한 롤을 구매합니다. 평균적인 쇼퍼는 누구에게도 해당되지 않습니다. 하지만 사람당 하나의 모델로는 데이터가 너무 부족합니다.
어떤 것을 사용해야 할까요?
가지고 있는 것과 테스트하려는 것에 따라 다릅니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기