LLM 리랭킹 성능 최적화를 위해 유저 히스토리 데이터를 무작위로 섞는 셔플링(Shuffling) 과정을 형상화한 삽화. 위치 편향(Position Bias) 문제를 해결하여 추천 알고리즘의 정확도를 높이는 엔지니어링 전략을 상징함
|

LLM 리랭킹 성능 최적화: ‘위치 편향’ 해결하고 추천 정확도 높이는 법

LLM 리랭킹 성능 최적화: ‘위치 편향’ 해결하고 추천 정확도 높이는 법
LLM 리랭킹 성능 최적화를 위해 유저 히스토리 데이터를 무작위로 섞는 셔플링(Shuffling) 과정을 형상화한 삽화. 위치 편향(Position Bias) 문제를 해결하여 추천 알고리즘의 정확도를 높이는 엔지니어링 전략을 상징함

비싼 API 비용을 들여 GPT-4o를 우리 서비스 추천 엔진(Reranker)으로 도입했는데, 오히려 기존의 가벼운 모델보다 성능이 안 나온다면 어떨까요?

당혹스럽겠지만, 실제로 벌어지고 있는 일입니다. 최근 일리노이 시카고 대학(UIC) 연구팀이 발표한 논문(Prompt-Based LLMs for Position Bias-Aware Reranking)에 따르면, 우리가 LLM의 ‘지능’만 믿고 간과했던 치명적인 약점이 하나 있습니다.

오늘은 그 약점이 무엇인지, 그리고 코드 한 줄로 성능을 반전시킬 수 있는 기막힌 꼼수를 소개해 드립니다.


LLM의 고질병: “먼저 말한 게 장땡”

우리가 흔히 LLM에 추천을 맡기는 방식은 이렇습니다.

  1. 기존 모델: 수만 개의 아이템 중 후보군 20개를 추린다.
  2. 프롬프트: “이 유저는 A, B, C를 봤어. 아래 20개 중 뭘 좋아할까?”라며 리스트를 준다.
  3. LLM: 순위를 다시 매긴다(Reranking).

여기서 위치 편향(Position Bias)이 발생합니다. LLM은 면접관이 첫 번째 지원자에게 강한 인상을 받는 것처럼, 프롬프트 앞쪽에 적힌 정보에 과도하게 꽂히는 경향이 있습니다.

실제 실험 결과

  • 대상: MovieLens-100K 데이터셋
  • 비교: 전통적인 LightGCN vs GPT-4o 리랭킹
  • 결과: GPT-4o를 썼더니 오히려 성능(NDCG)이 하락했습니다.

비싼 돈 들여서 모델 지능을 높였더니, 정작 추천은 엉망이 된 셈이죠.


“편향 갖지 마”라고 말하면 해결될까?

보통 이 단계에서 개발자들은 프롬프트에 지시사항(Instruction)을 추가합니다. “사용자의 기록은 배치 순서에 영향을 받았을 수 있으니 공정하게 평가해”라고 말이죠.

결론부터 말씀드리면, 아무 효과 없습니다.

구분 프롬프트 내용 결과
A (기본) “순위를 재정렬해줘” 성능 하락
B (지시 추가) “위치 편향을 고려해서 공정하게 정렬해줘” 여전히 성능 하락 (효과 없음)

LLM은 “공정하게 해”라는 추상적인 자연어 지시를 실제 확률 계산 단계에 반영하지 못합니다. 마치 편견이 가득한 사람에게 “편견 갖지 말고 봐”라고 말만 한다고 해서 바로 객관적이 되지 않는 것과 비슷합니다.


해결책: 인과관계를 깨뜨리는 ‘카드 섞기’

연구팀이 찾아낸 해결책은 허무할 정도로 간단합니다. 유저의 히스토리 순서를 랜덤하게 섞어서(Shuffling) 넣는 것입니다.

우리는 보통 ‘시간 순서(최신순)’가 중요하다고 생각해서 A → B → C 순으로 데이터를 넣어줍니다. 하지만 LLM에게는 이 정돈된 순서가 오히려 ‘앞쪽 아이템에 집착하게 만드는’ 독이 됩니다.

  • 나쁜 사례 (Chronological): [최근 본 영화 1, 2, 3…] → 모델이 앞쪽 데이터에 매몰됨.
  • 올바른 사례 (Random Shuffled): [영화 2, 1, 3…] → 순서의 힘이 빠지면서 모델이 비로소 ‘콘텐츠의 맥락’을 보기 시작함.
단순히 random.shuffle() 한 줄을 추가했을 뿐인데, 모든 지표에서 기존 GPT-4o의 성능을 압도하는 결과가 나왔습니다.

개발자를 위한 3단계 액션 플랜

지금 당장 여러분의 추천 파이프라인에 다음 3가지를 적용해 보세요.

  1. 프롬프트로 실랑이하지 마세요: “편향을 없애줘” 같은 지시는 토큰 낭비일 뿐입니다.
  2. 데이터를 무작위로 섞으세요: 유저 히스토리를 프롬프트에 넣기 전, 무조건 순서를 섞으세요. 시간적 맥락을 지키는 것보다 편향을 깨는 것이 성능 향상에 훨씬 유리합니다.
  3. 하이브리드 구조를 쓰세요: 처음부터 LLM을 쓰지 마세요. LightGCN 같은 가벼운 모델로 20~50개를 먼저 뽑고, LLM은 최종 리랭킹에만 투입하는 2-Stage 방식이 가장 효율적입니다.

마치며: 때로는 무질서가 답이다

LLM은 마법의 지팡이가 아니라, 특성이 뚜렷한 도구일 뿐입니다. 도구가 말을 안 들을 땐 “잘 좀 해봐”라고 타이르기보다, 도구가 일하기 편하게 데이터의 구조를 바꿔주는 것이 진짜 엔지니어링이죠.

혹시 지금 추천 모델의 성능이 정체되어 있나요? 그럼 일단 데이터를 섞어보세요. 의외의 정확도는 그 무질서 속에서 나올지도 모릅니다.

Similar Posts