본문 바로가기

Enginius/Machine Learning

Dirichlet Processes and Hierarchical Dirichlet Processes

Dirichlet Process는 생각보다 재밌는 개념이다. 확률 분포의 이름에 process가 붙었으니 random process라는 것은 다들 알 것이다. Random process는 random vector의 확장이라는 것 역시 다들 알 테니 임의의 함수에 대한 random process라는 것을 쉽게 유추할 수 있을 것이다. 여기까지는 random process에 익숙한 사람이라면 당연하다고 생각할 것이다. 여기서부터가 재밌다. 


[디리클레 프로세스의 속성 1]

 : Dirichlet process는 disrcrete probability measure의 distribution이다. 


Graphical model에 익숙하다면 한번쯤은 multinomial distribution의 conjugate prior로서의 Dirichlet distribution을 본 적이 있을 것이다. 하지만 이 정도까지만 이해했다면 Dirichlet process의 겉 표면만을 보고 있던 것이다. 이번 포스팅에서는 Dirichlet process에 대해서 알아보도록 하자. 


1. Dirichlet Distribution

먼저 Dirichlet distribution (DD)에 대해서 알아보도록 하자. 


[디리클레 분포의 정의]

: 디리클레 분포는 K 차원의 simplex에서 정의된 probability이고, 다음의 꼴을 갖는다. 

$$ (\pi_1, ... , \pi_K) \sim Dir(\alpha_1, ... , \alpha_K) $$

이고, 

$$ (\pi_1, ... , \pi_K) = \frac{\Gamma(\sum_k \alpha_k)}{\Pi_k \Gamma(\alpha_k)} \Pi_{k=1}^K \pi_k^{\alpha_k -1} $$

와 같다. 


사실 위의 분포는 문제가 조금 있다. K simplex 에서 정의는 사실 K 차원에서 보면 measure 0의 공간에 불과하기 때문에, 고작 이 정도 영역에서 정의된 확률 분포는 의미가 없다. 그래서 일반적으로 위와 같이 확률 분포를 적지만 '$\pi_K = 1 - \pi_1 - \cdots - \pi_{K-1}$'를 가정하고, K-1공간에서 정의를 한다. 


이러한 디리클레 분포의 경우 매우 중요한 속성이 하나 있다. 


[디리클레 분포의 속성 1]

 - Noramalized Gamma 확률 변수들은 Dirichlet distribution을 따른다. 

무슨 말인고 하니 

$$ z_i \mathop{\sim}^{iid}Gamma(\alpha_i, \beta), ~ \beta > 0, ~ i = 1, \cdots, k $$

와 같은 감마 확률 변수들이 있다면 다음과 같이 normalized 감마 확률 변수는

$$ \bar{z_i} = \frac{z_i}{\sum_{j=1}^K z_j} $$

다음과 같이 디리클레 분포를 따른다. 

$$ (\bar{z_1}, ... , \bar{z_K}) \sim Dir(\alpha_1, ..., \alpha_K) $$


감마 확률 변수는 다음과 같은 성질이 있다. 위와 같은 세팅에서 

$$ \sum_{i=1}^K  z_i \sim Gamma(\sum_{i=1}^K \alpha_i, \beta) $$

와 같이 나타난다. 즉 감마 확률 변수의 합은 파라미터의 합과 같다. 그리고 위에서 normalized 감마 확률 변수들이 디리클레 분포를 따른 다는 것을 보였기 때문에, 다음의 속성이 자연스래 도출된다. 


[디리클레 분포의 속성 2]

 - 다음과 같이 K개의 변수가 디리클레 분포를 따를 때, 이들의 파티션 역시 디리클레 분포를 따른다. 

즉, 다음과 같은 상황에서, K개의 변수를 m개의 파티션으로 만들면 ('$m < K$')

$$ (x_1, ..., x_K) \sim Dir(\alpha_1, ..., \alpha_K) $$

다음 성질이 유도된다. 

$$ (\sum_{i=1}^{n_1}x_i, ..., \sum_{i=n_{m-1}+1}^K x_i) = Dir(\sum_{i=1}^{n_1}\alpha_i, ... , \sum_{i=n_{m-1}+1}^K x_i ) $$


여튼 위와 같이 정의된 디리클레 분포를 3 simplex에 그려보면 아래와 같다. 

 DD의 파라미터로 되어 있는 것이 simple의 값에 n승으로 붙기 때문에 이 값이 1일 경우엔 simplex에서 같은 확률이고 (정의에 의해), 1보다 클 경우엔 가운데 확률이 몰리게 되고, 1보다 작을 경우엔 가장자리로 갈 수록 확률이 커지게 된다. 



2. Dirichlet Process

자 이제 이번 포스팅의 주 목적인 디리클레 프로세스에 대해서 생각해보자. 우리가 현재까지 아는 것은 K개의 확률 변수가 디리클레 분포를 따르면, 위에서 정의된 확률 분포를 따른다는 것이다. 이를 랜덤 프로세스로 확장시켜야 한다. 


직관적인 내용을 다루기 전에 formal definition에 대해서 알아보자. 


[디리클레 프로세스의 정의]

 : 디리클레 프로세스는 probability measure에 대한 분포이다. 

 : 디리클레 프로세스는 두 개의 파라미터를 갖는다. 

   1. Base distribution '$H$': 디리클레 프로세스의 평균 역할을 한다. 

   2. Strength parameter '$\alpha$': Variance의 역수 역할을 한다. 

 : 다음과 같이 쓴다. 

$$ G \sim DP(\alpha, H) $$

 이것의 의미는 '$\mathcal{X}$'라는 set이 주어졌을 때, 이것의 임의의 파티션 '$(A_1, ..., A_n)$'에 대해서 

$$ (G(A_1), ..., G(A_n)) \sim Dir(\alpha H(A_1), ... , \alpha H(A_n)) $$

이 만족함을 의미한다. 여기서부터 조금 헛갈리기 시작할 것이다. 나도 그랬다..


아래 그림을 보자. 

위의 그림을 set '$\mathcal{X}$'을 6개의 파티션으로 나눈 것이다. 이를 이용해서 디리클레 프로세스에 대해 직관적으로 생각을 해보면 다음과 같다. 


1. '$G \sim DP(\alpha, H(\cdot))$' 에서 '$G$'는 random probability measure이다. 쉽게 생각하면 셋 함수라고 생각할 수 있다. 임의의 set, 혹은 파티션 '$A_i$'가 주어졌을 때, '$\mathbb{R}$'로 mapping해 주는 함수이다. 

2. 디리클레 프로세스의 두 파라미터 중 '$\alpha$'는 단순히 양의 파라미터이다. 이 값의 의미는 뒤에서 더 자세히 설명하겠다. '$H(\cdot)$'은 보이는 것과 같이 함수이다. 그리고 이 역시 일종의 셋 함수이다. 

3. '$G$'라는 random probability measure가 디리클레 프로세스를 따른 다는 것은 '$\mathcal{X}$'를 6개의 파티션으로 나눴을 때, '$G(\cdot)$'을 통해서 얻어진 

$$(G(A_1), ..., G(A_6))$$

가 디리클레 분포를 따른 다는 것을 의미한다. 

4. 이 때 디리클래 분포의 파라미터는 몇 개일까? 6개이다. 그리고 이 6개의 파라미터는 디리클레 프로세스의 두 파라미터(하나는 양의 값, 하나는 함수)의 곱 '$\alpha H(\cdot)$'으로 구해진다. 즉, 

$$ (G(A_1, ..., G(A_6)) \sim Dir(\alpha H(A_1), ... , \alpha H(A_6)) $$

가 된다. 


디리클레 프로세스의 두 모멘텀을 구해보면 다음과 같다. 

$$ \mathbb{E}[G(A)] = H(A)$$

$$ \mathbb{V}[G(A)] = \frac{H(A) (1-H(A))}{\alpha + 1}$$


이제부터 조금 재미없는 (잘 모르는) 주제에 대해서 다뤄보자. 바로 디리클레 프로세스의 존재성이다. 이러한 존재성을 보이는 방법은 크게 두 가지 방법이 있다. 

1. Kolmogorov Consistency Theorem을 통해서 보인다. 

2. Stick breaking process 통해서 보인다. 

3. de Finneti's theorem

전자의 경우 먼저 디리클레 프로세스를 정의하고, 이것이 통계적(?)으로 존재함을 보이는 것이다. 후자의 경우 디리클레 프로세스가 유도되는 "상황"을 가정하고, "현상"에서부터 랜덤 프로세스를 유도한다. 당연히 전자가 먼저 발표되었고, 후자는 나중에 발표되었다. 세 번째 de Finneti's theorem은 어떤 랜덤 변수의 시퀀스가 "exchangable"하다면, 해당 확률 변수를 표현하는 일종의 prior가 존재함을 나타낸다고 한다. 


Kolomogorov는 현대 확률의 아버지라고 할 수 있는 분이라고 한다. 대학원 확률 수업에 김태정 교수님이 이분에 대한 극찬을 하셨던 기억이 난다. 여튼 Kolomogorov Consistency Theorem (KCT)는 랜덤 프로세스를 보일 때 임의의 랜덤 벡터에 대해서 존재함을 보이면 랜덤 함수(프로세스)가 존재한다는 것을 의미한다. 

Kolomogorov Consistency Theorem을 직관적으로 써보면 임의의 '$\mathbb{P}$'라는 Random Process가 존재함을 보이는 조건은, 해당 '$\mathbb{P}$'로 부터 '$\mathbb{P}(X_1, X_2, ..., X_n)$'을 구한 다음에, 이를 '$X_n$'에 대해서 marginalize한 '$\mathbb{P}(X_1, X_2, ..., X_{n-1})$'이 그냥 '$\mathbb{P}(\cdot)$'으로 구한 '$\mathbb{P}(X_1, X_2, ..., X_{n-1})$'과 같음을 보이는 것이다. 

$$ \int \mathbb{P}(X_1, ..., X_n) dX_n = \mathbb{P}(X_1, ..., X_{n-1}) $$


수업 시간에 배운 결론부터 말하면, Polya urn sequence의 marginal distribution의 de Finneti measure는 Dirichlet process라 한다. 

De Finneti Theorem의 직관적 (혹은 주관적) 해석은 다음과 같다. Exchangable한 관측치들이 있다면, 이들은 어떤 임의의 분포가 주어졌을 때 Conditionally Independent하다. 즉 이들을 발생시키는 일종의 Prior가 존재한다는 것과 같다.  


먼저 앞으로 자주 보이게 될 Polya urn sequence (공 뺐다넣기 프로세스)에 대해서 알아보자. 

1. 우리에겐 K-색이 다른 공들이 담긴 바구니가 하나 있다.

 - '$\alpha_i$': '$i$'번째 색의 공의 수 

 - '$\sum_{i=1}^K \alpha_i$' 는 전체 공의 수와 같다.  

2. 임의의 공을 하나 뽑고, 색을 확인한다. 그리고 현재 뽑은 색에 해당하는 공을 "하나 더" 바구니에 넣는다. (총 공의 수가 하나 늘어난다.)

3. '$X_i$'를 '$i$'번쨰 뽑은 공의 색이라고 하자. '$X_i \in \{ 1, 2, ..., K\}$'

 - 조건부 확률을 구해보자. 

 '$ \mathbb{P}(X_1 = j) = \frac{\alpha_j}{A} $', '$A = \sum_{i=1}^K \alpha_i $'

 $$ \mathbb{P}(X_2 = j | X_1 = x_1) = \frac{\alpha_j + \delta_{x_1}(j)}{A + 1}$$

  ...

 $$\mathbb{P}(X_{n+1} = j | X_1 = x_1, ...,  X_n = x_n) = \frac{\alpha_j + \sum_{i=1}^n \delta_{x_i}(j)}{A + n} $$


자 이제 우리가 조건부 확률을 아니까, joint 확률을 구할 수 있다. 여기서부턴 복잡하니까 생략을 하지만, 구해보면 해당 분포는 exchangable하고, de Finneti's theorem에 의해 de Finneti measure (prior)가 존재한다. 그리고 이를 구해보면 신기하게도 디리클레 분포가 나온다. 


이번엔 무한개의 색을 갖는 Polya urn sequence를 생각해보자. 유한개를 무한개로 확장시키는 것은 당연한 확장아닌까? ........ 그렇단다. 결론부터 말하면 이것이 디리클레 프로세스를 유도한다. 


이젠 Constructive definition에 대해서 생각해보자. 이 방법론은 Sethuraman의 Stick-breaking process (빼빼로 먹기 프로세스)라고도 불린다. 세팅은 다음과 같다. 

위의 그림은 다른 슬라이드에서 따온거라 '$\pi$'가 '$\theta$'를 의미한다. 

'$ \alpha = A \cdot G_0 $', '$A > 0, G_0$': probability measure

'$ \theta_1, \theta_2, ... \stackrel{iid}{\sim} Beta(1, A) $'

'$ Y_1, Y_2, ... \stackrel{iid}{\sim} G_0 $'

위와 같은 세팅 하에서 길이가 1인 빼빼로가 하나 있다고 생각을 하자. 이 때 Stick-breaking process는 다음과 같다. 

1. '$Beta(1, A)$'에서 0에서 1 사이 값인 '$\theta_1$'을 뽑는다. 

2. 길이가 1인 막대기의 '$\theta_1$' 만큼을 잘라 먹는다. 이제 '$1-\theta_1$'만큼 남아있다. 

3. '$Beta(1, A)$'에서 0에서 1 사이 값이 '$\theta_2$'를 뽑는다. 

4. 남은 빼뺴로의 '$\theta_2$'만큼을 잘라먹는다. 이제 '$1 - \theta_1 - (1-\theta_1)\theta_2$' 만큼 남아있다. 

...

이런 식으로 빼빼로를 계속 잘라먹는다. 이것이 Stick-breaking process이다. 

이러한 Stick-breacking process에서 Probability measure '$P$'를 다음과 같이 정의할 때 이것이 Dirichlet process를 따른다. 

$$ P_1 = \theta_1 $$

$$ P_2 = \theta_2 (1 - \theta_1) $$

$$ P_n = \theta_n (1 - \theta_{n-2}) \cdots (1-\theta_1) $$

즉, '$P_n$'은 '$n$'번째에서 잘라먹은 빼빼로의 길이를 나타내고, 

$$ \sum_{i = 1}^{\infty} P_i \delta_{Y_i} \sim DP(\alpha) $$

와 같이 된다고 한다. 이를 증명하는 것은 momentum matching을 통해서 하는데, 어려우므로 생략한다. 

Stick Breaking process의 직관적 의미에 대해서 살펴보자. 

- 우리의 base distribution '$G_0$'가 각 사람에 대한 호감도라고 하자. 

 - 그리고 나는 길이가 1짜리 빼빼로가 하나 있다. 

 - 실험을 시작한다. 

 -- 먼저 빼빼로를 자른다. 그리고 사람을 호감도에 비례해서 한 명 뽑는다. (호감도가 높을 수록 뽑힐 확률이 높아진다. 높은 순서대로가 아니다.)

 -- 뽑힌 사람한테 빼빼로를 준다. 

 -- 남은 빼빼로를 자른다. 그리고 남은 사람 중에 다시 호감도에 비례해서 뽑고, 해당 빼빼로를 준다. 

 --- 이를 계속 반복하면 모든 사람이 빼빼로를 받았을 것이다. 


이 때 각 사람이 받은 빼빼로의 양은 내가 그 사람에게 갖는 호감도이고, 이것이 '$G$'이다. 여기서 알 수 있는 것은 각 사람이 받을 빼빼로의 양은 호감도에 비례하지만 정확히 비례하는 것은 아니고, 나중에 받을 수록 훨씬 적은 빼빼로를 받을 것이다. (물론 빼빼로의 합은 1이니까 확률로 사용될 수 있다.)


마지막으로 Chinese Restaurant Process (중국집 프로세스)를 생각해보자. 중국집 프로세스라고 하겠다. 중국집에 무한히 많은 테이블이 있다고 가정하자. 그리고, 고객은 사람들이 더 많은 테이블에 앉으려고 한다. 물론 '$\alpha$'라는 확률로 새로운 테이블에 앉으려고 한다. 이를 수식으로 표현해보면, 

'$ X_n | X_1, ..., X_{n-1} $'은 '$\frac{num_{n-1}(X^*_k)}{n-1+\alpha}$'의 확률로 기존의 '$X^*_k$' 테이블에 앉으려고 하고, '$\frac{\alpha}{n-1+\alpha}$'의 확률로 새로운 테이블에 앉으려고 한다. 부익부빈익빈 프로세스라고도 부를 수 있겠다. 



[디리클레 프로세스]

디리클레 프로세스에 대해서 생각해보자. 

지금까지 우리가 알고 있는 것은 디리클레 프로세스는 Distribution over Distribution이다. 이걸 수학적으로 써보면 '$\mathcal{M}(\mathcal{X})$'를 '$\mathcal{X}$'라는 set에서 정의된 모든 random probability measure의 집학이라고 하자. 디리클레 프로세스는 '$\mathcal{M}(\mathcal{X})$'에서 정의된 확률분포이다. 무슨 말인지 이해가 안되는 것이 당연하다. 다음의 그림을 보자. 

위의 그림은 임의의 '$G_0$'라는 디리클레 프로세스의 메져가 정해졌을 때, 여기서 sample된 '$G$'라는 확률분포의 모습을 나타낸 것이다. 별개로 이 그림은 정말 잘 그린 것 같다.. 

직관적으로 봤을 때, '$G_0$'는 우리가 관심이 있는 파리미터의 공간인 '$mathcal{X}$'에 가중치를 준다고 볼 수 있다. 우리가 만약에 Infinite Gaussian Mixture Model을 다룬다고 했을 때, '$mathcal{X}$'는 평균과 분산이 모두 있는 공간이다. 예를 들어 '$d$' 차원 공간이라면 '$\mathcal{X} = \mathbb{R}^d \times \mathbb{R}^{d^2}$'으로 한다. 쉽게 생각하면 연속적인 공간에서 평균과 분산의 Prior를 주는 것과 같다. 


위의 그림에서 알 수 있는 것은 '$G_0$'는 연속 분포이지만, 여기서 draw된 '$G$' 분포는 discrete하다. 그리고 바로 이 discreteness가 mixture모델의 기반이 된다. 무슨 말인고 하니 '$DP(\alpha, G_0)$'에서 나오는 분포는 discrete이기 때문에 겹칠 확률이 있고, 겹쳐진 값들을 하나의 cluster (혹은 mixture)로 보겠다는 것이다. 




3. Dirichlet Process Mixtures


위의 그림은 가장 간단한(?) Finite Mixture Model을 도식화한 것이다. 여기서 '$pi$'는 디리클레 분포 (프로세스가 아니다)를 따르고, 데이터의 class에 해당하는 '$c_n$'은 K 멀티노미알을 따른다. 


위의 Finite Mixture Model의 K를 무한대로 보내면 Inifinte Mixture Model이 된다! 간단하지 않는가? 사실 나도 지금까지는 이것을 Dirichlet Mixture Model과 같다고 보았지만 사실 그렇지 않다. 


위의 그림이 바로 Dirichlet Mixture Model이다. 몬가 조금 다르다. 일단은 클래스 라벨을 의미하는 멀티노미알 확률 변수가 없다. 그리고 어떤 '$eta_n$'이 존재한다. 가우시안 믹스쳐 모델에서는 이 '$\eta$'는 평균과 분산을 의미한다. 이것이 Mixture Model이 되는 것은 디리클레 프로세스로부터 얻어진 분포는 Discrete Probability이기 때문이다. (정확히는 with probability one). 그리고 Discrete probability이기 때문에 "겹칠 수" 있고, 겹쳐진 것들을 하나의 cluster로 보게된다. 

 이를 이해하기 쉽게 설명하려면, 중국집 프로세스 믹스쳐를 생각할 수 있다. 

위의 그림과 같이 중국집의 한 테이블이 특정 평균과 분산을 갖는 clsuter라고 보고, 새로운 고객이 왔을 때 앞서 설명한 중국집 프로세스에 따라 테이블에 앉는다고 (혹은 속한다고) 생각하면 된다. 


위와 같은 디리클레 믹스쳐 모델은 MCMC를 통해서 풀 수 있다. 다시 말해서 우리가 관심있는 파라미터인 '$(\eta_1, \eta_2, ..., \eta_n)$'을 다음 Posterior에서 뽑는 것이다. 

$$ P(\eta_1, \eta_2, ..., \eta_n | y_1, y_2, ..., y_n)$$

물론 이러한 '$\eta$'들은 디리클레 프로세스에서 나온 Random probability measure에서 나왔기 때문에 '겹칠' 것이다. 즉 중복되는 것이 있을 것이고, 여러번 말하지만 중복되는 것들은 같은 cluster로 볼 것이다. 자세한 것은 Neal (2000)의 "Markov Chain Sampling Methods for Dirichlet Process Mixture Model"의 논문을 참고하도록 하자. 


 Dirichlet Process Mixutre Model과 Infinite Mixture Model은 근본적으로 같은 현상을 기술하고 있다. 구현을 할 때는 후자를 통해 구현하는 것이 더 빨리 converge한다고 한다. 




4. Hierarchical Dirichlet Process


드디어 마지막 섹션인 Hierarchical Dirichlet Process에 대해서 알아보자. 사실 디리클레 믹스쳐 모델 자체가 일종의 Hierarchical Model이기 때문에 무엇이 더 계층적이냐고 물어볼 수도 있겠지만, 그 답을 차차 알아가도록 하자. 

Grouped Clustering Problems 문제를 다루도록 하자. 예를 들어서 우리에게 주어진 문제가 여러 문서들의 "속성"을 알아내는 것이라고 하자. 

위의 그림과 같이 왼쪽의 두 문서가 있을 때, 해당 문서들의 속성을 오른쪽과 같이 표현하는 것이 목표이다. 즉 비슷한 토픽들이 여러 문서들 사이에 공유되는 상황이다. 용어를 명확하게 하고 넘어가자. 

문서 (Document): 단어들의 모음

토픽 (Topic): 문서의 속성, 위의 그림에서 Auto industry, Market economy 등이 Topic이다. 

우리의 상황은 토픽이 몇 개인지 모른다. 토픽의 예로는 다음과 같은 것들이 있을 수 있다. 


논문의 속성 (컴퓨터, 기계학습, 통계)

인종 (유럽, 아시아, 아프리카)

이런 상황에서 디리클레 프로세스의 믹스쳐를 생각하도록 하자. 우리는 앞서 하나의 디리클레 프로세스는 파라미터 공간에서 Prior 역할을 한다고 했었다. 그렇다면 만약에 여러개의 디리클레 프로세스가 있다면, 여러개의 파라미터 공간을 설정할 수 있을 것이다. 이에 가장 먼저 생각할 수 있는 것은 아래와 같은 모델이다. 

위의 모델에서 '$G_1$'과 '$G_2$'는 서로 다른 디리클레 프로세스를 의미한다. 하지만 여기서 문제가 하나 있다. 바로 '$H$'이다. 일반적인 '$H$'로는 '$G_i$'들을 믹스쳐로 만들 수가 없다. 쉽게 생각해서 가우시안에서 두 개를 뽑았을 때 겹칠 확률이 0인 것과 같다. 이런 것을 앞서 어떻게 해결했는가? 바로 디리클레 분포를 통해서이다. 다시 한번 강조하지만, 

디리클레 프로세스가 만드는 확률 분포는 Discrete with Probablity 1 이다. 


그래서 이를 이용하면 다음과 같은 모델을 만들 수 있다. 

이렇게 할 경우 '$G_0$'가 디리클레 프로세스이므로 '$G_1$'과 '$G_2$'가 '겹칠 수 있게' 된다. 다시 말해서 Mixture Model이 되는 것이다. 이를 식으로 써보면 다음과 같다. 

$$ G_0 \sim DP(\alpha_0, H) $$

$$ G_1, G_2 | G_0 \sim DP(\alpha, G_0) $$

그림으로 그려보면 위와 같은데, 이렇게 할 경우 '$G_1$'과 '$G_2$' 사이에 cluster를 공유하게 된다. 쉽게 말해 겹치는 것이 있다는 것이다. 이것이 Hierachical Dirichlet Process (HDP)이다. 앞서 설명했던 공 뺐다 넣기 프로세스, 빼빼로 먹기 프로세스, 중국집 프로세스를 이용해서 다 설명할 수 있지만 이 중에 이해하기 쉬운 Chinese Restaurant Franchise (중국집 프랜차이즈 프로세스)를 통해서 설명해보겠다. 


먼저 다음과 같은 상황을 가정하자. 

$$ G_0 \sim DP(\gamma, H) $$

$$ G_1, G_2 | G_0 ~ DP(\alpha, G_0) $$

위에서 봐왔던 것과 동일하다. 이럴 때 다음과 같은 그림으로 표현될 수 있다. 

일단 맨 위의 중국집이 '$G_0$'를 표현한 것이다. 그리고 아래 두 중국집들이 '$G_1$'과 '$G_2$'이다. 사람들이 각각 두 중국집을 모두 방문한다고 하자. 그러면 앞서 설명한 중국집 프로세스에 의해 각자 알아서 원하는 테이블에 앉을 것이다. 그러면 위에 있는 중국집에서는 사람을 테이블에 앉히는 것이 아니라 사람들이 앉는 테이블들을 clustering하게 된다. 앞서 테이블들이 하나의 클러스를 의미한다고 했는데, 이것이 위의 문서 분류에선 토픽으로 볼 수 있을 것이다.