한 줄 정의

숫자 여러 개를 다 더하면 1이 되는 확률로 바꾸는 계산


1. 비유로 이해하기

반장 선거를 생각해 보자. 개표하니 이렇게 나왔다.

민수 20표,  영희 8표,  철수 2표

여기서 “민수가 뽑힐 확률”을 말하려면 백분율로 바꿔야 한다. 전체 30표로 나누면 67% · 27% · 7%다. 개수를 비율로 바꾸는 이 작업이 소프트맥스가 하는 일이다.

로짓이라는 원점수를 지수 함수로 양수화하고 전체 합으로 나누면 확률이 되며, 온도를 낮추면 격차가 벌어지고 높이면 격차가 좁아진다
그림 1. 점수를 확률로. 온도는 그 격차를 조절하는 숫자 하나다

2. 왜 필요한가

그냥 나누기와 뭐가 다른가

두 가지가 다르다.

① 음수도 처리한다. AI가 내놓는 점수는 -3.2처럼 음수일 수 있다. 득표수로는 -3표가 말이 안 된다. 그래서 나누기 전에 모든 숫자를 exp(지수 함수)에 넣어 무조건 양수로 만든다.

② 1등을 더 밀어준다. 이게 이름의 soft-max다. 그냥 나누기만 하면 격차가 그대로지만, exp를 거치면 격차가 더 벌어진다.

하드맥스:   [100%,  0%,  0%]   ← 1등만 살린다 (너무 딱딱하다)
소프트맥스: [ 66%, 24%, 10%]   ← 1등을 밀어주되 나머지도 살린다
그냥 비율:  [ 65%, 32%,  3%]   ← 격차 반영이 약하다

“1등만 100%”와 “그냥 비율”의 중간 지점이라서 소프트맥스라는 이름이 붙었다.

LLM이 글을 쓰는 원리가 이것이다

모델은 매 순간 모든 단어에 점수를 매긴다. 이 원점수를 로짓(logit)이라고 부른다.

"오늘 날씨가 정말" 다음에 올 단어의 로짓
  좋다 :  8.2
  덥다 :  6.1
  이상 :  3.4
  바나나: -4.7
   ... (10만 개 단어 전부)

이 점수들은 그냥 숫자라서 “얼마나 확실한지”를 말할 수 없다. 소프트맥스를 통과시키면 확률이 된다.

  좋다 : 84%
  덥다 : 11%
  이상 :  4%
  바나나: 0.0001%

그리고 이 확률에 따라 주사위를 굴려 하나를 뽑는다. 이걸 샘플링이라고 한다.

온도(temperature)의 정체

에이전트 설정에서 자주 보는 temperature소프트맥스에 들어가기 전에 로짓을 나누는 숫자다. 딱 그것뿐이다.

온도 계산 결과 성격
낮음 (0.2) 로짓 ÷ 0.2 → 격차 확대 [86%, 12%, 2%] 뻔하지만 안정적
보통 (1.0) 그대로 [66%, 24%, 10%] 균형
높음 (1.5) 로짓 ÷ 1.5 → 격차 축소 [50%, 30%, 20%] 다양하지만 헛소리 위험

에이전트를 만들 때는 보통 온도를 낮게 쓴다. 도구 이름을 창의적으로 지어내면 안 되기 때문이다. 반대로 브레인스토밍용이라면 높게 둔다.

계산은 두 줄이다

import numpy as np

logits = np.array([2.0, 1.0, 0.1])      # 모델이 내놓은 원점수

exp_values = np.exp(logits)             # ① 전부 양수로, 격차를 벌린다
# → [7.389, 2.718, 1.105]

probs = exp_values / exp_values.sum()   # ② 전체 합으로 나눈다
# → [0.659, 0.242, 0.099]   ← 다 더하면 1.0

exp로 양수화 + 전체 합으로 나누기. 이게 전부다.

모델 곳곳에 들어 있다

  • 다음 단어 고르기 — 위에서 본 것
  • 어텐션 — Q와 K를 곱해 나온 관련도 점수를 확률로 바꿀 때
  • 모델 안의 게이트 — 여러 전문가 중 누구에게 보낼지 고를 때
  • 확신 게이트if 확률 < 0.7: 사람에게 확인 같은 판단을 만들 때

3. 어디서 만났나

이 용어는 수업에서 정식으로 다루기 전에 따로 정리한 것이다.

다만 1회차에서 LLM을 배울 때 이미 그 자리에 있었다. “문맥을 바탕으로 다음에 올 내용을 예측한다”는 그 예측이 정확히 이 계산이다. 예측이라는 말이 실제로는 “모든 단어에 점수를 매기고 확률로 바꿔 하나를 뽑는 일”이었던 것이다.

1회차 — AI Agent 학습 기록을 시작합니다


4. 헷갈리는 개념

이 용어 비슷하지만 다른 것 차이
소프트맥스 로짓 로짓은 들어가는 재료(원점수), 소프트맥스는 그걸 확률로 바꾸는 계산
소프트맥스 하드맥스 (argmax) 하드맥스는 1등에게 100%를 주고 끝낸다. 소프트맥스는 나머지도 살려 둔다
소프트맥스 정규화 정규화는 크기를 맞추는 일 전반. 소프트맥스는 그중 “합이 1인 확률로 만드는” 한 가지
소프트맥스 샘플링 소프트맥스는 확률로 바꾸기만 한다. 그 확률로 하나를 뽑는 건 샘플링이다

5. 많이들 오해하는 지점

ㄱ. “온도는 창의성 다이얼이다”

설정 화면에서 보면 딱 그렇게 느껴진다. 하지만 실제로 하는 일은 로짓을 나누는 것 하나다.

온도를 올리면 모델이 창의적으로 생각하는 게 아니라, 덜 뻔한 선택지도 뽑힐 여지가 생기는 것이다. 그래서 온도를 올리면 재미있는 답이 나올 확률과 틀린 답이 나올 확률이 함께 올라간다. 창의성을 켜는 스위치가 아니라, 2등과 3등에게 기회를 더 주는 손잡이다.

ㄴ. “확률이 84%면 84% 맞다는 뜻”

아니다. 84%는 그 단어를 고를 가능성이지 정답일 확률이 아니다. 모델이 완전히 틀린 답에 95%를 줄 수도 있다. 모델은 “내가 얼마나 확신하는가”를 말한 것이지 “내가 얼마나 맞는가”를 말한 게 아니다.

이 구분이 중요한 이유가 있다. 확률이 낮으면 “잘 모르겠다”는 신호로 쓸 수 있지만, 확률이 높다고 해서 믿어도 된다는 보장은 없기 때문이다.

ㄷ. “소프트맥스가 답을 고른다”

고르지 않는다. 소프트맥스는 점수를 확률로 바꿔 놓기만 한다. 실제로 하나를 뽑는 건 그다음 단계인 샘플링이다.

이 둘이 나뉘어 있어서, 같은 확률표를 두고도 “가장 높은 것만 고른다”거나 “확률대로 주사위를 굴린다”거나 “상위 몇 개 중에서만 뽑는다” 같은 서로 다른 전략을 쓸 수 있다.


6. 관련 용어

벡터 · 토큰 · Q/K/V · 게이트 · MNIST · LLM