AUTOMATIC CHAIN OF THOUGHT PROMPTING IN LARGE LANGUAGE MODELS

 


Abstract:

  • CoT: 프롬프트에서 추론 작업의 중간 단계를 프롬프트로 제공하는 것을 체인 오브 사고(Chain-of-Thought, CoT) 라고 함.
  • 이 논문은 LLMs 을 이용해서 복잡한 추론을 수행할 때 중간 추론 단계를 생성해보도록 하는 논문임.
  • CoT 프롬프팅에는 두 가지 주요 접근법이 있음:
    • Zero-shot: 한 단계씩 생각해보자(Let’s think step by step)“와 같은 간단한 프롬프트를 사용하여 모델이 답변 전에 단계별로 생각하도록 만드는 방법
    • Manual-CoT: 추론 과정을 하나씩 수동으로 제공하여 모델이 그 패턴을 따라가도록 만드는 방법.
    • 두 번째 접근 방법은 특정 작업에 맞게 수동으로 데모를 제작해야 하므로 많은 노력이 필요하지만, 성능이 뛰어남.
  • 이 논문은 두 번째 CoT 방법인 수동으로 추론 과정을 하나씩 입력하는 방법에서 이걸 자동화하는 방법을 다루는 논문임.
  • 자동으로 중간 추론 단계를 생성하는 방법은 Let’s think step by step 프롬프트를 이용해서 단계별로 생각하도록 만들고 이 단계별 추론 과정을 이용하는거임. 즉 데모 자체를 하나 자동으로 만드는 방법을 말함. 
  • 하지만 자동으로 생성된 추론 과정에는 오류가 생길 수 있음. 이 오류를 잡는 방법으로 오류를 보다 완화하는 접근 방식을 취함. 다양한 질문 (or 입력) 을 줘보고 그에 따른 추론 과정을 생성해서 예시로 제공하는 방법을 사용. 그러니까 자동으로 추론 예시를 생성하는 건 잘못된 추론 예시도 포함될 수 있지만, 다양한 추론 경로 예시를 제공해줌으로써 이 문제는 보다 완화될 수 있다는 것.
  • 다양한 예시를 제공할 경우 추론 경로가 잘못 생성될 확률이 극히 낮아지기 때문임. LLM 은 특정 작업 유형에서만 잘못된 추론을 하는 경향이 있기도 하고, 한 두개의 잘못된 예시는 성능을 떨어뜨리지 않는다고 함. 
  • 다양한 질문 또는 입력의 근원지는 데이터 셋이다. 데이터 셋을 의미적으로 유사한 것들을 클러스터링해서 거기서 대표적인 것들을 가져오는 거임. 
  • Auto CoT 의 자세한 코드는 다음 링크에서 확인할 수 있음: https://github.com/amazon-research/auto-cot

 

 

Zero-shot CoT vs Manual CoT (Few-shot):

 

 

Introduction:

  • CoT 프롬프팅의 두 가지 주요 패러다임:
    • Zero-Shot-CoT:
      • 질문 뒤에 “한 단계씩 생각해보자(Let’s think step by step)“와 같은 간단한 프롬프트를 추가하는 방법
      • 특정 작업에 구애받지 않고(task-agnostic), 입력-출력 데모가 필요없음.
      • 간단하고 추가적인 노력 없이도 모델이 추론 과정을 생성 가능
      • 다만 아래 방법보다 성능이 나오진 않음.
    • Manual-CoT:
      • 몇 개의 수동으로 작성된 추론 데모를 하나씩 제공하는 Few-Shot 프롬프팅
      • 각 데모는 질문과 그에 따른 추론 체인으로 이루어져 있음.
      • 추론 체인은 중간 추론 단계의 연속인 근거(rationale) 와 예상 답변으로 구성됨.
      • Zero-Shot-CoT보다 성능이 뛰어남
      • 효과적인 데모를 손수 작성해야 하므로 많은 노력과 시간이 필요
  • Auto-CoT 패러다임:
    • Manual-CoT에서 필요한 수작업을 제거하고 자동으로 데모를 구성해보자.
    • 방법:
      • LLM에 “한 단계씩 생각해보자”라는 프롬프트를 사용하여 자동으로 데모에 필요한 질문과 추론 체인을 여러개 생성.
      • 이렇게 생성된 예시를 샘플링해서 다양한 예시를 프롬프트에 제공
    • 구체적인 방법:
      • 데이터 셋을 클러스터링: 주어진 데이터 셋에 있는 쿼리를 의미적으류 유사한 그룹으로 클러스터링한다. 이렇게 클러스터링 하는 이유는 다양한 추론 데모를 만들기 위함임.
      • 각 클러스터 별로 대표 질문을 뽑아서 Zero-shot CoT 를 통해 데모를 생성한다.
      • 이렇게 생성한 데모를 프롬프트에 포함시킨다.
    • 다양한 유형의 Zero-shot CoT 에시를 프롬프트에 포함시키는 방법.
    • LLM 이 중간 추론 단계를 생성하는 능력이 다른 논문들에서 실용적임을 보여주었기 때문에 이 방법을 생각해봤다고 함.

 

 

