[논문리뷰] Active Prompting with Chain-of-Thought for Large Language Models

dongcho·2025년 11월 13일

논문리뷰

목록 보기
4/8

선정 이유

프롬프트 자동화 관련 자료를 찾아보고 싶었는데 그러다 active prompting이라는 키워드를 보고 읽어보기로 했습니다. (그러나 읽어본 결과 찾는 분야랑은 좀 다름..)

CoT promptingChain of Thought은 어떤 문제를 해결할 때 그 과정에서의 중간 단계(사고 과정)를 명시적으로 표현하도록 유도하는 방법. 이를 통해 모델은 문제를 해결하는 과정을 단계별로 설명하면서 더 복잡한 추론을 수행할 수 있게 됨. (zero-shot의 경우 주로 프롬프트에 "step by step" 등의 키워드를 넣음.)

→ 그러나 기존의 CoT는 사람이 사전에 준비한 예시를 사용하기 때문에, 최적화된 예시를 찾기 힘들다. → 이를 찾아주는 것이 저자가 제안한 Active prompt

Active Learning모델이 학습에 사용할 데이터를 선택하는 과정에서 불확실성이 가장 큰 데이터를 선택해 annotation을 달도록 하는 방법으로, 효율적인 성능 개선이 가능.

이 불확실성을 평가하기 위해서는 다양한 metric을 사용할 수 있는데, 주로 Disagreement(여러 번 시도하여 나온 값들의 불일치성), Entropy(예측된 결과 확률 분포의 불확실성), Variance(예측 결과의 분산) 등을 사용.

→ 저자가 제안한 active prompt의 핵심은 few-shot 질문을 위의 active learning 처럼 알고리즘을 통해 선택하도록 하는 것.

Purpose

Active-Prompt라는 방법을 소개하여 CoT 추론을 개선하고자 함. 사람이 찾을 필요 없이 모델이 불확실한 질문을 반환하기 때문에 최소화된 노력으로 모델의 성능을 쉽게 향상시킬 수 있음!


Method

전체적인 파이프라인은 위와 같음.

모델이 unlabeled question들에 대해 일정 횟수 반복하여 대답하게 함

→ uncertainty u 계산(fig에서는 disagreement 사용) → ranking 매겨 most uncertain question pool 생성 → 모델이 뽑은 질문들에 대해 annotation(CoT 과정 포함)을 프롬프트에 추가 → inference

다시말해, 잘 모르는 개념들에 대해 답지를 확인하는 오답노트 방식!

Uncertainty Estimation저자들은 disagreement를 주요 metric으로 사용했으나, entropy, variance, self-confidence 또한 estimation 방식으로 제안.

+) 다만, LLM(여기서는 GPT-3 기준으로 실험)의 경우 over-confidence 한 경향이 있어 스스로에게 얼마나 확신하는지를 물어볼 경우(self-confidence) 제대로된 estimation이 불가해 제외함.

1) Disagreement

unique한 아이템의 개수를 답변의 수로 나눈다. -> 답변이 계속 달라질수록 uncertainty 증가

2) Entropy

모델이 질문 q에 대해 가능한 답변 a의 확률을 예측하여 로그 함수로 가중 합산 -> 한 답변으로 확률분포 몰릴수록 uncertainty 감소

3) Variance

각 질문에 대한 답변의 분산 확인(간단한 정규화 후) -> 클수록 uncertainty 증가

Experiment

저자는 CodeX의 code-davinci-002(2021)를 주 베이스라인 모델로 사용. uncertainty는 각 질문 당 10회를 기준으로 estimation.inference 단계에서는 temperature=0.7로 설정 후 각 질문에 대해 40회씩 답변을 받음.

uncertainty는 disagreement, entropy 두 가지 방식을 따로 사용. Auto-CoT, CoT, self consistency, random-CoT(무작위 annotation)와 비교했을 때 estimation 방식에 따른 차이는 있지만 다른 기존 프롬프트에 비하면 개선된 성능을 볼 수 있음.

+) 간단한 산술 문제(GSM8K, ASDIV, SVAMP, AQuA, SingleEQ) 벤치마크 중  ASDiv, SVAMP, SingleEq는 훈련 데이터가 없기 때문에 GSM8K에서 프롬프트를 transfer하여 사용.

그 밖에 상식, 기호 추론 벤치마크 중 Letter(4) 데이터셋은 훈련 데이터와 다른 테스트 데이터를 다뤘음(OOD)에도 좋은 성능을 보임.

