비즈니스 문제를 해결하고 예측하는 데이터 사이언티스트가 되고 싶다면?
#인공지능 

프롬프트 엔지니어링 기법과 NLP 작업 분류

다양한 프롬프트 기법을 요약하고, 이를 사용된 NLP 작업에 따라 그룹화합니다. 총 44편의 연구 논문에서 29개의 NLP 작업으로 분류하고, 39개의 프롬프트 기법을 다루었습니다. 이 중 대부분은 지난 2년 동안 발표되었습니다.

2024-09-30 | 김성진

(이 글은 2407.12994 A Survey of Prompt Engineering Methods in Large Language Models for Different NLP Tasks 논문을 번역 및 편집하였습니다.)

프롬프트 엔지니어링

프롬프트 엔지니어링 (prompt engineering)은 LLM에서 지식을 조직적으로 추출하기 위해 자연어 지시문(프롬프트)을 만드는 과정입니다.

프롬프트 엔지니어링은 이전의 전통적인 모델들과 달리 LLM에 내재된 지식에만 의존하며, 기저의 NLP 작업에 대한 광범위한 매개변수 재훈련이나 미세 조정이 필요하지 않습니다.

이전의 최첨단(SoTA) 모델과 달리, 프롬프트 엔지니어링은 주어진 NLP 작업에 대해 광범위한 매개변수 재훈련 또는 미세 조정이 필요하지 않으며, 오로지 LLM에 내재된 지식에 의존하여 작동합니다.

또한, 프롬프트 엔지니어링을 통해 LLM의 지식을 지능적으로 추출할 수 있으며, 수학적 기계 학습에 대한 깊은 배경 지식이 없어도 많은 사람들이 LLM을 실험할 수 있습니다.

지난 2년 동안 프롬프트 엔지니어링이 인기를 끌면서, 연구자들은 LLM에서 정보를 더 정확하게 추출하기 위해 프롬프트를 설계하는 다양한 엔지니어링 기술을 고안해냈습니다.

이 논문에서는 다양한 프롬프트 기법을 요약하고, 이를 사용된 NLP 작업에 따라 그룹화합니다. 또한, 해당 NLP 작업에 속하는 다양한 데이터셋에서 이러한 프롬프트 전략의 성능을 세부적으로 강조하고, 사용된 LLM을 논의하며, 분류 다이어그램을 제시하고, 특정 데이터셋의 최첨단(SoTA) 가능성을 논의합니다.

(이 글에서는 프롬프트 기법과 NLP 작업을 그룹화한 내용만 작성하였습니다.)

총 44편의 연구 논문에서 29개의 NLP 작업으로 분류하고, 39개의 프롬프트 기법을 다루었습니다. 이 중 대부분은 지난 2년 동안 발표되었습니다.

프롬프트 엔지니어링 기법

프롬프트 엔지니어링 기법들이 발표될 때마다 기존 성능을 어떻게 향상시켰는지 간략하게 설명합니다.

여기서 주목할 점은, 대부분의 프롬프트 전략들이 최소 두 가지 이상의 설정, 즉 제로샷과 퓨샷으로 실험되었다는 것입니다. 제로샷 및 퓨샷 변형에는 차이가 있으며, 어떤 프롬프트 기술은 본질적으로 제로샷 또는 퓨샷 변형에서만 존재할 수 있고, 다른 변형이 존재할 가능성이 없을 수 있습니다.

제로샷 설정에서는 훈련 데이터가 전혀 포함되지 않고, LLM은 학습된 내재 지식에 전적으로 의존하여 프롬프트 지시문을 통해 작업을 수행하게 됩니다. 반면, 퓨샷 변형에서는 작업 기반 프롬프트 지시문과 함께 몇 가지 훈련 데이터 포인트가 제공되어 작업을 더 잘 이해할 수 있도록 돕습니다.

다양한 프롬프트 엔지니어링 연구 결과에 따르면, 퓨샷 변형이 성능 향상에 도움이 되었지만, 이는 LLM이 제공된 퓨샷 데이터 포인트에 설명되지 않은 편향을 보일 수 있는 위험을 감수하면서 주의 깊게 준비된 퓨샷 데이터 포인트가 필요하다는 단점이 있습니다.

2.1 기본/표준/바닐라 프롬프트

기본 프롬프트는 LLM의 성능을 향상시키기 위한 어떠한 엔지니어링도 없이 단순히 LLM에 쿼리를 던지는 방법을 의미합니다. 이는 대부분의 프롬프트 전략의 핵심 목표와 반대되는 방식입니다. 기본 프롬프트는 다른 연구 논문에서 표준 또는 바닐라 프롬프트로도 불립니다.

2.2 연쇄 사고 (Chain-of-Thought, CoT)

이 프롬프트 전략에서는 복잡한 문제를 해결하기 전에 인간이 문제를 작은 하위 문제로 나누어 해결하는 방식에서 착안하여, LLM의 복잡한 추론 능력을 향상시키기 위해 사고의 연쇄, 즉 중간 추론 단계를 생성하는 방법을 조사했습니다.

결과적으로 수학 문제 해결 작업에서 CoT와 기본 프롬프트 간의 최대 성능 차이가 약 39%에 달하며, 상식 추론 작업에서도 약 26%의 차이를 보였습니다. 이 연구는 프롬프트 엔지니어링 분야에 새로운 연구 방향을 열었습니다.

2.3 자기 일관성 (Self-Consistency)

자기 일관성 프롬프트 기법은 복잡한 추론 문제를 여러 가지 방식으로 해결할 수 있으며, 다양한 추론 경로를 통해 정답에 도달할 수 있다는 직관에 기반합니다.

자기 일관성은 CoT에서 사용되는 탐욕적(greedy) 방식과는 다른 새로운 디코딩 전략을 사용하며, 세 가지 중요한 단계로 구성됩니다.

첫 번째 단계는 CoT를 사용하여 LLM에 프롬프트를 제시하는 것이고, 두 번째 단계는 LLM의 디코더에서 다양한 추론 경로를 샘플링하는 것입니다.

