자기 성찰(Self-Reflection)은 대형 모델이 먼저 답을 작성한 뒤, 그 답을 되돌아보며 점검하고 오류를 찾아 다시 답하는 메커니즘이다. 서식 오류나 계산 실수의 일부는 고칠 수 있지만, 모델이 원래 몰랐던 것은 고칠 수 없으며, 성찰 횟수가 많을수록 좋은 것도 아니다.
자기 성찰의 작동 방식: 먼저 답하고, 검증하고, 다시 고친다
자기 성찰은 보통 세 단계로 진행된다. 먼저 모델이 답을 한 버전 생성한다. 다음으로 평가 단계에서 그 답이 합격인지 판단하는데, 판단 근거는 외부 피드백(코드가 실행되지 않거나 테스트를 통과하지 못하는 경우 등)이나 모델 스스로 시뮬레이션한 점검일 수 있다. 마지막으로 '어디가 틀렸고 다음에는 어떻게 바꿀 것인가'를 문장으로 작성해 기억에 저장하고, 다음 번 답변에서는 이 주의사항을 먼저 읽고 나서 작업한다. 2023년 Shinn 등이 제안한 Reflexion 프레임워크가 이 아이디어의 대표 사례이다. 답을 생성하는 행위자(Actor), 점수를 매기는 평가자(Evaluator), 성찰문을 작성하는 자기 성찰 모델로 구성되며, 가중치를 바꾸는 대신 언어 피드백으로 에이전트를 향상시킨다. HumanEval 프로그래밍 테스트에서 1회 통과율 91%를 달성해 GPT-4 단독 답변의 80%를 웃돌았다. 같은 방법은 AlfWorld 과제에서 기준선보다 약 22%포인트 높았고, HotPotQA에서도 약 20% 향상됐다. 이 수치는 성찰이 '정오 기준이 명확한 과제'에는 확실히 효과적이라는 것을 보여주지만, 전제는 피드백 신호 자체가 믿을 만해야 한다는 것이다.
자기 성찰과 사고의 연쇄는 다른 것이다
사고의 연쇄(Chain-of-Thought)는 '먼저 생각하고 답하라'는 것으로, 모델이 답에 도달하기 전에 추론 단계를 써내어 중간에 계산이 틀릴 확률을 줄인다. 자기 성찰은 '답한 뒤 검증하라'는 것으로, 답이 이미 존재하고 성찰 단계는 그 완성된 답의 품질을 평가한다. 둘은 함께 쓸 수 있다. 먼저 사고의 연쇄로 성실하게 답한 뒤, 자기 성찰로 한 번 더 점검하는 것이다. 둘을 혼동하면 '오래 생각했다'는 것을 '점검했다'는 것으로 착각하기 쉽다. 또 흔한 혼동은 자기 성찰을 학습으로 여기는 것이다. Reflexion 같은 방법은 모델 가중치를 바꾸지 않고, 기억에 저장된 문자 형태의 주의사항만 바꾼다.
세 가지 오해와 유용한지 판단하는 방법
첫 번째 오해는 모델이 성찰하면 '이해했다'고 여기는 것이다. 성찰이 바꾸는 것은 표현과 절차이지 지식 자체가 아니다. 모델이 모르는 사실에 대해서는 성찰을 해도 틀린 답을 더 매끄러운 언어로 되풀이할 뿐이며, 오히려 점점 더 확신에 차게 된다. 두 번째 오해는 성찰 횟수가 많을수록 좋다고 여기는 것이다. 외부 검증이 없으면 반복 성찰은 처음의 편향을 증폭시켜 작은 오류를 큰 오류로 만든다. 올바른 방법은 정지 조건을 정하는 것이다. 컴파일 통과나 테스트 통과 같은 외부 신호를 기다리거나, 성찰을 최대 두세 번으로 제한하고 도달하면 멈추는 것이다. 세 번째 오해는 자기 성찰을 사실 확인 도구로 여기는 것이다. 자기 성찰이 잘하는 것은 서식, 산술, 코드처럼 현장에서 검증할 수 있는 오류이다. 열린 질문이나 사실 관련 질문에는 당장 쓸 수 있는 심판이 없어 성찰이 도움이 되지 않는다. 어떤 상황에서 자기 성찰이 적합한지 판단하는 기준은 하나뿐이다. 모델 자체에 의존하지 않고 답을 검증할 수 있는가. 검증할 수 있다면 자기 성찰을 켤 가치가 있다. 검증할 수 없다면 모델이 스스로를 논파하기를 기대하지 말고, 먼저 외부 도구나 사람의 확인을 구해야 한다.