AI로 언어모델 단어 선택한 결과가 이상할 때 사람이 다시 확인할 계산

AI가 고른 단어가 문맥과 어긋날 때는 단순히 더 자연스러운 표현으로 고치는 데서 끝내지 말고, 토큰 분할, 후보 확률, 문장 누적 점수, 실제 의미를 순서대로 다시 계산해야 합니다.

언어모델은 단어가 아니라 토큰을 고릅니다

언어모델은 앞에 나온 내용을 바탕으로 다음에 올 토큰의 분포를 계산하는 시스템입니다. 언어모델은 문장을 통째로 이해한 뒤 단어를 고르는 것이 아니라, 입력을 잘게 나눈 토큰 단위로 다음 출력을 이어 갑니다.

토큰은 문자, 하나의 단어, 단어 일부와 일치할 수도 있지만, 조사, 띄어쓰기, 문장부호가 별도 조각으로 나뉠 수도 있습니다. 특히 한국어에서는 어간, 조사, 어미가 모델의 토크나이저에 따라 서로 다른 방식으로 분리될 수 있으므로 사람이 보는 단어와 모델이 선택하는 단위를 같다고 보면 안 됩니다.

따라서 이상한 결과를 발견했을 때 가장 먼저 확인할 것은 후보 단어의 뜻이 아닙니다. 실제 입력 문자열의 마지막 공백, 줄바꿈, 따옴표, 문장부호까지 포함해 어떤 토큰 시퀀스로 변환됐는지 확인해야 합니다.

같은 단어라도 앞에 공백이 있는지, 문장 중간인지 문장 시작인지에 따라 다른 토큰이 될 수 있습니다. 사람에게는 사소한 표기 차이지만 모델의 계산에서는 다음 후보에 전달되는 입력 상태가 달라지는 원인이 됩니다.

다음 토큰 확률을 사람이 다시 계산하는 법

모델이 내놓는 로짓은 후보마다 부여한 상대적인 점수입니다. 로짓 자체는 확률이 아니므로, 가장 큰 값과 두 번째 값의 차이를 곧바로 정답 가능성이나 확신의 정도로 읽어서는 안 됩니다.

확률로 바꾸는 대표적인 방법이 소프트맥스입니다. 후보 i의 로짓을 zᵢ라고 하면 확률은 다음처럼 계산합니다.

pᵢ = exp(zᵢ) / Σⱼ exp(zⱼ)

분모는 모든 후보의 지수값을 더한 값입니다. 이 과정을 거치면 각 후보의 값이 서로 비교 가능한 확률분포가 되고, 전체 후보의 확률을 합산했을 때 하나의 분포가 됩니다.

temperature는 로짓을 그대로 쓰지 않고 온도 값으로 나누어 확률의 퍼짐을 조절합니다.

pᵢ(T) = exp(zᵢ / T) / Σⱼ exp(zⱼ / T)

온도가 낮아지면 큰 로짓을 가진 후보 쪽으로 분포가 몰리고, 높아지면 상대적으로 낮은 후보도 선택될 여지가 커집니다. 다만 온도는 모델이 문장의 사실성을 새로 판단하게 만드는 값이 아니라, 이미 계산된 후보 분포를 얼마나 좁게 또는 넓게 사용할지를 정하는 값입니다.

샘플링을 끄면 확률이 가장 높은 후보를 고르는 탐욕적 디코딩이 됩니다. 샘플링을 켜면 후보 확률에 따라 선택하므로, 같은 입력에서도 결과가 달라질 수 있습니다.

top_k는 상위 후보만 남기는 방식이고, top_p는 후보를 확률순으로 정렬한 뒤 누적 확률이 기준에 도달할 때까지 후보를 남기는 방식입니다. 둘 다 원래 분포를 그대로 쓰지 않고 후보 집합을 줄인 뒤 다시 정규화하므로, 설정 전후의 확률을 같은 값으로 비교하면 안 됩니다.

