Teaching Large Language Models to Self-Debug

저자: Xinyun Chen, Maxwell Lin, Nathanael Schärli, Denny Zhou | 날짜: 2023 | DOI: 10.48550/arXiv.2304.05128


Essence

Figure 1

SELF-DEBUGGING의 반복적 디버깅 프로세스: 코드 생성(Step 1) → 코드 실행(Step 2) → 코드 설명(Step 3) → 피드백 생성 단계

본 논문은 대규모 언어 모델(LLM)이 몇 가지 시연(few-shot demonstration)을 통해 자신이 생성한 코드를 자동으로 디버깅하도록 가르치는 SELF-DEBUGGING 기법을 제시한다. 외부 피드백 없이 코드 설명과 실행 결과 분석을 통해 오류를 식별하는 "러버덕 디버깅(rubber duck debugging)" 방식의 자체 수정이 가능함을 보인다.

Motivation

Achievement

Figure 3

텍스트-SQL 생성을 위한 SELF-DEBUGGING 프롬프트 예시

  1. 다중 도메인 최고 성능 달성:
    • Spider(텍스트-SQL): 기준선 대비 2-3% 일관적 개선, 난이도 높은 쿼리에서 9% 개선
    • TransCoder(코드 번역): 단위 테스트 활용 시 최대 12% 정확도 향상
    • MBPP(텍스트-Python): 최대 12% 성능 개선
  2. 샘플 효율성 개선: 10배 이상 많은 후보 프로그램을 생성하는 기준선 모델과 동등하거나 우수한 성능 달성
  3. 피드백 타입별 효과 검증: 단위 테스트 피드백(UT) > 코드 설명 피드백(Expl) > 단순 피드백 순서로 성능 향상
  4. 모델 일반성: GPT 계열(code-davinci-002, gpt-3.5-turbo, gpt-4)과 오픈소스 모델(StarCoder) 모두에서 효과 입증

How

Figure 5

코드 번역을 위한 SELF-DEBUGGING 프롬프트 예시와 단위 테스트 피드백

Originality

Limitation & Further Study

Evaluation

Novelty: 4/5 Technical Soundness: 4/5 Significance: 5/5 Clarity: 4/5 Overall: 4/5

총평: 본 논문은 외부 피드백 없이 LLM의 자가 설명을 통한 코드 자체 수정을 체계적으로 입증하고, 다중 도메인에서 최고 성능을 달성한 의미 있는 연구이다. 추가 학습이 불필요하면서도 샘플 효율성을 개선한다는 점에서 실무 적용 가치가 높으나, 디버깅 기법의 일반화 한계와 모델 능력 의존성에 대한 더 심층적인 분석이 필요하다.

← 목록으로 돌아가기