이종관
글 목록으로

Self-Refine: 반복적 자기 개선

같은 모델에게 피드백을 요청하고, 그 피드백을 바탕으로 답변을 반복 개선하는 기법

2026년 2월 1일·6 min read·
agent
self-refine
self-improvement

반복적 자기 개선

개념

Self-Refine은 같은 모델에게 피드백을 요청하고, 그 피드백을 바탕으로 답변을 반복 개선하는 기법이다.

동작 구조

  1. 생성(Generation): 초기 답변을 생성한다.
  2. 피드백 요청: 같은 모델에게 개선점을 물어본다.
  3. 개선(Refinement): 피드백을 반영하여 답변을 개선한다.
  4. 평가: 더 나아졌는지 판단한다. 아직 부족하면 2단계로 돌아가 반복하고, 충분하면 최종 답변으로 출력한다.

예시

1차 생성 "AI는 높은 지능을 보유하고 있다."

피드백 요청 "위 문장에서 개선할 점을 지적해주자."

피드백 "'높은 지능'의 범위가 모호하다. 어떤 종류의 지능인지 구체화가 필요하다."

2차 개선 "인공지능은 자연어 처리 및 이미지 인식에서 인간 수준의 성능을 달성했다."

최종 평가 "훨씬 구체적이고 명확하다."

코드 리팩토링 예시

1차 생성 def calc(a, b, c): return a + b * c

피드백 요청 "위 코드에서 개선할 점을 지적해주자."

피드백

  1. 함수명이 모호함 (calc → ?)
  2. 매개변수명이 불명확함
  3. 연산 우선순위가 명시적이지 않음

2차 개선 def calculate_total_with_multiplier(base, quantity, multiplier): 기본값에 (수량 x 배수)를 더한 총합을 계산한다. return base + (quantity * multiplier)

피드백 "훨씬 명확하다."

Reflexion과의 차이

ReflexionSelf-Refine
트리거실패 후 반성지속적 개선
실패 신호명확한 실패 필요실패 없이도 개선
메모리장기 메모리에 저장즉시 반영
적용 분야코딩, QA글쓰기, 요약

핵심 차이

  • Reflexion: 시도 후 실패하면 "왜 실패했나?"를 분석하여 개선한다.
  • Self-Refine: 시도 후 실패 여부와 관계없이 "더 좋게 할 수 있나?"를 물어 개선한다.

적용 분야

Self-Refine은 "정답이 명확하지 않은" 작업에 특히 유용하다:

분야예시
글쓰기에세이, 이메일, 보고서
코드 품질리팩토링, 가독성 개선
요약문서 요약, 핵심 추출
번역자연스러운 표현

동작 알고리즘

python
def self_refine(task, max_iterations=3):
    # 1차 생성
    output = llm.generate(task)
 
    for i in range(max_iterations):
        # 피드백 요청
        feedback = llm.generate(
            f"다음 결과물의 개선점을 지적해주세요:\n{output}"
        )
 
        # 개선 필요 여부 판단
        if "개선 불필요" in feedback or "충분합니다" in feedback:
            break
 
        # 피드백 기반 개선
        output = llm.generate(
            f"피드백: {feedback}\n"
            f"기존 결과: {output}\n"
            f"피드백을 반영하여 개선해주세요."
        )
 
    return output

피드백 품질 향상

구체적인 피드백 요청

나쁜 예 "개선점을 알려주자."

좋은 예 "다음 관점에서 개선점을 지적해주자:

  1. 명확성: 독자가 쉽게 이해할 수 있는가?
  2. 구체성: 추상적인 표현이 있는가?
  3. 문법: 문법적 오류가 있는가?
  4. 구조: 논리적 흐름이 자연스러운가?"

역할 지정

"당신은 10년 경력의 기술 문서 편집자이다. 다음 문서의 개선점을 전문가 관점에서 지적해주자."

종료 조건

Self-Refine의 종료 조건 설정:

방법설명
고정 반복3회 반복 후 종료
피드백 기반"충분하다" 응답 시 종료
변화량개선 폭이 작으면 종료
점수 기반품질 점수가 임계값 초과 시 종료

한계

  1. 주관적 판단: 모델 자체의 편향에 의존
  2. 과도한 수정: 불필요한 변경 가능
  3. 무한 루프: 종료 조건 설정 필요
  4. 팩트 검증 불가: CRITIC 필요

CRITIC과의 조합

팩트 확인이 필요한 경우:

  1. Self-Refine: 품질을 반복적으로 개선한다.
  2. CRITIC: 외부 도구로 팩트를 검증한다.
  3. 최종 결과: 품질과 정확성이 모두 확보된 결과를 출력한다.

관련 개념

  • Reflexion: 실패 기반 학습
  • CRITIC: 외부 도구 검증
  • Multi-Agent Debate: 다른 에이전트의 피드백