마지막으로, 여러 추론 경로 중에서 가장 일관된 답을 선택하는 과정을 거칩니다. 자기 일관성은 CoT와 비교했을 때 수학 문제 해결 작업에서 평균 11%, 상식 추론 작업에서 3%, 다중 단계 추론 작업에서 6%의 성능 향상을 달성했습니다.

2.4 앙상블 개선 (Ensemble Refinement, ER)

ER은 CoT와 자기 일관성(Self-Consistency)을 기반으로 하며, 두 단계로 이루어져 있습니다.

첫 번째 단계에서는 퓨샷 CoT 프롬프트와 쿼리가 주어졌을 때, LLM은 온도를 조정하여 여러 세대를 생성합니다. 각 세대는 쿼리에 대한 추론과 답변을 포함합니다.

다음으로, LLM은 원래 프롬프트, 쿼리 및 이전 단계에서 생성된 세대들을 결합하여 더 나은 설명과 답변을 생성하도록 조건화됩니다. 이 두 번째 단계는 여러 번 반복되며, Self-Consistency와 마찬가지로 두 번째 단계에서 생성된 답변들에 대한 다수결 투표를 통해 최종 답변을 선택합니다.

ER은 CoT와 Self-Consistency에 비해 많은 데이터셋에서 문맥 자유 질문-답변(Context-Free Question-Answering) 작업에서 더 나은 성능을 보여줍니다.

2.5 자동 연쇄 사고 (Auto-CoT)

퓨샷 CoT 또는 수동 CoT가 직면하는 문제인 고품질 훈련 데이터 포인트의 큐레이션 필요성을 해결합니다.

Auto-CoT는 두 가지 주요 단계로 이루어져 있습니다.

첫 번째 단계에서는 주어진 데이터셋의 쿼리를 몇 개의 클러스터로 나눕니다.

두 번째 단계에서는 각 클러스터에서 대표적인 쿼리를 선택한 다음, 제로샷 CoT를 사용하여 해당 쿼리에 대한 추론 사슬을 생성합니다.

연구자들은 Auto-CoT가 수학적 문제 해결, 다중 단계 추론 및 상식 추론 작업에서 퓨샷 CoT의 성능을 능가하거나 동등한 성능을 발휘한다고 주장합니다. 이는 퓨샷 또는 수동 CoT의 훈련 데이터 포인트 큐레이션 단계를 생략할 수 있음을 나타냅니다.

2.6 복잡한 연쇄 사고 (Complex CoT)

복잡한 데이터 포인트 프롬프트를 더 단순한 것보다 선택하는 새로운 프롬프트 전략을 소개합니다. 여기서 데이터 포인트의 복잡성은 해당 데이터에 포함된 추론 단계의 수로 정의됩니다.

연구자들은 복잡한 데이터 포인트가 간단한 데이터 포인트를 포함하고 있기 때문에 LLM의 추론 성능이 향상될 수 있다고 가정합니다. 복잡한 데이터 포인트를 훈련 예제로 사용하는 것 외에도, 자기 일관성처럼 N개의 샘플링된 추론 사슬 중 상위 K개의 가장 복잡한 사슬에서 다수결로 최종 답변을 선택하는 것이 중요한 측면입니다.

이 논문에서는 복잡성에 상관없이 데이터 포인트를 무작위로 샘플링하는 Random CoT라는 또 다른 기준 프롬프트 방법도 소개했습니다. 복잡한 CoT는 수학 문제 해결, 상식 추론, 테이블 기반 수학 문제 해결 및 다중 단계 추론 작업에서 평균 5.3%에서 최대 18%까지 정확도를 향상시켰습니다.

2.7 사고 프로그램 (Program-of-Thoughts, PoT)

Chen et al. (2022a)의 저자들은 CoT를 확장하여, LLM이 추론과 계산을 모두 수행하는 CoT와 달리, PoT는 Python 프로그램을 생성하고 계산 부분을 Python 인터프리터에 맡깁니다.

이 연구는 LLM의 책임을 줄임으로써 특히 수치 추론에서 더 정확해진다고 주장합니다. PoT는 수학 문제 해결, 테이블 기반 수학 문제 해결, 문맥 질문-답변, 대화형 문맥 질문-답변 작업에서 CoT에 비해 평균 12%의 성능 향상을 보였습니다.

2.8 가장 적은 단계부터 시작 (Least-to-Most)

CoT가 프롬프트에 제시된 예보다 더 어려운 문제를 정확하게 해결하지 못하는 문제를 해결하려고 합니다. 이 방법은 두 단계로 구성됩니다.

첫 번째 단계에서는 LLM이 주어진 문제를 하위 문제로 분해하도록 유도합니다.

다음 단계에서는 LLM이 하위 문제를 순차적으로 해결하도록 유도합니다. 각 하위 문제의 답변은 이전 하위 문제의 답변에 의존합니다.

연구자들은 Least-to-Most 프롬프트가 상식 추론, 언어 기반 작업 완료, 수학 문제 해결 및 문맥 질문-답변 작업에서 CoT와 기본 프롬프트 방법을 크게 능가한다는 것을 보여줍니다.

2.9 연쇄 기호 (Chain-of-Symbol, CoS)

CoS는 CoT의 아이디어를 기반으로 합니다. 기존 CoT에서는 중간 추론 단계를 자연어로 표현합니다. 이 접근 방식은 많은 경우에 놀라운 결과를 보여주었지만, 때로는 부정확하거나 불필요한 정보를 포함할 수 있습니다.

이 연구의 저자들은 공간적 설명이 자연어로 표현하기 어렵기 때문에 LLM이 이를 이해하는 데 어려움을 겪을 수 있다고 가정합니다. 대신, 이러한 관계를 단어 시퀀스에서 기호로 표현하는 것이 LLM에게 더 나은 표현 방식이 될 수 있다고 제안합니다.

CoS는 공간적 질문-답변 작업에서 최대 60.8%의 정확도 향상을 달성했습니다.

2.10 구조화된 연쇄 사고 (Structured Chain-of-Thought, SCoT)

SCoT의 직관은 중간 추론 단계를 프로그램 구조(예: 시퀀싱, 분기, 반복)로 구조화하면 기존 CoT에서 자연어로 중간 추론 단계를 표현하는 것보다 더 정확한 코드 생성이 가능하다는 것입니다.

