[Probability & Statistics] 디리클레 분포, Dirichlet Distribution

JAsmine_log·2025년 8월 9일
0

디리클레 분포, 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)f(x₁, x₂, ..., xₖ | α₁, α₂, ..., αₖ) = Γ(Σαᵢ) / Π Γ(αᵢ) × Π xᵢ^(αᵢ-1)
  • 변수

    • x,x,...,xx₁, x₂, ..., xₖ: 각 범주의 확률 (합이 1)
    • α,α,...,αα₁, α₂, ..., αₖ: 집중 모수 (concentration parameters)
  • 제약조건

    • Σx=1(모든확률의합은1)Σ xᵢ = 1 (모든 확률의 합은 1)
    • x>0(각확률은양수)xᵢ > 0 (각 확률은 양수)

표기법

  • Dir(α) 표기:
    XDir(α,α,...,α)X \sim Dir(α₁, α₂, ..., αₖ)
  • 3차원 예시 (가장 많이 쓰이는):
    f(x1,x2,x3α1,α2,α3)=Γ(α1+α2+α3)Γ(α1)Γ(α2)Γ(α3)i=13xiαi1f(x_1, x_2, x_3 | \alpha_1, \alpha_2, \alpha_3) = \frac{\Gamma(\alpha_1+\alpha_2+\alpha_3)}{\Gamma(\alpha_1)\Gamma(\alpha_2)\Gamma(\alpha_3)} \prod_{i=1}^3 x_i^{\alpha_i-1}

α 값의 의미

  • α가 클수록: 해당 범주에 더 많은 확률 집중
  • α = 1: 균등분포 (모든 조합이 똑같이 가능)
  • α < 1: 극단적인 값들 선호 (0 또는 1에 가까운 값)
  • 예시: Dir(1, 1, 1)은 삼각형 위에서 균등하게 분포하는 확률들을 생성

머신러닝에서의 활용

머신러닝에서 디리클레 분포는 매우 다양하게 활용

베이지안 다중클래스 분류

# 예: 3개 클래스 분류에서 클래스 확률의 사전분포
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()  # 예: [0.1, 0.3, 0.6]

유용성

  1. 불확실성 모델링: "얼마나 확실한지"를 표현
  2. 사전 지식 반영: α 값으로 도메인 지식 주입
  3. 자연스러운 정규화: 항상 확률 합이 1
  4. 베이지안 업데이트: 새 데이터로 쉽게 업데이트

요약

머신러닝에서 "여러 카테고리에 대한 확률 분포"를 다룰 때 사용

profile
Everyday Research & Development

0개의 댓글