본문 바로가기
개발/프롬프트 엔지니어링

Chain of Thought Prompting

by ▶ Carpe diem ◀ 2023. 9. 20.

Prompt Engineering Guide(https://www.promptingguide.ai/) 내용을 참고해서 작성하거나, 번역한 내용입니다.

 

Chain of Thought Prompting (생각의 사슬 프롬프팅)

Regular Prompting vs CoT (Wei et al.)

LLM 에게 이유에 대해 설명하도록 만드는 방법입니다. 위 사진에서 퓨샷 표준 프롬프트(few shot standard prompt)와 생각의 사슬 프롬프트를 비교해볼 수 있습니다.

CoT의 주요 아이디어는 예제(exemplers)에서 추론 과정을 설명하는 퓨샷 예제(few shot exemplars)를 LLM에 보여줌으로써 LLM이 프롬프트에 응답할 때 추론 과정도 보여줄 수 있도록 하는 것입니다.

 

결과

CoT 는 산술적, 상식적, 그리고 상징적 추론 과제들과 같은 과제들에서 결과를 향상시키는 효과를 보여주었습니다. 특히 아래 그림에서 확인할 수 있듯이 prompted PaLM 540B 는 GSM8K 에서 57% 정확도를 달성하였습니다.

 

 

 

제약

Wei et al. (2022)에서 "CoT는 ∼100B의 파라미터를 가진 모델과 함께 사용할 때만 성능 향상을 가져온다" 라고 합니다. 더 작은 모델은 비논리적인 생각의 사슬(CoT)을 작성했고, 이는 표준 프롬프트로 작성할 때 보다 더 부정확했습니다. 모델들은 보통 모델의 크기에 비례하여 CoT 프롬프팅에 따른 성능 향상을 보였습니다.

 

 

Zero-shot COT Prompting (제로샷 생각의 사슬 프롬프팅)

Few-shot, Few-shot-CoT, Zero-shot, Zero-shot-CoT

최근에 나온 아이디어 중 하나로 제로샷 생각의 사슬zero-shot CoT (Kojima et al. 2022)가 있습니다. 원래의 프롬프트에 "Let's think step by step"을 추가하는 것이 핵심입니다. 간단한 문제를 풀고 모델이 어떻게 작동하는지 살펴봅시다:

 

Prompt:

I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?
 

Output:

11 apples

정답이 틀렸습니다! 위에서 제안한 프롬프트로 시도해 보겠습니다.

 

Prompt:

I went to the market and bought 10 apples. I gave 2 apples to the neighbor and 2 to the repairman. I then went and bought 5 more apples and ate 1. How many apples did I remain with?
Let's think step by step.

Output:

First, you started with 10 apples.
You gave away 2 apples to the neighbor and 2 to the repairman, so you had 6 apples left.
Then you bought 5 more apples, so now you had 11 apples.
Finally, you ate 1 apple, so you would remain with 10 apples.

 

이 간단한 프롬프트가 위와 같은 문제에 효과적이라는 점이 인상적입니다. 프롬프트에 사용할 예제가 너무 많지 않을 때 특히 유용합니다.

 

 

Automatic Chain-of-Thought (Auto-CoT)

 

데모와 함께 생각의 사슬 프롬프트를 적용할 때, 이 과정은 효과적이고 다양한 예시를 수작업으로 포함합니다. 이러한 수작업은 차선의 해결책으로 이어질 수 있습니다. Zhang 등(2022)은 "Let's think step by step"라는 프롬프트가 있는 대규모언어모델을 활용하여 데모를 위한 추론 사슬(reasoning chains)을 하나씩 생성함으로써 수작업을 없애는 접근 방식을 제안합니다. 이 자동 프로세스는 여전히 생성된 체인에 실수가 있을 수 있습니다. 실수로 인한 영향을 완화하기 위해서는 데모의 다양성이 중요합니다. 이 연구에서는 다양한 질문을 샘플링하고 데모를 구성하기 위한 추론 체인을 생성하는 Auto-CoT를 제안합니다.

Auto-CoT는 두 가지 주요 단계로 구성됩니다:

  • 1단계): 질문 클러스터링(question clustering): 주어진 데이터 세트의 질문을 몇 개의 클러스터로 분할합니다.
  • 2단계): 데모 샘플링(demonstration sampling): 각 클러스터에서 대표 질문을 선택하고 간단한 휴리스틱과 함께 제로샷 생각의 사슬(Zero-Shot-Cot)를 사용해 추론 체인을 생성합니다.

간단한 휴리스틱은 질문의 길이(예: 60개의 토큰)와 추론 단계 수(예: 5개의 추론 단계)가 될 수 있습니다. 이렇게 하면 모델이 간단하고 정확한 데모를 사용하도록 장려합니다.

 

그 과정은 아래에 설명되어 있습니다:

이미지 출처: Zhang et al. (2022)

 

Automatic Chain of Thought Prompting in Large Language Models

Large language models (LLMs) can perform complex reasoning by generating intermediate reasoning steps. Providing these steps for prompting demonstrations is called chain-of-thought (CoT) prompting. CoT prompting has two major paradigms. One leverages a sim

arxiv.org

Auto-CoT 코드는 여기에서 확인할 수 있습니다.

 

 


 

  • exemplers: examples of the task that the prompt is trying to solve, which are included in the prompt itself.