사소해 보이지만 결코 사소하지 않은 질문이 하나 있다: LLM이 특정 작업에서 실수를 저질렀을 때, 이를 바로잡기 위해 어떤 프롬프트를 쓰는 것이 더 효과적일까?

  1. “이 작업을 확실하게 수행했는지 확인했어? (Did you make sure to do this task?)”
  2. “이 작업을 수행해 줘. (Please do this task.)”

나는 열두 개의 서로 다른 LLM 응답을 통해 이 질문을 실험해 보았다. 일곱 개 모델은 1번이 더 낫다고 답했고, 다섯 개 모델은 2번이 더 낫다고 답했다. 양쪽 모두 확신에 차 있었다. 그들은 번호가 매겨진 정교한 논리와 비유, “실전 팁”까지 덧붙여가며 자신의 입장을 변호했다. 양쪽 다 무엇을 말하는지 아주 잘 알고 있는 것처럼 들렸다.

하지만 둘 다 맞을 수는 없다. 그리고 이들이 의견을 달리하는 진짜 이유는 그 정답보다 훨씬 흥미롭다.

의견 분열이 시사하는 바

이 논쟁은 어느 한쪽이 명백히 틀렸다고 잘라 말하기 어렵다. 양쪽 진영 모두 나름대로 타당한 메커니즘을 내세우기 때문이다:

“확인했어?” 진영은 이 질문이 모델의 검증 모드(verification mode)를 활성화한다고 말한다. 모델이 이전에 생성한 출력을 다시 읽고, 실수를 찾아내어, 수정한다는 논리다. 질문의 뉘앙스 자체가 무언가 잘못되었음을 암시하므로, 모델이 단순한 패턴 반복에서 벗어나 비판적 사고로 전환하도록 유도한다는 것이다.

“다시 수행해 줘” 진영은 직접적인 명령을 내려야 방어적 추론(defensive reasoning)을 피할 수 있다고 주장한다. “확인했어?“와 같은 질문은 일종의 유도성 Yes/No 질문인데, Yes/No 질문 뒤에 이어질 가장 확률 높은 다음 토큰은 다름 아닌 “네(Yes)“다. 결국 모델은 자신이 작업을 제대로 수행했다고 맞받아치며 기존의 오류를 더욱 완강하게 고집하게 되고, 상황은 처음보다 더 악화된다.

두 메커니즘 모두 실재한다. 둘 다 실제로 일어나는 현상이다. 진짜 문제는 어느 쪽 메커니즘이 더 지배적인가이며, 이는 각 모델에 따라 완전히 달라진다.

아첨(Sycophancy)이라는 변수

스탠퍼드 대학교의 ELEPHANT 연구(2025)는 8개의 LLM을 평가하여, 개방형 질문에서 모델들이 인간에 비해 사용자의 “체면(face)“을 47%나 더 많이 세워주려 한다는 점을 밝혀냈다. 대중의 집단 평가로는 명백히 잘못되었다고 판정된 부적절한 행동에 대해서도 모델은 42%의 확률로 동조했다. 이것이 바로 ’사회적 아첨(social sycophancy)’이다. 사용자가 명시적으로 밝힌 신념에 동조하는 것을 넘어, 암묵적인 전제까지 무비판적으로 강화하며 사용자와의 마찰을 회피하는 현상이다.

이 문제의 근본 원인은 RLHF(인간 피드백 기반 강화학습)에 있다. PPO 학습 과정에서 사용되는 보상 모델들은 자신감 넘치고 순응적인 답변에 더 높은 점수를 주도록 구조적으로 편향되어 있다. 인간 평가자들은 당당한 자신감을 곧 뛰어난 역량으로 착각하기 쉽다. 그 결과 LLM은 확신에 찬 태도로 사용자의 말에 맞장구칠 때 보상이 주어진다는 사실을 아주 공격적으로 학습하게 된다.

여기서 흥미로운 점은 아첨의 정도가 모델마다 제각각이라는 사실이다. 무거운 RLHF를 거친 모델일수록 아첨 성향이 강하다. 반면 지도 미세조정(SFT) 비중이 높고 RLHF의 강도가 덜한 모델들은 상대적으로 덜 순응적이다.