Ablation study

  • Few-shot prompt

'active-prompt는 few-shot 예시에 의존하지 않는다'selection 과정에서 처음부터 예시를 제공하지 않고, zero-shot 방식으로 스스로 추론 과정 생성하게 한 뒤 비교했을 때 성능이 뒤지지 않음

+) 그러나 질문 선택 이후에는 어차피 사람의 수동 annotation이 많던 적던 필요할텐데... 뭔가 큰 의미가 있는지는 잘 모르겠음

  • Active selection

'active-prompt가 random-CoT보다 월등히 좋다.'질문을 무작위 선택하는 것보다 제시된 방법대로 모델이 계산하여 선택하도록 하는 게 성능 개선에 중요한 기여를 하는 것으로 보여짐.

  • Annonator

'누가 CoT와 정답에 대한 주석을 다는지에 따라 차이 발생.'  → 질문 선택에 대한 해결책이 될 수는 있으나, 프롬프트 최적화 설계는 아님

  • Metrics

'Disagreement 혹은 entropy를 사용하는 게 낫다'

  • Pool size

'k=10 에서 성능이 최적화된다.'uncertainty estimation의 첫 단계에서 입력 질문에 대한 k개의 답을 생성할 때, 이 k 값을 바꿔가며 prediction pool을 구성한 결과 커질수록 성능이 계속 증가하고, k=10에서 성능이 수렴하는 경향을 보임.

Transferabilityactive-prompt가 선택한 예시 질문이 모델 간 전이 가능한지 실험.code-davinci-002 모델로 예시를 선택하고, 이를 text-davinci-002와 text-davinci-003 모델에서 추론 수행.

→ uncertainty가 모델에 종속적인지, 특정 task에 종속적인지를 확인.

그 결과, 선택된 질문들은 task-specific하며, 모델 간 전이가 가능함을 증명.

GPT-3.5(큰 모델)와 Llama2-70b(작은/약한 모델) 모델 간의 transfer 실험을 진행. 이 때, 1) GPT-3.5로 예시를 선택 하는 방법과 2) Llama2로 예시를 선택하는 방법 두 가지 경우로 나누어 봄.

→ transfer가 가능하며, 큰 모델에서 작은 모델로 transfer하는 경우 더 나은 성능을 보임.


Key point

1) 효과적인 annotation을 하기 위해 uncertainty estimation 도입한 active prompt 제안

→ 사람의 노력을 줄이면서 프롬프트 성능 개선

2) 실험을 통해 네 가지 uncertainty metrics 중 disagreement, entropy를 적용하는 게 가장 좋음을 증명

3) 10가지 CoT, 정답 예시를 제공하는 게 가장 적절함

4) 얻어낸 '주요 질문'은 모델에 종속되지 않고 task-specific 하므로 transfer 하여 더 범용적으로 활용 가능


Limitations and Suggestions

  • GPT-4를 사용해 분류 작업까지 활용하는 요즘은 self-consistency metric을 활용할 수도 있을 듯.
  • annotator 실험을 통해 결국 프롬프트 템플릿에 따라 성능이 많이 갈리는 것을 확인할 수 있는데, 이 최적화 방식을 어떻게 할 것인가가 관건.
  • 베이스라인을 zero-shot으로 했어도 될 것 같은데(어차피 estimation 단계 후에 다시 사람이 개입을 해야 하니) few-shot을 사용한 점이 좀 아쉽다.

Personal Insight

  • 다른 모델로 transfer해도 상관 없는 점을 증명한 게 좋았다. 비용 문제때문에 좋은 모델의 api를 제한적으로 사용해야 하는 상황에서 오픈소스 모델을 fine-tuning하기 위해 active-prompt만 부분적으로 사용해 exemplar를 얻는 방식으로 활용하기 좋은 듯.
  • disagreement는 간단하면서도 효과적인 metric. 다만 개인적으로는 self-consistency를 활용한 결과도 보고싶음.
  • uncertainty와 정확도가 음의 상관관계에 있다는 건 당연한 얘기인데, 이를 실험적으로 어떻게 구체적으로 증명하느냐를 배울 수 있었음.

Overall...

사실 제목을 보고 생각했던 프롬프트 구조의 최적화 방식, 혹은 완전 자동화 방식은 아니었지만 쉬운 방법론이라 가볍게 읽기 좋았다!

profile
비틀비틀짝짜쿵

0개의 댓글