10.3.4 데이터의 편향(Bias) 제거와 대표성 확보를 위한 샘플링 기법
회귀 테스트(Regression Testing)를 위한 골든 데이터셋(Golden Dataset)을 구축할 때 가장 경계해야 할 함정은 ’데이터 편향(Data Bias)’이다. 프로덕션 환경의 실측 데이터나 기존 테스트 케이스를 무작위로 수집할 경우, 상위 20%의 통상적인 유스케이스(Use Case)가 전체 데이터셋의 80%를 지배하는 현상이 필연적으로 발생한다.
이러한 불균형적 데이터셋 모델을 평가하는 오라클(Oracle)은, 모델이 흔한 질문에는 완벽히 대답하지만 드물고 복잡한 엣지 케이스(Edge Case)에서는 치명적인 환각(Hallucination)을 일으키는 현상을 잡아내지 못한다. 즉, 오라클의 평가 지표(Metric) 자체가 편향되어 ‘가짜 양성(False Positive)’ 합격 판정을 내리게 되는 것이다.
본 절에서는 골든 데이터셋의 통계적 대표성(Representativeness)을 확보하고 편향을 상쇄하기 위한 엔지니어링적 샘플링 기법을 다룬다.
1. 층화 추출법(Stratified Sampling)을 이용한 도메인 강제 할당
가장 직관적이고 필수적인 접근법은 데이터의 도메인(Domain)이나 기능 카테고리별로 계층을 나누어 샘플링을 강제하는 ’층화 추출법(Stratified Sampling)’이다.
예를 들어, SQL 생성 AI를 검증하는 골든 데이터셋을 구축한다고 가정해보자. 프로덕션 로그의 90%가 단순한 SELECT * FROM users 형태의 기초 쿼리라고 해서 골든 데이터셋을 같은 비율로 구성해서는 안 된다.
시스템 설계자는 전체 데이터셋(가령 1,000건)을 구성할 때 다음과 같이 카테고리별로 엄격한 할당량(Quota)을 강제해야 한다.
- 단순 조회 (Simple SELECT): 15%
- 다중 테이블 조인 (Multi-JOIN): 30%
- 복잡한 집계 및 그룹화 (Aggregation/GROUP BY): 25%
- 서브쿼리 및 윈도우 함수 (Subquery/Window Function): 20%
- 문법적 예외 처리 및 에러 유도 케이스: 10%
이러한 인위적인 비율 조정(Rebalancing)을 통해, 발생 빈도는 낮으나 비즈니스 임팩트가 막대한 복잡한 쿼리에 대해 모델의 생성 능력을 정확히 타격하고 검증할 수 있는 오라클 환경을 조성할 수 있다.
2. 길이 및 구조 기반의 버킷팅(Bucketing) 전략
입력 프롬프트의 ’물리적 형태’에 기반한 편향도 제거해야 한다. LLM은 짧고 명확한 명령에는 잘 대응하지만, 컨텍스트가 길어지거나(Long-context) 복잡한 마크다운/JSON 형식이 섞인 프롬프트에서는 주의력(Attention)을 상실하는 ‘Lost in the middle’ 현상을 자주 겪는다.
따라서 입력 데이터의 토큰 길이(Token Length)나 구조적 복잡도를 기준으로 데이터를 여러 버킷(Bucket)으로 나누고, 각 버킷에서 고르게 샘플링하는 기법이 필요하다.
- Bucket A (0~200 토큰): 단답형 명시적 질문
- Bucket B (200~1,000 토큰): 다중 제약 조건이 포함된 복합 질문
- Bucket C (1,000+ 토큰): 방대한 로그나 문서를 첨부한 분석 요청
이러한 물리적 버킷팅을 수행하면, 특정 프롬프트 길이에 대해서만 과적합(Overfitting)되어 높은 점수를 받는 모델의 착시 현상을 오라클이 정확히 보정하여 평가할 수 있다.
3. 액티브 러닝(Active Learning) 기반의 약점 타겟팅
초기 골든 데이터셋이 구축된 이후에는, 모델이 일관되게 실패하는 취약 영역을 동적으로 파악하여 데이터셋을 보강하는 액티브 러닝(Active Learning) 기법을 오라클 파이프라인과 연동해야 한다.
회귀 테스트 런타임 결과, 모델이 ‘날짜 연산(Date Arithmetic)’ 카테고리에서 계속해서 오답을 낸다면, 시스템은 이를 인지하고 백로그(Backlog)나 합성 데이터(Synthetic Data) 제너레이터에 ‘날짜 연산’ 관련 샘플의 추가 추출 및 생성을 오토스케일링(Auto-scaling)하듯 지시해야 한다.
결과적으로 편향 없는 데이터셋이란 한 번 고정되고 끝나는 박제된 문서가 아니라, 모델의 현재 버그와 싸우기 위해 지속적으로 샘플링 가중치를 변경하며 진화하는 살아있는 유기체다.