Deep Learning (TF, Keras, PyTorch)/Natural Language Processing

Chain-of-Thought Prompting 이란 무엇인가?

Rfriend 2024. 1. 5. 23:56

Chain-of-Thought Prompting은 복잡한 작업에서 언어 모델의 성능을 향상시키기 위해 사용되는 기술입니다. Chain-of-Thought Prompting은 언어 모델이 답을 찾아가는 과정에서 "생각을 말로 표현하거나(think aloud)" 단계별 추론 과정(step-by-step reasoning)을 따르도록 유도하는 방식으로 구성됩니다. 이 접근법은 수학 문제(math word problems), 복잡한 이해 문제(complex comprehension questions) 또는 주어진 데이터로부터 추론을 요구하는 문제(tasks that require drawing inferences from given data)와 같이 여러 단계나 추론의 레이어가 필요한 문제에 특히 유용합니다. 

Chain-of-Thought Prompting 에서는 문제를 제기하는 것뿐만 아니라 문제를 해결하기 위해 취할 수 있는 일련의 논리적 단계(a sequence of logical stemps)를 포함하여 프롬프트를 구성합니다. 이 방법을 통해 모델은 유사한 추론 라인을 따르도록 유도되며, 이는 정확하고 잘 설명된 답변에 도달할 가능성을 높입니다. 예를 들어, 수학 문제의 해답을 간단히 묻는 대신에, 문제를 접근하는 방법의 분해를 프롬프트에 포함시켜 모델이 이러한 사고 과정을 반영하도록 유도할 수 있습니다. 

 

아래에는 Standard Prompting와 Chain-of-Thought Prompting를 비교해서 예시를 들어놓은 것입니다. (논문에 제시된 예시)  우측 예시가 Chain-of-Thought Prompting 예시인데요, 파란색으로 색깔 칠해진 부분이 수학 문제를 푸는데 사용한 로직을 차근 차근 단계별로 풀어서 예시를 제시해주었더니, LLM 모델이 Output을 생성할 때 역시 차근 차근 단계를 밟아서 문제 풀이 로직을 설명해가면서 정확하게 답을 생성했습니다. 

 

 

[ Standard Prompting vs. Chain-of-Thought Prompting 예시 ]

Standard Prompting vs. Chain-of-Thought Prompting

* source: Jason Wei, et.al. "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", arXive:2201.11903v6, 2023

 

 

아래의 예시는 논문에 제시된 수학 (arithmetic), 상식 (common sense), 상징 추론 (symbolic reasoning) 영역의 Chain-of-Thought Prompting 예시입니다. (색깔 친 부분을 주시해서 보세요) 

 

 

[ Chain-of-Thought Prompting 예시 ]

Examples of Chain-of-Thought Prompting

* source: Jason Wei, et.al. "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", arXive:2201.11903v6, 2023

 

 

LLM 모델로는 ChatGPT-3.5와 ChatGPT-4 를 사용하여 Standard Prompting과 위에서 소개한 Chain-of-Thought Prompting 을 번갈아서 적용해서 수학 계산이 단계적으로 필요한 논리적인 문제를 제시해보겠습니다. 

 

1. Standard Prompting using ChatGPT-3.5

 

원하는 답변 대신에 "상식적으로 통근 시간이 말이 안되게 오래 걸린다"는 답변을 했네요. ㅋㅋ 

(동문서답?) 

 

[ User ] :
Which is a faster way to get to work?
Option 1: Take a 1000 minute bus, then a half hour train, and finally a 10 minute bike ride.
Option 2: Take an 800 minute bus, then an hour train, and finally a 30 minute bike ride. 


[ ChatGPT-3.5 ] :
Neither option seems practical for a daily commute to work, as both involve extremely long travel times. In a typical workday, commuting for over 10-16 hours (800-1000 minutes) would not be feasible for most people. You should explore alternative transportation options that would significantly reduce your commute time, such as finding a closer place to live or considering other modes of transportation like carpooling, using a car, or telecommuting if possible. A daily commute of 800-1000 minutes is not realistic for most people due to the excessive time spent on transportation. 

 

 

 

2. Chain-of-Thought using ChatGPT-3.5

 

