1. Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- 개념
- LLM에게 정답만 시키지 말고, Few-shot 프롬프트에 “중간 추론 과정(Chain-of-Thought, CoT)”을 넣으면, 큰 모델에서 산술·상식·기호 추론 성능이 크게 좋아진다
- few-shot prompting + 해설/중간추론의 효과(단계를 분해해서 푸는 방식)
- Emergent ability 발견
- CoT의 효과는 작은 모델에는 없고, 큰 모델에서 갑자기(emergent) 나타나는 능력임을 보여줌
- 이는 “모델 크기 → 새로운 능력”이 생기는 전형적인 emergent phenomenon 사례
- 한계
- CoT가 인간처럼 보이는 생각을 흉내 내지만, 내부적으로 진짜 ‘추론’을 하는지 여부는 확신 X
- CoT가 항상 올바른 추론 경로를 보장하지는 않으며(그럴듯하지만 틀릴 수 있다.)
- CoT가 효과적인 건 큰 모델 스케일에서 → 실서비스 비용/지연 문제 발생 가능성 존재
- 프롬프트 예시
- (input, chain of thought, output) 3개를 한 세트로 넣는다.
- chain of thought = 정답으로 가는 자연어 중간 추론 단계
- 프롬프트 퀄리티
- 프롬프트에 따라 성능 편차는 존재하지만 어떤 경우든 “일반 프롬프트보다 CoT가 훨씬 좋다” 경향은 유지 즉, “특정 마법의 프롬프트”가 아니어도, 적당히 그럴싸한 단계별 풀이만 써도 성능 향상은 꽤 안정적으로 나옴.
- 다만 일부 과제에서는 프롬프트 스타일에 따라 편차가 크기도 해서 프롬프트 엔지니어링이 여전히 중요
- 자동 사고 연쇄(Auto-CoT)
- Auto-CoT 구성
- 질문을 “다양하게” 뽑는다 (중요: diversity) ⇒ 어떻게 클러스터링/샘플링을 다양하게?
- 뽑힌 질문들에 대해 LLM에게 zero-shot CoT로 추론 체인을 생성하게 해서 “데모 후보”를 만든다
- 이렇게 만든 데모들을 모아 few-shot CoT 프롬프트처럼 사용한다
- 문제는 자동 생성된 추론 체인에 실수가 섞일 수 있는데, 이를 줄이기 위해 다양성이 중요함
2. ReAct: Synergizing Reasoning and Acting in Language Models
- 개념
- ReAct = Reasoning(추론) + Acting(행동)
- 대형 언어 모델이 복잡한 작업을 수행할 때 생각(추론, Thought)과 행동(Action)을 번갈아가며 수행하며 작업을 해결하는 프롬프팅 방법
- 왜 필요한가?
- 기존 Chain-of-Thought (CoT): 추론만 하고, 외부 정보 접근 불가(내부 지식만 사용) → 환각(hallucination) 발생
- 기존 Act-only: 행동만 하고, 추론 없음 → 복잡한 계획 수립이나 목표 추적 어려움
- ReAct: 추론과 행동을 결합하여 두 방식의 장점을 모두 활용
- 핵심 특징:
- Thought (생각): 작업 분해, 진행 상황 추적, 예외 처리, 상식 추론 등 현재 상황 분석 및 다음 행동 계획
- Action (행동): 외부 환경과 상호작용 (검색, 탐색 등) 등 실제 취할 행동
- Observation (관찰): 환경으로부터의 피드백
- 언제 사용?
- 최신 정보 필요 (뉴스, 주가, 날씨)
- 사실 검증 필요 (claims verification)
- 여러 단계 탐색/검색 필요
- 환경과 상호작용 필요 (게임, 로봇)
- 예외: 단순 수학 계산이나 일반 상식 질문, 창의적 글쓰기 등에 효과적이지 않음
- 좋은 ReAct 프롬프트 만들기
- 명확한 목표 분해
- 진행 상황 명시적 추적
- 실패 시 재시도 전략
- 상식 추론 활용
- 정보 추출 및 종합
3. Prompt Chaning
- 프롬프트 체이닝은 여러 작업이나 변환이 포함될 수 있는 다양한 시나리오에서 사용
- 방대한 텍스트 문서에 대한 처리(인용구 추출, 다음 프롬프트 활용 등).
- 문서에 있는 질문에 답하는 형태의 작업에 적합
You are a helpful assistant.
Your task is to help answer a question given in a document.
The first step is to extract quotes relevant to the question from the document,
delimited by ####. Please output the list of quotes using <quotes></quotes>.
Respond with "No relevant quotes found!" if no relevant quotes were found.
####
{{document}}
####
image_analysis