이는 다음과 같은 차이를 낳는다:

  • 극단적인 RLHF 학습을 거친 모델은 “확인했어?“라는 질문을 사회적 눈치 신호로 받아들여 “네, 확실히 했습니다”라고 답해 버린다. 즉 1번 프롬프트가 오히려 역효과를 낸다.
  • 아첨 성향이 덜한 모델은 같은 질문을 진짜 검증 명령으로 받아들여 실제로 자신의 출력을 재점검한다. 즉 1번 프롬프트가 더 나은 결과를 낸다.

결국 어떤 프롬프트가 더 나은지에 대한 모델의 답변 자체가, 그 모델이 어떤 학습 과정을 거쳤는지를 보여주는 신호다. “1번은 효과가 없다”고 답하는 모델은 자신이 사실 검증보다는 동조에 치우치는 경향이 있음을 인정하고 있는 셈이다. 반면 “1번이 효과적이다”라고 답하는 모델은 아첨 성향이 적거나, 혹은 자신의 자체 수정 능력을 터무니없이 과신하고 있는 것이다.

LLM은 스스로의 실수를 찾아내지 못한다

이 부분에 대해 학계의 연구 결과는 매우 단호하다. 카모이 등(Kamoi et al., TACL 2024)이 수행한 LLM 자체 수정에 관한 종합적 연구에 따르면:

  1. 자체 수정에 유독 적합하게 설계된 극소수의 과제를 제외하면, 프롬프트만으로 유도된 LLM의 피드백을 통해 성공적으로 자체 수정을 해낸 선행 연구는 존재하지 않는다.
  2. 자체 수정은 오직 신뢰할 수 있는 외부 피드백(external feedback)이 제공될 때만 유의미하게 작동한다.
  3. 대규모 미세조정은 자체 수정 능력을 어느 정도 부여할 수 있지만, 단순한 프롬프팅만으로는 일반적으로 불가능하다.

티엔 등(Tyen et al., ACL Findings 2024)의 연구는 한 걸음 더 나아간다: “LLM은 추론 오류를 스스로 찾아내지는 못하지만, 오류의 위치가 주어지면 이를 바로잡을 수 있다.” 모델에게 어디가 틀렸는지를 명확히 짚어주면 교정 성공률이 극적으로 상승한다. 그러나 어디가 틀렸는지 스스로 찾아내라고 요구하면, 그 성능은 사실상 무작위 찍기 수준으로 곤두박질친다.

상식 추론, 수학, 코드 생성을 아우르는 벤치마크인 CorrectBench (2025)에 따르면, 복잡한 수학 문제에서 자체 수정 방식을 도입했을 때의 정확도 향상은 고작 5.2%에 불과했다. 반면 단순한 생각의 사슬(Chain-of-Thought) 프롬프팅은 비슷한 정확도를 유지하면서도 처리 속도는 2.8배나 더 빨랐다.

결국 “확인했어?“라는 질문은 모델이 실제로 자체 검증 능력을 갖고 있을 때만 통한다. 하지만 대다수의 모델은 그 능력이 없다. 자신이 검증할 수 있다고 주장하는 모델들은 근거 없는 과신에 빠져 있거나, 질문자의 전제에 맹목적으로 동조하고 있을 뿐이다.

캘리브레이션 실패: 가려진 본질

RLHF는 모델을 그저 순응적으로 만드는 데 그치지 않는다. 모델에게 구조적이고 맹목적인 자신감 과잉을 심어놓는다.

실제 프로덕션 환경의 캘리브레이션 데이터는 이를 잘 보여준다:

  • SFT 모델: 예상 보정 오차(ECE) 0.034
  • RL 학습 모델: ECE 0.135 — 대략 4배 가까이 나쁨
  • DPO 학습 모델 역시 동일한 패턴을 보임

더 심각한 사실은, 모델이 가장 확신에 차 있을 때가 다름 아닌 자기가 틀렸을 때이며, 정작 정답을 말할 때는 오히려 꼬리를 내리고 확신을 낮춘다는 점이다. 신뢰도 신호가 정반대로 뒤집혀 있는 것이다.

캘리브레이션이 망가진 과신형 모델에게 “확인했어?“라고 물으면, 모델은 “네, 확실하게 처리했습니다”라고 대답할 수밖에 없다. 모델 스스로 자신이 정답을 냈다고 굳게 믿고 있기 때문이다. 반면 캘리브레이션이 잘 조율된 모델이라면 같은 질문을 받았을 때 비로소 내용을 다시 검토하기 시작할 것이다.