ICL (In-Context Learning) 연구에서 발견한 결과들:

  • ICL은 입력의 일부로 몇 개의 예시를 제공하여 LLM 이 목표 작업을 수행하도록 하는 방법. (Few-shot 같은 것도 ICL 임)
  • 연구에서 발견한 사항들:
    • 일반적인 ICL 의 연구로 발견한 건 예시의 선택에 따라서 결과가 크게 달라질 수 있다는 것.
    • 잘못된 예시의 추가는 성능 저하를 유발하진 않는다고 함.
    • 하지만 CoT 와 같은 작업 (입력 -> 근거 -> 결과) 구조에서 입력 -> 근거 또는 근거 -> 출력 에서 오류가 발생하면 성능이 떨어진다고 함.
    • 즉 올바른 추론 경로를 제공하지 않으면 성능이 떨어짐.
  • Auto Cot 의 경우에도 올바른 추론 경로를 제공하지 않으면 성능이 떨어진다는 소리임.

 

 

Challenge of Auto-CoT:

  • Auto-CoT의 핵심 도전 과제는 좋은 질문과 그에 따른 올바른 추론 체인을 자동으로 구성하는 것.
  • 정답이 있는 올바른 추론 경로가 포함된 데이터 셋을 이용할 경우에는 성능이 잘나오지만, 정답이 없는 데이터 셋에서 Zero-shot CoT 를 적용한 경우에는 성능이 떨어지기도 함. Zero-Shot-CoT에 의해 생성된 부정확한 추론 체인이 성능에 부정적인 영향을 줄 수 있음.
  • Retrieval-Q-CoT vs Random-Q-CoT vs Zero-shot CoT vs Manual CoT:
    • Retrieval-Q-CoT 방법: 코사인 유사도 기반으로 상위 k개(예: k=8) 의 유사한 질문을 검색하여 데모로 사용
    • Random-Q-CoT 방법: 유사성 기반 방법과 비교하기 위해, Random-Q-CoT를 테스트. 이는 각 테스트 질문에 대해 무작위로 k개의 다른 테스트 질문을 샘플링 하는 방법
    • Retrieval-Q-CoT와 Random-Q-CoT 모두 Zero-Shot-CoT 를 사용해서 추론 체인을 생성함
  • 결과는 다음과 같다:
    • GSM8K 와 AQuA 데이터 셋의 경우에는 정답이 있는 추론 체인이 포함되어 있음. 그래서 이걸 사용해본 것.
    • 올바른 추론 체인이 프롬프트에 포함되어 있는 경우에는 이것과 관련된 예시가 있는 Retrieval-Q-CoT 가 가장 뛰어나고, 랜덤 예시가 있는 Random-Q-CoT 가 뒤따른다. 그리고 Manual CoT 는 그 다음이다. (올바른 추론 체인을 구성한 경우에는 작업과 유사한 예시가 성능에 도움이 된다.)
    • 하지만 Zero-shot CoT 로 추론 체인을 생성한 경우에는 Retrieval-Q-CoT 와 Random-Q-CoT 모두 Manual CoT 보다 성능이 낮다. (이건 올바르지 않은 추론 경로가 포함되어 있을 수 있기 때문임.) 
    • 그리고 잘못된 추론 체인을 여러개 포함시킨 경우에는 Retrieval-Q-CoT 가 Random-Q-CoT 보다 성능이 낮다.
    • 하지만 Retrieval-Q-CoT와 Random-Q-CoT 모두 Zero-shot CoT 보다 성능이 높다.

 

 

Retrieval-Q-CoT Fails due to Misleading by Similarity:

  • Retrieval-Q-CoT에서 사용되는 추론 체인(근거와 답변 모두)은 Zero-Shot-CoT에 의해 자동으로 생성되며, 이 과정에서 오류가 발생하여 잘못된 답변으로 이어질 수 있다는 걸 발견함.
  • 이 방법이 실패한 이유: 테스트 질문과 유사한 질문을 검색하여 그에 대한 데모를 사용하면 Zero-Shot-CoT에 의해 생성된 잘못된 데모가 계속해서 LLM 을 잘못된 방향으로 유도하게 될거임. 실수를 반복(replication of mistakes) 하게 되면서 성능이 떨어짐.
  • MultiArith 데이터 셋으로 Zero-shot CoT 를 할 경우 오류 확률은 21% 정도 생긴다고 함.
  • (근데 Auto CoT 방법은 LLM 의 성능이 높아지기 시작하면 올바른 추론 체인을 생각할 것이니 도움이 되고, 오류가 낮아지기 시작하면 그냥 이 방법을 써도 될 듯)

 

 

