본문 바로가기
C.W.K.
Stream
Lesson 03 of 05 · published

확률과 우도: 같은 식을 다르게 읽기

~8 min · probability, likelihood, MLE

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

무엇을 고정하고 무엇을 바꿀까

확률과 우도는 같은 모형식에서 출발하지만 질문이 달라.

질문고정하는 것
확률 매개변수 가 주어졌을 때 어떤 데이터 가 나올까?매개변수를 고정하고 가능한 데이터를 비교
우도 데이터 를 관측했을 때 어느 가 그 데이터를 더 잘 설명할까?데이터를 고정하고 매개변수를 비교

우도는 의 함수로 다시 읽은 값이야. 그래서 매개변수 전체에 대해 합이나 적분이 1일 필요가 없고, 그 자체를 의 확률분포로 읽으면 안 돼. 매개변수의 확률을 말하려면 사전분포와 베이즈 규칙이 더 필요해.

최대우도추정과 손실

최대우도추정은 관측 데이터의 우도를 가장 크게 만드는 매개변수를 골라.

독립이라고 가정한 관측의 우도는 곱으로 나타나기 쉬워서 로그를 취해 합으로 바꿔. 로그는 단조증가하므로 최댓값 위치가 같고, 음수를 붙이면 음의 로그우도를 최소화하는 문제가 돼.

범주형 조건부 모형에서 one-hot 정답과 함께 쓰는 교차엔트로피는 음의 로그우도와 같아. 하지만 모든 손실과 모든 모델 학습이 MLE인 것은 아니야. 규제, 대조학습, 강화학습 목적처럼 다른 해석이 필요한 경우도 있어.

logits를 범주형 분포로

분류기의 원시 점수인 logits를 음수가 없고 합이 1인 값으로 바꾸는 함수가 softmax야.

모든 logit에 같은 상수를 더해도 결과는 같아. 구현에서는 가장 큰 logit을 먼저 빼 지수의 오버플로를 줄이고, 손실 계산에는 보통 안정적인 cross_entropylog_softmax를 바로 써.

확률은 매개변수를 고정해 가능한 데이터를 비교하고, 우도는 관측 데이터를 고정해 매개변수를 비교해. 같은 식을 어느 변수의 함수로 읽는지 표시하면 둘을 섞지 않을 수 있어.

Code

softmax로 logits를 범주형 분포로 바꾸기·python
import numpy as np

def softmax(logits):
    shifted = logits - logits.max()        # 안정성
    exp = np.exp(shifted)
    return exp / exp.sum()

logits = np.array([2.0, 1.0, 0.5, -1.0])
probs = softmax(logits)
print(probs)                                # [0.620, 0.228, 0.139, 0.013]
print(probs.sum())                          # 1.0 — proper 분포

External links

Exercise

logits [3.0, 1.0, 0.0]에 softmax를 적용해. 모든 logit에 1,000을 더한 뒤 순진한 지수 계산과 안정적인 softmax를 각각 실행해 결과를 비교하고, 왜 같은 분포가 나와야 하는지 설명해.
Hint
softmax는 공통 상수 이동에 불변이야. softmax(x+c)=softmax(x)에서 분자와 분모의 공통 인자 e^c가 약분돼. 구현에서는 최대값을 먼저 빼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.