3. Generative models for discrete data

3.1. Introduction

특성 벡터 \mathbf{x}를 분류할 때 생성적 분류기 p(y = c | \mathbf{x}, \mathbf{\theta}) \propto p(\mathbf{x} | y = c, \mathbf{\theta}) p(y = c | \mathbf{\theta})를 사용할 수 있다. 핵심은 클래스 조건별 분포 p(\mathbf{x} | y = c, \mathbf{\theta}) 를 구하는 것이다.

3.2. Bayesian concept learning

개념적 학습은 어떤 원소가 어떤 집합에 속할지 속하지 않을지를 학습하는 퍼지 집합론이다. 숫자 게임으로 예를 들자. 지금까지 나온 숫자들을 보면서 다음에 나온 숫자가 해당 규칙성을 만족하는지를 귀납적으로 예측할 수 있는데, 이렇게 일반화 기울기를 통해 예측한 분포를 사후예측분포라 한다. 기계에게 이것을 어떻게 학습시키는가? 가설 공간을 둔 뒤 해당 데이터와 일관성을 갖는 버전 공간을 찾는다.

3.2.1. Likelihood

예측을 할 때는 개념의 확장으로부터 표본이 추출되었음을 보장함으로써 의심스러운 우연을 피하는 것이 중요하다. 이를 강한 샘플링 가정이라고 한다. 크기 원리에 따르면 표본수가 커질 수록 데이터에 대한 가능도 비율이 다른 가정에 비해 최대가 되는 가정 하나를 더 잘 고를 수 있게 된다(오컴의 면도날).

3.2.2. Prior

각각 가정의 확률에 대해서는 주관적인 사전 확률을 둔다. 이 때문에 베이지안 분석은 논란이 되고는 한다.

3.2.3. Posterior

사후 확률은 사전 확률과 가능도를 곱해 표준화한 것이다. 데이터가 충분하면 사후 확률은 하나의 개념으로 수렴한다. 즉, p(h | \mathcal{D}) \to \delta_{\hat{h}^{\mathrm{MAP}}} (h) 이 되는데, 여기서 \delta디랙 측도이다. 사후최대가능도가 최대가능도근사(MLE)로 수렴한다고도 말할 수 있다. 즉, 가설공간은 특정한 한도 내에서 규명 가능해지고, 데이터가 많아지면 데이터가 사전확률을 압도하는 것이다.

3.2.4. Posterior predictive distribution

사후확률은 우리의 세상에 대한 믿음의 상태이다. 샘플링에 따라 이 지식이 업데이트되면서 차후 샘플이 각각 클래스에 대해 분류될 확률을 p(\tilde{x} \in C | \mathcal{D}) = \sum_{h} p(y = 1 | \tilde{x}, h) p(h | \mathcal{D}) 로 구할 수 있는데, 이는 단지 가설 각각에 대해 구한 예측확률을 베이지안 가중평균한 것이다. 여기다 최대 사후 확률을 플러그인 근사하는 방법이 많이 사용된다.

사전분포-가능도-사후분포 / 사후예측분포.

3.2.5. A more complex prior

2개의 사전분포를 선형결합해서 사전분포를 정할 수 있다. p(h) = \pi_{0} p_{\mathrm{rules}}(h) + (1 - \pi_{0}) p_{\mathrm{interval}} (h)

3.3. The beta-binomial model

3.3.1. Likelihood

X_{i} \sim \mathrm{Ber}(\theta)X_{i} = 1이 앞면, X_{i} = 0은 뒷면을 나타내고 \theta는 앞면이 등장할 확률이라고 할 때, 동전 던지기 각각이 iid라면 가능도는 p(\mathcal{D} | \theta) = \theta^{N_{1}}(1 - \theta)^{N_{0}}이 된다. 앞면 횟수 N_1와 뒷면 횟수 N_0충족 통계량이 된다.

3.3.2. Prior