REQUIREMENTS
언어모델 토큰 선택과 확률 검토 — 신청 요건
01
토큰은 문자, 단어, 단어 일부로 나뉠 수 있습니다
02
temperature는 확률의 퍼짐을 조절합니다
03
top_k와 top_p는 후보 집합을 줄입니다
04
로그확률과 퍼플렉시티로 문장 점수를 확인합니다

문장 전체의 점수를 재검산하는 순서

다음 토큰 하나의 확률만 보고 문장 전체가 좋은 선택이었다고 결론 내리면 안 됩니다. 문장은 여러 토큰의 연속으로 만들어지며, 각 토큰은 앞에서 확정된 토큰을 조건으로 다시 계산되기 때문입니다.

문장 후보의 확률은 각 토큰 조건부 확률의 곱으로 표현합니다.

P(문장) = p₁ × p₂ × p₃ × ...

확률을 계속 곱하면 값이 매우 작아지기 쉬워서 실제 계산에서는 로그확률을 사용합니다. 로그확률은 확률에 로그를 취한 값이며, 곱셈을 덧셈으로 바꾸므로 문장 점수는 다음처럼 계산할 수 있습니다.

log P(문장) = log p₁ + log p₂ + log p₃ + ...

사람이 확인할 때는 먼저 이상한 표현이 나온 위치를 찾고, 그 위치까지의 토큰별 로그확률을 순서대로 살펴보면 됩니다. 특정 토큰 하나의 점수가 낮다는 이유만으로 오류라고 단정하지 말고, 앞선 토큰 선택이 뒤의 후보 분포를 어떻게 바꾸었는지 함께 봐야 합니다.

서로 다른 길이의 문장을 비교할 때는 누적 로그확률만으로 판단하기 어렵습니다. 토큰이 많은 문장은 더 많은 로그확률을 더하게 되므로, 토큰 수로 나눈 평균 로그확률을 함께 확인해야 길이 때문에 생기는 불공정한 비교를 줄일 수 있습니다. 퍼플렉시티는 평균 음의 로그가능도를 지수화한 값입니다.

다만 평균값이 높다고 해서 문장이 사실이라는 뜻은 아닙니다. 퍼플렉시티는 모델이 해당 토큰열을 얼마나 그럴듯하게 예측하는지 보여주는 지표이지, 외부 세계의 진실 여부나 문장의 실무 적합성을 보증하는 점수가 아닙니다.

확인 대상계산 방식사람이 해석할 내용
후보 토큰로짓을 확률분포로 변환어떤 후보들이 경쟁했는지 확인
온도 적용 결과조정된 로짓으로 재정규화선택 가능성이 얼마나 퍼졌는지 확인
후보 문장토큰 로그확률을 합산전체 문장의 모델상 가능성 확인
길이가 다른 문장로그확률을 토큰 수로 평균길이 효과를 줄여 비교

확률이 높아도 사람이 고쳐야 하는 결과

모델의 선택은 통계적으로 자연스러운 이어짐일 뿐, 질문의 의도에 맞는다는 보장은 없습니다. 가장 높은 후보가 문법적으로는 자연스럽지만 주어와 서술어의 관계를 바꾸거나, 긍정과 부정의 범위를 흐릴 수도 있습니다.

사람은 우선 문장 성분의 연결을 확인해야 합니다. 주어가 누구인지, 행위의 대상이 무엇인지, 시간과 조건이 어디에 걸리는지 표시하면 단어 하나가 문장의 의미를 바꾸는 지점을 찾기 쉽습니다.

그다음에는 대체 후보를 나란히 놓고 의미 차이를 비교합니다. 유사어는 사전적 뜻이 비슷해도 책임의 정도, 확정 여부, 가능성, 권고의 강도가 다를 수 있습니다. 모델이 확률이 높은 표현을 골랐더라도 글의 목적에 맞는 표현인지 별도로 판단해야 합니다.

수치, 고유명사, 날짜, 단위가 포함된 문장이라면 확률 계산보다 원자료 대조가 우선입니다. 모델은 자주 함께 등장한 표현을 잘 이어 갈 수 있지만, 실제 사건이나 최신 정보와 일치하는지는 토큰 점수만으로 확인할 수 없습니다.