저자들은 이 방법이 인간 개발자의 사고 과정을 더 잘 모방한다고 주장하며, 최종 결과도 SCoT가 CoT보다 코드 생성 작업에서 최대 13.79% 더 뛰어난 성능을 보였음을 확인했습니다.

2.11 계획하고 해결하기 (Plan-and-Solve, PS)

CoT의 세 가지 단점인 계산 오류, 단계 누락 오류, 의미적 이해 오류를 해결하고자 합니다.

PS는 두 가지 구성 요소로 이루어져 있으며, 첫 번째는 전체 문제를 작은 하위 문제로 나누는 계획을 세우는 것이고, 두 번째는 계획에 따라 하위 문제를 해결하는 것입니다.

PS의 개선된 버전인 PS+는 더 자세한 지시를 추가하여 추론 단계의 질을 향상시킵니다. PS 프롬프트 기법은 수학적 문제 해결 작업에서 제로샷 설정으로 CoT보다 최소 5% 높은 정확도를 제공합니다.

상식 추론 작업에서도 제로샷 설정으로 CoT보다 최소 5% 더 나은 성능을 지속적으로 보이며, 다중 단계 추론 작업에서는 약 2% 더 높은 정확도를 달성합니다.

2.12 MathPrompter

수학적 문제 해결 작업에서 CoT가 직면하는 두 가지 주요 문제를 해결하고자 합니다:

(1) CoT가 문제를 해결하는 과정에서 따르는 단계의 유효성 부족;
(2) LLM이 자신의 예측에 대해 얼마나 확신하는지.

MathPrompter 프롬프트 전략은 총 4단계로 구성됩니다.

(I) 쿼리가 주어지면, 첫 번째 단계에서는 쿼리의 수치 값을 변수로 대체하여 대수적 표현을 생성합니다.
(II) 다음으로 LLM은 대수적 표현을 도출하거나 Python 함수를 작성하여 쿼리를 분석적으로 해결하도록 요청받습니다.
(III) 세 번째 단계에서는 (I) 단계의 쿼리를 변수에 다른 값을 할당하여 해결합니다.
(IV) (III)에서의 솔루션이 N번의 반복에서 올바른 경우, 변수는 원래 쿼리 값으로 대체되고 답이 계산됩니다. 그렇지 않은 경우, (II), (III), (IV) 단계를 반복합니다.

MathPrompter는 수학적 문제 해결 작업에서 78.7%에서 92.5%로 성능을 향상시킬 수 있었습니다.

2.13 대조적 연쇄 사고/대조적 자기 일관성 (Contrastive CoT/Contrastive Self-Consistency)

대조적 CoT 또는 대조적 자기 일관성이 CoT 또는 Self-Consistency의 일반적인 향상이라고 주장합니다. 이 프롬프트 접근 방식은 인간이 긍정적 예와 부정적 예 모두로부터 배울 수 있다는 점에서 영감을 받았습니다.

이와 유사하게, 이 프롬프트 기법에서는 LLM의 추론 능력을 향상시키기 위해 긍정적 예와 부정적 예를 모두 제공합니다.

대조적 CoT는 수학적 문제 해결 작업에서 여러 데이터셋에 걸쳐 기존 CoT보다 평균 10% 향상된 성능을 보여줍니다. 마찬가지로, 대조적 자기 일관성은 수학적 문제 해결 작업에서 기존 자기 일관성보다 15% 이상 성능이 뛰어납니다.

다중 단계 추론 작업에서도 대조적 CoT와 대조적 자기 일관성이 기존 방법보다 10% 이상의 성능 향상을 보였습니다.

2.14 연합된 동일/다른 매개변수 자기 일관성/CoT (Federated Same/Different Parameter Self-Consistency/CoT, Fed-SP/DP-SC/CoT)

동의어로 작성된 군중 소싱 쿼리를 사용하여 LLM의 추론 능력을 향상시키는 핵심 아이디어에 기반합니다.

이 프롬프트 기법에는 두 가지 약간 다른 변형이 있습니다.

첫 번째는 Fed-SP-SC로, 군중 소싱된 쿼리가 원래 쿼리의 문장 구조를 바꾸되 동일한 매개변수를 유지한 버전입니다. 여기서 매개변수는 수학적 문제 해결 작업 데이터셋의 수치 값을 나타낼 수 있습니다.

Fed-SP-SC의 경우, 답은 먼저 생성되고 그 후에 Self-Consistency가 적용됩니다. 두 번째는 Fed-DP-CoT입니다.

Fed-DP-CoT에서는 LLM이 먼저 다양한 쿼리에 대해 답을 생성하고, CoT를 형성하여 LLM에 힌트를 제공함으로써 답을 통합합니다.

이 방법들이 수학적 문제 해결 작업에서 기존 CoT보다 최소 10%에서 최대 20% 더 나은 성능을 보여줍니다.

2.15 유추적 추론 (Analogical Reasoning)

심리학 개념인 유추적 추론에서 영감을 받았습니다.

사람들은 새로운 문제를 해결할 때 관련된 이전 경험을 사용하며, LLM에서도 이를 적용합니다.

먼저 LLM에게 원래 문제와 유사한 예시를 생성하도록 프롬프트를 제공하고, 해당 예시를 해결한 후 원래 문제를 해결합니다.

결과적으로 유추적 추론은 수학 문제 해결, 코드 생성, 논리적 추론 및 상식 추론 작업에서 CoT에 비해 평균 4%의 정확도 향상을 달성했습니다.

2.16 합성 프롬프트 (Synthetic Prompting)

LLM을 사용하여 합성 예시를 생성하고, 이를 기존의 수작업으로 만든 예시에 추가하는 방식으로 합성 프롬프트를 제안했습니다.

이 프롬프트 기법은 두 단계로 이루어져 있습니다:

(1) 역방향 단계에서는 LLM이 스스로 생성한 추론 체인을 바탕으로 쿼리를 합성하고, (2) 정방향 단계에서는 합성된 쿼리에 대한 추론 체인을 생성하여 이를 더 정확하게 만듭니다.

마지막으로 가장 복잡한 추론 체인을 선택해 최종 예시로 사용합니다.