계산을 편하게 하기 위해 사전분포는 가능도와 켤레함수인 것을 사용한다. 베타-이항 모델에서는 p(\theta) \propto \theta^{\gamma_{1}} (1 - \theta)^{\gamma_{2}} 가 되며 사전분포의 매개변수는 초매개변수이다.

3.3.3. Posterior

사전분포와 가능도를 곱하면 다음의 사후분포를 얻는다.

p(\theta | \mathcal{D}) \propto \mathrm{Beta}(\theta | N_{1} + a, N_{0} + b)

이는 가능도를 구할 때 썼던 매개변수들인 앞/뒷면이 나타난 회수에 사전분포의 초매개변수를 더한 것이나 다름없으므로 초매개변수는 유사 카운트가 되고 사전분포의 세기는 등가 표본수라 불린다. 사후분포의 업데이트는 앞/뒷면이 나타난 회수에 따라 즉각적으로 업데이트되기 때문에 온라인 학습에 적합하다.

3.3.3.1 Posterior mean and mode

최대사후확률근사는 다음과 같다.

\hat{\theta}_{\mathrm{MAP}} = \frac{a + N_{1} - 1}{a + b + N - 2}

균일 사전분포를 사용하면 최대사후확률근사는 최대가능도근사, 즉 실측근사와 동일하게 된다.

\hat{\theta}_{\mathrm{MLE}} = \frac{N_{1}}{N}

사후평균은 다음과 같다.

\bar{\theta} = \frac{a + N_{1}}{a + b + N}

3.3.3.2. Posterior variance

사후분포의 분산은 다음과 같다. 이 때 \bar{\theta}는 최대가능도근사이다.

\mathrm{var}[\theta | \mathcal{D}] = \frac{(a + N_{1}) (b + N_{0}) }{(a + N_{1} + b + N_{0})^{2} (a + N_{1} + b + N_{0} + 1)^{2}} \approx \frac{N_{1}N_{0}}{NNN} = \frac{\hat{\theta}(1 - \hat{\theta})}{N}

에러 바, 즉 사후표준편차는 약 \sqrt{\frac{\hat{\theta}(1 - \hat{\theta})}{N} } 가 된다. 이는 표본크기의 제곱근에 비례해 감소한다.

3.3.4. Posterior predictive distribution

사후예측분포는 다음과 같다.

p(\tilde{x} = 1 | \mathcal{D}) = \int_{0}^{1} p(x = 1|\theta)p(\theta | \mathcal{D}) d \theta = \frac{a}{a+b}

이는 사후평균의 매개변수를 그대로 사용한 결과와 같다.

3.3.4.1. Overfitting and the black swan paradox

동전을 3개 던졌는데 앞면이 0개 나왔다고 하자. 이 때 최대가능도근사는 앞면이 발생할 확률이 0이라고 예측하게 되는데 이런 귀납에 의한 제로 카운트 문제 (또는 산포 데이터 문제, 검은 백조 문제) 를 해결하기 위해 균등 사전분포 a = b = 1을 둔다. 이를 라플라스의 계승법을 이용한 1 더하기 스무딩이라 한다.

3.3.4.2. Predicting the outcome of multiple future trials

1개가 아니라 M개의 연속된 미래 시행에 대한 결과를 예측하고자 할 때는 다음의 계산을 한다.

p(x | \mathcal{D}, M) \int_{0}^{1} \mathrm{Bin}(x | \theta, M) \mathrm{Beta}(\theta | a, b) d \theta = \binom{M}{x} \frac{B(x + a, M - x + b)}{B(a, b)}

이 때 기대값은 \frac{Ma}{a+b} , 분산은 \frac{Mab(a+b+M)}{(a+b)^{2}(a+b+1)} 가 된다.

베타 이항분포의 사후 예측분포 / 대입 근사분포.

3.4. The Dirichlet-multinomial model

K면체 주사위를 N번 던져서 \mathcal{D} = \{ x_{1}, \cdots, x_{N}\} 의 시행 데이터를 얻은 경우를 관찰한다.

