LLM 시대, LangChain(랭체인)으로 배우는 AI 소프트웨어 개발
CoT(Chain-of-Thourht) 프롬프트는 복잡한 추론 작업에서 LLM의 성능을 향상시키는 방법입니다. CoT의 기본적인 아이디어는 문제를 해결할 때 중간 추론 단계의 출력을 LLM에 촉구하는 것입니다. 대답에 이르기까지의 논리적 사고의 흐름은 그대로 LLM 자신의 추론 프로세스에 반영되므로 보다 정확하고 논리적인 대답을 얻을 수 있습니다.
이는 Transformer가 자신의 출력을 재귀적으로 입력하고 다음 출력을 계산하는데 사용하기 때문입니다. LLM이 추론 단계를 출력하는 방법에는 예시를 사용하는 Few-Shot CoT와 지시만을 사용하는 Zero-Shot CoT가 있습니다.
Few-Shot CoT(Chain-of-Thought) 프롬프팅(Wei, Wang, et al, 2022)은 사용자가 문제를 제시할 때 그 문제를 해결하기 위한 단계별 풀이과정의 예를 몇가지 예시와 같이 제공하는 기법입니다. 이를 통해 LLM은 제공된 풀이과정을 참고로 새로운 문제에 대한 해결방법을 직접 생성할 수 있습니다.
예를 들어, 산술문장 문제를 푸는 상황에서 사용자는 LLM에 다음과 같은 형태의 프롬프트를 제공할 수 있습니다.
이 프롬프트에서 사용자는 2가지 산술문장 문제와 그 해결 프로세스를 예로 제시하고 새로운 문제해결 프로세스를 LLM에 생성하려고 합니다. LLM은 제시된 예를 참고하여 새로운 문제에 대한 해결 프로세스를 생성합니다. 이 프롬프트를 ChatGPT-4.5에 제공한 결과를 다음과 같이 인용합니다.
'해결과정:'뒤에 설명과 같이 단계별로 추론 과정이 나와 있습니다. '대답:' 이후가 생성되면 추론 과정도 Transformer입력에 이용되므로 정답률이 향상됩니다.
Zero-Shot CoT 프롬프트(Kojima et al, 2022)는 사용자가 문제문장만을 제공하고 '단계별로 생각해 봅시다'나 '논리적으로 생각해 봅시다'등의 지시를 프롬프트에 추가하여 LLM에 단계적인 해결 프로세스를 생성시키는 방법입니다. 또한, 참조한 논문에서는 "Let's think step-by-step"이라는 문구를 사용되고 있습니다.
예를 들어, Zero-Shot CoT는 다음과 같은 프롬프트를 사용합니다.
이런 프롬프팅 방식을 활용하면 LLM은 별도의 추가학습이나 명시적인 예시없이도 주어진 문제에 대해 체계적인 사고과정을 거쳐 논리적이고 명확한 해결 방안을 제시할 수 있게 됩니다. 특히. AI 개발자 입장에서는 추가 데이터 수집 및 모델 재학습 없이도 GPT와 같은 최신 LLM모델의 추론 및 논리적 사고능력을 간단한 프롬프팅만으로 효율적으로 활용할 수 있어 생산성을 높이는데 유리합니다.
따라서, Few-Shot CoT와 마찬가지로 Zero-Shot CoT는 단계별로 추론 과정을 보여줍니다. 또한, 궁극적으로 얻은 답변도 정확합니다. 또 다른 예로 다으마과 같은 작업을 생각해 봅시다. 이 작업은 GSM8K 벤치마크(Cobbe et al, 2021)에 포함된 문제입니다.
여기서도 기계번역으로 한국어로 한 것을 사용합니다.
이 문제에 대해 ChatGPT 3.5에서 Zero-Shot CoT 프롬프트를 사용하는 경우 결과가 아래와 같이 나옵니다. 또한 CoT가 없는 Zero-Shot 프롬프트를 사용한 경우의 결과는 두번ㅉ째 결과에 나와 있습니다. 이 예제에서는 CoT를 사용하지 않는 경우는 0이라고 대답하고 있는 반면, CoT를 사용하면 $70,000과 올바른 대답을 출력하고 있습니다. 참고로 CoT효과를 검증하기 위해 오래된 ChatGPT 3.5를 사용했을 떄의 경우를 사용하였습니다. 새로운 모델에서는 자동으로 CoT가 적용되기 때문입니다. 새로운 모델로 사용할 경우 "추론하지 않고 답변하십시오"라고 지시한 후, CoT를 억제하면 CoT의 유무에 따른 차이를 확인할 수 있습니다.
그러나, Zero-Shot CoT 프롬프팅을 하지 않은 경우에도 어느 정도 단계별로 대답을 이끌고 있는 것같습니다. 필자도 실제로 GSM8K의 문제를 이용해 정답률을 계측한 결과, CoT를 사용했을 경우의 정답률을 79%, CoT를 사용하지 않는 경우의 정답률은 76%와 그다지 차이가 없는 것으로 나타납니다. 이는 Zero-Shot CoT 프롬프트가 일부 문제에서 성능을 향상시킬 수 있음을 보여줍니다. 한편 차이가 적은 이유로 최근에 나온 LLM은 특히 지시를 받지 않고도 CoT의 추론을 자동으로 할 수 있도록 파인튜닝이 되어 있을 가능성이 있습니다. 또한 OpenAI o3와 같은 모델에서는 추론의 각 단계(CoT)를 내부처리로 하여 사용자에게 그 세부사항이 출력되지 않을 수 있습니다. 이 기술은 Hidden CoT라고 불릴 수 있습니다.
CoT프롬프트는 논리적 사고가 필요한 복잡한 작업에서 특히 유용합니다. 예를 들어, 산술문장 제목이나 논리 퍼즐등에서는 CoT프롬프트를 사용하여 정답률이 향상됩니다. 반면에 간단한 사실 검색 및 패턴 매칭과 같은 작업에서는 CoT프롬프트의 효과는 제한적입니다. 오히려 추론 단계 생성과 관련된 추가 토큰 소비와 계산비용 증가가 문제가 될 수 있습니다.
Zero-Shot CoT 프롬프트 예제 (ChatGPT-4.5 답변인용)
©2024-2025 GAEBAL AI, Hand-crafted & made with Damon Jaewoo Kim.
GAEBAL AI 개발사: https://gaebalai.com
AI 강의 및 개발, 컨설팅 문의: https://talk.naver.com/ct/w5umt5