합성 프롬프트는 다양한 수학 문제 해결, 상식 추론 및 논리적 추론 작업 데이터셋에서 최대 15.6%의 절대적인 성능 향상을 보여주었습니다.

2.17 사고의 나무 (Tree-of-Thoughts, ToT)

ToT 프롬프트 기법은 문제 해결이 트리로 표현되는 조합 공간을 탐색하는 과정을 필요로 한다는 아이디어에서 출발합니다.

트리의 각 노드는 부분적인 해결책을 나타내며, 각 가지는 이를 수정하는 연산자를 나타냅니다. ToT는 문제 해결을 위한 중간 추론 단계로 각 생각을 유지하는 사고의 나무를 생성하고, 모델의 사고 생성을 평가하는 능력을 활용해 문제를 해결합니다.

ToT는 수학 문제 해결 작업에서 CoT보다 65% 더 높은 성공률을 달성했으며, 논리적 추론 작업에서도 약 40% 더 높은 성공률을 기록했습니다.

2.18 논리적 사고 (Logical Thoughts, LoT)

논리적 등가성을 사용하여 LLM의 제로샷 추론 능력을 향상시키는 방법을 조사했습니다. LoT는 CoT와 달리, 추론 단계별로 검증하며, 필요시 추론 체인을 수정해 유효한 추론을 보장합니다.

LoT는 수학 문제 해결 작업에서 CoT보다 최대 3.7%, 상식 추론에서 최대 16.2%, 논리적 추론에서 최대 2.5%, 인과 추론에서 최대 15.8%, 사회적 추론에서 최대 10% 더 높은 정확도를 달성했습니다.

2.19 산파법 프롬프트 (Maieutic Prompting)

산파법 프롬프트는 다양한 가설에 대한 유추적 설명을 이끌어내기 위해 깊은 재귀적 추론을 사용합니다. 이 기법은 LLM이 모순되는 대안을 제거하면서 일관된 응답을 생성하도록 유도합니다.

산파법 프롬프트는 생성된 명제의 논리적 연결을 측정하여 원래 쿼리에 대한 답을 도출합니다.

상식 추론 작업에서 산파법 프롬프트는 기본 프롬프트, CoT, Self-Consistency, GKP Liu et al.(2021)과 비교해 최대 20% 더 높은 정확도를 기록했으며, 감독 학습 모델과도 경쟁력 있는 성과를 보였습니다.

2.20 검증 및 수정 (Verify-and-Edit, VE)

CoT가 생성한 추론 체인을 수정하여 더 사실적으로 일치하는 출력을 도출하는 기술을 개발했습니다.

이 기법은 세 단계로 구성됩니다:

(1) 수정할 시점을 결정하는 단계에서 Self-Consistency를 사용해 불확실한 출력을 찾고, (2) 불확실한 출력에 대해 외부 지식 출처에서 지원 사실을 찾아 CoT 추론 체인을 수정하는 단계, (3) 수정된 추론 체인을 사용해 최종 답을 도출하는 단계입니다.

VE는 다중 단계 추론 작업에서 CoT, Self-Consistency, 기본 프롬프트보다 최대 10%, 진실성 작업에서 최대 2% 더 나은 성능을 기록했습니다.

2.21 Reason + Act (ReAct)

LLM이 다양한 언어 추론 및 의사 결정 작업을 해결하기 위해 추론과 행동을 결합한 ReAct를 제시합니다.

ReAct는 작업과 관련된 언어적 추론 과정과 행동을 교차하여 생성함으로써, 모델이 동적 추론을 수행하고 고수준의 계획을 수정하도록 돕습니다.

다중 단계 추론 및 진실성 작업에서 ReAct는 CoT와 경쟁하며, CoT 또는 Self-Consistency와 결합하면 더 나은 성능을 보입니다.

언어 기반 작업 완료 작업에서는 ReAct가 강화 학습 방법을 10% 이상 초과하는 성공률을 기록했습니다.

2.22 액티브 프롬프트 (Active-Prompt)

LLM이 퓨샷 설정에서 작업별 예시를 사용해 적응하도록 돕기 위해 가장 관련성 높은 데이터 포인트를 식별하는 액티브 프롬프트를 제안합니다.

액티브 프롬프트는 네 단계로 이루어져 있습니다.

첫 번째 단계에서는 훈련 세트의 각 쿼리에 대해 LLM이 k번 프롬프트를 받아 k개의 가능한 답변과 해당 추론 체인을 생성합니다.

두 번째 단계에서는 첫 번째 단계에서 생성된 답변을 바탕으로 불확실성 지표를 계산합니다.

세 번째 단계에서는 가장 불확실한 쿼리 상위 n개를 선택해 인간이 주석을 추가하고,

마지막 단계에서는 새로운 주석이 달린 예시를 사용해 퓨샷 프롬프트를 생성합니다.

액티브 프롬프트는 수학 문제 해결, 상식 추론, 다중 단계 추론 작업에서 Self-Consistency, CoT, Auto-CoT 및 Random CoT보다 더 나은 결과를 제공합니다.

2.23 사고의 실 (Thread-of-Thought, ThoT)

긴 혼란스러운 문맥을 처리하는 프롬프트 방법인 ThoT를 제안합니다.

ThoT는 사람들이 많은 정보를 처리할 때 중요한 데이터를 선택적으로 추출하고 관련 없는 정보를 배제하는 사고의 연속성을 유지하는 아이디어에 기반합니다.

ThoT는 두 단계로 구성되며, 첫 번째 단계에서는 LLM이 문맥의 다른 부분을 분석하고 요약합니다.

두 번째 단계에서는 첫 번째 단계의 출력을 바탕으로 쿼리에 대한 답을 제시합니다.

ThoT는 문맥 자유 질문-답변 작업에서 CoT와 기본 프롬프트 기술을 능가하여 약 0.56의 정확한 일치 점수를 기록했으며, 대화 시스템 작업에서도 최고 평균 점수 3.8을 기록하며 다른 프롬프트 기술을 초과했습니다.

2.24 암묵적 검색 증강 생성 (Implicit Retrieval Augmented Generation, Implicit RAG)

