# Chain-of-Thought Prompting import {Screenshot} from 'components/screenshot' import COT from '../../img/cot.png' import ZEROCOT from '../../img/zero-cot.png' ## Chain-of-Thought (CoT) Prompting Image Source: [Wei et al. (2022)](https://arxiv.org/abs/2201.11903) [Wei et al. (2022)](https://arxiv.org/abs/2201.11903)에서 소개된 chain-of-thought (CoT) 프롬프트는 중간 추론 단계를 통해 복잡한 추론 능력을 가능하게 합니다. 이를 few-shot 프롬프트와 결합하면 답변하기 전에 추론이 필요한 복잡한 작업에 대해 더 나은 결과를 얻을 수 있습니다. *Prompt:* ``` 이 집합 {4, 8, 9, 15, 12, 2, 1}의 홀수를 모두 더하면 짝수입니다. A: 홀수(9, 15, 1)를 모두 더하면 25가 됩니다. 정답은 거짓입니다. 이 집합 {17, 10, 19, 4, 8, 12, 24}의 홀수를 모두 더하면 짝수입니다. 답: 홀수(17, 19)를 모두 더하면 36이 됩니다. 정답은 참입니다. 이 집합 {16, 11, 14, 4, 8, 13, 24}의 홀수를 모두 더하면 짝수입니다 답: 홀수(11, 13)를 모두 더하면 24가 됩니다. 정답은 참입니다. 이 집합 {17, 9, 10, 12, 13, 4, 2}의 홀수를 모두 더하면 짝수입니다. A: 홀수(17, 9, 13)를 모두 더하면 39가 됩니다. 정답은 거짓입니다. 이 집합 {15, 32, 5, 13, 82, 7, 1}의 홀수를 모두 더하면 짝수입니다. A: ``` *Output:* ``` 홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 됩니다. 정답은 거짓입니다. ``` 와우! 추론 단계를 추가했을 때 완벽한 결과를 볼 수 있습니다. 사실 더 적은 수의 예제, 즉 하나의 예제만 제공해도 이 문제를 해결할 수 있습니다: *Prompt:* ``` 이 집합 {4, 8, 9, 15, 12, 2, 1}의 홀수를 모두 더하면 짝수입니다. A: 홀수(9, 15, 1)를 모두 더하면 25가 됩니다. 정답은 거짓입니다. 이 집합 {15, 32, 5, 13, 82, 7, 1}의 홀수를 모두 더하면 짝수입니다. A: ``` *Output:* ``` 홀수(15, 5, 13, 7, 1)를 모두 더하면 41이 됩니다. 정답은 거짓입니다. ``` 저자들은 이 기능이 충분히 큰 언어 모델에서 발생하는 새로운 능력이라고 주장한다는 점을 명심하세요. ## Zero-shot COT Prompting Image Source: [Kojima et al. (2022)](https://arxiv.org/abs/2205.11916) 최근에 나온 아이디어 중 하나는 원래의 프롬프트에 "단계별로 생각하자"를 추가하는 [zero-shot CoT](https://arxiv.org/abs/2205.11916) (Kojima et al. 2022)의 아이디어 입니다. 간단한 문제를 풀고 모델이 어떻게 작동하는지 살펴봅시다: *Prompt:* ``` 저는 시장에 가서 사과 10개를 샀습니다. 저는 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 가서 사과 5개를 더 사서 1개를 먹었습니다. 저는 몇 개의 사과를 가지고 있었나요? ``` *Output:* ``` 11개 ``` 정답이 틀렸습니다! 이제 특별 프롬프트로 시도해 봅시다. *Prompt:* ``` 저는 시장에 가서 사과 10개를 샀습니다. 저는 사과 2개를 이웃에게 주고 2개를 수리공에게 주었습니다. 그리고 가서 사과 5개를 더 사서 1개를 먹었습니다. 사과가 몇 개나 남았나요? 차근차근 생각해 봅시다. ``` *Output:* ``` 먼저 사과 10개로 시작했습니다. 이웃에게 2개, 수리공에게 2개를 나눠주었으므로 사과가 6개가 남았습니다. 그런 다음 사과 5개를 더 사서 이제 사과가 11개가 되었습니다. 마지막으로 사과 1개를 먹었으므로 사과 10개가 남게 됩니다. ``` 이 간단한 프롬프트("차근차근 생각해 봅시다.")가 이 문제를 해결하는데 효과적이라는 점이 인상적입니다. 프롬프트에 사용할 예제가 많지 않은 경우 특히 유용합니다.