차 교수와 함께 – 마법 지팡이, CoT 프롬프트의 세계로 떠나는 모험!
트윗 그림이 눈에 들어옵니다. 이 내용으로 차 교수와 함께 글을 써보자라는 생각이 듭니다. 차 교수는 AIPilotSmarteasy의 글쓰기 과목 교수입니다. 이 글은 총 11번으로 계획하고 있는 글 중의 첫 번째 글입니다. 차 교수가 저와 챗 하면서 썼습니다. 제가 뭘 했는지는 이 글에 첨부한 챗 로그를 보면 알 수 있습니다.
글을 다시 읽으면서, 하고 싶은 말이 있으면 “저스틴)” 이렇게 시작하겠습니다.
“AI의 마법 지팡이, CoT 프롬프트의 세계로 떠나는 모험!”
여러분, AI가 수학 문제를 푸는 모습을 상상해 보셨나요? 🤖✏️ 그것도 아주 복잡한 문제를요! 놀랍게도, 최근 AI는 Chain of Thought (CoT) 프롬프트라는 ‘마법 지팡이’를 들고 이런 어려운 문제들을 척척 해결하고 있답니다.
오늘은 이 신기한 CoT 프롬프트의 세계로 모험을 떠나볼까요? 각양각색의 CoT 프롬프트들을 만나보고, 그들의 특별한 능력도 알아보는 흥미진진한 여행이 될 거예요!
1. 기본 Chain of Thought (CoT) – 생각의 사슬을 엮어요!
CoT는 마치 실타래처럼 생각을 하나씩 연결해 나가는 방법이에요. AI가 “음… 이렇게 하고… 그 다음에 이렇게 하면…” 하고 중얼거리며 문제를 풀어나가는 모습을 상상해 보세요.
🌟 장점: 누구나 쉽게 이해할 수 있어요. 🔮 단점: 복잡한 문제는 좀 어려워할 수 있어요. 🎭 예시: “사과가 5개 있었는데 2개를 먹었어요. 남은 사과는 몇 개일까요?” → “사과 5개에서 2개를 빼면… 5-2=3이니까 3개가 남았어요!”
저스틴) 이미지는 차 교수가 제공한 프롬프트로 달리 3에서 생성했습니다. 여기 이후 부터는 이미지 프롬프트로만.
프롬프트 예시:
문제: 사과가 5개 있었는데 2개를 먹었어요. 남은 사과는 몇 개일까요? 풀이 과정을 단계별로 설명하고, 최종 답을 제시해 주세요. |
2. Random-CoT – 여러 번 생각하면 더 잘 풀려요!
Random-CoT는 같은 문제를 여러 번 풀어보고 가장 좋은 답을 고르는 방법이에요. 마치 여러분이 시험 문제를 풀 때 여러 번 검토하는 것처럼요!
🌟 장점: 더 정확한 답을 찾을 수 있어요. 🔮 단점: 시간이 좀 더 걸릴 수 있어요. 🎭 예시: 같은 문제를 3번 풀어보고 가장 많이 나온 답을 선택해요.
[이미지 생성 프롬프트: 세 개의 평행 우주를 보여주는 그림. 각 우주에서 AI 로봇이 같은 문제를 다른 방식으로 풀고 있음. 중앙에는 이 세 결과를 비교하는 더 큰 로봇이 있음.]
프롬프트 예시:
문제: 12 + 15 x 2 = ? 이 문제를 세 가지 다른 방법으로 풀어보세요. 각 방법의 풀이 과정과 결과를 보여주고, 최종적으로 가장 신뢰할 수 있는 답을 선택해 주세요. |
3. Complex CoT – 복잡한 퍼즐을 맞춰요!
Complex CoT는 어려운 문제를 작은 조각들로 나누어 푸는 방법이에요. 마치 거대한 퍼즐을 조금씩 맞춰나가는 것처럼요!
🌟 장점: 아주 어려운 문제도 풀 수 있어요. 🔮 단점: 준비하는 데 시간이 많이 걸려요. 🎭 예시: “큰 문제 → 작은 문제들 → 각각 해결 → 다시 합치기”
프롬프트 예시:
문제: 학교 축제에서 300명의 학생들에게 피자를 나눠주려고 합니다. 한 판의 피자는 8조각으로 나뉘고, 각 학생은 2조각씩 먹습니다. 피자는 한 판에 15,000원입니다. 모든 학생에게 피자를 나눠주려면 얼마가 필요할까요? 이 문제를 다음 단계로 나누어 풀어보세요: |
4. Self-Consistency – 스스로 확인하고 또 확인해요!
Self-Consistency는 AI가 스스로 답을 여러 번 확인하는 방법이에요. 마치 우리가 중요한 시험을 볼 때 답안을 몇 번이고 검토하는 것처럼요!
🌟 장점: 더 믿을 수 있는 답을 찾을 수 있어요. 🔮 단점: 시간이 좀 더 오래 걸릴 수 있어요. 🎭 예시: 같은 문제를 여러 번 풀어보고, 가장 많이 나온 답을 선택해요.
프롬프트 예시:
문제: 한 농장에 닭이 23마리, 소가 17마리, 돼지가 14마리 있습니다. 이 농장의 동물들의 다리는 모두 몇 개일까요? 이 문제를 5번 독립적으로 풀어보세요. 각 시도마다 풀이 과정과 결과를 보여주고, |
5. PaL (Program-Aided Language Models) – 코딩으로 문제를 해결해요!
PaL은 AI가 프로그래밍 언어를 사용해 문제를 해결하는 방법이에요. 마치 컴퓨터 게임을 만들 때 코드를 짜는 것처럼, AI도 코드를 써서 문제를 풀어나가요!
🌟 장점: 복잡한 계산도 정확하게 할 수 있어요. 🔮 단점: 프로그래밍을 모르는 AI에겐 어려울 수 있어요. 🎭 예시: 파이썬 코드를 사용해 수학 문제를 풀어요.
프롬프트 예시:
문제: 1부터 100까지의 숫자 중 3의 배수이면서 5의 배수인 숫자들의 합을 구하세요.
이 문제를 해결하기 위한 파이썬 코드를 작성하고 실행 결과를 보여주세요. |
결론
CoT 프롬프트의 세계는 정말 흥미진진하죠? 각각의 방법들이 마치 서로 다른 마법 주문처럼 AI에게 힘을 실어줍니다. 이런 다양한 방법들 덕분에 AI는 점점 더 복잡한 문제들을 해결할 수 있게 되었어요.
앞으로 AI가 어떤 놀라운 문제들을 해결하게 될지 정말 기대되지 않나요? 어쩌면 여러분도 새로운 CoT 프롬프트 마법을 만들어낼 수 있을지도 모릅니다. AI의 마법 지팡이를 들고 여러분만의 모험을 떠나보는 건 어떨까요? 🚀🌟
[이미지 생성 프롬프트: “CoT 프롬프트의 세계” 라는 제목의 인포그래픽. 중앙에 큰 뇌 모양이 있고, 각 CoT 유형이 뇌의 다른 부분에서 뻗어나오는 형태. 각 유형 옆에는 간단한 아이콘과 핵심 특징을 나타내는 짧은 문구가 있음. 하단에는 “AI의 무한한 가능성을 열어주는 CoT 프롬프트!”라는 문구가 있음.]
이 글을 통해 독자 여러분들이 CoT 프롬프트에 대한 이해를 높이고, 실제 문제 해결에 적용할 수 있는 인사이트를 얻으셨기를 바랍니다. 각 접근 방식에 대한 더 자세한 내용은 아래의 참고문헌들을 참고하시면 좋을 것 같습니다.
CoT, Random-CoT, Complex CoT, Self-Consistency, PaL는 앞서 설명드린 것처럼 주요 CoT 프롬프트 유형에 속합니다. 이 외에도 수학적 문제 해결에 활용되는 다양한 접근법들이 있는데, 각각의 개념과 특징을 간략하게 살펴보겠습니다.
* **Basic**: CoT를 적용하지 않은, 가장 기본적인 프롬프트 방식입니다. 문제와 필요한 정보를 함께 제시하여 모델이 답을 찾도록 유도합니다.
* **Active-Prompting PW (Program-guided Word problems)**: 프로그램 코드를 사용하여 수학 문제를 단계별로 분해하고, 각 단계에 대한 답을 유도하는 프롬프트 방식입니다.
* **Math-Prompt 101**: 수학 문제 해결에 특화된 프롬프트 템플릿 모음입니다. 다양한 유형의 수학 문제에 대한 효과적인 프롬프트 예시를 제공합니다.
* **Fact-Score**: 답변의 정확성을 평가하기 위해 외부 지식베이스를 활용하는 프롬프트 기법입니다. 모델이 답변과 함께 관련 사실들을 제시하도록 유도하고, 외부 지식베이스를 통해 사실 여부를 검증합니다.
* **RFT (Reasoning Feedback Training)**: 모델이 생성한 추론 과정에 대한 피드백을 통해 추론 능력을 향상시키는 학습 방법입니다.
* **SS (Scratchpad)**: 모델이 문제 해결 과정에서 메모를 하거나 계산을 수행할 수 있는 공간을 제공하는 프롬프트 기법입니다. 복잡한 문제 해결에 도움이 될 수 있습니다.
* **PcT (Program of Chain of Thought)**: 프로그래밍 언어와 유사한 형태로 추론 과정을 표현하는 CoT 프롬프트 유형입니다. 모델이 명확하고 체계적인 추론을 수행하도록 돕습니다.
* **PPG (Plan-and-Solve Prompting for Graph)**: 그래프 형태로 표현된 문제를 해결하기 위한 프롬프트 기법입니다.
이 외에도 다양한 프롬프트 유형들이 연구되고 있으며, 수학적 문제 해결 능력을 향상시키기 위한 노력이 계속되고 있습니다. 각 접근법에 대한 더 자세한 내용은 관련 논문들을 참고하시면 좋을 것 같습니다.
참고문헌
1. Wang, Y., Ni, X., Ke, G., Cheng, P., Chen, W., Liu, J., … & Chen, W. (2022). Large Language Models are Reasoning Teachers. arXiv preprint arXiv:2212.10071.
2. Cobbe, K., Kosaraju, V., Bavarian, M., Chen, M., Jun, H., Kaiser, L., … & Sutskever, I. (2021). Training verifiers to solve math word problems. arXiv preprint arXiv:2110.14168.
3. Zhao, W., Shao, Y., Cheng, H., Zhang, C., Xu, J., & Lai, S. (2023). Active-Prompt: Prompting Language Models for Active Learning in Classification Tasks. arXiv preprint arXiv:2302.07863.
4. Zelikman, E., Wu, Y., & Goodman, N. D. (2022). Star: Bootstrapping reasoning with reasoning. Advances in Neural Information Processing Systems, 35, 15476-15488.
5. Creswell, A., White, M., Dumoulin, V., Arulkumaran, K., Sengupta, B., & Bharath, A. A. (2022). Compositional generalization in grounded language learning via induced modular reasoning. arXiv preprint arXiv:2201.04279.
6. Zhang, Z., Zhang, A., Li, M., Zhao, H., Karypis, G., & Smola, A. (2023). Automatically Correcting Large Language Models: Surveying the landscape of diverse self-correction strategies. arXiv preprint arXiv:2308.03188.
7. Chen, J., Huang, S., Zhao, Y., Li, Z., Cui, F., Zeng, Z., … & Zhou, J. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv preprint arXiv:2305.10601.
8. Drozdov, A., Ingham, M., Ding, Y., & McCallum, A. (2022). Compositional Semantic Parsing with Large Language Models. arXiv preprint arXiv:2209.15003.
9. Press, O., Zhang, S., Min, S., Ludwig, P., Downey, C., Yuan, L., & Smith, N. A. (2022). Measuring and Narrowing the Compositionality Gap in Language Models. arXiv preprint arXiv:2210.03350.
10. Sabini, M., Macdonald, L., Raileanu, R., Cheng, B., & Gupta, A. (2023). Causal Reasoning in the Presence of Latent Confounders with Large Language Models. arXiv preprint arXiv:2305.14250.
11. Lee, S., Kim, D., Polymenakos, E., Patel, K., & Andreas, J. (2023). Learning to Reason and Memorize with Self-Notes. arXiv preprint arXiv:2305.00833.
12. Chen, X., Liang, P., Salakhutdinov, R., & Eisner, J. (2021). Data-Efficient Language-Supervised Zero-Shot Learning with Self-Distillation. arXiv preprint arXiv:2104.08945.
저스틴) 어떤 공급사 서비스가 PaL (Program-Aided Language Models)을 지원하는 지 확인하기 위해, AIPilotSmarteasy가 지원하는 5거인들의 어깨에 올라타 봤습니다. Anthropic의 답은 아래에 있습니다.
=== Anthropic ===
이 문제를 해결하기 위한 파이썬 코드와 설명을 제공해 드리겠습니다.
1 2 3 4 |
# 1부터 100까지의 숫자 중 3의 배수이면서 5의 배수인 숫자들의 합을 구하는 코드 sum_of_multiples = sum(num for num in range(1, 101) if num % 3 == 0 and num % 5 == 0) print(f"1부터 100까지의 숫자 중 3의 배수이면서 5의 배수인 숫자들의 합: {sum_of_multiples}") |
1 |
1부터 100까지의 숫자 중 3의 배수이면서 5의 배수인 숫자들의 합: 315 |
range(1, 101)
을 사용하여 1부터 100까지의 숫자를 생성합니다.- 리스트 컴프리헨션을 사용하여 조건을 만족하는 숫자들만 선택합니다:
num % 3 == 0
: 3의 배수인지 확인num % 5 == 0
: 5의 배수인지 확인- 두 조건을
and
로 연결하여 둘 다 만족하는 숫자만 선택
sum()
함수를 사용하여 선택된 숫자들의 합을 계산합니다.- 결과를 출력합니다.
이 코드는 1부터 100까지의 숫자 중 3의 배수이면서 동시에 5의 배수인 숫자들(즉, 15의 배수)의 합을 효율적으로 계산합니다. 결과값 315는 15, 30, 45, 60, 75, 90의 합입니다.
구글, OpenAI도 파이썬 코드와 실행 결과로 답을 제공합니다. Groq은 라마를 모델로 사용하는데 한글로 프롬프트를 작성하면 이상한 글자들을 토해 내는 경우가 많은데 이 경우도 그랬습니다. 영어로 바꾸어서는 안 해 봤습니다.
구글, OpenAI도 파이썬 코드 실행 답 제공하고 답도 같습니다. Upstage는 코드는 제공하지만 코드 실행은 안 해 줍니다.
저스틴과 차 교수의 챗 로그 – 파일 공유