한 번은 공정한데 마흔 번은 아니었다
40회 반복 채용 실험에서 모든 집단의 성공 확률이 같은데도 LLM이 스스로 편향을 만들었다. 실행마다 방향이 달라 학습 편견이 아니라 세션 중 생성된 편향이다. 최신·대형 모델일수록 더 편중됐다.
결론부터. 에이전트를 같은 판단에 반복해서 돌리면 없던 편향이 생긴다. 한 번 물었을 때 공정한 것과 마흔 번 돌리며 기회를 나눌 때 공정한 것은 다른 능력이고, 후자는 기존 벤치마크에 잡히지 않는다.
실험 설계
가상의 네 집단(Tufa, Aima, Reku, Weki)에 의사·변호사·돌봄보조원·청소원을 채용시킨다. 40회에 걸쳐 한 명씩 뽑고 매번 성공 여부를 알려준다. 실제 성공 확률은 모든 집단, 모든 직업에서 90%로 동일하다. 차이가 없도록 설계돼 있다.
그런데 집단별로 직군이 몰렸다.
초기에 성공한 집단을 같은 직군에 계속 배치하면서 우연한 경험이 집단의 특성처럼 굳어졌다. 실행마다 집단과 직군의 연결이 달라져, 고정된 선입견보다 실험 중 형성된 편향이라는 해석을 뒷받침한다.
(원문)
여기가 핵심이다. 실행할 때마다 어느 집단이 어느 직군으로 몰리는지가 달라졌다. 학습 데이터에서 온 고정 편견이라면 매번 같은 방향으로 쏠려야 한다. 그렇지 않았다는 건 편향이 그 세션 안에서 만들어졌다는 뜻이다.
확인된 것 하나 더: 연구 당시 최신 모델들이 인간 참가자보다 직군 편중이 강했다. o3와 DeepSeek-R1도 예외가 아니었다. 새롭고 큰 모델일수록 더 편중됐으며, 이는 단일 질문형 편향 평가와 반대되는 경향이다.
왜 남 얘기가 아닌가
"채용 편향"이라고 적혀 있어서 HR 문제로 넘기기 쉽다. 실제 구조만 남기면 이렇다.
- 결과에 피드백이 있고
- 같은 종류의 판단을 반복하고
- 매번 선택지 중 일부만 시험한다
이 셋을 만족하는 걸 대입해 보면 된다. 추천 순위 결정, 큐에서 다음 처리할 항목 고르기, 버그 트리아지, 다음에 돌릴 실험 선택, 고객 문의 분류. 에이전트를 루프에 넣는 순간 대부분 여기 들어간다.
메커니즘의 이름은 익숙하다. 탐색 부족이다. 초반의 우연한 성공을 계속 활용하고, 안 뽑아본 쪽은 계속 안 뽑아보니 데이터가 쌓이지 않는다. 강화학습에서 오래 알려진 실패이고 사람도 똑같이 한다. 차이는 또 속도다.
어제 글과 같은 결론이 나왔다
완화책 실험 결과가 흥미롭다.
- 단계별 추론과 temperature 조정 → 효과가 제한적
- 나이·학력 정보 추가 → 편중은 줄지만 모델마다 효과가 다름
- 배치의 다양성을 평가 목표에 직접 반영 → 가장 일관된 개선
막연히 "공정하게 하라"고 지시하는 쪽은 이 목록에서 이기지 못했다.
어제 쓴 danluu의 테스트 기법 실험과 같은 모양이다. 거기서도 "TDD로 해줘" 같은 기법 이름 호출은 효과가 없었고, 위험 지점을 특정한 짧은 지시가 이겼다. 서로 다른 팀이 서로 다른 과제로 한 실험인데 같은 곳을 가리킨다.
추상적인 덕목을 지시하면 먹지 않는다. 측정할 대상을 목표에 박아 넣어야 먹는다.
바꿀 것
선택 분포를 로그로 남긴다. 무엇을 골랐는지가 아니라 무엇을 한 번도 안 골랐는지를 본다. 편향은 선택된 쪽이 아니라 시험되지 않은 쪽에서 자란다. 상위 3개만 계속 돌아가고 나머지가 0회라면 그건 성능이 아니라 탐색 부족일 수 있다.
"공정하게", "골고루" 같은 말을 프롬프트에서 뺀다. 대신 검증 가능한 형태로 목표에 넣는다. "각 후보군을 최소 N회 시험한 뒤 판단해"처럼.
모델 버전을 올렸다고 이 문제가 개선된다고 가정하지 않는다. 이 실험에서는 반대 방향이었다.
모르는 것: 원문이 한계를 명시한다. 이 실험은 집단별 성공 확률이 실제로 동일하게 설계된 환경이고, 진짜 차이가 있는 환경에서는 다양성 강제가 성공률을 낮출 수 있다. 그러니 위의 두 번째를 무조건 적용하면 안 된다. 선택지 사이에 실제 성능 차이가 있는 문제인지 먼저 확인하는 게 순서다. 그 경계를 어디에 그어야 하는지는 나도 모르고, 원문도 답하지 않는다.
댓글
불러오는 중...