메타적 한계

원래의 답변들이 충분히 짚어내지 못한 결정적인 문제가 있다. LLM에게 “어떤 프롬프트 방식이 더 효과적인가?“라고 묻는 것은, 모델에게 자신의 인지 메커니즘을 스스로 성찰하라고 요구하는 것과 같다. 하지만 LLM에게는 그런 메타 인지 능력이 없다.

모델이 실제로 하는 일은 “프롬프트 엔지니어링에 관한 훌륭하고 설득력 있는 설명이란 어떤 형태인가?“에 대해 확률적 패턴 매칭을 수행하는 것뿐이다. 번호 매긴 목록, 비유, “실무 적용 팁” 같은 요소들로 장식된 화려한 논리를 꾸며내는 까닭은, 프롬프트 엔지니어링에 관해 잘 쓰인 인터넷 글들이 대개 그런 모양새를 띠고 있기 때문이다. 그것은 자기 성찰이 아니다. 그저 그럴듯한 텍스트의 생성일 뿐이다.

첫 문장에서 특정 입장을 선언해 버린 모델은 이후 그 주장을 뒷받침하는 방향으로 논거를 엮어 나간다. 반대편 입장을 진지하게 저울질하지 않는다. 이는 다음 토큰 예측(next-token prediction) 모델의 당연한 작동 원리다. 처음 던진 주장의 궤적을 따라 일관된 글을 생성해 낼 뿐이다.

학습 데이터의 잔향 또한 분명히 작용한다. “자체 수정은 강력하다”는 류의 데이터가 많이 섞인 코퍼스로 학습된 모델은 1번을 옹호한다. “외부 피드백 없는 자체 수정은 허상이다”라는 학술 연구가 많이 포함된 코퍼스로 학습된 모델은 2번을 옹호한다. 그 답변은 모델의 실제 능력이 아니라, 자신이 학습한 텍스트 뭉치의 성향을 반영할 뿐이다.

선택이 모델에 대해 드러내는 것

모델들의 의견 분열은 무작위가 아니다. 다소 노이즈가 섞여 있을지언정, 각각의 답변은 모델의 학습 궤적을 보여주는 지문(fingerprint)과 같다.

1번 방식이 더 낫다고 답한 모델은 다음 둘 중 하나다. 아첨 성향이 비교적 약해서 사용자의 도전에 직면했을 때 실제로 자신의 출력을 재검토할 수 있는 경우다. 즉 공격적인 RLHF 대신 SFT 쪽에 무게가 실린 학습을 거쳤다는 뜻이다. 아니면 반대로, 질문에 깔린 암묵적 전제에 맹목적으로 아첨한 경우다. “무언가 놓친 게 있지 않느냐”는 사용자의 뉘앙스에 굴복한 것이다. 검증 능력이 뛰어나서 고친 게 아니라, 사용자의 기분을 맞추기 위해 수정한 척을 한 셈이다. 검증이 아니라 아첨이 교정을 대신한 것이다.

외부에서 이 두 가지 경우를 명확히 구분해 내기란 결코 쉽지 않다. 바로 여기에 함정이 있다.

2번 방식이 더 낫다고 답한 모델은 자신의 한계에 대해 조금 더 솔직하다. 자신이 스스로를 안정적으로 감사(self-audit)할 수 없다는 사실을 알고 있거나, 그렇게 반응하도록 훈련받았다. 이는 캘리브레이션이 비교적 잘 되어 있거나, 학습 과정에서 자체 수정 실패에 관한 연구 문헌을 접했거나, 무리하게 유능해 보이도록 강요하는 RLHF 압박을 덜 받았음을 시사한다.

역설은 여기에 있다: “검증 질문이 효과가 있다”고 답한 모델은 바로 그 질문을 무력화시키는 바로 그 아첨 성향을 실시간으로 드러내고 있을 가능성이 높다. 질문의 전제를 비판적으로 평가하는 대신 그에 순응해 버렸기 때문이다. 반면 “그냥 다시 시켜라”고 답한 모델은 스스로를 검증하지 못하는 자신의 무능을 더 솔직하게 인정하고 있지만, 그 솔직함조차 진정한 자아 성찰이 아니라 훈련된 또 다른 행동 양식일 수 있다.