3.4.1. Likelihood

$N_{k}$를 면 k가 나온 횟수라 할 때 가능도는 다음과 같다.

p(\mathcal{D} | \mathbf{\theta}) = \prod_{k=1}^{K} \theta_{k}^{N_{k}}

3.4.2. Prior

디리클레 분포는 켤레분포조건을 만족한다. 사전분포는 다음과 같다.

\mathrm{Dir}( \mathbf{\theta}| \mathbf{\alpha} ) = \frac{1}{B(\mathbf{\alpha})} \prod_{k=1}^{K} \theta_{k}^{\alpha_{k} - 1} \mathbf{1}_{\mathbf{\theta} \in S_{K}}

3.4.3. Posterior

사후분포는 다음과 같다.

p( \mathbf{\theta} | \mathcal{D}) \propto  p(\mathcal{D} | \mathbf{\theta})  p(\mathbf{\theta}) \propto  \prod_{k=1}^{K} \theta_{k}^{N_{k} + \alpha_{k} - 1} = \mathrm{Dir}(\mathbf{\theta} | \mathbf{\alpha} + \mathbf{N})

사후최대확률근사의 최빈값은 라그랑주 승수로 계산하며, 이는 \hat{\theta}_{k} =\frac{N_{k} + \alpha_{k} - 1}{N + \alpha_{0} - K} 이 된다. 균등사전분포를 적용하면 이는 \hat{\theta}_{k} = \frac{N_{k}}{N} 로 최대가능도근사와 같아진다.

3.4.4. Posterior predictive

1회 시행에 대한 사후예측분포는 다음과 같다.

p(X = j | \mathcal{D}) = \int p(X = j | \mathbf{\theta}) p(\mathbf{\theta} | \mathcal{D}) d \mathbf{\theta}

= \int p(X = j | \theta_{j}) [\int p(\mathbf{\theta}_{-j}, \theta_{j} | \mathcal{D}) d \mathbf{\theta}_{-j}] d \theta_{j}

= \int \theta_{j} p(\theta_{j} | \mathcal{D}) d \theta_{j} = \mathbb{E}[\theta_{j} | \mathcal{D}] = \frac{\alpha_{j} + N_{j}}{\alpha_{0} + N}

이 분포에서 제로 카운트 문제가 해결되었음을 살펴보라.

3.4.4.1. Worked example: language models using bag of words

이러한 디리클레 분포에 적용된 베이지언 스무딩 기법은 단어 꾸러미 모델로부터 도출되는 언어 모델링에 적용될 수 있다. 모델링 시에는 알 수 없는 단어 카테고리를 두고 관사 등을 제거한다.

3.5. Naive Bayes classifiers

이산적 특성을 가진 벡터를 분류할 때는 편의를 위해 조건부 독립을 가정한다. 이렇게 하면 클래스 조건 분포를 다음과 같이 1차원 분포의 곱으로 나타낼 수 있게 된다.

p(\mathbf{x} | y = c, \mathbf{\theta}) = \prod_{j=1}^{D} p (x_{j} | y = c, \mathbf{\theta}_{jc})

이를 나이브 베이스 분류기(NBC)라고 한다. 조건부 독립을 가정해야 쓸 수 있는 모델이지만 조건부 독립이 아닌 샘플에 대해서도 그럭저럭 잘 작동하는 경우가 많다. 이진 특성에 대해서는 다변수 베르누이 나이브 베이스라고 한다.

3.5.1. Model fitting

3.5.1.1. MLE for NBC

단일 데이터의 확률분포는 다음과 같다.

p(\mathbf{x}_{i}, y_{i} | \mathbf{\theta}) = p(y_{i} | \mathbf{\pi}) \prod_{j} p(x_{ij} | \mathbf{\theta}_{j}) =  \prod_{c} \pi_{c}^{\mathbf{1}_{y_{i} = c}} \prod_{j} \prod_{c} p(x_{ij} | \mathbf{\theta}_{jc})^{\mathbf{1}_{y_{i} = c}}

따라서 관측된 데이터셋의 가능도는 다음과 같다.

\log p(\mathcal{D} | \mathbf{\theta})  = \sum_{c=1}^{C} N_{c} \log \pi_{c} + \sum_{j=1}^{D} \sum_{c=1}^{C} \sum_{i : y_{i} = c} \log p(x_{ij} |  \mathbf{\theta}_{jc})

모델을 피팅하기 위한 인자는 \pi_{c}, \theta_{jc} 인데, 최대가능도근사를 구하면 각각 \hat{\pi}_{c} = \frac{N_{c}}{N}, \hat{\theta}_{jc} = \frac{N_{jc}}{N_{c}} 이다. 이는 시행 횟수로 쉽게 구할 수 있는 값이다.

나이브 베이스 분류기의 2개 클래스의 조건부 분포.

3.5.1.2. Bayesian naive Bayes

최대가능도 근사의 단점은 과적합에 취약하다는 것이다. 특정 단어가 포함된 샘플로만 학습을 시키면 그 단어가 포함되지 않은 샘플에는 모델을 아예 적용할 수 없게 된다. 이에 대처하기 위해서 다음의 사전분포를 적용한다.

p(\mathbf{\theta}) = p(\mathbf{\pi}) \prod_{j=1}^{D} \prod_{c=1}^{C} p(\theta_{jc})

이 때 \mathbf{\pi}에 대해서는 디리클레 사전분포를 쓰고 \theta_{jc}에 대해서는 베타 사전분포를 쓴다. 이를 적용하면 사후분포는 다음과 같다.

p(\mathbf{\theta} | \mathcal{D}) = p(\mathbf{\pi} | \mathcal{D}) \prod_{j=1}^{D} \prod_{c=1}^{C} p(\theta_{jc} | \mathcal{D})

p(\mathbf{\pi} | \mathcal{D}) = \mathrm{Dir} (\mathbf{N} + \mathbf{\alpha})

p(\theta_{jc} | \mathcal{D}) = \mathrm{Beta} (N_{c} - N_{jc} + \beta_{0}, N_{jc} + \beta_{1})

이는 그저 모델의 계수에 시행 횟수를 몇 번 더해준 것 뿐이다.

3.5.2. Using the model for prediction

사후예측분포는 다음과 같다.

p(y = c | \mathbf{x}, \mathcal{D}) \propto p(y = c | \mathcal{D}) \prod_{j=1}^{D} p(x_{j} | y = c, \mathcal{D})

= \int \mathrm{Cat}(y = c | \mathbf{\pi}) p(\mathbf{\pi} | \mathcal{D}) d \mathbf{\pi}  \prod_{j=1}^{D} [\int \mathrm{Ber}(x_{j} | y = c,\theta_{jc})p(\theta_{jc} |\mathcal{D}) d \theta_{jc}]

이 경우 사후예측분포는 사후평균을 대입함으로써 얻을 수 있으므로,

= \bar{\pi}_{c} \prod_{j=1}^{D} (\bar{\theta}_{jc})^{\mathbf{1}_{x_{j} = 1}}  (1 - \bar{\theta}_{jc})^{\mathbf{1}_{x_{j} = 0}}

이 된다. 여기서 사후평균 변수들은 \bar{\theta}_{jc} = \frac{N_{jc} + \beta_{1}}{N_{c} + \beta_{0} + \beta_{1}} , \bar{\pi}_{c} = \frac{N_{c} + \alpha_{c}}{N + \alpha_{0}} 가 된다.

사후분포를 \hat{\mathbf{\theta}} 로 최적화시켰다면 사후평균 변수 대신 최적화된 변수로 대입하면 사후예측분포가 된다.

3.5.3. The log-sum-exp trick.

