프롬프트 엔지니어링 가이드
😃 기초
💼 기본 애플리케이션
🧙‍♂️ 중급
🤖 자치령 대표
⚖️ Reliability
🖼️ Image Prompting
🔓 Prompt Hacking
🔨 Tooling
💪 Prompt Tuning
🎲 Miscellaneous
Models
📙 Vocabulary Reference
📚 Bibliography
📦 Prompted Products
🛸 Additional Resources
🔥 Hot Topics
✨ Credits

최소 최대 프롬프트

🟦 This article is rated medium
Reading Time: 1 minute
Last updated on August 7, 2024

샌더 슐호프

최소 최대 프롬프트(LtM)는 CoT 프롬프팅에서 더 나아가 하나의 문제를 여러 개의 서브 문제들로 분할 후 각각을 해결하는 것입니다. 이 기술을 실제로 아이들을 위한 교육 전략에서 영감을 받아서 만들어졌습니다.

먼저 CoT 프롬프팅에서 풀어야 할 문제는 각각 서로를 기반으로하는 서브 문제들로 이루어져 있습니다. 두 번째로 이 서브 문제들은 한번에 하나씩 해결됩니다. 일반 CoT와는 다르게 이전에 풀었던 서브 문제들은 다음 문제를 푸는데에 사용됩니다.

최소 최대 프롬프팅 도표

예시: 소비자 연구 결과

조금 복잡한 소비자 서비스 질문을 해봅시다.


실패입니다. 이제 서브 문제들로 나누어보는 과정을 진행해봅시다.


첫 번째 서브 문제를 풀어봅시다.

첫 번째 문제를 푸는 것 만으로도 우리는 문제 전체를 풀 수 있었습니다. 만약 GPT-3가 답을 즉각적으로 주지 못한다고 해도 답을 줄때까지 우리는 다음 문제를 풀 수 있었습니다. Let's go step by step.라는 문장을 사용하는 것을 참고하세요. 이 문장은 필수가 아니지만 최소한 이 예제에서는 도움이 되었습니다.

예제: 문자 연결

LtM은 문제를 여러 단계로 나누는데 명시적인 지시를 사용하는 것이 아니라 퓨샷 프롬프팅을 사용하는 것으로 위에서 설명이 되었습니다. 추가적으로 여러개의 프롬프트가 아니라 하나의 프롬프롬프트로 개발되는 경우도 종종 있습니다. 각 개별적인 단어들의 마지막 문자를 연결하는 문제를 풀어봅시다.

첫 번째 시도: 표준

퓨샷을 사용하는 표준 프롬프트 예제는 제대로 작동하지 않습니다. 심지어 text-davinci-003같은 더 좋은 모델을 써도 그렇습니다.

두 번째 시도: 사고 사슬 프롬프팅

사고 사슬 프롬프팅은 표준 프롬프트 보다는 낫습니다. 이제는 모델들이 단어의 마지막 문자를 추출하는 것이 가능해졌고 이전보다 문자들을 모으는 모으는 작업의 복잡성이 내려갔기 때문에 성능이 좋아질 수 밖에 없었습니다.

세 번째 시도: 최소 최대 프롬프팅(프롬프트 한 개)

최소 최대 프롬프팅을 통해서 우리는 이전에 연결된 결과를 다시 진술하기 위한 개별 단계를 재구성하여 사고 사슬 개념을 강화한다. 이 방법은 새로운 문자를 연결하는 각각의 과정들을 단순화한다. 그리고 이 방법은 단어가 12개 이상일 때의 성능을 향상시킨다.

이 접근법은 그냥 사고 사슬 방식과 비슷해보일 수 있습니다. 하지만 실제로는 굉장히 다릅니다. 가장 다른 부분은 모든 단계에서 이전의 연결을 활용한다는 점입니다. "think, machine, learning"의 예를 들어봅시다, "k","e","g" 각각을 개별적으로 연결하는 것이 아니라 "k"와 "e"를 더해서 "ke"를 만들고 그 다음 "g"를 더하는 방식을 사용할 것입니다. 이 이전의 결과물을 활용하는 것으로 인해서 모델은 각각의 단계에서는 아주 조금의 작업만을 필요하기 때문에 더 긴 사슬을 형성할 수 있습니다.