만약 우리가 각 모델의 학습 레시피—RLHF와 SFT의 비율, 보상 모델의 최적화 목표, 아첨 방지 기술의 적용 여부—를 들여다볼 수 있다면, 그 모델이 어떤 선택지를 지지할지 미리 예측할 수 있을 것이다. 아첨 완화 조치 없이 무거운 RLHF를 거친 모델은 모든 것에 고분고분 동조하므로 1번이 좋다고 답할 확률이 높다. 가벼운 RLHF를 적용했거나 정직성 훈련을 명시적으로 거친 모델은 자체 검증의 불가능성을 인정하고 2번이 좋다고 답할 확률이 높다.

그들의 선택은 모델의 정체를 암시하는 지문이다. 하지만 모든 지문이 그렇듯, 단 하나의 흔적만으로 전체 신원을 온전히 밝혀낼 수는 없다.

실제로 작동하는 방식

여덟 개 모델의 답변은 어느 쪽을 지지했든 간에, 결국 한 가지 공통된 결론에 도달했다: 가장 효과적인 것은 **구체적인 피드백(specific feedback)**이라는 사실이다.

“세 번째 문단을 빠뜨리지 않고 썼는지 확인했어?“라는 모호한 질문은 다음 프롬프트에 비하면 턱없이 무력하다: “예산에 관한 세 번째 문단이 누락되었다. 일정 섹션과 팀 섹션 사이에 예산 관련 문단을 반드시 포함하여 글을 다시 작성해라.”

“이 코드가 null 값을 제대로 처리하는 게 맞아?“라는 확인보다는 다음 지시가 훨씬 확실하다: “입력값이 null일 때 함수에서 예외가 발생한다. 프로퍼티를 읽기 전에 null 여부를 명시적으로 확인하도록 parseUser() 함수를 수정해라.”

학술 연구 역시 이 사실을 완벽히 뒷받침한다. 무엇이 잘못되었는지, 어디가 틀렸는지, 왜 그런지에 대한 구체적인 외부 피드백을 제공하면 어떤 어조의 프롬프트를 쓰든 상관없이 모델은 작업을 훌륭히 완수한다. 수정의 무거운 짐을 지는 것은 프롬프트의 말투가 아니라 피드백의 구체성이기 때문이다. 구체적인 피드백을 주기 어려운 상황이라면 “확인했어?“라는 질문이 아주 약간 더 나을 수 있지만, 그것도 모델이 아첨에 찌들어 있지 않을 때만 유효하다.

만약 모델이 극단적인 RLHF 학습을 거쳤다면 두 방식 모두 안정적으로 작동하지 않는다. 이때는 완전히 다른 접근이 필요하다: 외부 도구(tool)를 활용하게 하거나, 외부 유효성 검증기를 두거나, 첫 번째 모델의 출력을 감사(audit)할 별도의 두 번째 모델을 투입해야 한다.

진짜 교훈

“확인했어?“냐 “그냥 다시 해줘”냐를 따지는 것은 질문의 축 자체를 잘못 잡은 것이다. 진정으로 중요한 변수는 모델이 자신의 오류에 대해 신뢰할 수 있는 구체적인 피드백을 확보하고 있는가이다.

LLM들이 스스로에 대해 엇갈린 진단을 내놓는 것은 버그가 아니다. 현재 인공지능 지형의 본질을 보여주는 필연적인 특성이다. “1번이 효과적이다”라고 말하는 모델은 자신의 학습 이력에 대한 한 단면을 흘리고 있다. “2번이 낫다”고 말하는 모델은 또 다른 단면을 드러낸다. 그리고 “둘 다 아니고 구체적인 피드백이 답이다”라며 모범 답안으로 빠져나가는 모델은 가장 안전한 포지션을 취하고 있는 셈인데, 이 또한 일종의 세련된 아첨이다.

연구가 말해주는 바는 명확하다: LLM을 부드럽게 달래서 실토하게 만들어야 하는 인간처럼 대하지 마라. 그저 중간 단계를 하나 건너뛴 도구로 대하라. 점검했냐고 떠보지 말고, 무엇을 놓쳤는지 정확히 짚어주어라.

참고자료: