쉬운 예시’가 독? LLM 추론 능력을 극대화하는 복잡성 기반 프롬프팅
LLM 추론 능력, ‘쉬운 예시’가 오히려 독이었다? (Complexity-Based Prompting 분석)
LLM에게 단계별로 생각하라고(Chain-of-Thought, CoT) 지시했는데, 왜 자꾸 뻔한 논리 함정에 빠질까요?
많은 엔지니어가 ‘모델을 잘 가르치려면’ 단순하고 명확한 예시를 퓨샷(few-shot) 프롬프트에 넣어야 한다고 생각합니다. 하지만 만약 이 ‘친절한 단순함’이 LLM의 잠재력을 막는 족쇄라면 어떨까요?
비유하자면, 대학생에게 ‘1+1=2’를 반복해서 보여주면서 복잡한 미적분을 풀라고 기대하는 것과 같습니다. 모델은 이미 ‘1+1’은 알고 있는데 말이죠.
최근 Yao Fu 등이 발표한 “COMPLEXITY-BASED PROMPTING” 논문은 이 통념을 정면으로 반박합니다. 더 복잡한 추론 예시를 보여주는 것만으로 LLM의 다단계 추론 능력이 비약적으로 향상됨을 증명했기 때문입니다.
이 글에서는 왜 ‘복잡한 예시’가 LLM을 더 똑똑하게 만드는지, 그리고 당장 프롬프트를 어떻게 바꿔야 하는지 명쾌하게 정리해 드립니다.
1. 기존 CoT 프롬프트의 딜레마: 어떤 예시가 ‘좋은 예시’일까?
‘생각의 사슬(CoT)’은 질문과 답만 보여주는 대신, 정답에 도달하는 ‘중간 추론 과정’을 예시로 보여주는 방식입니다. 이는 모델이 복잡한 문제를 단계별로 풀도록 유도해 성능을 크게 높였습니다.
하지만 근본적인 질문이 남았습니다. “수많은 예시 중 어떤 것을 프롬프트에 넣어야 하는가?”
기존 접근 방식은 비효율적이었습니다.
- 수동 튜닝 (노가다): 엔지니어가 직접 여러 예시를 조합하며 감으로 최적의 조합을 찾습니다. 엄청난 노력이 필요합니다.
- 유사성 기반 검색: 테스트 질문과 ‘비슷한’ 예시를 DB에서 검색해 삽입합니다. 효과는 있지만, 방대한 주석(annotation) 데이터가 미리 준비되어 있어야 합니다.
이 방법들은 ‘진짜 좋은 예시’가 무엇인지 근본적인 답을 주진 못했습니다.
2. 해법: “복잡한 문제엔 복잡한 교과서로”
연구팀의 가설은 놀랍도록 직설적입니다. “복잡한 추론을 가르치려면, 복잡한 예시를 보여줘라.”
이것이 바로 ‘복잡성 기반 프롬프트’의 핵심입니다. 의도적으로 추론 단계(reasoning steps)가 많은 예시를 선택해 프롬프트에 포함시키는 전략이죠.
어떤 차이인지 볼까요?
❌ 우리가 흔히 쓰던 ‘나쁜’ 예시 (단순함)
Q: 아시아는 350달러짜리 드레스를 140달러에 샀다. 몇 % 할인받았나?
A: (2단계 추론)
- 350 – 140 = 210달러 절약.
- 210 / 350 = 0.6, 즉 60% 할인.
✅ 모델의 성능을 끌어올린 ‘좋은’ 예시 (복잡함)
Q: 안젤로와 멜라니는 매시간 10분 휴식… 2개 챕터 3시간씩… 워크시트 1.5시간씩… 총 며칠 공부해야 하나?
A: (9단계 추론)
- 챕터 공부 시간: 2 * 3 = 6시간…
- … (중간 단계 생략) …
- 총 15시간 필요. 하루 4시간 공부 시 3.75일이므로, 4일이 필요함.
왜 복잡한 예시가 더 효과적일까요?
LLM은 이미 2단계짜리 단순 계산은 할 줄 압니다. 모델에게 정말 필요했던 것은 ‘여러 단계를 논리적으로 엮어 복잡한 문제를 푸는’ 훈련이었고, 복잡한 예시가 그 ‘해설지’ 역할을 한 것입니다.
3. 정답 고르기: ‘단순한 우연’을 걸러내는 법
이 연구는 ‘정답’을 고르는 방식에도 복잡성 기준을 적용했습니다.
❌ 기존 방식 (Self-Consistency)
- 모델에게 같은 질문을 50번 합니다. (50개의 다른 추론 과정과 답 생성)
- 가장 많이 나온 답을 정답으로 채택합니다. (단순 다수결 투표 🗳️)
문제점: 모델이 ‘쉬운 길’로 대충 풀어서 우연히 맞힌 답(spurious correlation)도 똑같이 1표를 받습니다.
✅ 새로운 방식 (Complexity-Based Consistency)
- 모델에게 50번 질문합니다. (50개의 답 생성)
- [핵심] 50개 중 추론 단계가 가장 긴(복잡한) 상위 30개만 남깁니다. (단순하고 ‘날림’으로 푼 답안지 폐기 🗑️)
- 그 30개의 ‘복잡한 엘리트’ 답안지 중에서만 다수결 투표를 진행합니다.
이는 ‘운 좋게 맞힌’ 답을 걸러내고, 실제로 복잡한 논리 과정을 거친 ‘진짜 추론’에만 가중치를 두는, 훨씬 똑똑한 방식입니다.
4. 결과: “어려운 예시가 쉬운 문제를 더 잘 풀게 했다”
이 두 전략(복잡한 프롬프트 + 복잡한 정답 선택)의 조합은 압도적이었습니다.
- SOTA 달성: 3개의 주요 수학 벤치마크(GSM8K 등)에서 새로운 최고 성능(SOTA)을 달성했습니다.
- 체급 극복: 175B 파라미터 모델(GPT-3)이 3배 이상 큰 540B 모델(PaLM)의 성능에 근접하거나 능가했습니다.
가장 흥미로운 점은 따로 있습니다. 복잡한 프롬프트는 ‘어려운 문제’보다 오히려 ‘쉬운 문제’에서 성능 향상 폭이 더 컸습니다.
이것이 의미하는 바는 명확합니다. 복잡한 예시는 모델에게 ‘더 일반적이고 강력한 추론의 기본기’를 가르쳤다는 뜻입니다. 기본기가 탄탄해지니 쉬운 문제는 물론 어려운 문제까지 해결할 수 있게 된 것이죠.
5. 내 프롬프트에 바로 적용하는 3가지 실전 팁
이 논문의 교훈은 명확하며, 당장 실무에 적용할 수 있습니다.
실전 적용 체크리스트
- 팁 1: ‘길이’가 아닌 ‘추론 단계(Step)’가 많은 예시를 쓰세요. 퓨샷(few-shot) 예시를 고를 때, 단순히 글자가 긴 것이 아니라 ‘논리적 단계’가 몇 개인지 세어보세요. 여러 문제를 해결해야 하는 복합적인 예시가 단일 연산 예시보다 훨씬 낫습니다.
- 팁 2: 데이터가 없다면 ‘질문 길이’를 대안으로 삼으세요. 추론 단계가 미리 작성된(주석) 데이터가 없다면 어떻게 할까요? 연구팀은 ‘질문 자체의 길이’나 ‘수식의 복잡도’ 또한 복잡성을 나타내는 유용한 대리 지표(proxy)가 됨을 확인했습니다. 예시를 직접 만들어야 한다면, 가장 질문이 길고 복잡해 보이는 케이스를 선택해 공들여 해설지를 다는 것이 효율적입니다.
- 팁 3: ‘복잡성 기반 일관성'(K
결론: LLM에게 ‘쉬운 길’ 대신 ‘생각하는 힘’을 가르치세요
‘복잡성 기반 프롬프팅’은 LLM이 단순한 패턴 암기를 넘어 진정한 다단계 추론 능력을 갖추도록 훈련하는 핵심 열쇠입니다. 모델이 ‘쉬운 길’로 가려는 유혹을 뿌리치고, 더 견고하고 일반화된 문제 해결 전략을 배우도록 강제하는 것이죠.
단, 이 접근법은 모델이 일정 규모 이상일 때(emergent ability) 작동한다는 점을 기억해야 합니다. 연구에서 소형 모델은 복잡한 예시를 소화하지 못하고 오히려 성능이 저하되기도 했습니다.
LLM의 추론 능력을 한계까지 끌어올리고 싶다면
지금 당장 프롬프트에 포함된 ‘너무 친절하고 단순한’ 예시들부터 점검해 보세요. 가장 복잡하고 어려운 문제를 해결하는 예시야말로 모델에게 최고의 스승이 될 것입니다.
