프롬프트 엔지니어링 Thought 시리즈 ep.1 CoT, ToT 그리고 GoT

LLM의 발전과 함께 프롬프트 엔지니어링의 중요성이 대두되고 있습니다. 프롬프트 엔지니어링이란 AI가 사용자의 입력(프롬프트)을 보다 정확히 이해하고 적절한 응답을 생성할 수 있도록 프롬프트를 최적화하는 과정을 말합니다.
Apr 18, 2024
프롬프트 엔지니어링 Thought 시리즈 ep.1 CoT, ToT 그리고 GoT

⏳5min

LLM의 발전과 함께 프롬프트 엔지니어링의 중요성이 대두되고 있습니다. 프롬프트 엔지니어링이란 AI가 사용자의 입력(프롬프트)을 보다 정확히 이해하고 적절한 응답을 생성할 수 있도록 프롬프트를 최적화하는 과정을 말합니다. 잘 알려진 프롬프트 엔지니어링의 핵심 기법으로는 여러 예시를 주는 퓨 샷 프롬프팅(Few-shot Prompting), 이번 글에서 자세히 다룰 CoT 등이 있는데요. 이번 글에서는 CoT에서 발전된 Thought 시리즈, CoT(Chain-of-Thought), ToT(Tree-of-Thought), GoT(Graph-of-Thought) 를 더 깊게 알아보려 합니다. 이러한 기법들은 각각 단계별 추론, 계층적 사고, 지식 그래프 기반 프롬프트 설계 등의 원리를 활용하여 AI의 언어 이해 및 생성 능력을 향상시킵니다.

프롬프트 엔지니어링은 대화형 AI의 성능을 좌우하는 핵심 기술로, 앞으로도 중요성이 더 커질 것으로 예상됩니다. CoT, ToT, GoT와 같은 기법들을 중심으로 프롬프트 엔지니어링에 대한 이해를 얻고, 나아가 AI에 대해 더 깊게 이해하게 되기를 바랍니다.

1. CoT(Chain-of-Thought) 기법 알아보기

💡CoT란?

CoT(Chain-of-Thought) 기법은 복잡한 문제 해결 과정에서 단계별 추론을 사용하여 AI의 답변 퀄리티를 높이는 프롬프트 엔지니어링 기법입니다. CoT는 사용자의 프롬프트에 대해 AI가 단순히 최종 답변을 제시하는 것이 아니라, 중간 단계의 사고 과정을 보여주는 것을 목표로 합니다. 이를 통해 AI의 추론 과정을 투명하게 만들고, 사용자가 AI의 답변을 더욱 신뢰할 수 있게 합니다. CoT 프롬프트 설계에서는 질문을 단계별로 분해하고, 각 단계에서 필요한 정보와 추론 과정을 명시하는 것이 핵심입니다. 예를 들어 수학 문제를 풀 때, CoT 프롬프트는 문제 이해, 공식 선택, 계산 수행, 결과 해석 등의 단계로 수학 문제를 단계별로 분해할 수 있습니다. 이렇게 구조화된 프롬프트는 AI가 체계적으로 문제에 접근할 수 있도록 도와줍니다.

프롬프트엔지니어링.webp