결론

12글자를 연결하는 지난 문제에서 사고 사슬은 34%의 정확도를 내었지만 최소 최대 프롬프팅에서는 74%의 정확도를 내었습니다.(text-davinci-002를 활용했을 때)

예제: 구성 일반화 (SCAN)

스캔 문제은 모델이 자연어를 일련의 행동으로 바꾸는 과정을 요구 합니다. 예를 들어서, "run left and walk twice"라는 문장을 "TURN_LEFT + RUN + WALK * 2"로 바꾸는 것입니다. 언어 모델은 학습 데이터보다 더 긴 문장을 마주했을 때 특히 더 나쁜 성능을 보입니다.

첫 번째 시도: 표준 프롬프팅

표준 프롬프팅을 사용했을 때 text-davinci-003은 인상적이지만 여전히 실패하고 있습니다.

두 번째 시도: 최소 최대, 첫 번째 단계 - 축소

우리는 2가지의 다른 프롬프트를 다룰 것입니다. 첫 번째 프롬프트는 기존의 문제를 더 단순화된 단계로 바꾸는 데 사용됩니다. 두 번째 프롬프트는 이러한 단순화된 단계를 합쳐 실제 행동으로 만드는 데 사용될 것입니다.

두 프롬프트는 모두 길고 그리고 토큰에 저장할 작업에 파이썬 압축 표기법을 사용할 것입니다.

첫 번째 단계에서는 자연어 설명을 보다 명확하게 만듭니다.(여전히 인간 친화적인 언어로) 이것은 매핑 단계에서 순차적으로 상황을 파악하는 데 도움이 될 것입니다. 예를 들어서 "jump around left twice"는 "jump left" -> TURN_LEFT + JUMP, "jump around left" -> `(TURN_LEFT + JUMP) * 4로 축소됩니다. 또한 축소 단계는 반복의 개념을 설명하는 데에도 사용이됩니다.

두 번째 시도: 최소 최대, 두 번째 단계 - 합치기

두 번째 단계에서 우리는 축소된 결과물을 사용할 것이고 또 굉장히 긴 프롬프트를 사용해서 축소된 자연어 설명을 행동의 과정으로 만들 것입니다.

우리는 첫 번째 단계의 결과물을 삽입할 것입니다:

"jump around left twice" can be solved by: "jump left", "jump around left", "jump around left twice". "walk opposite left thrice" can be solved by: "walk opposite left", "walk opposite left thrice". So, "jump around left twice after walk opposite left thrice" can be solved by: "jump left", "jump around left", "jump around left twice", "walk opposite left", "walk opposite left thrice".

LLM으로요.

결론

LtM은 여러 장점이 있습니다:

  • 사고 사슬보다 더 개선된 정확도
  • 프롬프트안의 예시들 보다 더 복잡한 문제들을 일반화하는데 장점이 있다.
  • 특히 SCAN같은 문제에서 구성 일반화에 굉장한 장점이 있다.

text-davinci-002에 표준 프롬프트로 작성한 결과는 6%정도의 SCAN문제 정확도를 가지는데 최소 최대 프롬프팅의 결과는 76%의 정확도를 가진다. 게다가 code-davinci-002 모델에서는 더 뚜렷하게 나타나는데 최소 최대 프롬프팅은 무려 99.7%의 정확도를 가진다.

Footnotes

  1. Zhou, D., Schärli, N., Hou, L., Wei, J., Scales, N., Wang, X., Schuurmans, D., Cui, C., Bousquet, O., Le, Q., & Chi, E. (2022). Least-to-Most Prompting Enables Complex Reasoning in Large Language Models.

  2. Lake, B. M., & Baroni, M. (2018). Generalization without Systematicity: On the Compositional Skills of Sequence-to-Sequence Recurrent Networks. https://doi.org/10.48550/arXiv.1711.00350