Chain-of-Thought Prompting
사고 연쇄(CoT) 프롬프팅은 언어 모델이 답변 전에 중간 추론 단계를 작성하게 하여 여러 단계가 필요한 문제의 정확도를 높입니다.
연쇄 사고 (CoT) 프롬프팅은 프롬프트 엔지니어링 기법으로, 대규모 언어 모델 (LLM)이 최종 답변을 내기 전에 중간 추론 단계를 작성하도록 합니다. 질문에 바로 "9"라고 답하는 대신 모델은 "23 - 20 = 3, and 3 + 6 = 9"라고 쓴 다음 마지막에 답을 제시합니다. Google의 Jason Wei와 동료들은 2022년 논문 대규모 언어 모델의 추론을 유도하는 연쇄 사고 프롬프팅에서 이 기법을 소개했습니다. 프롬프트에 풀이 예제 8개를 포함하자 PaLM 540B의 GSM8K 성능은 17.9%에서 56.9%로 향상되었습니다. GSM8K는 초등학교 수준의 수학 문장제 벤치마크이며, 이 성능은 별도로 학습된 검증기를 사용한 미세 조정 GPT-3이 기록한 기존 최고 점수 55%를 넘어섰습니다.
연쇄 사고 프롬프팅의 작동 방식#
LLM은 한 번에 토큰 하나씩 텍스트를 생성하며, 모든 토큰은 네트워크 레이어를 동일한 횟수만큼 통과합니다. 답을 얻기 위해 여러 단계가 필요한 질문에서는 답변의 첫 토큰을 쓰기 전에 모델이 모든 추론을 마쳐야 합니다. 모델이 추론 단계를 글로 쓰면 각 중간 결과가 컨텍스트 윈도우에 들어가 이후의 모든 토큰에 영향을 미칩니다. 따라서 어려운 문제일수록 답이 나오기 전에 더 많은 토큰과 연산이 필요합니다.
퓨샷 CoT는 프롬프트에 질문과 풀이로 구성된 몇 가지 예시를 넣고 모델이 새 질문에 같은 형식을 적용하도록 합니다. 이는 프롬프트의 예시를 활용한 퓨샷 학습의 한 사례입니다. Wei 등의 논문 Figure 1에 나온 다음 대화는 이 형식을 보여 줍니다. 첫 번째 답변은 프롬프트에 포함된 예시이고, 두 번째 답변은 모델의 응답입니다.
Q: Roger has 5 tennis balls. He buys 2 more cans of tennis balls. Each can has 3 tennis balls. How many tennis balls does he have now?
A: Roger started with 5 balls. 2 cans of 3 tennis balls each is 6 tennis balls. 5 + 6 = 11. The answer is 11.
Q: The cafeteria had 23 apples. If they used 20 to make lunch and bought 6 more, how many apples do they have?
A: The cafeteria had 23 apples originally. They used 20 to make lunch. So they had 23 - 20 = 3. They bought 6 more apples, so they have 3 + 6 = 9. The answer is 9.같은 예시를 "The answer is 11."로 줄여 제시하자 모델은 카페테리아 질문에 "The answer is 27."이라고 답했습니다.
제로샷 CoT에는 예시가 필요하지 않습니다. Takeshi Kojima와 동료들은 질문 뒤에 "Let's think step by step"을 덧붙이는 것만으로도 추론 과정을 작성하도록 유도할 수 있음을 발견했습니다. 대규모 언어 모델은 제로샷 추론기입니다에서 보고한 결과에 따르면, InstructGPT (text-davinci-002)에 이 문구를 사용하자 MultiArith 벤치마크의 제로샷 정확도는 17.7%에서 78.7%로, GSM8K 정확도는 10.4%에서 40.7%로 향상되었습니다.
연쇄 사고가 효과적인 경우#
성능 향상은 모델 규모와 작업에 따라 달라집니다. Wei 등은 CoT가 규모에 따라 창발하는 능력이라고 설명합니다. 약 1,000억 개의 파라미터를 가진 모델에서만 개선이 나타났으며, 더 작은 모델은 "유창하지만 논리적이지 않은 사고의 연쇄를 생성"하고 표준 프롬프팅보다 낮은 점수를 기록했습니다. 산술, 상식, 기호 추론의 다단계 문제에서 가장 큰 향상이 나타났습니다. 한 단계 산술 문제 모음인 SingleOp에서는 성능이 낮아지거나 매우 조금 향상되었습니다.
여러 연쇄를 샘플링하면 하나만 사용하는 것보다 성능이 향상됩니다. 자기 일관성 기법에서 Xuezhi Wang과 동료들은 누클리어스 또는 온도 샘플링으로 다양한 추론 경로를 생성한 뒤 가장 많은 경로가 선택한 답을 채택했습니다. 이 방식은 단일 탐욕적 연쇄에 비해 GSM8K 정확도를 17.9%포인트 높였습니다. 연쇄가 하나 추가될 때마다 생성 토큰도 추가되므로 CoT와 자기 일관성은 정확도를 높이는 대신 추론 지연 시간과 비용을 늘립니다.
비전-언어 파이프라인도 이미지 근거를 활용해 같은 방식을 적용합니다. Ultralytics Platform Agents에서 LLM 블록은 이미지와 상위 단계에서 생성된 YOLO26 탐지 결과를 함께 받습니다. 따라서 이 블록에 연쇄 사고 프롬프트를 적용하면 비전-언어 모델이 장면에 대한 판단을 내리기 전에 탐지된 물체를 하나씩 검토할 수 있습니다.
추론 모델과 충실성#
2024년 9월 출시된 OpenAI의 o1과 같은 추론 모델은 모든 답변 전에 긴 사고 연쇄를 생성하도록 강화 학습으로 학습되므로 이러한 동작은 더 이상 프롬프트에 좌우되지 않습니다. OpenAI의 추론 모범 사례는 이러한 모델을 사용할 때 "단계별로 생각하라"는 지시를 피하라고 개발자에게 권고합니다. 해당 프롬프트는 도움이 되지 않을 수 있으며 때로는 오히려 성능을 저하시킬 수 있기 때문입니다.
작성된 추론 연쇄는 답변에 대한 설명처럼 보이므로 이를 설명 가능한 AI로 해석하고 싶어질 수 있습니다. Miles Turpin과 동료들은 언어 모델은 항상 자신이 생각하는 바를 말하지 않습니다에서 추론 연쇄가 실제 원인을 잘못 나타낼 수 있음을 보여 주었습니다. 퓨샷 예시를 재정렬해 정답이 항상 "(A)"가 되도록 하자 GPT-3.5와 Claude 1.0은 "(A)"를 더 많이 선택했고, 재정렬을 언급하지 않은 채 선택을 정당화하는 추론 연쇄를 작성했습니다. 이와 같은 편향 유발 특징은 BIG-Bench Hard 13개 작업에서 정확도를 최대 36% 떨어뜨렸습니다. 그럴듯하지만 틀린 추론 연쇄는 LLM 환각의 한 원인입니다.
연쇄 사고와 관련 기법 비교#
- 프롬프트 체이닝: 작업을 여러 모델 호출로 나누고 코드가 각 출력을 다음 프롬프트에 전달합니다. CoT는 한 번의 호출 안에서 수행됩니다.
- 사고의 트리 (ToT): 각 단계에서 여러 후보 단계를 생성하고 점수를 매긴 다음, 역추적을 통해 결과 트리를 탐색합니다. 반면 CoT는 하나의 경로를 따릅니다.
- ReAct 프롬프팅: 추론 단계와 검색이나 도구 호출 같은 작업을 번갈아 수행하고, 그 결과를 추론 과정에 반영합니다.
- 검증 체인 (CoVe): 모델이 답변 초안을 작성하고, 스스로 검증 질문을 만든 뒤 독립적으로 답하고, 초안을 수정하도록 합니다.
- 잠재 추론: 작성된 토큰 대신 모델의 은닉 상태에서 중간 추론을 수행하므로 추론 체인이 드러나지 않습니다.