(출처: https://arxiv.org/abs/2201.11903)

🔎CoT 예시

CoT 예시를 보여드리겠습니다. 이 글의 모든 프롬프트 예시는 DAIR.AI의 프롬프트 가이드에서 가져옵니다.

프롬프트엔지니어링

⚙️CoT의 한계와 개선 방향

CoT 프롬프팅은 모델이 여러 단계의 문제를 중간 단계로 분해할 수 있게 해주는 방법이며, 이를 통해 모델의 동작 방식에 대한 이해할 수 있게 합니다. 따라서 수학 문제 풀이, 상식 추론, 기호 조작 등 다양한 태스크에 사용될 수 있으며, 충분히 큰 규모의 상용 언어 모델에 CoT 시퀀스 예시를 추가하는 방식으로 쉽게 적용 가능합니다.

다만 CoT 프롬프팅에는 몇 가지 한계점이 있습니다. 

  1.  CoT는 단 하나의 추론 경로만을 가집니다.

  2.  정확한 추론 경로를 보장할 수 없습니다. 

정리하자면, 간단한 형태의  Reasoning 추가만으로 문제해결 능력이 향상되나, 하나의 갈래의 Reasoning만 가능한 문제점을 개선해야 합니다.

2. ToT(Tree-of-Thought) 기법 알아보기

💡ToT란?

ToT(Tree-of-Thought) 기법은 복잡한 개념이나 문제를 계층적 구조로 분해하여 이해하고 해결하는 프롬프트 엔지니어링 기법입니다. ToT는 개념 간의 상하위 관계를 활용하여 사고의 흐름을 체계화하고, 이를 통해 AI 시스템이 보다 논리적이고 일관된 응답을 생성할 수 있도록 돕습니다. ToT 프롬프트 설계에서는 주어진 주제를 상위 개념부터 하위 개념까지 단계적으로 세분화하는 것이 핵심입니다. 각 단계에서는 해당 개념의 정의, 특징, 예시 등을 포함하여 AI가 개념을 깊이 있게 이해할 수 있도록 합니다. 이렇게 구성된 프롬프트는 마치 개념의 계층 구조를 나타내는 트리(tree)와 유사한 형태를 띱니다.

예를 들어, "인공지능"이라는 주제에 대한 ToT 프롬프트를 설계한다면, "인공지능"을 최상위 개념으로 두고, 하위 개념으로 "머신러닝", "딥러닝", "자연어 처리" 등을 포함할 수 있습니다. 그리고 각 하위 개념을 다시 더 세부적인 개념으로 나누어 설명할 수 있습니다. 이렇게 계층 구조를 활용하여 개념을 점진적으로 설명함으로써, AI는 주제에 대한 포괄적이고 심층적인 이해를 얻을 수 있게 됩니다.

프롬프트엔지니어링

(출처: https://arxiv.org/abs/2305.10601 )

🔎 ToT 예시

ToT 예시는 다음과 같습니다.

프롬프트엔지니어링 예시-1.webp

⚙️ ToT의 한계와 개선 방향

ToT 기법은 기본 프롬프팅, CoT 방식이 모두 가능하고, 여러 갈래의 생각마다 평가를 진행하여 완성도 높은 추론 경로를 유지할 수 있다는 장점, 그리고 전체 과정을 generation, evaluation, search algorithm으로 분리하여 관리할 수 있다는 장점이 있습니다. 

그러나 마찬가지로 몇 가지 한계점도 존재합니다. 

  1.  사고가 진행되는 추론 경로의 구조가 너무 단조롭고 유연하지 않습니다.

  2. 만들어지는 Thoughts의 대부분이 낭비됩니다.

즉, ToT는 완성도 높은 reasoning path를 만들 수 있으나, 생각을 활용하는 구조가 단순하고 대부분이 낭비된다는 단점을 개선해야 합니다.

3. GoT(Graph-of-Thought) 기법 알아보기

💡 GoT란?

GoT(Graph-of-Thought) 기법은 그래프를 활용하여 개념 간의 관계와 맥락을 표현함으로써 프롬프트를 설계하는 방법입니다. GoT는 개념들을 노드(node)로, 개념 간의 관계를 엣지(edge)로 표현하는 그래프 구조를 기반으로 합니다. 이를 통해 특정 주제에 대한 지식을 체계적으로 조직하고, 관련 개념 간의 연결성을 강화할 수 있습니다. GoT 프롬프트 설계에서는 먼저 주어진 태스크와 관련된 핵심 개념들을 식별하고, 이들 간의 관계를 정의하여 그래프를 구축합니다. 이후 그래프상에서 질의응답에 필요한 경로를 탐색하고, 관련 개념과 관계를 프롬프트에 반영하여 AI 시스템이 맥락을 고려한 응답을 생성할 수 있도록 합니다.

프롬프트엔지니어링

(출처: https://arxiv.org/abs/2308.09687 )

🎁 GoT의 장점

프롬프트엔지니어링

(출처: https://arxiv.org/abs/2308.09687 )

GoT는 더 유연해진 구조를 통해 각 노드의 활용 방법이 늘어납니다. 또한 이전의 다양한 프롬프트 방법론을 모두 포함할 수 있는 그래프 구조입니다. 아래 표는 프롬프트 방법론마다 구현 가능한 형태를 시각화한 것입니다.

프롬프트엔지니어링

(출처: https://arxiv.org/abs/2308.09687 )

⚙️ GoT의 한계와 개선 방향

다만 현재 GoT는 자연스럽게 subtask로 분리될 수 있는 태스크에 활용하기 적합하며, 분리된 subtask들을 각각 수행하고 최종적으로 통합하는 형태로 구현됩니다. 아키텍처 구조가 merge sort와 유사하게 됩니다. 

4. CoT, ToT, GoT 기법을 함께 사용하기

CoT, ToT, GoT 기법은 각각 고유한 장점을 가지고 있지만, 이들을 독립적으로 사용하는 것보다 통합적으로 활용할 때 시너지 효과를 기대할 수 있습니다. 각 기법의 강점을 조합하여 프롬프트를 설계함으로써, AI 언어 이해 및 생성 능력을 극대화할 수 있습니다.

1️⃣ CoT + ToT 

CoT와 ToT의 통합은 복잡한 문제 해결에 특히 유용할 수 있습니다. CoT를 통해 문제 해결 과정을 단계별로 분해하고, 각 단계에서 ToT를 활용하여 관련 개념을 체계적으로 설명함으로써, AI가 문제에 대한 깊이 있는 이해를 바탕으로 최적의 해결책을 도출할 수 있게 합니다. 예를 들어, 복잡한 공학 문제를 해결할 때 CoT로 문제 해결 절차를 단계화하고, 각 단계에서 필요한 개념과 원리를 ToT로 설명하는 프롬프트를 제공할 수 있습니다.

2️⃣ ToT + GoT

ToT와 GoT 기법의 통합은 개념 간 관계를 명확히 하고 맥락 정보를 풍부하게 제공하는 데 도움이 됩니다. ToT로 개념의 계층 구조를 설명하고, GoT를 통해 개념 간 연결 관계와 속성 정보를 제공함으로써, AI는 주제에 대한 종합적인 이해를 얻을 수 있습니다. 이는 특히 지식 집약적인 분야, 예를 들면 의학이나 법률 분야에서 유용하게 활용될 수 있습니다.

3️⃣ CoT + GoT

CoT와 GoT 기법을 함께 사용하면 복잡한 추론 과정을 지식 그래프와 연계하여 설명할 수 있습니다. CoT로 추론 과정을 단계화하고, 각 단계에서 필요한 지식을 GoT로 제공하는 프롬프트를 통해, AI는 추론의 근거가 되는 지식을 명시적으로 활용할 수 있게 됩니다. 이는 AI의 추론 과정을 투명하게 보여주고, 유저가 AI를 신뢰하도록 할 수 있습니다.

4️⃣ CoT + ToT + GoT

나아가 CoT, ToT, GoT 기법을 모두 통합한 프레임워크를 구축할 수도 있습니다. 예를 들어 복잡한 의사 결정 문제에 직면했을 때, CoT로 의사 결정 단계를 구조화하고, 각 단계에서 ToT와 GoT를 활용하여 고려해야 할 요인과 맥락 정보를 종합적으로 제공할 수 있습니다. 이렇게 통합된 프롬프트는 AI가 문제를 다각도로 분석하고 최선의 솔루션을 도출하는 데 도움을 줄 수 있습니다.

통합 프롬프트 엔지니어링 프레임워크를 설계할 때는 태스크의 특성과 요구사항을 면밀히 분석하고, 각 기법의 강점을 최대한 활용할 수 있는 방안을 찾아야 합니다. 또한 프롬프트가 복잡하다고 늘 좋은 것은 아닙니다. 프롬프트의 복잡성과 효율성 간의 균형을 유지하여, AI가 최적의 성능을 발휘할 수 있도록 해야 합니다.

5. 마치는 글

지금까지 프롬프트 엔지니어링의 핵심 기법인 CoT, ToT, GoT에 대해 살펴보았습니다. 각 기법의 개념과 원리, 예시, 그리고 한계와 개선 방향에 대해 알아보았고, 나아가 세 가지 기법의 통합적 활용 방안에 대해서도 살펴보았습니다. CoT, ToT, GoT는 각각 단계별 추론, 계층적 사고, 그래프 기반 프롬프트 설계라는 고유한 강점을 가지고 있습니다.이들 기법을 적재적소에 활용함으로써, AI는 사용자의 입력을 더욱 정확하게 이해하고, 맥락에 맞는 적절한 응답을 생성할 수 있게 됩니다. 특히 복잡한 문제 해결, 개념 학습, 지식 기반 추론 등의 태스크에서 CoT, ToT, GoT의 효과가 더 나타나게 됩니다.

그러나 각 기법이 가진 한계점도 있습니다. CoT와 ToT의 경우 프롬프트 설계의 복잡성이 높아질 수 있고, GoT는 방대한 그래프 구축에 어려움이 있을 수 있습니다. 이에 대한 지속적인 연구와 기술 개발을 통해 한계를 극복하고, 각 기법의 장점을 극대화할 방안을 찾아야 할 것입니다. 또한  CoT, ToT, GoT 각 기법의 강점을 조합하여 시너지 효과를 창출함으로써, AI 시스템의 성능을 획기적으로 향상시킬 수 있을 것입니다. 

프롬프트 엔지니어링은 현재 AI, 특히 LLM의 잠재력을 끌어올리는 데 중요한 역할을 수행합니다. 이러한 프롬프트 엔지니어링 기법들이 등장하고 발전함에 따라, AI와 사람 간의 소통이 더욱 자연스럽고 효율적으로 이루어질 수 있을 것으로 기대됩니다. 앞으로도 프롬프트 엔지니어링 분야의 지속적인 연구와 혁신을 통해, AI 기술이 우리 삶의 질을 높이고 사회적 가치를 창출하는 데 기여할 수 있기를 희망합니다.

이 아티클은 AI 히어로즈 전문 필진
무니(AI Engineer)
님의 글입니다.

Share article
RSSPowered by inblog