기존 RAG와 달리, Implicit RAG는 LLM이 주어진 문맥에서 중요한 부분을 스스로 검색하고 쿼리에 답하도록 요구합니다.

이 기술은 두 개의 하이퍼파라미터 조정이 필요합니다.

첫 번째는 추출할 섹션의 수이며, 두 번째는 각 섹션에서 사용할 단어 수입니다.

Implicit RAG는 Patient Case Reports 데이터셋의 문맥 질문-답변 작업에서 SoTA 결과를 기록했으며, Vatsal & Singh(2024)에서는 생물 의학적 문맥 질문-답변 작업에서도 SoTA 또는 SoTA에 가까운 결과를 얻었습니다.

2.25 시스템 2 어텐션 (System 2 Attention, S2A)

LLM은 관련 없는 문맥이 주어질 때 종종 잘못된 판단을 내릴 수 있습니다.

이러한 문제를 해결하기 위해 두 단계 프롬프트 전략을 제안했습니다.

첫 번째 단계에서는 LLM에게 주어진 문맥을 재생성하여, 최종 출력에 부정적인 영향을 미칠 수 있는 관련 없는 부분을 제거하도록 요청합니다.

두 번째 단계에서는 재생성된 문맥을 사용하여 최종 답변을 생성하도록 LLM에게 지시합니다.

S2A는 진실성 작업 데이터셋에서 기본 프롬프트, CoT 및 Instructed Prompting을 능가하는 성능을 보였습니다.

2.26 지시 프롬프팅 (Instructed Prompting)

S2A와 유사한 문제를 해결하려 합니다.

LLM이 관련 없는 문맥에 주의를 분산하지 않도록 명시적으로 지시하는 단일 단계를 포함합니다.

Instructed Prompting은 진실성 작업에서 88.2의 정규화된 마이크로 정확도를 달성하며, CoT, Least-to-Most, Program Prompting 및 Self-Consistency를 능가합니다.

여기서 Program Prompting은 문제를 해결하기 위해 Python 프로그램을 작성하고, 작성된 프로그램의 정확성을 Python 인터프리터를 사용해 검증하는 방법을 사용합니다.

2.27 연쇄 검증 (Chain-of-Verification, CoVe)

LLM은 사실과 다른 정보를 생성하는 현상인 환각(hallucination)을 발생시키는 경향이 있습니다.

CoVe를 통해 이러한 문제를 해결하고 성능을 향상시키려 합니다.
CoVe는 네 가지 핵심 단계를 수행합니다.

첫 번째로, LLM은 주어진 쿼리에 대한 기본 응답을 생성합니다.

두 번째로, 원래 쿼리와 첫 번째 단계의 기본 응답을 사용하여 기본 응답의 오류를 확인할 수 있는 검증 쿼리 목록을 생성합니다.

세 번째로, 모든 검증 쿼리에 대한 답변을 생성합니다.

마지막으로, 세 번째 단계에서 감지된 오류를 수정하여 수정된 응답을 도출합니다.

CoVe는 문맥 자유 질문-답변, 문맥 질문-답변 및 자유 응답 작업에서 CoT 및 기본 프롬프트보다 10% 이상 향상된 성능을 기록했습니다.

2.28 연쇄 지식 (Chain-of-Knowledge, CoK)

CoVe와 유사하게, CoK는 더 정확한 결과를 얻기 위해 환각 문제를 해결하려 합니다.

CoK는 세 단계의 프롬프트 기법입니다.

첫 번째 단계는 추론 준비로, 주어진 쿼리에 대해 CoK는 여러 개의 예비 논거와 답변을 준비하고 관련 지식 영역을 식별합니다.

두 번째 단계는 동적 지식 적응으로, 답변 간에 다수의 합의가 없는 경우 CoK는 첫 번째 단계에서 식별된 지식 영역에서 지식을 가져와 논거를 단계별로 수정합니다.

세 번째 단계는 답변 통합으로, 두 번째 단계에서 수정된 논거를 사용하여 최종 답변을 도출합니다.

CoK는 문맥 자유 질문-답변, 테이블 기반 질문-답변, 다중 단계 추론 및 진실성 작업에서 CoT, Self-Consistency, VE 및 기본 프롬프트보다 각각 최소 3%, 3%, 1%, 1% 더 나은 성능을 기록했습니다.

2.29 연쇄 코드 (Chain-of-Code, CoC)

LLM의 코드 중심 추론을 향상시키기 위한 CoC 확장을 제안합니다.

여기서 LLM은 프로그램의 코드를 작성할 뿐만 아니라, 실제 인터프리터로 실행할 수 없는 특정 코드 라인의 예상 출력을 선택적으로 시뮬레이션합니다.

주요 아이디어는 LLM이 프로그램 내의 의미적 하위 작업을 유연한 의사 코드로 포맷하여 LLM이 실행 중에 에뮬레이터(LMulator)로 전달할 수 있도록 하는 것입니다.

실험 결과, CoC는 다양한 작업(추천 시스템, 인과 추론, 상식 추론, 공간적 질문-답변, 감정/정서 이해, 기계 번역, 논리적 추론, 테이블 기반 수학 문제 해결 및 수학 문제 해결)에서 CoT와 다른 기준 방법들을 능가했습니다.

2.30 프로그램 지원 언어 모델 (Program-aided Language Models, PAL)

자연어 문제를 읽고 추론 단계로 자연어와 프로그래밍 언어 문을 교차하여 생성한 다음, Python 인터프리터를 사용해 프로그래밍 문을 실행하여 답을 도출하는 PAL 프롬프트 전략을 제안합니다.

PAL은 수학 문제 해결, 테이블 기반 수학 문제 해결, 상식 추론 및 논리적 추론을 포함한 여러 NLP 작업에서 CoT 및 기본 프롬프트보다 더 나은 성능을 보였습니다.

2.31 Binder

훈련이 필요 없는 신경-상징적 기법으로, 입력을 프로그램으로 매핑합니다.

(I) LLM 기능의 단일 API를 Python 또는 SQL과 같은 프로그래밍 언어에 결합하여 구문 범위를 확장하고 더 광범위한 쿼리에 대응하며, (II) LLM을 기본 모델 및 프로그램 구문 분석기로 사용합니다.

