1.2.1.2 언어 모델의 확률 분포(Probability Distribution)와 소프트맥스(Softmax) 계층
대규모 언어 모델(LLM)이 다음 토큰(Next Token)을 예측하는 과정은 본질적으로 거대한 어휘 사전(Vocabulary) 내의 모든 토큰 후보들에 대해 각각의 발화 적합도를 점수 매기고, 이를 확률의 형태로 정규화(Normalization)하는 통계적 사상(Statistical Mapping) 연산이다. 이 연산 파이프라인의 핵심이자 분수령이 되는 장치가 바로 어텐션 메커니즘(Attention Mechanism)의 연산을 마무리 짓는 소프트맥스(Softmax) 계층이다.
1. 로짓(Logit) 스코어의 도출과 한계
트랜스포머(Transformer) 아키텍처의 심층 신경망 레이어들을 모두 통과한 직후, 모델의 선형 투영층(Linear Projection Layer)은 어휘 사전 크기(일반적으로 3만 ~ 10만 개)와 동일한 차원의 벡터를 출력한다. 이 벡터의 각 원소는 특정 토큰이 다음에 등장할 통계적 타당성을 나타내는 스코어로, 이를 **로짓(Logit)**이라고 부른다.
로짓 값 그 자체는 유용한 상대적 크기를 가지지만, 수학적 확률로서의 의미를 온전히 갖추지 못한다. 로짓은 음수부터 양수까지 실수 기반의 무한한 범위를 가질 수 있으며, 전체 로짓 값들의 합을 구해도 1(100%)이 되지 않기 때문이다. 특정 소프트웨어 파이프라인(가령, 95% 이상의 확신이 있을 때만 API를 호출하도록 설계된 가드레일)에서 이 로짓을 통제 로직의 근거로 사용하기 위해서는 반드시 이 수치들을 0과 1 사이의 폐구간 \[0, 1\]으로 압축하고, 전체 총합을 1로 만들어주는 확률 분포 형태의 변환이 필수적으로 요구된다.
2. 소프트맥스(Softmax) 연산의 수학적 특성
로짓 공간을 확률 공간(Probability Space)으로 변환하는 수학적 기제인 소프트맥스 함수의 수식은 다음과 같이 정의된다.
P(x_i) = \frac{\exp(z_i)}{\sum_{j=1}^{K} \exp(z_j)}
여기서 z_i는 i번째 토큰의 로짓 스코어이며, K는 전체 어휘 사전의 크기를 의미한다. 이 지수 함수(Exponential Function) 기반의 공식은 소프트웨어 엔진의 내부에서 다음과 같은 강력한 공학적 파급 효과를 일으킨다.
- 비선형적 양극화 (Non-linear Polarization): 자연 상수 e를 밑으로 하는 거듭제곱(\exp()) 스케일링 특성으로 인해, 로짓 값이 높은 토큰과 낮은 토큰의 격차는 확률 분포상에서 기하급수적으로 벌어진다. 1위 후보와 2위 후보 간의 로짓 차이가 근소하더라도, 소프트맥스 통과 후에는 1위 후보의 확률이 지배적(Dominant)으로 두드러지는 특성을 보인다.
- 제로 이하 확률의 제거: 로짓 값이 음수(-100 등)가 나오더라도, 지수 함수의 성질(e^{-100} > 0)로 인해 확률값은 절대로 완전한 0이 되지 않는다. 이는 시스템 내에 0으로 나누기(Divide-by-Zero) 오류를 방지함과 동시에, 이론적으로 어떠한 맥락에서도 ’완전히 불가능한 단어’는 존재하지 않는다는 무한한 가능성의 스펙트럼을 열어둔다.
graph LR
subgraph Logits_Space [로짓 공간 Logits Vector]
A1("단어 A: 4.5")
A2("단어 B: 2.1")
A3("단어 C: -1.0")
end
subgraph Softmax_Calculation [소프트맥스 계층 Softmax Layer]
B[Exp 연산 및 정규화 합산\nNormalization]
end
subgraph Probability_Distribution [확률 분포 Probability Distribution]
C1("단어 A: 0.916")
C2("단어 B: 0.083")
C3("단어 C: 0.001")
end
A1 --> B
A2 --> B
A3 --> B
B --> C1
B --> C2
B --> C3
style Softmax_Calculation fill:#bbdefb,stroke:#1976d2,stroke-width:2px;
결정론적 검증 생태계와의 철학적 마찰
소프트맥스를 통과하여 도출된 결과물은 “이 단어가 무조건 정답이다“라는 이분법적 참/거짓(Boolean True/False)의 상태가 아니다. 그것은 오직 “이 문맥에서 단어 A가 출현할 확률 91.6%, 단어 B가 출현할 확률 8.3%…“라는 통계학적 스펙트럼 표에 불과하다.
소프트웨어 1.0 프로그래밍에서는 if (a == 1)과 같이 명확하고 이산적인(Discrete) 조건이 검증의 코어가 되었다. 그러나 소프트맥스를 통해 산출된 91.6%의 확률은, 뒤집어 말하면 1,000번 실행 시 84번은 개발자가 전혀 예상치 못한 ‘단어 B’ 혹은 그보다 더 확률이 낮은 엉뚱한 단어가 튀어나올 ’물리적 가능성’을 시스템이 합법적으로 태생부터 품고 있음을 의미한다.
결과적으로, 이 확률 분포의 존재 그 자체가 바로 AI 시스템의 본질적 비결정성(Nondeterminism)을 유발하는 코어 엔진의 심장 박동이다. 출력이 100%가 아닌 99.9% 확률의 집합으로 이루어진다는 사실은, AI가 비즈니스의 핵심 프로세스 내에 삽입될 때 왜 철저하게 테스트 오라클(Test Oracle)을 활용한 응답의 멱등성(Idempotency) 검증 및 강제 타입 캐스팅 파이프라인이 필연적으로 수반되어야 하는지를 수학적으로 완벽하게 증명한다.