개요

Self-Refine(Madaan 외, arXiv:2303.17651)은 하나의 LLM이 생성자·피드백 제공자·수정자 세 역할을 모두 맡아 자신의 초기 출력을 반복적으로 개선하는 방법이다. 별도의 리워드 모델이나 추가 학습 없이, 같은 모델을 다른 프롬프트로 재호출해 초안 → 피드백 → 개선 루프를 돈다.

핵심 메커니즘

  • 1단계: 모델이 초기 출력을 생성한다.
  • 2단계: 같은 모델이 그 출력에 대한 피드백(무엇이 부족한지)을 생성한다.
  • 3단계: 같은 모델이 피드백을 반영해 출력을 다시 쓴다.
  • 이 세 단계를 기준을 만족하거나 반복 한도에 도달할 때까지 반복한다.

왜 중요한지

같은 모델이 작성자와 검토자를 동시에 맡는 구조는 편리하지만, loop-engineering의 위험 신호(“작성자와 검사자를 분리해야 한다”)와 정면으로 부딪힌다. 자기 피드백만으로는 모델이 자기 출력을 과도하게 낙관적으로 평가할 위험이 있으므로, 엔지니어링 맥락에서 쓸 때는 test-time 루프를 명확한 기준으로 경계 짓고, 가능하면 외부 검증(테스트, 린트)과 결합해야 한다는 것이 원 논문 이후의 공통된 교훈이다. 2026-07-18-reflexion이 실패 사례에 대한 성찰을 메모리로 저장한다면, Self-Refine은 매 호출마다 즉석에서 피드백-재작성을 도는 더 가벼운 버전이다.

관련 링크