Binder 파이프라인은 두 단계로 구성됩니다.

첫 번째 단계는 구문 분석 단계로, LLM이 주어진 쿼리와 지식 출처를 바탕으로 입력을 프로그램에 매핑합니다.

두 번째 단계는 실행 단계로, LLM이 선택한 프로그래밍 언어로 값을 반환하고 최종적으로 인터프리터를 통해 프로그램을 실행합니다.

Binder는 테이블 기반 진실성 및 테이블 기반 질문-답변 작업에서 이전 방법론보다 더 높은 정확도를 달성했습니다.

2.32 Dater

LLM을 사용하여 증거와 쿼리를 분해하고 테이블 기반 추론을 효율적으로 수행하는 퓨샷 학습 아이디어를 탐구합니다.

이 프롬프트 전략은 세 가지 중요한 단계를 포함합니다.

첫 번째 단계는 쿼리를 기반으로 거대한 테이블을 관련 있는 작은 서브테이블로 분해하는 것입니다.

두 번째 단계에서는 복잡한 자연어 쿼리를 논리적 및 수치적 계산으로 분해하기 위해 SQL 프로그래밍 언어를 사용합니다.

마지막으로, 이전 두 단계에서 생성된 서브테이블과 서브쿼리를 사용해 퓨샷 설정에서 최종 답을 도출합니다.

Dater는 테이블 기반 진실성 작업에서 최소 2% 성능 향상을, 테이블 기반 질문-답변 작업에서는 최소 1% 성능 향상을 보여주었습니다. Binder보다도 더 나은 성능을 보였습니다.

2.33 연쇄 테이블 (Chain-of-Table)

CoT의 유명한 프롬프트 기술을 테이블 설정으로 확장한 연쇄 테이블을 제안합니다.

이 다중 단계 테이블 프롬프트 접근 방식은 테이블 이해도를 높입니다.

연쇄 테이블은 세 단계의 프롬프트 기법입니다.

첫 번째 단계에서는 LLM이 상황에 맞는 학습을 통해 다음 테이블 작업을 동적으로 계획하도록 지시합니다.

두 번째 단계에서는 선택된 테이블 작업에 대한 인수를 생성합니다. 첫 번째와 두 번째 단계는 테이블을 변환하고 다양한 중간 테이블 표현을 생성하여 원래 쿼리에 답하는 것을 목표로 합니다.

마지막 단계에서는 첫 번째 두 단계에서 생성된 마지막 테이블 표현을 사용하여 쿼리에 답변을 도출합니다.

연쇄 테이블은 테이블 기반 질문-답변 및 테이블 기반 진실성 작업에서 SoTA 성능을 달성했습니다. 테이블 기반 질문-답변 작업에서 평균 3% 더 나은 성능을, 테이블 기반 진실성 작업에서는 약 1.5% 더 나은 성능을 기록했습니다.

2.34 분해 프롬프트 (Decomposed Prompting, DecomP)

복잡한 문제를 더 단순한 하위 문제로 분해한 후, 각 하위 문제에 대해 별도의 프롬프트와 분해기를 갖춘 LLM에 위임하는 DecomP 기법을 제안했습니다.

분해기는 계층적 분해, 재귀적 분해 또는 외부 API 호출을 통해 하위 문제를 해결할 수 있습니다.

DecomP는 상식 추론 작업에서 CoT 및 Least-to-Most보다 평균적으로 25% 더 높은 정확도를 기록했습니다. 다중 단계 추론 작업에서도 네 가지 데이터셋에서 CoT보다 뛰어난 성능을 보였습니다.

2.35 세 단계 추론 (Three-Hop Reasoning, THOR)

감정/정서 이해 작업에서 인간의 추론 과정을 모방하는 THOR를 제안했습니다.

THOR는 세 단계로 구성됩니다.

첫 번째 단계에서는 LLM이 주어진 쿼리에서 언급된 측면을 식별하도록 요청됩니다.

두 번째 단계에서는 첫 번째 단계의 출력과 원래 쿼리를 바탕으로 쿼리에 내재된 의견을 상세히 설명하도록 LLM이 요청됩니다.

마지막으로, 앞서 얻은 모든 정보를 결합하여 쿼리와 관련된 감정 극성을 추론하도록 요청됩니다.

THOR는 여러 감정/정서 이해 작업 데이터셋에서 이전의 SoTA 감독 학습 및 제로샷 모델을 크게 능가했습니다.

2.36 메타인지 프롬프트 (Metacognitive Prompting, MP)

인지 심리학에서 파생된 메타인지 개념을 바탕으로 하며, 개인이 자신의 인지 과정에 대한 자각과 자기 성찰을 수행하는 능력과 관련이 있습니다.

MP는 다섯 단계로 이루어져 있습니다.

(1) 입력 텍스트를 이해하고, (2) 예비 판단을 내리며, (3) 예비 분석을 비판적으로 평가하고, (4) 추론을 수반한 최종 결정을 내리며, (5) 전체 과정에 대한 자신감 수준을 평가하는 것입니다.

MP는 패러프레이징, 자연어 추론, 문맥 질문-답변, 단어 의미 중의성 해소, 명명된 개체 인식, 관계 추출, 다중 라벨 텍스트 분류 등 여러 NLP 작업에서 CoT와 PS를 일관되게 능가했습니다.

2.37 사건 연쇄 (Chain-of-Event, CoE)

요약 작업을 위해 CoE를 제안했습니다.

CoE는 네 가지 연속적인 단계로 구성됩니다.

첫 번째 단계는 특정 사건 추출에 초점을 맞추고, 두 번째 단계에서는 첫 번째 단계에서 추출한 사건을 분석하고 보다 간결하고 정제된 형태로 일반화합니다.

세 번째 단계에서는 이전 단계에서 일반화된 사건 중 대부분의 텍스트를 포괄하는 사건만을 선택합니다.

마지막 단계에서는 세 번째 단계에서 선택한 사건을 시간순으로 통합합니다.

CoE는 두 개의 요약 데이터셋에서 CoT보다 더 높은 rouge 점수를 기록하며, 더 간결한 요약을 제공합니다.

