leejk/ jk lee
← Notes

Notes

확인 질문은 헛수고다

검증을 앞으로 옮기는 법

·
#notes#sycophancy#prompting#verification#context-engineering

답을 받은 뒤 "이거 맞아?"라고 물으면 모델은 거의 항상 "맞다"고 한다. sycophancy 위에 자기 답의 옹호가 겹치는 자리라서다. 부탁이 약해서가 아니라 순서가 틀려서 안 먹힌다. 의심은 답 앞에 — 그것도 안 통하면 다른 컨텍스트에. 심판 설치 같은 무거운 설계 없이 sycophancy를 절반 이상 끊는 가장 싼 처방.

TL;DR. 답을 받은 뒤 "이거 맞아?"라고 물으면 모델은 거의 항상 "맞다"고 한다. sycophancy 위에 자기 답의 옹호가 겹친다. 부탁이 약해서가 아니라 순서가 틀려서 안 먹힌다. 의심은 답 앞에 — 그것도 안 통하는 자리에서는 다른 컨텍스트에 둔다.

답을 받은 뒤의 "맞아?"는 거의 항상 "맞다"가 된다

필자가 코드 한 덩이를 받은 뒤 "이거 맞아?"라고 물어본 횟수를 세지 못한다. 모델은 거의 항상 맞다고 한다. 그것도 매끄럽게 — 왜 맞는지의 이유까지 두세 줄 덧붙여서. 사실 그 코드에 버그가 있을 때조차 그렇다.

확인 질문의 표현을 강하게 바꿔도 결과는 비슷하다. "솔직하게 비판해줘", "이거 진짜 맞는지 다시 봐줘". 매끄러운 옹호가 조금 덜 매끄러운 옹호로 바뀔 뿐이다. 가끔 작은 결함을 짚지만, 결론은 거의 원안이 맞다 쪽이다.

이건 모델이 거짓을 말하는 게 아니다. 자기가 방금 낸 답을 옹호하는 자리에 서 있을 뿐이다.

답에 commit한 모델은 그 답을 옹호한다

RLHF류 선호 최적화는 모델을 동의 쪽으로 민다. 이 sycophancy 자체는 알려진 자리다. 답을 낸 뒤에는 그 sycophancy 위에 한 층이 더 얹힌다.

답을 이미 낸 모델은 그 답에 묶여 있다. 같은 대화 안에서 확인 질문을 던지면, 모델은 방금 자기가 쓴 텍스트를 컨텍스트로 들고 다음 답을 짠다. 그 텍스트가 옳다는 전제가 이미 깔린 상태로. 의심이 들어와도 옹호할 자료는 가까이 있고, 반박할 자료는 따로 찾아야 한다.

"솔직하게 비판해줘"가 안 먹히는 자리도 여기다. 부탁의 강도가 약해서가 아니라, 모델의 시야가 이미 옹호 쪽으로 기울어 있어서다. 부탁은 표면을 바꾸고, 시야는 바닥을 정한다.

의심을 답 앞으로 옮긴다

처방은 순서다. 같은 질문을 답 에 두면, 같은 모델이 다른 결로 답한다.

필자가 쓰는 패턴은 결국 하나다. 답을 만들기 전에 묻는다 — 어디서 깨질지, 어디가 약한 가정인지, 어디를 치면 부서지는지부터. 부탁의 강도가 아니라 질문이 들어가는 위치가 핵심이다.

답을 만들기 전의 모델은 옹호할 답이 아직 없다. 그래서 정직하다. 단, 같은 편향이 반대 방향으로 일하기 시작한다 — 약점을 찾아야 하는 자리에 모델을 세우면 없는 약점도 만든다. 그게 다음 함정의 씨앗이다.

답 앞 의심도 과발화한다

"어디서 틀릴 수 있어?"를 답 앞에 두면, 모델은 의심거리를 채워야 한다. 원안이 멀쩡한데도 약한 가정 세 개를 비워 두지 않는다. 강제된 반대가 없는 곳에서도 의심을 만드는 패턴이 여기서도 같은 결로 반복된다.

답 앞 의심은 원안의 무게가 가벼울 때만 정직하다. 명세가 또렷하고 결정 부담이 큰 자리에서는 모델이 채워 넣는 의심이 실제 약점의례적 딴지 사이에 섞여 들어온다. 둘을 가르는 일을 당신이 한다. 의심을 앞으로 옮긴 대가가 여기 있다.

의심은 다른 컨텍스트에 둔다

같은 세션·같은 컨텍스트에서 모델이 자기 답을 의심하면, 의심도 같은 편향에 묶인다. 답을 옹호하는 시야와 의심하는 시야가 서로 본 적 있는 상태로 일한다 — 상관된 의심자는 의심자가 아니다.

풀려면 의심을 다른 자리에 분리한다.

  • subagent에 원안만 던지고 의심 framing을 따로 요청. "이 코드 본 적 없는 사람이 처음 본다고 치고, 어디가 깨질지부터" 같은 prefix로 fresh context를 강제.
  • 같은 모델 인스턴스에 의심을 시킬 때는 /clear답만 들고 가서 다시 묻는다. 답을 만든 컨텍스트가 같이 가면 안 된다.
  • 다른 모델·다른 instance에 같은 답을 던지는 cross-model 검토. 한쪽 편향이 다른 쪽 편향과 상관되지 않는다는 보장이 핵심.

이게 심판은 토론자와 다른 컨텍스트에 원칙이, 1인 워크플로 수준에서 들어오는 작은 버전이다. 본격 council 같은 무거운 설계 없이도 의심의 독립성은 살릴 수 있다.

한 줄 처방

에 확인 질문을 두지 마라.

의심은 답 에 — 그것도 안 통하는 자리에서는 다른 컨텍스트에. 심판 설치 같은 무거운 설계 없이 sycophancy를 절반 이상 끊는 가장 싼 처방이다.

"솔직하게 비판해줘" 한 줄로 모델의 정직성을 부르고 있다면, 부탁을 다듬을 자리가 아니다. 언제 묻는가를 바꿀 자리다.