언어 모델의 추론 능력을 향상시키는 방법들: 순서대로 정리
여기서 소개하는 글은 프롬프팅 기법에 국한해서 소개함. 언어 모델의 추론 능력을 향상시키는 방법은 여러가지가 있음.
CoT: 추론 능력을 향상시키기 위한 프롬프트 기법의 등장:
- 과거의 프롬프트 기법은 입력을 주면 출력을 생성하도록만 한 기법이었음.
- 이는 인간의 사고 방식인 중간 결과들을 통해서 최종 결론에 도달하도록 하는 단계적 사고를 하는 것이 아님. 바로 결론에 도달하도록 하는 기법.
- CoT 기법은 이러한 문제를 해결하기 위해서 나옴. 단계별로 추론을 통해서 결론에 도달하도록 만든 기법.
추론 과정 작성의 어려움. Zero-shot CoT 기법의 등장:
- 에시없이 Le’s think step by step 이라는 문구를 줘서 언어 모델 스스로 단계별로 추론을 할 수 있도록 만드는 기법이 등장함. 이는 범용적이고, 성능에 향상적이라는 장점이 있었음.
- 또 다른 프롬프팅 기법으로는 유추 프롬프팅(Analogical Prompting) 이 있음. 응답을 생성하기 전에 관련된 예시를 먼저 떠올려보고, 그걸 참고해서 문제를 해결하도록 하는 기법임. 이렇게 예시를 생성해보는 것만으로도 성능 향상에 도움이 됨.
자동화된 프롬프트 설계:
- 프롬프트를 작성하는 건 굉장히 민감한 일임. 한 글자만 바꿔도 성능이 달라지니까. 이런 작업을 인간이 하는 건 굉장히 비용소모적인 일이므로, LLM 에게 맡겨보자는 아이디어로 시작한 것이 자동화된 프롬프트 설계 기법임.
- LLM 이 프롬프트를 제안하고, 테스트 데이터를 통해 점수화를 해서 제일 높은 점수를 받은 프롬프트를 선택하는 과정으로 이뤄짐.
- 또 다른 아이디어로는 과거의 시도로부터 Prompt 를 생성한 시도와 결과를 프롬프트에 넣어서 처음부터 더 나은 프롬프트를 만들도록 하는 기법도 있음. 이걸 Meta Prompt 라고 한다. 프롬프트 생성을 위한 Meta 정보를 넣은 프롬프트임. 이렇게 생성한 프롬프트를 반복적 개선을 통해서 최종적인 프롬프트를 만듬.
분해 방식으로 복잡한 문제를 해결하는 기법: 최소-최대 프롬프팅 (Least-to-Most Prompting)
- 복잡한 문제를 해결하는 인간의 또 다른 핵심 전략은 '분해(decomposition)'입니다. 최소-최대 프롬프팅은 이 전략을 명시적으로 모델에 지시하는 방법입니다.
- 문제 축소 (Problem Reduction): 먼저, 원래의 복잡한 문제를 더 작고 쉬운 여러 개의 하위 문제로 나누도록 지시합니다.
- 순차적 해결 (Sequential Solving): 나뉜 하위 문제들을 쉬운 것부터 순서대로 풀게 하고, 그 결과를 조합하여 최종 답을 얻도록 합니다.
다수의 응답을 생성하는 전략: 자기 일관성 (Self-Consistency)
- 기존의 방법은 하나의 응답만 생성헀다. 한번의 응답 생성 전략은 첫 시도에서 실수 할 수 있기도 함. 그리고 다양한 경로를 탐색해보기 어렵다는 문제점도 있음.
- 이를 보완하기 위해 여러 개의 추론 경로, 즉 다수의 후보 솔루션을 생성하고 그중에서 최선을 선택하는 방법이 Self Consistency 임.
검증자 모델과 트리 탐색:
- 다수결 응답을 생성하는 방법은 높은 Temperatrue 값을 통해 여러번의 응답을 생성하고 이 중에서 일관적인 답변을 골라내는 것임. 이 기법은 체계적으로 다양한 경로를 생각해보고 유망한 것을 선택해보는 기법보다는 탐색 정도가 약함. 확실한 건 문제를 해결하기 위해 모든 방법을 다 탐색해보고 그 중에서 가장 가능성있는 전략을 선택해본다면 최적화된 성능을 달성할 수 있을 거임.
- 이를 위한 기법으로 ToT(Tree of Thought) 를 통해 다양한 탐색을 장려하고, 이 생각들 중 유망한 생각만을 섬별하는 검증자 모델을 통해 검증하는 기법이 있음.
- 검증자 모델은 과정 기반 검증이냐, 결과 기반 검증이냐에 따라 다르며, 별도의 훈련 모델이 필요함. 일반적으로는 과정 기반이 더 나은 성능을 보여준다고 함.
- 이 방식으 중대한 단점은 토큰 사용량임. 비용을 무제한적으로 낼 수 있는 사용자는 없을 것. 어느정도 절충이 필요하다.
반복적 자기 개선 기법:
- 언어 모델의 첫 응답에서 시작해서 스스로 피드백해서 발전시킬 수 있는 방법임. 인간의 글쓰기 개선 방식을 참고한 방법. 초안을 작성하고 글을 퇴고하면서 발전시키는 방법을 말함.
- 이 방법이 글쓰기와 같은 방법에서는 효과적이나, 추론 분야에서는 덜 효과적이라고 함.
- 이런 기법이 효과적으로 작동할 수 없다라는 논문도 제안되긴 함. 언어 모델은 스스로 평가 능력을 갖출 수 없다. 올바른 정답이 제시된 경우에서도 피드백을 줘서 스스로 망치기도 한다 등. 이 기법을 쓰려면 언어 모델의 자기 성찰 능력을 가지고 있는지, 명확한 피드백을 제공받을 수 있는지(코드 실행 결과 등) 파악해야함.
다수 응답 생성 및 검증 + 반복적인 개선 + 지식 축적을 활용한 워크플로우 설계 기법: Flow Engineering(AlphaCodium)
- 전처리 단계 → 코드 반복 업그레이드 단계 크게 두 가지 단계로 이뤄짐.
- 전처리 단계에서는 AlphaCodium이 자연어로 문제에 대해 추론을 하고 문제에 대해 상세하게 이해하고 분석하는 단계임. 이 단계에서 초기 코드 솔루션을 다양하게 생성해보고 Ranking 을 매겨서 가장 나은 접근법부터 시작함 (다수 응답 생성 및 검증 그리고 지식 축적)
- 코드 반복 단계는 코드를 생성, 실행, 테스트, 피드백을 통한 개선 과정을 반복함. (반복적 개선)
- 지식 추적이라는 건 쉬운 단계에서 어려운 단계로 진행하면서, 그 과정에서 얻은 지식과 통찰이 더 어려운 단계에서 도움을 준다는 거임.
우리가 알고가야 할 교훈들
최적의 전략: 너비 vs. 깊이:
- 넓이 위주의 탐색 (예: Self Consistency) 와 깊이 위주의 탐색 (예: 자기 반복적 개선) 에 대해서 배움.
- 넓이 위주의 탐색은 복잡한 문제를 만났을 때 유망한 시작점을 찾기에 유리할 것.
- 깊이 위주의 탐색은 정확도를 높히는데 유리할 것.
- 필요에 따라서 위 두 전략을 혼합하는 것도 가능함.
- 이 모든 전략을 고려할 때 토큰 사용량 또한 고려하자 .
쓰디쓴 교훈(The Bitter Lesson)
- 계산을 활용하는 방법이 인간의 지식을 활용하는 방법보다 효과적이다:
- 과거의 사례로부터 얻은 인간의 조언들이 오히려 언어 모델의 성능에 병목을 줄 수 있다라고 함.
- 체스 그랜드마스터 다음과 같은 휴리스틱 규칙을 만들었다고 생각해보자.
- “게임 초반에는 중앙을 장악하는 것이 중요하다", "비숍은 나이트보다 일반적으로 가치가 높다", "이런 상황에서는 이런 수를 두는 것이 유리하다”
- 이런 규칙에 집중하기 보다는 새롭게 AI 가 학습을 해보면서 패턴을 발견하도록 만드는 것이 오히려 성능이 더 나을 수 있음.
- 탐색과 학습처럼 대규모 계산을 통해 확장하는 방법에 집중해야 한다
- 모든 경우를 탐색하고 이로부터 얻은 패턴을 학습할 수 있다면 최적의 성능을 달성할 수 있을 것.
'Generative AI > Agent' 카테고리의 다른 글
| (5) CS294/194-280 Advanced Large Language Model Agents (1) | 2025.08.03 |
|---|---|
| (4) CS294/194-280 Advanced Large Language Model Agents (0) | 2025.08.02 |
| (3) CS294/194-280 Advanced Large Language Model Agents (0) | 2025.08.02 |
| (2) CS294/194-280 Advanced Large Language Model Agents (0) | 2025.08.02 |
| TapeAgents: a Holistic Framework for Agent Development and Optimization (0) | 2025.01.03 |