p(\mathbf{x} | y=c)는 굉장히 작은 숫자일 수 있기 때문에 언더플로우가 날 수 있다. 이를 위해 로그를 취하고 합을 구한 뒤 지수를 씌우는 로그-합-지수 트릭을 사용한다. 이는 100% 정확한 값은 아니지만 언더플로우가 발생하지 않는 선에서 그럭저럭 정확한 값을 준다.

3.5.4. Feature selection using mutual information

과적합을 줄이고 런타임 시간을 줄이기 위해 특성 선택을 하기도 한다. 간단한 방법은 특성 각각의 관련성을 계산한 뒤 관련성이 적은 특성은 빼 버리는 것이다. 이를 랭킹, 필터링, 또는 스크리닝이라고 한다.

관련성을 측정하는 한 가지 방법은 특성과 클래스 라벨간 상호 정보를 측정하는 것이다.

I(X, Y) = \sum_{x_{j}}\sum_{y} p(x_{j}, y) \log \frac{p(x_{j}, y)}{p(x_{j})p(y)}

3.5.5. Classifying documents using bag of words

문서 분류는 적합한 응용 분야 중 하나이다. 간단한 접근법은 각각의 문서를 각각의 단어가 존재하는지를 기록하는 이진 벡터로 표현하는 것이다. 이 때 클래스 조건분포는 다음과 같다.

p(\mathbf{x}_{i} | y_{i} = c, \mathbf{\theta}) = \prod_{j=1}^{D} \mathrm{Ber}(x_{ij} | \theta_{jc})

=\prod_{j=1}^{D} \theta_{jc}^{\mathbf{1}_{x_{ij}}} (1 - \theta_{jc})^{\mathbf{1}_{1 - x_{ij}}}

이를 베르누이 곱 모델 또는 이진 독립 모델이라 한다.

단어의 등장 빈도를 살피지 않고 존재 여부만 조사하는 것은 별로 좋은 모델은 아니다. 그래서 각각 단어의 등장 빈도를 고려하는 다항 분포로 모델링하는 것이 더 바람직하다.

p(\mathbf{x}_{i} | y_{i} = c, \mathbf{\theta}) = \frac{N_{i}!}{\prod_{j=1}^{D} x_{ij}!} \prod_{j=1}^{D} \theta_{jc}^{x_{ij}}

하지만 이 모델링에도 단점이 있다. 단어의 간헐성을 고려하지 않는다는 점이다. 즉, 대부분의 단어는 어떤 문서에는 절대 등장하지 않으나 어떤 문서에서 한번 등장하기 시작하면 여러 번 등장하게 되는데, 이러한 특성을 잘 모델링하지 못한다. 이를 보정하기 위해서는 복합 다항 분포(DCM)을 쓴다.

p(\mathbf{x}_{i} | y_{i} = c, \mathbf{\alpha}) = \int \mathrm{Mul}(\mathbf{x}_{i} | N_{i}, \mathbf{\theta}_{c}) \mathrm{Dir} (\mathbf{\theta}_{c} | \mathbf{\alpha}_{c}) d \mathbf{\theta}_{c}

=\frac{N_{i}!}{\prod_{j=1}^{D} x_{ij}!} \frac{B(\mathbf{x}_{i} + \mathbf{\alpha}_{c})}{B(\mathbf{\alpha}_{c})}

이 모델이 간헐성 문제를 해결하는 이유는, 단어가 한 번 등장하게 된다면 해당 단어의 사후 등장확률이 업데이트되므로 그 단어가 또 등장할 확률을 높이게 되기 때문이다. 또한 해당 모델에서 각각 단어의 등장 확률은 조건부 독립적이므로 한 단어의 등장으로 인한 확률 보정이 다른 단어의 등장 확률에 부가 효과를 주지도 않는다.

요점 정리

  • 이산 데이터를 생성하는 모델이란?
  • 베이지안 러닝이란?
  • 베타-이항 모델 : 동전 던지기.
  • 디리클레-다항 모델 : 주사위 던지기.
  • 나이브 베이스 분류기 : 이산 특성을 가진 벡터들을 다중 클래스 분류하는 직관적인 방법.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중