Errors Frequently Fall into the Same Cluster:

  • Zero-shot CoT 의 오류는 특정 클러스터에서 자주 발생하는 경향이 있었다고 함.
  • 아무래도 목표 작업에서 일부 일반적인 문제를 해결하는 데 필요한 기술이 부족할 수 있기 때문임.
  • 이런 경향 때문에 유사성 기반 방법을 사용하여 여러 유사한 질문을 검색하는 Retrieval-Q-CoT 는 자주 발생하는 오류 클러스터에서 검색을 할 경우 실패한 예시를 더 많이 포함하게 될거임. 이게 성능 저하로 이어짐.
  • (특정 작업의 경우에 Zero-shot CoT 가 잘 안먹히고, 잘못된 추론 경로를 생길 수 있다는 사실을 알아야함. 이 문제를 해결하려면 ICL 을 이용하거나, 파인튜닝을 해야하지 않을까?) 

 

Diversity May Mitigate Misleading by Similarity:

  • 이전 분석에서, LLM 은 아직 완벽한 제로샷 추론을 할 수 없다는 걸 알아냈음. 즉 Zero-Shot-CoT에서 오류가 발생할 수 있음.
  • Auto-CoT의 설계에서 유사성에 의한 오도(Misleading by Similarity) 문제를 해결하는 것이 중요하다고 판단.
  • Section 5.5에서 보여주겠지만, 8개의 데모 중 1~2개의 잘못된 데모를 제공해도 테스트 질문에 대한 전체적인 추론 성능에 큰 해를 끼치지 않는다고 함.
  • 이런 논리를 이용해서 다양한 예시를 구성하는 방법으로 Auto CoT 를 설계한거임.

 

 

Auto-CoT: Automatic Chain-of-Thought Prompting:

  • Auto-CoT consists of two main stages:
    • (1) question clustering: partition questions of a given dataset into a few clusters;
    • (2) (ii) demonstration sampling: select a representative question from each cluster and generate its reasoning chain using Zero-Shot-CoT with simple heuristics.

 

 

Question Clustering:

  • 작동 원리:
    • 질문 벡터 표현 계산:
      • 각 질문에 대해 Sentence-BERT[Reimers and Gurevych, 2019]를 사용하여 벡터 표현을 계산
      • Sentence-BERT는 문장의 의미를 고차원 벡터로 인코딩하는 사전 학습된 모델임.
      • 질문의 컨텍스트화된 벡터들을 평균내어 고정된 크기(fixed-size)의 질문 벡터 표현을 만듬.
    • k-평균 클러스터링(k-means clustering):
      • 질문 벡터 표현들을 입력으로 하여 k-평균 클러스터링 알고리즘을 적용함.
      • 이를 통해 k 개의 질문 클러스터를 생성
      • 여기서 k 는 원하는 클러스터의 수로, 데이터셋의 크기와 다양성에 따라 결정됨.
    • 클러스터 내 질문 정렬:
      • 각 클러스터 i 에 속한 질문들을 그 클러스터의 중심(center) 까지의 거리의 오름차순으로 정렬
      • 정렬된 질문 리스트는 다음과 같이 표시됨.
      • q^{(i)} = [q^{(i)}_1, q^{(i)}_2, \ldots]
      • 여기서 q^{(i)}_1 은 클러스터 i 에서 중심에 가장 가까운 질문이 됨.
      • 오름차순 정렬이기 때문에 첫 번째 질문이 대표 질문이 되지 않을까. 이게 클러스터의 중심에서 가장 가까운 질문이 될거임.

 

 

Demonstration Sampling:

  • 클러스터링된 질문들에 대해 추론 체인을 생성하고, 우리의 선택 기준을 만족하는 데모를 샘플링하는 것.
  • 각 클러스터 i (i = 1, \ldots, k )에 대해서 데모 d^{(i)} 를 구성함.
  • . 이 데모는 질문, 추론 과정(근거, rationale), 그리고 답변을 연결된 것임.
  • 작동 방식:
    • 클러스터 i 에서, Algorithm 1을 통해 얻은 정렬된 질문 리스트 부터 시작해서 우리의 대표 선택 기준을 만족할 때까지 순차적으로 질문 리스트를 순회하면서 조건이 충족되는지 확인함.
    • 여기서 클러스터 중심에 가까운 질문이 우선적으로 고려된다.
    • 대표 후보 데모를 선택하는 기준은 휴리스틱 기준으로 만든 걸 이용하면 됨.
    • 대표적으로는 다음과 같다:
      • 질문의 길이가 60토큰 이하
      • 5개 이하의 추론 과정이 포함된 경우.
      • 이 휴리스틱은 간단한 추론 과정을 선택하도록 한 것.

+ Recent posts