topic난이도 · 약 20

Softmax — AI는 어떻게 선택하는가?

Softmax 함수는 임의의 숫자(logits)를 0~1 사이의 확률 분포(합=1)로 변환한다.

#Softmax#로짓#확률 분포#정규화
왜 배우는가

'오늘 날씨가' 다음에 올 단어를 AI가 고른다. '좋다' 35%, '나쁘다' 15%, '덥다' 12%... 이 확률은 어디서 올까? 모델이 출력하는 raw 점수(logits)를 확률로 바꾸는 것이 Softmax — LLM의 핵심 함수이다.

LLM의 본질은 '다음 토큰의 확률 분포를 계산하는 것'입니다

용어설명
소프트맥스실수 벡터를 확률 분포(합=1)로 변환하는 함수
로짓소프트맥스 적용 전 모델의 원시 출력값

'오늘 날씨가' → {'좋다': 35%, '나쁘다': 15%, '덥다': 12%, ...}

확률을 계산하고 샘플링하는 것이 텍스트 생성의 전부

Softmax, Logits, 확률 분포(Probability Distribution)

확률/통계가 쓰이는 곳설명
학습 시손실 함수(Cross-Entropy), 드롭아웃
추론 시Softmax, Temperature, Top-k/Top-p
평가 시Perplexity, BLEU, ROUGE

임의의 숫자를 확률 분포로 바꾸는 마법의 함수

softmax(xᵢ) = eˣⁱ / Σⱼ eˣʲ 각 값에 자연지수(e)를 씌운 뒤, 전체 합으로 나누어 모든 출력이 0~1 사이가 되고 합이 1이 되도록 합니다.

Softmax의 핵심 성질: 1. 모든 출력값이 0~1 사이 2. 모든 출력값의 합이 1 (확률 분포) 3. 가장 큰 입력값이 가장 높은 확률을 받음 4. 수치 안정성을 위해 max(x)를 빼줌

Softmax 확률 분포 — logit 값이 확률 막대로 변환되는 과정

직접 Softmax를 구현해봅시다

np.exp(logits - np.max(logits))으로 수치 안정성을 확보하고, 전체 합으로 나누어 확률 분포를 만든다.

logits 값을 바꿔가며 Softmax 출력이 어떻게 변하는지 직접 확인합니다

logits 값이 균등하면 확률도 균등, 하나가 압도적이면 해당 토큰의 확률이 거의 1에 수렴한다.

Softmax 핵심 성질설명
공식softmax(xᵢ) = eˣⁱ / Σeˣʲ — 자연지수 후 전체 합으로 나눔
출력 범위모든 값이 0~1 사이, 합이 반드시 1 (확률 분포)
수치 안정성오버플로 방지를 위해 max(x)를 먼저 빼줌 (결과 동일)
LLM에서의 역할설명
로짓(Logits)Softmax 적용 전 모델의 원시 출력값 (임의의 실수)
확률 분포로짓 → Softmax → 다음 토큰 확률 (합=1)
텍스트 생성확률 분포에서 샘플링하여 다음 토큰을 선택

LLM의 본질은 '다음 토큰의 확률 분포를 계산하는 것' — Softmax가 그 마지막 관문입니다!

실기 드릴 5문항
edit실기 드릴 · 단답형

Softmax 함수의 출력값을 모두 더하면 얼마인가요?

check_circle실기 드릴 · OX

Softmax에서 입력값(logits)이 가장 큰 항목이 항상 가장 높은 확률을 받는다.

edit실기 드릴 · 단답형

Softmax 함수에서 수치 안정성을 위해 입력값에 어떤 처리를 하나요?

edit실기 드릴 · 단답형

Softmax에서 e.sum()은 무엇을 계산하나요?

check_circle실기 드릴 · OX

Softmax의 출력값 중 하나가 음수가 될 수 있다.