결과를 고칠 때는 문장 전체를 무작정 다시 생성하지 않는 편이 좋습니다. 문제가 된 앞부분을 고정하고 해당 위치의 후보만 바꾸어 의미와 문법이 어떻게 달라지는지 비교하면, 원래 오류가 모델의 무작위 선택인지 입력 구조의 문제인지 구분하기 쉬워집니다.

또한 후보 확률을 모델 간에 바로 비교해서는 안 됩니다. 모델마다 어휘, 토크나이저, 학습 방식, 점수의 산출 방식이 다르기 때문입니다. 같은 모델 안에서 같은 입력과 같은 설정으로 후보를 비교할 때만 숫자의 의미가 비교적 분명해집니다.

재현 가능한 확인 기록 만들기

이상한 단어 선택을 다시 확인하려면 결과 문장만 저장해서는 부족합니다. 입력 원문, 토큰화 결과, 모델과 토크나이저의 식별 정보, 생성 설정, 후보별 점수, 최종 수정 이유를 함께 기록해야 합니다.

특히 샘플링을 사용했다면 결과가 달라진 사실 자체를 오류의 증거로 보지 않아야 합니다. 무작위 선택이 포함된 방식에서는 다른 후보가 나오는 것이 계산상 가능한 결과이므로, 여러 번 생성했을 때 반복되는 문제인지 특정 실행에서만 나타난 문제인지 나누어 봐야 합니다.

반대로 샘플링을 사용하지 않았는데도 같은 입력에서 결과가 달라진다면 입력 전처리, 모델 버전, 토크나이저, 숨은 기본 설정이 달라졌는지 확인해야 합니다. 화면에 보이는 프롬프트가 같아도 끝의 공백이나 시스템 지시가 다르면 내부 입력은 달라질 수 있습니다.

사람의 최종 판정은 다음 질문으로 정리할 수 있습니다. 이 후보는 입력 문맥에 문법적으로 맞는가, 질문이 요구한 범위를 지키는가, 다른 후보보다 의미가 정확한가, 외부 자료와 대조했을 때 사실인가를 각각 따로 답해야 합니다.

이 과정을 거치면 확률이 낮은 후보를 무조건 버리는 실수도 줄어듭니다. 모델 점수는 선택 과정을 설명하는 자료이고, 최종 문장이 독자에게 전달할 의미와 사실성을 결정하는 것은 사람의 검토입니다.

자주 묻는 질문 FAQ

Q1) 확률이 가장 높은 단어를 그대로 쓰면 되나요?

그렇지 않습니다. 확률이 가장 높은 후보는 해당 문맥에서 모델이 가장 그럴듯하다고 본 선택일 뿐입니다. 문법, 질문의 범위, 사실관계, 표현의 강도는 사람이 따로 확인해야 합니다. 특히 부정 표현이나 조건절에서는 단어 하나의 선택이 문장 전체의 결론을 바꿀 수 있습니다.

Q2) 로그확률이 낮으면 반드시 잘못된 단어인가요?

로그확률이 낮다는 것은 모델이 해당 토큰을 덜 가능성 높은 선택으로 보았다는 뜻입니다. 하지만 문맥에 꼭 필요한 전문용어나 고유명사는 낮은 점수여도 올바를 수 있습니다. 반대로 점수가 높아도 자주 등장하는 상투적 표현일 뿐, 현재 문장에 맞는다는 보장은 없습니다. 로그확률은 검토 우선순위를 정하는 자료로 활용하는 것이 적절합니다.

Q3) 같은 문장을 여러 번 생성하면 정답을 찾을 수 있나요?

여러 결과를 비교하면 모델이 어느 부분에서 선택이 흔들리는지 확인할 수 있습니다. 그러나 반복해서 나온 표현이 사실이라는 의미는 아니며, 같은 오류가 반복될 수도 있습니다. 후보가 달라진 위치를 토큰 단위로 대조하고, 최종 문장은 문맥과 외부 자료를 기준으로 사람이 결정해야 합니다.

댓글 남기기