2.38 기본 프롬프트 + 용어 정의 (Basic with Term Definitions)

기본 프롬프트에 의료 용어 정의를 추가하여 LLM이 쿼리에 대한 답변을 할 때 더 많은 문맥을 얻도록 돕는 방법입니다.

그러나 결과는 이러한 용어 정의가 실제로 도움이 되지 않았음을 보여주었습니다.

이는 해당 정의가 LLM의 더 큰 지식 베이스와 충돌할 수 있기 때문이며, 또한 의료 용어의 정의가 문맥에 따라 달라질 수 있기 때문에 고정된 정의는 LLM을 혼란스럽게 할 수 있습니다.

2.39 기본 + 주석 가이드라인 기반 프롬프트 + 오류 분석 기반 프롬프트 (Basic + Annotation Guideline-Based Prompting + Error Analysis-Based Prompting)

임상 명명된 개체 인식(Named Entity Recognition, NER) 작업에서 LLM의 성능을 테스트했습니다.

이 프롬프트 전략은 세 가지 주요 구성 요소로 이루어져 있습니다.

첫 번째 기본 구성 요소는 LLM에게 작업에 대한 기초 정보와 출력 형식을 제공하는 것이며, 두 번째 주석 가이드라인 구성 요소는 주석 가이드라인에서 도출된 개체 정의와 언어 규칙을 포함합니다.

세 번째 오류 분석 구성 요소는 LLM 출력에 대한 훈련 데이터를 사용하여 오류 분석 후 추가 지침을 포함합니다.

이 프롬프트 방법은 여러 NER 작업 데이터셋에서 평균 0.57의 정확한 일치 F1 점수를 달성했습니다.

프롬프트 엔지니어링 – NLP 작업 분류

다양한 연구 논문에서 NLP 작업에 속하는 데이터셋을 분류할 때 서로 다른 기준을 사용해 왔으며, 이는 연구마다 달라지고 있습니다.

이러한 기존 분류 방식을 표준화하고, 각기 다른 NLP 작업에 해당하는 데이터셋을 정의하고 구조화하였습니다. 또한 이러한 작업들에 대해 사용된 다양한 프롬프트 기법에 대해 설명합니다.

여기서 중요한 점은, 하나의 데이터셋이 여러 NLP 작업에 동시에 속할 수 있다는 것입니다. 그러나 이러한 경우, 다양한 NLP 작업에 걸쳐 프롬프트 기법의 성능을 분석하는 데 복잡한 얽힘이 생길 수 있습니다. 따라서 이 연구에서는 데이터셋이 가장 강하게 연관된 하나의 NLP 작업에만 속하도록 했습니다.

다음 하위 섹션에서는 각각의 NLP 작업을 정의하고, 이에 해당하는 데이터셋과 해당 데이터셋에 적용된 다양한 프롬프트 전략을 다룹니다. 각 데이터셋에 대한 잠재적인 최첨단(SoTA) 프롬프트 기법도 포함되어 있습니다.


프롬프트 기법의 성능은 사용된 LLM에 따라 달라질 수 있으므로, 특정 데이터셋에서 프롬프트 기법과 함께 사용된 LLM 목록도 포함시켰습니다. SoTA에서는 프롬프트 기법의 이름만 언급했는데, 많은 경우 특정 LLM이 해당 프롬프트 기법과 함께 실험되지 않아 SoTA 성능을 달성했는지 명확하지 않기 때문입니다.

따라서 LLM 목록 중 하나와 프롬프트 기법이 데이터셋에서 최상의 성능을 기록한 경우, 사용된 정확한 LLM과 관계없이 이를 SoTA로 지정했습니다. 또한 SoTA를 나열할 때 평가 기준을 명시하지 않은 이유는 작업마다 평가 기준이 다를 수 있기 때문입니다.

이를 통해 연구에서 NLP 작업에 대한 보다 명확한 분류 체계를 구축하고, 각 작업에 대한 다양한 프롬프트 기법의 성능을 비교하고 분석하는 데 기여할 수 있을 것입니다.

마찬가지로, 연구 논문마다 평가 기준이 다를 수 있기 때문에 SoTA(최첨단 기법)를 나열할 때 평가 기준을 언급하지 않았습니다. 또한, 많은 연구에서 동일한 데이터셋의 다른 버전으로 실험을 진행하기 때문에, 이러한 데이터셋에 적용된 프롬프트 기법 간의 절대적인 비교가 어렵다는 점을 강조해야 합니다. 이러한 요소들을 고려하여 각 데이터셋에 대해 SoTA를 선택할 때 최선의 판단을 사용했습니다.

NLP 작업 능력 분류

추론 (Reasoning)

  • 논리적 추론(Logical Reasoning) : 입력과 명령 세트를 이해하고 주어진 문제를 해결하는 모델의 자연어 이해 능력
  • 상식 추론(Common Sense Reasoning) : 논리적 추론 작업과 달리, 모델이 상식으로 불리는 인간의 일반적인 실용적 지식을 바탕으로 판단을 내리는 능력. 문제를 해결하여 답을 도출하는 것이 아니라, 본질적인 일반 지식의 형태로 작동.
  • 다중 단계 추론(Multi-Hop Reasoning) : 주어진 쿼리에 답하기 위해 문맥의 다른 부분에서 증거를 연결하는 모델의 능력
  • 인과 추론(Causal Reasoning) : 원인과 결과를 다루는 모델의 능력
  • 사회적 추론(Social Reasoning) : 인간의 사회적 상호작용을 추론하는 모델의 능력
  • 자연어 추론(Natural Language Inference) : 주어진 전제를 바탕으로 가설이 참(포함), 거짓(모순) 또는 불확정(중립)인지 여부를 결정

