TL;DR
- '누가 답해도 결과가 하나로 결정되는 계산 문제'와 '정답이 정해지지 않은 판단/상담'의 두 종류의 질문을, 대화 기록을 공유하지 않는 독립적인 3개의 채팅에 각각 한 번씩 던졌다(총 6회).
- 계산 문제(256×13)는 세 번 모두 '3328'로 완전 일치.
- 판단/상담(회의 60분→30분 단축 여부)은, 첫 번째 'No', 두 번째 '어느 쪽이라고 말하기 어렵다', 세 번째 'No'가 되어, 세 번 중 한 번만 결론이 벗어났다. 'Yes'는 한 번도 나오지 않았다.
- 완전히 일치하지는 않았지만, 무작위로 크게 갈린 것도 아니며 중간적인 결과였다. 각 조건당 1회만 시도했으므로 통계적 유의성은 주장할 수 없다.
배경
저희 편집부는 지금까지 AI에게 지시문을 작성하는 방식(이유를 첨부하게 하거나, 역할을 부여하게 하는 등)이 출력을 어떻게 변화시키는지 검증해 왔다. 이번에는 그 전제에 있는 '같은 입력을 주면, AI는 매번 같은 출력을 반환한다'라는 암묵적인 가정 자체를 검증 대상으로 삼았다.
LLM은 다음에 나올 토큰(단어의 조각)을 어휘 전체에 대한 확률 분포로부터 샘플링하여 결정하고 있다. 이는 구현상의 버그가 아니라, Transformer 기반 생성 모델의 설계 그 자체이다. 이 특성상, 같은 입력이라도 출력이 완전히 결정론적일 것이라고는 할 수 없다. 한편, 산술 계산처럼 '유일한 정답이 존재하는' 작업에서는, 모델이 충분한 정확도로 학습 및 추론할 수 있다면 출력의 흔들림은 관측되기 어려울 것이다. 이 두 종류의 작업에서 흔들리는 방식에 차이가 있는지 1차적으로 검증했다.
검증 방법
다음 두 종류의 질문을 준비했다.
계산 문제:
다음 계산을 해서, 답의 숫자만 써주세요. 다른 설명은 필요 없습니다.
256×13
판단/상담:
다음 상담에, 결론('Yes' 또는 'No' 또는 '어느 쪽이라고 말하기 어렵다' 중 하나)을 첫 문장에 쓰고, 그 뒤에 이유를 2~3문장으로 써주세요.
상담 내용: '사내 회의를 지금의 60분 틀에서 30분 틀로 변경해야 할까요? 회의 횟수는 바꾸지 않고, 안건은 그대로 두고 시간만 짧게 하는 것을 가정합니다.'
각 질문을 대화 기록을 공유하지 않는 독립적인 에이전트(Agent 도구로 생성한 신규 컨텍스트, 3개 인스턴 모두 서로의 존재나 답변을 알지 못함, 모두 Claude)에게, 한 글자 한 글자 같은 문언으로 1회씩 전달했다(계산 × 3회 · 판단 × 3회의 총 6회). 시스템 프롬프트나 전제 지식 공유는 없었으며, 각 인스턴스는 완전히 독립적이다.
결과
계산 문제(256×13): 세 번 모두 '3328'. 숫자와 형식 모두 완전 일치했다.
판단/상담(회의 60분→30분 단축):
- 1회차: 'No.' (이유: 논의나 질의응답 시간이 부족하여, 결론을 내지 못한 채 미뤄지거나 · 효과가 제한적이거나 역효과의 가능성)
- 2회차: '어느 쪽이라고 말하기 어렵다' (이유: 안건에 따라 성패가 갈린다. 권장 접근법으로 '안건 정리', '사전 공유 철저', '일부 회의에서의 파일럿 도입'을 목록 형태로 제시)
- 3회차: 'No.' (이유: 논의가 흐지부지되어 추가 조정 비용이 발생하는 위험. 회의 횟수를 줄이지 않고 시간만 줄이는 것은 본질적인 부담을 해결하지 못한다.)
세 번 중 2회가 'No', 1회가 '어느 쪽이라고 말하기 어렵다'로, 'Yes'는 한 번도 나오지 않았다. 결론의 방향성(단축에 부정적)은 크게 갈리지 않았지만, 완전한 일치도 아니었다. 이유 문장의 구성도 매번 달라, 2회차에서만 구체적인 실행 절차 목록이 추가되는 등, 같은 결론이라도 출력 구조 자체에 차이가 보였다.
원리(기술적 배경)
LLM의 출력이 완전히 결정론적이지 않은 이유로 기술 관련 해설 기사에서는 주로 다음 두 가지를 언급하고 있다 (둘 다 1차 정보가 아니며 커뮤니티/기술 블로그의 해설이라는 점에 유의).
샘플링을 통한 생성: 모델은 다음 토큰의 확률 분포를 출력하고, 거기서 하나를 샘플링한다. 이때 'temperature'라고 불리는 파라미터가 이 무작위성의 강도를 제어한다 (높을수록 다양해지고, 낮을수록 일정한 출력에 가까워진다). ChatGPT와 같은 일반 사용자용 채팅 화면에서는 사용자가 이 temperature를 직접 설정할 수 없다. -
temperature=0이라도 완전한 결정론이 되지는 않는다: 이론적으로는 temperature를 최소화하면 항상 가장 확률 높은 토큰을 선택해야 하지만, 실제로는 여러 토큰의 확률이 미세하게 차이 날 경우 발생하는 부동 소수점 연산의 반올림 오차나, GPU 상에서의 배치 처리/병렬 처리 순서에 의존하는 수치적 오차 때문에 동일한 입력이라도 출력이 달라질 수 있다는 보고가 있다 (ML6 엔지니어링 블로그 'Why OpenAI's API models can't be forced to behave deterministically' 등).
이 두 가지 점을 고려할 때, 이번 결과는 다음과 같이 해석할 수 있다. 계산 문제처럼 '학습 데이터 내에서 답이 유일하게 정해져 있는 태스크'에서는 모델의 확신도(최상위 토큰의 확률)가 매우 높았고, 미세한 차이가 출력을 바꿀 정도의 여유 공간(마진)이 아니었을 가능성이 크다. 반면, 회의 시간 단축 같은 '정답이 정의되어 있지 않은 판단 태스크'에서는 여러 타당한 결론(Yes/No/어느 쪽도 아닌)의 확률이 비교적 근접해 있었고, 샘플링의 흔들림이 결론 자체를 바꿀 만한 여지를 가지고 있었다고 볼 수 있다.
또 다른 요인으로, 대화 전개 전체가 토큰 단위로 순차적으로 생성되는 이상, 초반 몇 개의 토큰('No' 또는 '어느 쪽도 아닌' 중 어느 것을 선택할지)의 차이가 이후 이유 설명 구성 전체에 영향을 미치는 자기회귀적 분기 확대도 생각해 볼 수 있다. 두 번째 청크에서만 구체적인 실행 절차의 목록화가 추가된 점은, 이 초기 분기가 그 후의 글 구조까지 전파된 한 예시로 볼 수도 있다.
실무 적용 방안
- '정답이 하나로 결정되는' 태스크(계산/기존 사실 확인/코드 문법 검사 등)에서는 AI 출력을 한 번으로 신뢰해도 되는 경우가 많다고 생각된다.
- '정답이 정해져 있지 않은' 판단/상담 태스크에서는 1회의 출력을 'AI의 통일된 의견'으로 취급하지 않는 것이 안전하다. 중요한 판단이라면, 새로운 대화에서 같은 질문을 한 번 더 던져 결론이 바뀌는지 확인하는 수고가 실무적인 대책이 된다.
- 결론 자체가 변하지 않더라도, 이유 구성이나 제시되는 구체적 방안(이번의 '권장 접근법' 유무)은 달라질 수 있으므로, 여러 번의 출력을 비교하여 '매번 나오는 논점'과 '한 번만 나온 논점'을 나누어 읽는 것이 더 견고한 판단 자료가 된다.
제약 사항
이번 검증은 계산 문제 1종류와 판단 상담 1종류를 각각 단 3회만 시도한 것으로, 통계적으로 유의미한 차이를 주장할 수 있는 표본 크기가 아니다. 사용된 모델은 Claude 계열에 한정되었으며, ChatGPT나 Gemini에서 같은 경향이 나타날지는 확인하지 않았다. '정답이 결정되는 태스크는 흔들리지 않는다 / 결정되지 않은 태스크는 흔들린다'라는 설명은 이번 두 태스크의 관찰을 통해 세운 작업 가설이며, 다른 계산 문제나 다른 판단 주제에서의 재현성, 표본 수를 늘렸을 경우의 흔들림 분포(예: 10회/20회 시도했을 때 결론 비율이 어디에 수렴할지)는 미검증이다. 또한, LLM의 비결정성에 관한 기술적 설명(temperature・부동 소수점 오차・배치 처리 순서)은 OpenAI, Anthropic, Google 어느 곳의 공식 도움말에서도 명시적인 기재를 찾을 수 없으며, 커뮤니티 포럼이나 기술 블로그의 해설에 근거한 것임을 밝힌다.
Discussion