디리클레 분포, Dirichlet Distribution
개념
예시
- 주사위 만든다고 가정하면,
- 일반 주사위: 각 면이 나올 확률은 1/6, 1/6, 1/6, 1/6, 1/6, 1/6
- 하지만 만약 불공정한 주사위를 만든다면? 각 면의 확률이 달라질 수 있음
- 디리클레 분포는 이런 "확률들의 조합"을 랜덤하게 뽑아주는 도구
적용
- 뉴스 기사 분류할 때, 아래와 같이 비율 자체를 랜덤하게 생성하고 싶을 때 사용
- 정치: 40%
- 경제: 30%
- 스포츠: 20%
- 연예: 10%
특징
- 여러 개의 확률을 한 번에 뽑음
- 모든 확률의 합은 항상 1
- 각 확률은 0과 1 사이
수식
-
수식
f(x₁,x₂,...,xₖ∣α₁,α₂,...,αₖ)=Γ(Σαᵢ)/ΠΓ(αᵢ)×Πxᵢ(αᵢ−1)
-
변수
- x₁,x₂,...,xₖ: 각 범주의 확률 (합이 1)
- α₁,α₂,...,αₖ: 집중 모수 (concentration parameters)
-
제약조건
- Σxᵢ=1(모든확률의합은1)
- xᵢ>0(각확률은양수)
표기법
- Dir(α) 표기:
X∼Dir(α₁,α₂,...,αₖ)
- 3차원 예시 (가장 많이 쓰이는):
f(x1,x2,x3∣α1,α2,α3)=Γ(α1)Γ(α2)Γ(α3)Γ(α1+α2+α3)∏i=13xiαi−1
α 값의 의미
- α가 클수록: 해당 범주에 더 많은 확률 집중
- α = 1: 균등분포 (모든 조합이 똑같이 가능)
- α < 1: 극단적인 값들 선호 (0 또는 1에 가까운 값)
- 예시: Dir(1, 1, 1)은 삼각형 위에서 균등하게 분포하는 확률들을 생성
머신러닝
에서의 활용
머신러닝에서 디리클레 분포는 매우 다양하게 활용
베이지안 다중클래스 분류
class_probs ~ Dir(α₁, α₂, α₃)
- 스팸 필터링: 스팸/일반/프로모션 이메일 분류
- 감정분석: 긍정/부정/중립 감정 분류
- 이미지 분류: 고양이/개/새 분류
토픽 모델링 (LDA)
가장 유명한 활용 사례
- 뉴스 기사 주제 분류
- 고객 리뷰 주제 추출
- 학술 논문 연구 분야 분석
문서-토픽 분포: θ ~ Dir(α)
토픽-단어 분포: φ ~ Dir(β)
추천 시스템
user_preference ~ Dir(α_music, α_movie, α_book, α_game)
강화학습
action_probs ~ Dir(α₁, α₂, ..., αₙ)
실제 구현 예시
PyTorch에서 디리클레 분포:
import torch
from torch.distributions import Dirichlet
alpha = torch.tensor([1.0, 2.0, 3.0])
dirichlet = Dirichlet(alpha)
sample = dirichlet.sample()
유용성
- 불확실성 모델링: "얼마나 확실한지"를 표현
- 사전 지식 반영: α 값으로 도메인 지식 주입
- 자연스러운 정규화: 항상 확률 합이 1
- 베이지안 업데이트: 새 데이터로 쉽게 업데이트
요약
머신러닝에서 "여러 카테고리에 대한 확률 분포"를 다룰 때 사용