앞 글에서는 베이즈 추론의 기본 개념과 이에 자주 사용되는 분포 중 하나인 이항분포, 베타분포에 대해서 살펴보았습니다. 이번에는 앞서 다룬 이항분포를 N개의 경우의 수로 확장한 다항분포(Multinomial Distribution)와 그 켤레 사전 분포인 디리클레 분포(Dirichlet Distribution)을 살펴보도록 하겠습니다.
가능도 |
켤레 사전 분포 |
||
---|---|---|---|
가짓수 = 2 |
Bernoulli A, B 둘 중 하나만 일어나는 사건 |
Binomial A, B가 여러 번 일어나는 사건 |
Beta |
가짓수 > 2 |
Categorical A, B, … Z 중 하나만 일어나는 사건 |
Multinomial A, B, … Z가 여러 번 일어나는 사건 |
Dirichlet |
이전 글에 있었던 표를 다시 가져와보았습니다.
이항분포를 구성하는 확률값은 1가지만 있으면 됩니다. 사건이 일어나거나 일어나지 않는 2가지 경우만 있기 때문에, 일어날 확률 p를 알면, 일어나지 않을 확률 q = 1-p로 간단히 계산해서 얻을 수 있기 때문입니다. 그리고 이항분포를 따르는 사건을 n회 반복시행했을때의 결과는 사건이 일어난 횟수 x와 일어나지 않은 횟수 n-x로 서술할 수 있겠죠.
발생확률이 p일때 N회 반복시 X번 사건이 발생할 확률은 이항분포를 따르는데, 이를 다음과 같이 표현하도록 하겠습니다.
다항분포의 경우, 발생가능한 사건이 k개라고 하면 총 k-1개의 확률값을 알아야 분포를 알 수 있습니다. 예를 들어 가위/바위/보 중 하나를 내를 사건이 있을때, 확률이 각각 가위: 0.25, 바위: 0.25이라고 하면, 보를 낼 확률은 1 - (0.25 + 0.25) = 0.5 라고 알 수 있겠죠.
또한 다항분포를 따르는 사건을 n회 반복시행한다고 하면, 각 경우가 일어난 횟수는 총 k개의 수치로 나타낼 수 있습니다. (이때 당연히 k개의 횟수의 합은 n이 되어야겠죠.)
표기의 간결성을 위해 벡터를 도입하도록 하겠습니다. 벡터 P = (p1, p2, p3, ... p_k) 는 각각의 경우가 일어날 확률을 나타냅니다. p1~p_k의 합은 당연히 1이 되겠죠. 벡터 X = (x1, x2, x3, ... x_k) 는 n회 반복했을때 각 경우가 일어난 횟수를 나타냅니다. x1~x_k의 합은 n이 됩니다. 즉 다항분포는 확률을 나타내는 벡터 P와 시행 결과를 나타내는 벡터 X를 가지고 표현할 수 있습니다.
앞 글에서 설명했듯이 베타분포는 2개의 하이퍼 파라미터(흔히 α, β로 씀)를 가집니다. 다시 정리하자면, 베타분포의 의미는 사건이 발생한 횟수가 α-1번, 발생하지 않은 횟수가 β-1번 관측되었을때, 사건이 발생할 확률이 p일 확률을 표현하는 분포라는 것이죠. 이를 수식으로 표현하자면 다음과 간결하게 적도록 하겠습니다.
디리클레 분포는 2가지 경우만을 다루는 베타분포를 k가지 경우를 다루도록 확장한 버전이라고 생각할 수 있습니다. 그렇기에 하이퍼 파라미터는 k개(α1, α2, ..., α_k라고 씀)가 됩니다. 디리클레 분포는 즉, k가지 경우가 발생할 수 있는 사건에서 경우1은 α1-1번, 경우2은 α2-1번, ... 경우k은 α_k-1번, 일어났을때, 각각 경우1이 일어날 확률이 p1, 경우2가 p2, ... 경우k가 p_k 일 확률을 표현합니다. 당연히 확률값 p1~p_k의 합은 1이겠죠. 이를 간결히 다음과 같이 적곤 합니다.
(이때 P = (p1, p2, ... p_k)의 확률값 벡터, α = (α1, α2, ... α_k) 의 하이퍼 파라미터 벡터입니다.)
앞 글에서 이항분포의 사건을 가지고 베이즈 추론을 진행한것마냥, 다항분포의 사건을 가지고 마찬가지로 베이즈 추론을 진행할 수 있습니다. 친구와 가위/바위/보를 하는 경우를 생각해봅시다. 친구가 무엇을 어떻게 낼지 전혀 모르지만, 가위/바위/보 결과를 관측해나가면서 우리의 추론을 정교하게 업데이트해 나가봅시다.
가위/바위/보는 3가지 경우가 나타나는 사건이므로 다항분포(카테고리 분포)에 속합니다. 따라서 관측 사건이 다항분포이므로, 사전확률을 다항분포의 켤레 분포인 디리클레 분포를 사용하면 손쉽게 사후확률 분포를 계산할 수 있겠죠.
처음 단계에서 친구가 가위/바위/보를 낼 확률이 (0.25, 0.25, 0.5)일 가능도는 다음과 같겠죠.
3번에 이르렀을 때, 친구가 가위/바위/보를 낼 확률이 (0.25, 0.25, 0.5)일 가능도를 계산하고자 하면 다음과 같이 됩니다.
5번에 이르렀을 때, 마찬가지로 (0.25, 0.25, 0.5)일 가능도를 계산하면 다음과 같이 되겠죠. (실제 계산방법은 생략했습니다. 컴퓨터가 알아서 해줄테니깐 계산식에 집착할 필요는 없다고 생각합니다.)
관측 과정을 통해 가능도가 바뀌어나가는 것을 확인할 수 있죠. 따라서 베이즈 추론과 디리클레 분포를 이용하면 친구가 가위/바위/보를 낼 확률값이 어느 정도인지 추정해볼 수 있습니다.
3차 디리클레 분포의 모양. 하이퍼 파라미터 값에 따라서 전체 구간에서 확률이 고르게 분포할 수도, 특정 구간에 모일수도 있음. 하이퍼 파라미터 값들이 1보다 작을 경우 가운데가 파이고 모서리가 솟아오르며, 반대로 하이퍼 파라미터 값들이 커질수록 가운데 부분이 뾰족하게 튀어오른다.
정리해봅시다. 디리클레 분포를 활용하면 여러 경우가 발생하는 사건을 관찰해나가며, 그 사건에서 각각의 경우가 발생할 확률의 추정치를 더 좋게 개선해 나갈 수 있다는 것입니다.
이 복잡한 통계 분포를 주제를 자동으로 찾는 토픽 모델링 과정에 사용할 생각을 한 사람이 있었습니다. David Blei과 Andrew Ng그리고 Michael I. Jordan 였는데요, 그들의 가정은 다음과 같았습니다.
LDA 모형의 판 표기법(Plate Notation)
흔히 위와 같은 그림으로 LDA 모형을 설명하곤 합니다. 회색으로 칠해진 W가 우리가 관측할수 있는 단어를 뜻하고, 상자 모양으로 둘러싸인것은 그것이 반복됨을 의미합니다. 각각의 문자의 의미는 다음과 같아요.
M: 문헌의 갯수
K: 주제의 갯수
N: 문헌에 속한 단어의 갯수
θ: 문헌의 주제 분포(주제 분포는 문헌마다 다를테니, 총 θ_1~θ_M까지 M개의 주제 분포가 있겠죠.)
φ: 주제의 단어 분포(단어 분포는 주제마다 다를테니, 총 φ_1~φ_K까지 K개의 단어 분포가 있을 겁니다.)
Z: 해당 단어가 속한 주제의 번호
앞서 이야기했듯이 문헌의 주제분포 θ는 디리클레 분포를 따를 것입니다. 이때의 초기 하이퍼 파라미터 값을 α라고 하면,이 α값은 문헌의 주제분포가 얼마나 밀집되어있는지 성긴지를 조절하는역할을 하게되겠죠. 마찬가지로 주제의 단어분포 φ도 디리클레 분포를 따르겠고, 이 때의 하이퍼 파라미터 β는 주제별로 단어들이 얼마나 모여있는지 그렇지 않은지를 결정하게 됩니다.
LDA를 실시할 때 사전에 결정해주어야할 값은 α, β, K값입니다. α은 대게 0.1, β는 대게 0.001로 잡습니다. 이 값이 1에 가까워질수록 문헌에 많은 주제가 포함되고, 주제에 많은 단어가 포함되게 되겠죠. 그리고 우리가 얻고자하는 값은 Z와 θ, φ입니다. θ, φ는 주어진 하이퍼 파라미터 α, β를 따르는 디리클레 분포라고 가정하고, 실제 문헌 내 단어 W를 관측해나가면서 단어마다 적절한 주제를 부여하여 Z값을 정합니다. 그리고 이 결과를 따라 θ, φ의 디리클레 분포를 업데이트하는 과정을 거치는거죠. 가능한 모든 경우 Z값 중에서 가장 가능도가 높은 Z값을 찾아내게 되면, 문헌 내의 각각의 단어들이 어디에 배정되어야하는지 추론할 수 있게되는거죠.
이 전체 과정은 베이즈 정리로 간략하게 정리할 수 있습니다.
일때
P(Z|W)를 최대로 하는 Z값을 찾는 것이 LDA의 목표
W는 실제 단어, Z는 그 단어가 배정된 주제 번호겠죠. 어떠한 단어도 관측되기 전의 P(Z)는 순수한 주제분포를 따르므로 결국 문헌의 주제분포인 θ와 연관됩니다. 그리고 P(W|Z)는 특정 주제에 대해서 해당 단어가 나타날 확률을 의미하므로, 주제별 단어분포와 연관되겠죠. P(W)는 Z와는 상관없는 상수이므로, P(Z|W)의 최댓값을 찾을때 고려하지 않아도 됩니다.
정신없이 이론만 계속 늘어놓았는데요, 다음 글에서는 실제로 P(Z|W)를 최대로하는 Z값을 찾는 방법 중 하나인 깁스샘플링을 설명하면서 실제로 LDA가 어떻게 문헌 내에서 주제를 묶어내는지 설명하도록 하겠습니다.
2018년 2월 13일 추가
마지막 부분에서 LDA로 넘어가는 부분의 설명이 좀 부족한듯하여, 추가로 포스팅을 업로드하였습니다.
[잠재 디리클레 할당 파헤치기] 2.5. 디리클레-다항분포와 마법의 폴리아 항아리
윗 글을 참고하시면, 디리클레 분포가 어떻게 토픽 모델링에 쓰이는지 좀더 쉽게 이해하실 수 있으실듯합니다.
http://www.4four.us/article/2010/11/latent-dirichlet-allocation-simply : LDA(Latent Dirichlet Allocation): 겉핥기
http://www.4four.us/article/2014/10/lda-parameter-estimation : LDA 파라미터 추정: 깁스 샘플링을 써서
[토픽 모델링] 확장된 LDA 기법들 - ATM, DMR (3) | 2017.07.01 |
---|---|
다변수 정규화 상호정보량과 연어 추출 (0) | 2017.06.17 |
[잠재 디리클레 할당 파헤치기] 3. 깁스 샘플링으로 파라미터 추정 (7) | 2017.04.20 |
[잠재 디리클레 할당 파헤치기] 1. 베이즈 추론 (9) | 2017.04.20 |
기존 문헌 간 유사도 계산방식의 한계와 TS-SS 공식 (2) | 2017.04.14 |
[네트워크 이론] 소셜 네트워크의 성질: 동류성(Assortative), 그리고 영향력(Influence)과 동질성(Homophily) (0) | 2017.04.05 |
댓글 영역