이종관
Back to Posts

Self-Refine: 반복적 자기 개선

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

2026년 2월 1일·5 min read·
ai
ai-agent
llm
self-refine
iteration
improvement

반복적 자기 개선

개념

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

동작 구조

생성 (Generation)
    ↓
피드백 요청 (같은 모델에게)
    ↓
개선 (Refinement)
    ↓
더 나아졌는가?
├─ 아니오 → 반복
└─ 예 → 최종 답변

예시

[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):
    """기본값에 (수량 × 배수)를 더한 총합을 계산합니다."""
    return base + (quantity * multiplier)

[피드백]
훨씬 명확합니다. ✓

Reflexion과의 차이

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

핵심 차이

Reflexion:
시도 → 실패 → "왜 실패했나?" → 개선

Self-Refine:
시도 → "더 좋게 할 수 있나?" → 개선

적용 분야

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

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

동작 알고리즘

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과의 조합

팩트 확인이 필요한 경우:

Self-Refine (품질 개선)
    ↓
CRITIC (팩트 검증)
    ↓
최종 결과

관련 개념

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