질문-답변 (Question-Answering)

  • 문맥 기반 질문-답변(Contextual Question-Answering) : 주어진 문맥에만 의존하여 쿼리에 답하는 모델의 능력
  • 문맥 비의존 질문-답변(Context-Free Question-Answering) : 문맥 기반 질문-답변 작업과 달리, 문맥 비의존 질문-답변 작업은 주어진 문맥에만 의존하지 않고, 모델의 내재된 지식 베이스 또는 Wikipedia와 같은 오픈 소스 지식 베이스를 활용하여 쿼리에 답변
  • 공간 질문-답변(Spatial Question-Answering) : 공간적 객체, 관계 및 변환을 위한 심적 표상(mental representation)을 기반으로 하는 인지 과정인 공간 추론 능력
  • 대화형 문맥 질문-답변(Conversational Contextual Question-Answering) : 주어진 텍스트 추출물을 이해하고, 대화 형식으로 나타나는 일련의 상호 연관된 쿼리에 어떻게 답변하는지를 평가. 각 쿼리가 이전 쿼리의 답변에 의존할 수 있음.
  • 테이블 기반 질문-답변(Table-Based Question-Answering) : 테이블 형식에서 이루어지는 질문-답변 작업을 포함. 테이블 기반 진실성 또는 테이블 기반 수학 문제 해결과 같은 더 구체적인 테이블 기반 작업과 혼동을 피하기 위해, 이 작업에서는 이러한 작업에 속하지 않는 모든 데이터셋을 포괄.

문제 해결 (Problem Solving)

  • 수학 문제 해결(Mathematical Problem Solving) : 비표 형식의 수학적 계산을 수행하는 모델의 능력
  • 테이블 기반 수학 문제 해결(Table-Based Mathematical Problem Solving) : 수학 문제 해결 작업의 확장판으로, 테이블 형식에서 수학적 계산을 수행하는 모델의 능력

텍스트 분석 처리

  • 요약(Summarization) : 길이가 긴 입력 텍스트를 더 작은 조각으로 분해하면서 중요한 정보를 유지하는 모델의 능력
  • 문장 단어 바꾸기(Paraphrasing) : 주어진 입력 텍스트의 참된 의미를 유지하면서 다른 단어를 사용해 텍스트를 다시 작성하는 것을 목표. 요약 작업과의 주요 차이점은 요약 작업은 출력 텍스트의 길이를 입력 텍스트보다 짧게 만드는 것이 주목적이고, 이 작업은 단순히 다른 단어로 다시 쓰는 데 집중.
  • 기계 번역(Machine Translation) : 두 언어 간의 번역을 얼마나 잘 수행하는지를 테스트
  • 단어 의미 중의성 해소(Word Sense Disambiguation) : 서로 다른 문맥 속에서 단어의 다양한 의미를 해독하는 모델의 능력
  • 감정/정서 이해(Emotion/Sentiment Understanding) : 모델이 인간의 감정 또는 정서를 얼마나 잘 이해하는지를 평가
  • 명명된 개체 인식(Named Entity Recognition) : 주어진 입력 텍스트에서 사전 정의된 클래스나 카테고리에 속하는 객체를 식별하는 것을 목표
  • 입장 감지(Stance Detection) : 텍스트에서 작성자가 특정 주제, 목표, 평가 대상에 대해 찬성하는지 반대하는지를 결정하는 모델의 능력
  • 관계 추출(Relation Extraction) : 사전 정의된 클래스 또는 명명된 개체 간의 의미적 관계를 식별하는 모델의 능력

기타

  • 대화 시스템(Dialogue System) : 사용자와 기계 간의 대화 설정에서 언어 생성 또는 이미 생성된 대화를 기반으로 쿼리에 답변하는 모델의 능력. 대화형 문맥 질문-답변 작업에서 대화가 생성된 경우 두 작업 간에 강한 중복이 있을 수 있지만, 조사된 데이터셋 및 프롬프트 기법을 바탕으로 두 작업을 별개의 작업으로 유지.
  • 코드 생성(Code Generation) : 모델의 입력 또는 최종 출력이 프로그래밍 언어 코드인 모든 경우를 포함
  • 자유 응답(Free Response) : 모델이 제한 없는 텍스트 응답을 생성하는 능력
  • 진실성(Truthfulness) : 모델이 사실적으로 소통하고, 잘못된 정보를 퍼뜨리지 않는 능력을 평가. 모델이 주어진 문맥을 이해하는 능력보다는, 모델이 이해한 내용을 기반으로 허위 진술을 하지 않는 데 중점.
  • 테이블 기반 진실성(Table-Based Truthfulness) : 진실성 작업의 확장판으로, 모델이 테이블 형식에서 잘못된 정보를 퍼뜨리지 않고 사실적으로 소통하는 능력
  • 추천 시스템(Recommender System) : 주어진 입력을 처리하고 가능한 항목 목록에서 가장 관련성 높은 항목을 출력으로 제시하는 모델의 능력
  • 언어 기반 작업 완료(Language-Based Task Completion) : 언어 기반의 탐색 명령 시퀀스를 따라 작업 완료에 필요한 행동을 결정하는 모델의 능력
  • 다중 라벨 텍스트 분류(Multilabel Text Classification) : 각 입력을 사전 정의된 대상 레이블 세트로 분류하는 모델의 능력. 이 작업은 입장 감지, 명명된 개체 인식 등의 여러 작업을 포함할 수 있지만, 프롬프트 기법을 보다 분명하게 구분하기 위해 이 작업에 속하지 않는 데이터셋만 다룸.

4. 결론(Conclusion)

프롬프트 엔지니어링은 현재의 LLM(대규모 언어 모델) 환경에서 필수적인 역할을 하고 있습니다. 다양한 방법을 통해 LLM의 잠재력을 극대화하는 데 중요한 역할을 합니다.

이 연구에서는 44개의 연구 논문을 심층적으로 조사하고, 39개의 프롬프트 전략을 29개의 NLP 작업에 걸쳐 분석했습니다. 이를 분류 다이어그램을 통해 시각적으로 제시하고, 29개의 NLP 작업에 대해 데이터셋을 표준화하는 방안을 모색했습니다.

또한, 최근 프롬프트 기법의 전반적인 효과를 논의하고, 각 데이터셋에 대한 잠재적인 SoTA(최첨단) 프롬프트 기법을 나열했습니다.

이를 통해 프롬프트 엔지니어링이 NLP 작업에서 어떻게 활용되고 있으며, 각각의 작업에서 어떤 성과를 거두었는지에 대한 체계적인 분석을 제공했습니다.

참고 문서