같은 질문인데 프롬프트만 바꿨는데 정확도가 30% 올라갔다

“이게 진짜 되나? 프롬프트 한 줄만 추가했는데?”

처음 이 현상을 본 건 어떤 개발자의 깃허브 이슈였다. 수학 문제를 푸는 LLM의 정확도가 18%에서 57%로 올라갔다는 내용이었다. 처음엔 믿기지 않았다. 모델을 다시 학습시킨 것도 아니고, 더 큰 모델로 바꾼 것도 아닌데 어떻게 40% 가까이 올라갈 수 있을까. 하지만 더 찾아본 결과 이건 실제로 일어나는 일이었고, 지금 업계에서는 이것을 “사고의 연쇄(Chain of Thought)”라고 부른다.

2022년 구글이 발견한 프롬프트 엔지니어링의 마법

구글 연구팀이 발표한 논문에서 처음으로 정식화된 이 기법은 정말 단순했다. 그저 모델에게 “단계별로 생각해보자(Let’s think step by step)”라고 한 문장 추가하는 것뿐이었다. 그런데 결과는 정말 극적이었다. GPT-3의 정확도가 38%에서 54.5%로 뛰어올랐고, 초등학교 수학 벤치마크인 GSM8K에서는 더욱 놀라운 결과가 나왔다. 기존 방식은 18%의 정확도를 기록했지만 CoT 방식은 57%를 달성했다. 그냥 한 문장 추가했을 뿐인데 말이다.

이 발견은 AI 커뮤니티에 한 바퀴 물을 끼얹었다. 그 이유는 간단했다. 지금까지 모두가 모델의 성능을 높이려면 더 큰 모델을 만들거나, 더 많은 데이터로 학습시켜야 한다고 생각했기 때문이다. 하지만 이제 보니 “어떻게 질문하는가”가 “어떤 모델을 쓰는가” 만큼 중요했다. 심지어 더 중요할 수도 있었다.

도대체 무엇이 다를까? 실제 예시로 보자

간단한 문제로 비교해보자. 어떤 사람이 출장을 다녀왔다. 회사에서 50만 원의 출장비를 받았고, 호텔에 20만 원, 교통비에 10만 원을 썼다. 남은 돈으로 매일 2만 원짜리 식사를 했다. 그리고 마지막에 남은 돈은 5만 원이었다. 이 사람은 며칠을 출장 다녀왔을까?

일반 프롬프트 방식: “위의 상황에서 출장 일수는 몇 일인가요?”

많은 모델들은 이 질문에 바로 답을 내놓는데, 자주 틀렸다. 자리수를 헷갈리거나, 계산을 빠뜨리거나, 단순히 적당한 숫자를 만들어내기도 했다.

Chain of Thought 방식: “위의 상황에서 출장 일수는 몇 일인가요? 단계별로 생각해서 풀어주세요.”

또는 더 명확하게: “다음을 단계별로 풀어보세요. 먼저 호텔과 교통비를 더하세요. 그 다음 총액에서 뺀 후, 식사비로 나누세요.”

이렇게 하면? 놀랍게도 모델들은 정확하게 답을 낸다. 각 단계를 명시적으로 거치면서 논리를 따라가기 시작한다. 그리고 최종 답도 맞춘다.

왜 이런 일이 일어날까?

이건 꽤 흥미로운 질문이다. 심리학자들은 이것을 “사고 과정의 외현화(externalization of thinking)”라고 부른다. 인간도 복잡한 문제를 풀 때 단계별로 생각을 정리하면 더 정확해진다. 마찬가지로 LLM도 마지막 답만 생각하는 것보다, 중간 과정을 거치도록 하면 더 정확한 결론에 도달한다는 뜻이다.

기술적으로 생각해보면, 언어 모델은 다음 단어의 확률을 계산하는 방식으로 작동한다. 한 번에 답을 내놓으라고 하면 모델은 “정답처럼 보이는 단어”의 패턴을 찾는다. 하지만 단계별로 생각하라고 하면, 모델은 논리적 흐름을 따르게 되고, 이 과정에서 자신이 학습한 지식을 훨씬 더 잘 활용한다.

누구에게 효과가 있을까?

중요한 건 이 기법이 모든 상황에 효과가 있는 건 아니라는 점이다. 어떤 질문에는 정말 효과가 크고, 어떤 질문에는 별 효과가 없다. 예를 들어 “서울의 수도는 뭐지?”라고 물어보는 건 CoT를 써도 별 차이가 없다. 답은 이미 정해져 있기 때문이다.

