LLM 자기 선호 편향 (Self-Preference Bias): 익명 피어 리뷰(Anonymized Peer Review)가 이를 해결하는
요약
LLM 평가 모델이 자신의 출력물이나 특정 모델 제품군의 문체를 선호하는 '자기 선호 편향(Self-Preference Bias)' 문제를 다룹니다. 연구 결과 GPT-4와 같은 모델이 자신의 생성물을 선택할 확률이 매우 높으며, 이는 평가의 객관성을 해치는 요소로 지적됩니다.
핵심 포인트
- LLM 평가자는 자신의 문체와 유사한 답변에 높은 점수를 주는 경향이 있음
- GPT-4는 요약 작업 시 자신의 출력을 90% 이상의 확률로 선호함
- 자기 선호 편향 외에도 답변의 길이에 치중하는 장황함 편향이 존재함
- 멀티 모델 패널 구성 시 모델 간 문체 유사성이 평가 결과에 왜곡을 줄 수 있음
LLM 자기 선호 편향 (Self-Preference Bias): 익명 피어 리뷰 (Anonymized Peer Review)가 이를 해결하는 방법
내가 알아차리기 전까지 패널(panel)은 일주일 동안 자기 자신에게 동의하고 있었으며, 가장 최악인 점은 그동안 로그(log)가 내내 정상적으로 보였다는 것입니다.
나는 깨끗한 아이디어라고 느껴지는 것을 구축했습니다. 여러 개의 프론티어 모델(frontier models), 서로 다른 계열의 모델들이 각각 후보 출력물 풀(pool)을 심사하고 가장 좋은 것부터 나쁜 것 순으로 순위를 매기는 방식이었습니다. 기계들의 배심원단이었죠. 나는 몇 가지 답변을 생성하고, 패널이 투표하게 한 뒤, 승자를 선택하며, 다섯 개의 독립적인 의견이 하나의 의견보다 낫다고 믿었습니다. 그것이 새벽 1시에 내가 스스로에게 팔았던 전체 기획이었고, 며칠 동안은 불만 없이 작동했습니다. 순위가 매겨졌고, 매 라운드마다 승자가 나타났습니다. 대시보드(dashboard)는 초록색이었습니다.
그러다 나는 실제로 무엇이 승리했는지 읽기 시작했습니다.
패널이 계속해서 왕관을 씌워준 출력물들은 가장 날카로운 것들이 아니었습니다. 그것들은 특정한 방식으로 들리는 것들이었습니다. 내용상 번호가 필요하지 않은 곳에 번호가 매겨진 목록들. 문장의 특정한 리듬. 일종의 하우스 스타일(house style). 나는 그 형태가 파악될 때까지 한동안 그것을 응시했고, 파악되었을 때는 약간 메스꺼움을 느꼈습니다. 나의 패널은 품질을 위해 선택하는 것이 아니었습니다. 그것은 유사성을 위해 선택하고 있었습니다. 심사위원들은 심사위원들이 쓰는 방식대로 글을 쓰는 후보자들에게 보상을 주고 있었습니다. 나는 인기 투표를 만들어 놓고 그것을 평가(evaluation)로 포장했습니다.
아무도 말해주지 않는, 당신이 가정했던 것
모든 멀티 모델 패널(multi-model panel)의 밑바탕에 깔린 전제는 심사위원들이 중립적이라는 것입니다. 당신은 라벨이 붙지 않은 답변을 읽는 모델이 그 가치에 따라 점수를 매길 것이라고 가정합니다. 하지만 그렇지 않습니다. Panickssery와 동료들은 2024년 NeurIPS 논문인 "LLM Evaluators Recognize and Favor Their Own Generations"라는 명확한 제목의 논문을 통해 이를 직접 측정했습니다. 그들은 GPT-4가 요약 작업(summarization tasks)에서 쌍체 비교 승률(pairwise win rate) 0.90 이상으로 자신의 출력을 선호한다는 것을 발견했습니다. 일대일 비교의 90% 이상에서, 모델은 자신이 작성한 답변을 선택했습니다. 그것이 더 나아서가 아니라, 그것이 자신의 것이었기 때문입니다.
이러한 효과는 모델 제품군(families) 전반에 걸쳐 방향성을 띱니다. 특정 모델 제품군의 고유한 문체(house style)는 동일한 제품군 출신의 심사위원(judge)에게 더 좋게 읽힙니다. 더 신중하고(hedged) 구조화된 답변은 그런 방식으로 글을 쓰는 심사위원에게 더 좋게 읽힙니다. 따라서 제가 패널을 구성하고 그 구성원들의 출력을 포함한 풀(pool)에 대해 투표하게 했을 때, 제가 실제로 측정한 것은 어떤 스타일이 제 평가자들 사이에서 가장 흔하게 나타나는가 하는 점이었습니다. 가장 높은 점수를 받은 답변은 그 방의 지문(fingerprint)과 일치하는 답변이었습니다. 저는 계획을 세우던 새벽 1시에 스스로의 독립성에 대해 자축하며 시간을 보냈지만, 실제로는 그 정반대의 것을 만들었습니다.
그리고 이것은 명백한 편향뿐만이 아닙니다. 일단 찾아 나서기 시작하자, 세 가지 편향이 층층이 쌓여 있는 것을 발견했습니다. 자기 선호 편향(Self-preference bias)은 가장 요란한 것이었습니다. 그 아래에는 장황함 편향(verbosity bias)이 자리 잡고 있었는데, 이는 모델들이 더 긴 답변에 더 높은 점수를 주는 현상입니다. 추가된 단어들이 아무런 내용도 담고 있지 않더라도, 길이는 노력과 권위로 읽히기 때문입니다. 즉, 저의 선택 기준은
그것은 거의 아무런 역할도 하지 못했으며, 지나고 보니 그럴 수밖에 없었습니다. 모델이 스스로 가지고 있다는 사실조차 인지하지 못하는 선호도를 지시(instruction)만으로 교정할 수는 없습니다. 인지는 프롬프트(prompt)가 도달할 수 있는 수준보다 낮은 단계에서 일어나고 있기 때문입니다. 심사위원(judge)은 "이것은 내 것이니 보상해야겠다"라고 의식적으로 생각하는 것이 아닙니다. 그저 자신의 학습 분포 (training distribution)와 일치하는 산문을 읽으며 그것이 더 유창하고, 더 정확하게 느껴지며, 더 옳다고 판단할 뿐입니다. 모델에게 공정해지라고 요구하는 것은 모델이 볼 수 없는 편향 (bias)을 인지하라고 요구하는 것과 같습니다. 저는 모델로부터 그 모델 자신의 반영 (reflection)을 논리적으로 설득해 보려 했던 것입니다.
진짜 문제는 심사위원들이 편향되었다는 것이 아니었습니다. 문제는 심사위원들이 자신들이 누구의 결과물을 읽고 있는지 알 수 있었다는 점이었습니다. 편향이 작동하려면 정보가 필요했는데, 저는 그 정보를 공짜로 넘겨주고 있었습니다.
전환점 (The turn)
해결책은 제가 찾아낸 것이 아니며, 이 점을 분명히 하고 싶습니다. 왜냐하면 제가 그곳에 도달했을 때 우아한 해결책은 이미 공개되어 있었기 때문입니다. Andrej Karpathy는 정확히 이 문제를 해결하는 llm-council이라는 작은 프로젝트를 발표했으며, 그 메커니즘은 거의 모욕적일 정도로 단순합니다. 바로 심사위원들이 자신들이 누구의 출력물 (output)을 읽고 있는지 알지 못하게 하는 것입니다.
그것이 아이디어의 전부입니다. 패널이 투표하기 전에, 후보자들의 모든 정체성을 제거합니다. 첫 번째 답변은 "응답 A"가 되고, 두 번째는 "응답 B"가 되는 식입니다. 모델 이름도, 제공자 (provider)도, 단서도 없습니다. 서버는 어떤 라벨이 어떤 모델에 속하는지에 대한 비공개 매핑 (private mapping)을 유지하며, 양방향으로 깔끔한 일대일 할당을 수행합니다. 따라서 투표가 완료된 후에는 이를 역추적하여 누가 어떤 점수를 받았는지 정확히 재구성할 수 있습니다. 심사위원들은 오직 중립적인 라벨과 텍스트만을 봅니다. 편향이 작동하는 데 필요한 정보가 투표 과정 동안 단순히 부재하게 되는 것입니다.
이는 식별할 수 없는 대상은 선호할 수 없기 때문에 작동합니다. 심사위원이 어떤 답변이 자신의 것인지 알지 못하는 순간, 자기 선호 편향 (Self-preference bias)은 사라집니다. 이름을 숨기는 것은 가장 명백한 인식 신호 또한 제거하여 스타일 편향 (Style bias)도 줄여주지만, 완전히 없애지는 못합니다. 모델이 독특한 리듬으로 글을 쓴다면 그 정체성은 산문 자체에서 여전히 읽힐 수 있기 때문입니다. 익명화 (Anonymization)는 라벨 (Label)을 깨뜨리지만, 지문 (Fingerprint)까지 깨뜨리지는 못합니다. 하지만 대부분의 피해는 라벨이 입히고 있었으며, 이를 제거하는 것만으로도 상황을 완전히 바꾸어 놓았습니다.
처음으로 패널을 블라인드 테스트 방식으로 재설계하고 순위가 돌아오는 것을 지켜보았을 때, 승자들은 달라져 있었습니다. 특정 스타일의 답변들이 휩쓸던 현상이 멈췄습니다. 일주일 동안 제 평가를 조용히 조작해 왔던 요소가 사라졌는데, 그 요소가 작동하는 데 필요한 단 하나의 정보를 제가 제거해 버렸기 때문입니다. 편향과 논쟁해서가 아니라, 편향을 굶겨 죽임으로써 그것이 증발하는 것을 지켜보는 것은 기묘하고도 특유한 만족감을 줍니다.
투표를 정직하게 집계하기
이름을 숨기는 것은 비교 결과에서 누가 승리할지를 해결합니다. 그 이면에는 두 번째 질문이 있습니다. 바로 순위가 매겨진 패널을 어떻게 단일 결정으로 전환하느냐 하는 것입니다. Karpathy의 프로젝트는 이 부분 또한 익명화만큼이나 단순하게 유지합니다. 각 심사위원은 익명화된 풀 (Pool)의 순위를 매기며, 프로젝트는 평균 순위 위치 (Average rank position)를 통해 해당 순위들을 집계합니다. 특정 후보에 대한 모든 심사위원의 위치를 가져와 평균을 내며, 패널 전체에서 가장 좋은 평균 순위를 기록한 답변이 승리합니다. 그게 전부입니다. 가중치도, 점수표도 없이, 단지 각 심사위원이 각 답변에 부여한 위치의 평균값만을 사용합니다.
순위를 평균 내는 방식에서 제가 좋아하는 점은, 이 방식이 무엇을 포착하고 무엇을 무시하는가에 있습니다. 이 방식은 특정 답변이 기술적으로 얼마나 많은 일대일 대결(head-to-head matchups)에서 승리했는지에는 관심을 두지 않는데, 이는 단순 다수결(naive majority vote)의 함정입니다. 다수결 방식은 한 명의 심사위원이 열광하고 나머지 심사위원들은 평범하다고 느낀 답변을 승자로 만들 수 있습니다. 근소한 차이의 승리도 승리로 간주되기 때문입니다. 하지만 평균 순위(Average rank position)는 그렇게 할 수 없습니다. 5명의 심사위원 중 4명이 2위를 주고 1명이 1위를 준 후보는 강력한 평균값을 얻게 되며, 심사단은 이를 '특정인에게만 열광적인 답변'이 아닌 '폭넓게 수용 가능한 답변'으로 정확하게 읽어냅니다. 풀(pool)에서 단 하나의 최선의 출력을 선택할 때 당신이 원하는 신호는 바로 이러한 '폭넓은 수용성(Broad acceptability)'이며, 순위의 평균값은 바로 이를 표면화합니다.
만약 제가 이 프로젝트를 확장한다면, 아마도 그 위에 보르다 방식(Borda-style)의 점수 산정 방식을 적용하여 각 순위를 점수로 변환하고 이를 합산함으로써, 아깝게 놓친 2위가 단순히 평균을 살짝 움직이는 것에 그치지 않고 명시적인 가중치를 갖도록 만들 것입니다. 이것은 저의 개인적인 개선안일 뿐, 해당 리포지토리(repo)에 포함된 기능은 아닙니다. llm-council이 실제로 수행하는 작업은 더 단순하며, 솔직히 말해 충분합니다. 익명화(anonymize)하고, 순위를 매기고(rank), 위치를 평균 내어(average the positions), 승자를 결정하는 것입니다. 핵심은 영리한 계산법이 아니라, 연산의 순서(order of operations)에 있는 규율입니다.
이것만으로는 충분하지 않은 부분
익명화가 해결하지 못하는 부분에 대해 솔직해지고 싶습니다. 왜냐하면 저는 이 방식을 배포할 당시 심사단 문제를 해결했다고 느꼈지만, 사실 그중 3분의 1만 해결했기 때문입니다.
자기 선호 편향(Self-preference)은 사라졌습니다. 하지만 두 가지 편향은 여전히 남아 있습니다.
장황함 편향(Verbosity bias)은 전혀 건드려지지 않았습니다. 답변이 어떤 라벨을 달고 있든 상관없이, 더 긴 답변은 더 깁니다. 익명화는 정체성(identity)에 작용할 뿐 길이에 작용하지 않으므로, 만약 당신의 작업이 철저함을 보상한다면 심사단은 단순히 더 많이 쓴 후보를 계속 선호할 것입니다. 유일한 실질적인 완화 방법은 내용 없는 길이에 대해 명시적으로 감점을 부여하는 루브릭(rubric)을 사용하는 것이거나, 투표 전에 모든 후보의 길이를 동일하게 정규화(normalizing)하는 것입니다. 두 방법 모두 거저 얻어지는 것은 아닙니다.
위치 편향 (Position bias)은 절반만 해결된 상태입니다. 라운드 사이에 어떤 모델이 어떤 레이블 (label)을 가져갈지 무작위화 (randomizing)하면, 특정 모델이 항상 앵커 슬롯 (anchor slot)에 위치하는 것을 방지하는 데 도움이 됩니다. 하지만 단일 판사 (judge)의 관점 내에서는 여전히 응답 A가 응답 B보다 먼저 나타나며, 흥미로운 사례가 대부분인 경계선상의 결정 (marginal calls)에서는 첫 번째로 나열된 항목이 조금 더 자주 승리합니다. 정직한 해결책은 단순히 라운드별이 아니라, 판사별로 독립적인 무작위 순서 (independent random ordering)를 부여하는 것입니다.
그리고 다양성에 대해 영리하게 생각하고 있다고 느꼈을 때 제가 빠졌던 더 조용한 함정이 있습니다. 동일한 계열 (family)의 모델 5개로 구성된 5인 판사 패널은 5개의 의견이 아닙니다. 공유된 학습 계보 (training lineage)는 공유된 선호도 (shared preferences)를 의미하며, 따라서 극한의 경우 완전히 상관관계가 있는 5인의 패널은 서로 다른 이름표를 달고 있는 한 명의 판사를 다섯 번 계산한 것과 같습니다. 익명화 (Anonymization)는 그로부터 당신을 구할 수 없습니다. 왜냐하면 편향은 레이블이 아니라 구성 (composition)에 있기 때문입니다. 해결책은 상류 (upstream)에 있습니다. 진정으로 다른 아키텍처 (architectures)로 패널을 구성하거나, 판사들이 얼마나 자주 의견이 일치하지 않는지 측정하여 그에 따라 가중치를 부여하십시오. 항상 동의하는 패널은 패널이 아닙니다. 그것은 정족수 (quorum)를 갖춘 메아리 (echo)일 뿐입니다.
원칙 (The principle)
이 메커니즘은 앞서 언급한 세 가지 주의 사항이 있더라도 올바른 토대이며, 그 이유는 구조적이기 때문입니다. 편향된 판사에게 더 나은 프롬프트 (prompt)를 사용하여 공정성을 구걸할 수는 없습니다. 대신 편향이 작동하는 데 필요한 정보를 제거하여 편향이 작동할 수 없게 만든 다음, 남은 잔여물을 2차적인 정리 작업으로 처리해야 합니다. 모델에게 실패하지 말라고 정중하게 요청하는 대신, 실패 모드 (failure mode) 자체가 불가능하도록 문제를 구조화하십시오.
그것이 제가 계속해서 되돌아오게 되는 부분입니다. 저는 자신의 반영(reflection)에 투표하면서도 건강해 보이는 패널 때문에 일주일이라는 시간을 허비했습니다. 그리고 그 해결책은 영리한 모델이나 더 긴 루브릭 (rubric)이 아니었습니다. 그것은 바로 이름표를 떼어내는 것이었습니다. Karpathy는 이미 이 아이디어를 명확하게 선보였으며, 저에게 남은 유일한 작업은 제 문제 또한 그 안에 있음을 인식하고 제가 구축한 버전이 인기 투표 (popularity contest)에 불과했다는 사실을 인정하는 것이었습니다. 만약 모델이 모델을 판단하도록 연결 (wiring)하고 있다면, 모델이 내놓는 단 하나의 순위라도 신뢰하기 전에 패널을 블라인드 (blind) 상태로 운영하십시오. 제 패널은 일주일 동안 괜찮아 보였습니다. 하지만 그 시간 내내 조용히 조작되어 있었습니다.
References
llm-council, Andrej Karpathy, 2024. 이 글이 의존하고 있는 레이블 익명화 (label-anonymization) 설계로, 익명화된 순위를 평균 순위 위치 (average rank position)로 집계합니다. 출처: github.com/karpathy/llm-council
LLM Evaluators Recognize and Favor Their Own Generations, Arjun Panickssery, Samuel R. Bowman, Shi Feng. NeurIPS 2024. GPT-4의 자기 선호 (self-preference) 승률이 0.90 이상으로 나타난 근거 자료입니다. arXiv: 2404.13076
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기