Prompt Engineering Guide(https://www.promptingguide.ai/) 내용을 참고해서 작성하거나, 번역한 내용입니다.
Chain of Thought Prompting (생각의 사슬 프롬프팅)
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 (제로샷 생각의 사슬 프롬프팅)
최근에 나온 아이디어 중 하나로 제로샷 생각의 사슬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)
Auto-CoT 코드는 여기에서 확인할 수 있습니다.
- exemplers: examples of the task that the prompt is trying to solve, which are included in the prompt itself.
'개발 > LLM' 카테고리의 다른 글
QA using a search API (0) | 2023.09.24 |
---|---|
Retrieval Augmented Generation(RAG) (0) | 2023.09.23 |
Zero-Shot(제로샷)/Few-Shot(퓨샷) Prompting (0) | 2023.09.18 |
Colab 에서 streamlit app 실행하기 (0) | 2023.09.17 |
Streamlit을 이용한 Chatbot 만들기 (0) | 2023.09.10 |