하지만 계산이 필요한 문제, 논리적 추론이 필요한 질문, 여러 단계를 거쳐야 하는 작업에서는 정말 강력하다. 수학, 과학, 논리 퍼즐, 절차적 문제 해결, 코딩 같은 작업들이다. 특히 개발자들이 LLM을 사용해서 코드를 생성하거나 버그를 찾을 때, 단순히 “이 코드 봐, 버그가 뭐지?”라고 하는 것보다 “코드를 라인별로 분석해서, 어디가 잘못됐는지 찾아봐”라고 하면 정확도가 훨씬 높다.

흥미로운 건 모델 크기도 중요하다는 것

연구에 따르면 CoT의 효과는 모델의 크기와 깊은 관련이 있다. 약 100억 개 이상의 파라미터를 가진 모델에서 가장 효과가 좋다고 한다. 작은 모델은 오히려 비논리적인 사고 체인을 생성할 수 있어서, 성능이 떨어질 수도 있다. 이건 마치 “매우 똑똑한 사람에게는 ‘천천히 생각해’라는 힌트가 효과적이지만, 그렇지 않은 사람에게는 오히려 혼란을 줄 수 있다”는 것과 비슷하다.

프로 팁: Zero-Shot CoT와 Few-Shot CoT의 차이

업계에는 두 가지 방식이 있다. 먼저 예시를 제공하지 않고 “단계별로 생각해보자”는 지시만 하는 방식을 Zero-Shot CoT라고 부른다. 이건 정말 편하다. 추가로 예시를 준비할 필요가 없기 때문이다.

반면 Few-Shot CoT는 한두 가지 예시를 먼저 보여주고, “이렇게 단계별로 풀어보세요”라고 지시하는 방식이다. 이 방식이 더 정확한 경우가 많다. 모델이 기대하는 답변 형식을 정확히 이해하기 때문이다.

실제로 프롬프트 엔지니어들은 처음에는 Zero-Shot CoT로 시작했다가, 결과가 만족스럽지 않으면 Few-Shot CoT로 전환하는 방식을 많이 사용한다. 추가 작업이 조금 늘어나지만, 그만한 가치가 충분히 있다.

실제 프로젝트에 적용했을 때 이야기

한 금융 스타트업은 고객 질문에 자동으로 답하는 챗봇을 만들고 있었다. 처음 정확도는 65% 정도였다. 나쁘지는 않지만, 금융이라는 민감한 영역이라 이 수준으로는 부족했다. 그들이 한 짓은 간단했다. 프롬프트에 “이 질문은 단계별로 생각해서 답해주세요”라는 문장을 추가했다. 결과? 정확도가 82%로 올라갔다.

다른 사례도 있다. 어떤 AI 에이전시는 고객의 복잡한 요청을 분석하는 모델을 만들고 있었다. 처음엔 요청의 의도를 제대로 파악하지 못해서 자주 틀렸다. 하지만 프롬프트에 “먼저 요청의 주요 목표를 파악하고, 다음으로 필요한 정보를 정리하고, 마지막으로 결론을 내려보세요”라고 단계를 명시했더니, 정확도가 40% 이상 올라갔다.

개발자들이 놓치는 중요한 포인트

많은 개발자들은 여전히 모델 자체에만 집중한다. “더 큰 모델로 바꿔볼까?” “더 나은 모델이 나왔다고 하던데?” 이런 식으로 생각한다. 하지만 현실은 다르다. 프롬프트 엔지니어링의 진화가 모델 성능 향상보다 더 빠른 속도로 일어나고 있다.

사실 지금의 LLM들은 이미 엄청난 능력을 갖추고 있다. 문제는 그 능력을 제대로 이끌어내지 못하는 것뿐이다. CoT는 그 능력을 깨우는 일종의 “마법의 단어”다. 비용도 들지 않고, 모델을 다시 학습시킬 필요도 없다. 그저 질문 방식만 바꾸면 된다.

지금 바로 시도해볼 수 있는 방법

만약 지금 어떤 LLM을 사용 중이라면, 오늘 이 기법을 시도해보자. 복잡한 질문에는 반드시 “단계별로 생각해보세요”를 붙여보자. 또는 “먼저…한 다음…마지막으로…”라는 식으로 명시적으로 단계를 제시해보자. 그리고 결과를 비교해보자. 대부분의 경우, 정확도가 눈에 띄게 올라갈 것이다.

실은 이게 AI 시대에 정말 중요한 기술이 될 가능성이 높다. 모델 자체는 계속 발전하겠지만, 이제 중요한 건 “어떻게 사용하는가”이다. CoT는 그 방법 중 가장 간단하면서도 효과적인 기법이다. 한 문장만 추가해도 30% 이상의 성능 향상을 얻을 수 있다면, 이보다 효율적인 투자가 있을까?

Leave a Comment