이번에는 Chain-of-Thought Prompting을 사용해서 비슷한 문제의 단계적인 풀이 과정을 제시해주고, 본 문제를 냈을 때, 원하는 Output을 역시 단계적으로 차근 차근 풀어서 정확한 답을 생성했네요. ChatGPT 나 사람이나 비슷한거 같아요. 사람도 이런 문제 풀 때 보면 차근 차근 단계를 밟아가면서 풀잖아요. 

하여튼, 대규모 언어모델 (Large Language Model, LLM)이 거대해지면서 어느 순간 창발(emergence)이 일어나서 다방면의 과제를 잘 수행하는 면을 보이는데요, Chain-of-Thought Prompting 처럼 프롬프트에 단계적 사고 논리의 예시를 주는 것만으로도 LLM 모델이 이를 금방 이해해서 문제의 답을 생성하는것을 보면 참 놀랍습니다! 

 

[ User ] :
Which is a faster way to get home?

Option 1: Take an 10 minutes bus, then an 40 minute bus, and finally a 10 minute train.
Option 2: Take a 90 minutes train, then a 45 minute bike ride, and finally a 10 minute bus.
Option 1 will take 10+40+10 = 60 minutes.
Option 2 will take 90+45+10=145 minutes.
Since Option 1 takes 60 minutes and Option 2 takes 145 minutes, Option 1 is faster.

Which is a faster way to get to work?
Option 1: Take a 1000 minute bus, then a half hour train, and finally a 10 minute bike ride.
Option 2: Take an 800 minute bus, then an hour train, and finally a 30 minute bike ride. 


[ ChatGPT-3.5 ] :
Option 2 is the faster way to get to work.

Option 1:

1000 minutes bus
Half-hour (30 minutes) train ride
10-minute bike ride
Total time for Option 1: 1000 + 30 + 10 = 1040 minutes


Option 2:

800 minutes bus
1-hour (60 minutes) train ride
30-minute bike ride
Total time for Option 2: 800 + 60 + 30 = 890 minutes

Option 2 takes 890 minutes, while Option 1 takes 1040 minutes, making Option 2 the faster choice for getting to work. However, it's important to note that both options have extremely long commute times, and such long commutes are highly impractical in real-life situations. 

 

 

 

3. Standard Prompting using ChatGPT-4

 

ChatGPT-4 는 비록 Standard Prompting 을 사용해도 이 문제가 여러 단계를 차근 차근 거쳐서 문제를 논리적으로 풀어야 하는지를 알고 Python 을 실행시켜서 아래처럼 Python code를 짜서(!!) 문제를 풀고, 그 풀이 과정도 친절하게 설명해주고 있습니다. OpenAI 일 참 잘해요! 짝짝짝!! 추앙합니당~! 

(즉, ChatGPT-4에서는 Chain-of-Thought Prompting을 안해도 ChatGPT-4가 알아서 다 해줍니다!) 

 

[ User ]
Which is a faster way to get to work? 
Option 1: Take a 1000 minute bus, then a half hour train, and finally a 10 minute bike ride. 
Option 2: Take an 800 minute bus, then an hour train, and finally a 30 minute bike ride.

[ ChatGPT-4 ]

To determine which option is faster to get to work, we need to add up the total travel times for each option.

Option 1:

1000 minutes for the bus
30 minutes for the train
10 minutes for the bike ride

Option 2:
800 minutes for the bus
60 minutes (1 hour) for the train
30 minutes for the bike ride

Let's calculate the total travel time for each option.

The total travel time for Option 1 is 1040 minutes, and for Option 2, it's 890 minutes. Therefore, Option 2 is the faster way to get to work. ​

 

 

아래처럼 Python 이 자동 실행되어서 Python codes를 짜서 문제를 풀고, 이를 다시 자연어로 풀이과정과 답을 생성해줘요. 

 

## Python Codes
# Calculating the total travel time for each option

# Option 1
bus1 = 1000 # minutes
train1 = 30 # minutes
bike1 = 10 # minutes
total1 = bus1 + train1 + bike1

# Option 2
bus2 = 800 # minutes
train2 = 60 # minutes (1 hour)
bike2 = 30 # minutes
total2 = bus2 + train2 + bike2

total1, total2

Result
(1040, 890)

 

 

[ Reference ]

- source: Jason Wei, et.al. "Chain-of-Thought Prompting Elicits Reasoning in Large Language Models", arXive:2201.11903v6, 2023

 

 

이번 포스팅이 많은 도움이 되었기를 바랍니다. 

행복한 데이터 과학자 되세요. :-)

 

 

728x90
반응형