일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 평가 지표
- beautifulsoup
- 빠르게 실패하기
- 웹서비스 기획
- 데이터 전처리
- sorted
- 결정트리
- nvl2
- LAG
- SQL
- DecisionTree
- recall
- five lines challenge
- NULLIF
- 백엔드
- 재현율
- 감정은 습관이다
- 데이터 프로젝트
- 데이터 분석
- 정밀도
- layer normalization
- 오차 행렬
- 강화학습
- 비지도학습
- NVL
- ifnull
- Batch Normalization
- CASE WHEN
- Normalization
- 지도학습
- Today
- Total
Day to_day
[논문 리뷰] LLM Self-Correction 본문
❗가짜연구소에서 ‘깃허브에 nlp 잔디심기’ 팀에서 발표한 자료를 함께 공유해보려 한다.
이번에 소개할 주제는 LLM의 self-correction이다. LLM의 Self-Correction은 모델이 스스로 오류를 인식하고 수정하는 과정으로 응답의 품질을 향상하는데 목적이 있다.
해당 포스팅은 Automatically Correcting Large Language Models: Surveying the landscape of diverse self-correction strategies라는 LLM의 self-correction 기법들에 대한 서베이 논문을 기반으로 정리한 글이다. 그렇기 때문에 깊은 방법론에 대한 글이 아닌 다양한 종류의 self-correction 기법에 대해서 소개한다.
LLM의 주요 문제점
논문에서는 LLM의 주요 문제점이 4개로 정의된다.
- 할루시네이션
- 불충실한 추론: 논리적 일관성이 결여되어 이전의 추론 단계와 일치하지 않는 결론을 도출함
- 유해하거나 편향된 콘텐츠: 학습 데이터의 편향으로 인해 차별적이거나 유해한 콘텐츠를 생성함
- 잘못된 코드: 프로그래밍 코드를 생성할 때 문법적 또는 논리적 오류가 포함될 수 있음
LLM의 Self-Correction 개념적 프레임워크
Large Language Model에 4개의 문제가 있는 환자라고 할 때, 그 환자가 내놓는 output은 doctor 역할을 하는 Critic Model에게로 전달된다. Critic Model의 역할은 사람이 직접 할 수도 있고, 다른 언어 모델이 하기도 또는 외부 요소들에 의해 평가될 수 있다.
이후 doctor에게 받은 진단(Diagnosis)은 피드백이고 그 형태는 scalar value가 될 수도, 자연어로 전달될 수도 있다. Refine Model은 그 진단을 바탕으로 출력이나 언어 모델에 치료를 제공한다. 위의 프레임워크에서 correction의 방법을 분류한 것을 볼 수 있다.
Self-correction 접근법
self-correction의 접근법은 크게 3단계로 나누어서 분류해 볼 수 있다. LLM의 시기에 따라 아래와 같이 나누어진다.
- 훈련 단계: 강화 학습(예: RLHF)을 활용하여 초기 훈련 과정에서 모델의 성능을 개선
- 생성 단계: 텍스트 생성 중 실시간으로 피드백을 받아 출력을 동적으로 교정
- 사후 교정(Post-Hoc): 생성된 출력 이후에 오류를 탐지하고 수정하기 위해 외부 도구나 평가 지표를 활용함
훈련 시 수정(Training-time Correction)
모델 훈련 과정에서 결함을 수정하는 이상적인 방법으로 피드백이 수집되면 이를 모델 매개변수를 최적화하는 데 직접 사용된다. 3가지의 전략으로 구분해 설명하고 있다. 각 전략은 서로 다른 형태의 피드백을 활용하여 훈련 중 모델 매개변수를 수정하는 방법이다.
- 세 가지 전략에 대해 표현한 파이프라인이다. 참고로 여기서 모델에 있는 불꽃 모양은 학습 가능한 파라미터라는 의미이고, 눈꽃 모양은 해당 모델의 파라미터는 변경하지 않고 그대로 사용된다는 의미이다.
(a) Direct Optimization with Human Feedback
- 인간 피드백을 통해 모델 출력을 직접 최적화하는 것으로 쉽게 말해 supervised learning으로 인간의 선호에 맞게 파인튜닝 하는 방법이다.
- 긍정적인 데이터(인간이 수정하거나 긍정적으로 평가한 데이터)만을 활용해 파인튜닝하면 모델이 부정적 속성이나 오류를 식별하고 수정하는 능력이 제한될 수 있기 때문에 Chain-of-Hindsight는 모델 출력값에 긍정적 및 부정적 피드백을 쌍으로 묶어 LLM을 파인튜닝하는 기법도 있다.
(b) Reward Modeling and RLHF
- 매번 인간이 피드백에 개입하면 리소스가 많이 소요되니 보상 모델(Reward Model)을 훈련시켜 매 모델 출력값에 대해 일관되고 실시간으로 피드백을 제공하게 하는 방법이다.
- 대표적인 예로 Reinforcement Learning from Human Feedback, RLHF 방법이 있다. human annotators가 다양한 LLM 출력값에 대한 선호도를 라벨링 하면, 이를 바탕으로 보상 모델이 인간 선호를 예측하도록 훈련되는 방식이다. 그리고 강화 학습 알고리즘(PPO)을 이용해 모델 최적화한다.
- 이는 LLM을 더 유용하고 덜 해로운 방향으로 교정하는 데 효과적이다.
(c) Self-Training
- 인간 피드백을 수집하는 것은 매우 많은 자원이 소모되기 때문에, 많은 연구에서 인간 개입을 최소화하기 위해 자동화된 피드백의 활용한다.
- 자동 피드백의 두 가지 유형이 있다. 각 피드백 유형에 대해 논문에 자세히 나와있지만 이 글에서는 내재적 피드백에 집중해서 설명하도록 하겠다.
- c-1 ) 외재적 피드백 (extrinsic feedback): 외부 메트릭 또는 모델로부터 얻는 피드백
- c-2) 내재적 피드백 (intrinsic feedback): 언어 모델 자체에서 얻는 피드백
c-1) 외부 메트릭 가이드 (External Metric Guidance)
- 외부 지표를 활용한 훈련은 훈련 목표와 추론 목표 간의 차이를 줄이는 다양한 방법을 제안한다.
- 강화 학습과 대조 학습이 주요 기법으로 활용되며, 사전 학습 단계에서 피드백을 통합하는 새로운 접근법도 제시된다.
- 외부 지표 기반 훈련
- 외부 지표 피드백은 훈련 중 교정을 위해 사용되며, 대부분의 방법은 지표 신호가 이산적이므로 비미분 가능 훈련 기법을 사용함.
- Minimum Risk Training(Shen et al., 2016):
- 최대 로그 우도와 지표 점수를 손실 함수에 통합하여 모델을 최적화.
- 훈련 중 지표 점수를 최적화할 수 있지만, BLEURT와 같은 지표의 강건성 부족 문제를 초래할 수 있음.
- 대조 학습과 후보 재정렬
- Liu와 Liu(2021):
- 대조 학습 프레임워크를 활용하여 지표 점수로 후보를 재정렬.
- 훈련 목표와 추론 목표 간의 격차를 줄임.
- Liu와 Liu(2021):
- 강화 학습과 노출 편향 완화
- Li et al.(2019): 딥 RL 알고리즘 활용.
- Unanue et al.(2021): Gumbel Softmax를 사용하여 BERTScore 기반 보상을 구축하고 노출 편향을 줄임.
- Wu et al.(2021): 대조 판별기와 PPO를 사용하여 인간 텍스트를 모방하며 그래디언트를 안정화.
- 효율적인 강화 학습 알고리즘
- Chang et al.(2023):
- PPO보다 효율적인 RL 알고리즘인 RLGF를 제안.
- 불완전하지만 합리적인 가이드 정책을 정책 경사 프레임워크에 통합하여 최적 전략을 학습.
- Chang et al.(2023):
- 사전 학습 단계에서 피드백 활용
- Korbak et al.(2023):
- 사전 학습 단계에서 조건부 학습과 자동 분류기를 사용해 바람직하지 않은 콘텐츠를 태그.
- 미세 조정 단계에서만 피드백을 사용하는 접근법과 차별화됨.
- Korbak et al.(2023):
- Self-consistency
- Chain of Thought를 확장하여, 언어 모델이 생성한 여러 답변 경로 중 가장 많이 선택된 경로(다수결을 통해 정답에 도달하는 경로)를 기반으로 데이터를 선택한다.
- 선택된 reasoning-answer 데이터를 증강된 프롬프트와 함께 사용하여 LLM을 미세 조정하는 방법이다.
- LLM의 유해한 응답을 줄이는데도 사용된다.
- Large language models can self-improve
- 핵심 아이디어
- 모델 출력 데이터 재활용: 모델이 생성한 데이터를 다시 학습 데이터로 활용한다.
- Refinement Cycle: 모델이 스스로 데이터를 평가하고 수정하여 고품질 데이터를 생성한다.
- 방법론
- Self-Generated Data (자체 생성 데이터)
- 모델에게 다양한 프롬프트를 제공하여 학습 데이터 생성
- 생성된 데이터는 여러 평가 및 필터링 과정을 거쳐 모델 학습에 재활용
- Refinement Mechanism (정제 메커니즘)
- 생성 데이터의 품질을 평가하기 위해 평가 기준을 설정
- 데이터 품질이 부족한 경우 수정(prompt engineering) 또는 생성 전략 변경
- Iterative Training (반복 학습)
- 초기 모델 → 데이터 생성 → 데이터 평가 및 수정 → 새로운 데이터로 재학습 → 성능 평가의 과정을 반복
- Self-Generated Data (자체 생성 데이터)
- 핵심 아이디어
- 다수의 후보 출력을 샘플링한 후, 비평 모델(critic model)이 제공하는 피드백을 기반으로 가장 우수한 출력을 선택하는 것이다.
- 복잡한 추론 작업(수학 단어 문제 해결)을 처리하기 위해 Chain-of-Thought 프롬프트 방법과 자주 결합되어 구현된다.
- 주어진 입력 문제 x에 대해, LLM은 초기 단계에서 다수의 후보 해결책 $y_1, \dots, y_n$을 생성
- 각 해결책 $y_i=[z_i,a_i]$는 예측된 답변 $a_i$로 이어지는 추론 경로(설명) $z_i$를 포함
- 이후, 비평 모델 C는 각 추론 경로 $z_i$에 대해 신뢰 점수 $s_i$를 할당
- 최종적으로 점수가 매겨진 집합 $\left( z_i, a_i, s_i \right)_{i=1}^n$에서 최상의 해결책은 순위 매기기 또는 투표를 통해 선택
- 여러 논문에서 다양한 비평 모델을 제안하고 있는데 자세한 종류는 논문을 참고하면 좋겠다.
- 모델이 출력을 생성하는 과정(디코딩 과정)에서 피드백을 활용해 출력을 동적으로 개선하는 전략이다. 단계별 피드백을 활용해 생성 과정에서 세부적인 가이드를 제공한다.
- 세밀한 수준의 피드백(step-level feedback)을 활용하여 생성 과정을 정교하게 안내한다.
- 출력 y의 생성은 여러 단계의 추론(step 또는 thought)으로 나뉘어 $y_i = [o_1, o_2, \dots, o_n]$로 표현된다.
- 각 개별 추론 단계 t에서, 비평 모델은 $C(x, o_{1:t-1}, o_t)$와 같은 피드백을 제공하여, 현재 단계 ot가 후보 단계로서 얼마나 적합한지를 나타낸다.
- 단계별 평가의 장점
- beam search, depth-first search와 같은 탐색 알고리즘을 활용해 출력 공간을 체계적으로 탐색 가능하며 이를 통해 디코딩 과정이 최적의 해결책을 생성하는 방향으로 조정할 수 있다.
- LLM이 생성 초기에 발생한 오류를 수정할 수 있도록 하고, 추론 일관성 문제(reasoning inconsistency problem)를 완화할 수 있다.
- 예시) Tree-of-Thought(Yao et al., 2023a), GRACE(Khalifa et al., 2023), RAP(Hao et al., 2023)
- 사후 수정의 주요 전략
- 자체 수정 (self-correction)
- 외부 피드백을 활용한 수정 (Correction with external feedback)
- 다중 에이전트 논쟁 (Multi Agent Debate)
- LLM이 초기 출력을 생성한 후, 동일한 모델이 비평가(critic)로 작동하여 피드백을 생성하고 이를 바탕으로 초기 출력을 수정한다. 그리고 이 과정은 반복적으로 수행되며 허용 가능한 품질의 출력이 얻어지거나 사전에 정의된 반복 횟수에 도달할 때까지 계속된다.
- Reflexion(Shinn et al., 2023)
하나의 예시 논문으로 Reflexion이라는 논문을 가져왔다. 이것의 핵심 아이디어는 아래와 같다.
- 언어적 반성 (Reflexion)
- 기존 RL 에이전트는 수치적 보상만으로 학습하지만 Reflexion은 언어적 피드백을 활용하여 자기 개선(Self-improvement)을 도모한다.
- 예를 들어, GPT 계열 모델이 주어진 작업에서 실수를 했을 때, '잘못된 이유'와 '어떻게 고칠지'를 언어적으로 설명해 주면 모델이 이 피드백을 반영해 더 나은 결과를 생성할 수 있다.
- 언어 피드백의 활용
- Reflexion은 Textual Feedback을 강화 학습에서 보상으로 사용하는 구조를 제안한다.
- 에이전트는 스스로 언어적 피드백을 생성하거나 환경으로부터 피드백을 받는다.
- 피드백은 에이전트의 향후 의사결정에 반영되며, 이를 통해 행동을 최적화한다.
- 프레임워크 구성
- Execution Phase: 언어 모델이 주어진 환경에서 행동을 수행
- Reflection Phase: 에이전트가 자신의 행동을 반성하고 언어적 피드백을 생성
- Refinement Phase: 생성된 피드백을 바탕으로 행동 전략을 조정
- Reflexion은 기존 자체 수정 프레임워크에 장기 메모리(long-term memory)를 추가하여 이전 피드백과 출력을 저장할 수 있도록 하여 이를 통해 이전 실수를 반복하지 않도록 한다.
- 한계
- self correction은 다양한 텍스트 생성 작업에서는 효과적이었지만 소규모의 오픈소스 모델은 올바른 피드백이 제공되더라도 출력을 효과적으로 수정하는 데 어려움을 겪는 경우가 있다는 연구가 있다.
- 언어적 반성 (Reflexion)
- Self-Correction이 LLM을 피드백의 주요 수단으로 활용하는 반면, 최신 정보 접근 불가, 행동 수행 불가, 정밀한 수학적 추론 수행 능력 부족 등의 LLM의 한계에 제약을 받는다. 그래서 최근 연구들은 외부 도구를 활용한 피드백 제공 방안을 탐구한다. AI Agent 방법으로 훈련된 모델, 코드 인터프리터, 검색 엔진 등 다양한 외부 도구를 통합하여 전문화된 피드백 제공하는 것이다.
- 이 방법은 다중 LLM간의 논쟁 전략을 탐구하여 다양한 관점이 종종 더 정제된 솔루션에 수렴한다는 아이디어에 기반하여 여러 개의 LLM을 활용해 각자의 응답을 제안하고 논의하여, 공통의 최종답변에 도달함으로써 출력 품질을 향상시키는 것을 목표로 한다.
- 예) Du et al. (2023), PRD (Li et al., 2023c), LM vs LM (Cohen et al., 2023), Fu et al. (2023)
요약
c-2) 내재적 피드백 - Self-Training
외부 지표를 피드백으로 활용하는 대신, 언어 모델 자체가 자신의 출력에 대한 피드백을 제공하는 방법이다.
Generation-Time Correction (생성 시점 수정)
훈련 시점에 LLM을 교정하는 것은 리소스를 소모하거나 비현실적인 일일 수 있다. 특히 폐쇄형 LLM(GPT)이나 거대한 파라미터의 LLM인 경우 파라미터를 수정하는 것은 어려운 일이다. 그래서 자동화된 피드백이 LLM 생성의 가이드 메커니즘 역할을 해주는 방법이 등장한다. 여기서는 생성 시점에서 비평 모델(critic model)이 개입해서 최선의 출력을 반환하는 구조이다.
(a) Generate-then-Rank (생성 후 순위 매기기)
(b) Feedback-Guided Decoding (피드백 기반 디코딩)
사후 수정(Post-hoc Correction)
생성 과정에서 correction의 성공 여부는 중간 출력에 대해 정확하고 정량적인 피드백을 제공하는 비평 모델의 역량에 크게 의존하게된다. 그러나 요약과 같은 많은 NLP 작업에서는 평가가 전체적인 특성을 가지기 때문에 요약문 전체가 생성된 후에만 정확하게 평가할 수 있다는 점에서 이러한 작업이 한계가 존재한다.
그래서 사후 수정 방법에서는 비평 모델과 수정 모델(refine model)이 전체 출력이 생성된 후에만 개입하게 된다.
(a) Self-Correction
(b) 외부 피드백을 활용한 수정
(c) 다중 에이전트 논쟁(Multi-Agent Debate)
이 논문이 2023년에 나온 논문이라 최신 내용이 반영이 안 되는 부분도 있지만 그래도 전반적으로 LLM의 self-correction에 대한 발전 과정을 정리한 것 같다. 추가로 정리하면서 찾은 Training Language Models to Self-Correct via Reinforcement Learning (SCoRe)이라는 논문을 찾았는데 해당 서베이 논문에는 소개되지 않은 것 같아서 읽어보면 좋을 것 같다는 생각을 했다.
간단히 설명하면 multi-turn 강화학습을 통해 LLM의 self-correction 능력을 향상한 방법으로 외부 입력 없이 자체 생성 데이터만을 사용하여 모델의 성능을 개선했다고 한다. SCoRe를 Gemini 1.0 Pro 및 1.5 Flash에 적용한 결과, MATH 벤치마크에서 15.6%, HumanEval 벤치마크에서 9.1%의 성능 향상을 달성했다고 하여 흥미 있게 읽어볼 논문 같다. 너무 읽어볼 논문이 많다....
'논문 리뷰' 카테고리의 다른 글
[논문 리뷰] Don't Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks (0) | 2025.01.19 |
---|---|
[논문 리뷰] Prompt Cache: Modular Attention Reuse For Low-Latency Inference (0) | 2025.01.05 |
[논문 리뷰] Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena (1) | 2024.11.15 |
LoRA(Low-Rank Adaptation)를 파악해보자아앗!! (0) | 2024.08.09 |
[논문 리뷰] A ConvNet for the 2020s (1) | 2024.03.24 |