일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ed boarding
- queueing theory
- m/m/s
- pre-trained llm
- 불규칙적 샘플링
- pytorch
- Time Series
- 분산 학습
- timellm
- timesfm
- ERD
- 패혈증 관련 급성 호흡곤란 증후군
- Transformer
- 리뷰
- nccl 업그레이드
- 대기행렬
- multi gpu
- operation management
- nccl 설치
- GaN
- 딥러닝
- moirai
- 의료정보
- 토픽모델링
- NTMs
- first pg on this rank that detected no heartbeat of its watchdog.
- nccl 업데이트
- irregularly sampled time series
- length of stay
- gru-d
- Today
- Total
데알못정을
Dirichlet Distribution & LDA(Latent Dirichlet Allocation) 본문
1) Beta Distribution & Dirichlet Distribution
- Beta distribution: 두 매개변수 $\alpha$,$\beta$에 따라 [0,1] 구간에서 정의되는 연속 확률분포이다.
베타분포는 확률에 대한 확률분포로써 해석된다. 예를 들어 동전을 던졌을 때 앞면이 8번, 뒷면이 2번 나왔다면, 동전을 던졌을 때 앞면이 나올 확률이 0.5보다 클 확률은 다음과 같이 계산된다.
- Dirichlet distribution: 디리클레 분포는 베타분포의 확장판이라고 볼 수 있다. 베타분포는 0과 1 사이의 값을 가지는 단일 확률 변수의 분포이고, 디리클레 분포는 0과 1 사이의 값을 가지는 다변수의 확률 변수의 분포이다.
2) LDA(Latent Dirichlet Allocation)
NLP의 맥락에서 LDA는 LSA처럼 하나의 주제 모형을 산출한다. LDA가 LSA와 다른 점은 단어 빈도들이 디리클레 분포를 따른다고 가정한다는 점이다. LSA의 선형 모형 보다 LDA의 디리클레 분포가 단어 빈도들의 분포를 좀 더 정확하게 반영한다. LDA는 각 문서를 임의의 개수의 주제들의 혼합으로 간주한다. 주제 개수는 LDA 모형을 훈련하기 전에 미리 정하고, 각 주제를 단어 출현 횟수(용어 빈도)들의 분포로 표현할 수 있다고 가정한다. 한 주제가 어떤 한 문서의 실제 의미에 해당할 ‘확률’과 한 단어가 어떤 한 주제에 속할 ‘확률’이 디리클레 확률분포(사전 확률분포)를 따른다고 가정한다.
그림 1와 같이 색깔로 칠해진 단어들은 미리 설정한 주제(Topic)으로부터 나왔고, 그림 1에서 보이는 한 문서는 여러 주제가 혼합되어 있는 상태로 볼 수 있다.
LDA의 관점을 직관적으로 해석하면 각각의 토픽은 단어들의 분포로 볼 수 있으며, 각각의 문서는 각각의 토픽의 혼합이다. 또 각각의 단어는 그러한 토픽들에서 추출된다. 만약 100개의 단어로 이루어진 한 문서가 세 가지의 토픽(Topic A, Topic B, Topic C)으로 이루어져 있고 이 토픽들이 문서에 30%, 50%, 20%의 비율로 들어있을 때 이 문서에는 30개 단어로 이루어진 Topic A, 50개 단어로 이루어진 Topic B, 20개 단어로 이루어진 Topic C가 들어있다고 볼 수 있다. 또 각 단어는 각 토픽에서부터 샘플링될 수 있어서 이를 반복 수행하면 문서가 만들어진다고 본다. 하지만 실제로 우리는 문서만을 가지고 있기 때문에 토픽과 토픽을 이루는 단어들의 분포는 은닉 변수가 된다. 따라서 LDA를 추론하는 과정은 토픽에 대해 단어들의 분포는 무엇인지, 각각의 문서에 대해 토픽들의 분포는 무엇인지 문서들의 단어들은 어느 토픽으로부터 추출되었는지를 밝히는 것이다.
LDA에서 문서가 생성되는 관점을 그림 3이 표현한다. 여기서 네모로 그려져 있는 것은 반복을 의미한다. 따라서 $D$라는 것은 문서이며 그림은 문서마다 Plate(네모박스) 안에 있는 과정을 반복한다는 의미이다. 또 $N$은 단어이며 단어마다 Plate 안에 있는 과정을 반복한다는 의미이다. 잘 보면 Plate $D$안의 Plate $N$의 의미는 문서 반복을 하는데, 그 문서 안에서 단어마다 과정이 반복된다는 의미이다. $K$는 토픽의 수이다. LDA의 가정은 하이퍼파라미터로 구현이 되며 $\alpha$와 $\beta$가 그 역할을 한다. $\alpha$와 $\beta$는 모두 디리클레 분포를 따른다. 궁극적으로 LDA에서 찾아야하는 것은 $\theta_d$, $z_{d,n}$, $w_{d,n}$, $\varphi_k$ 이다.
$\theta_d$는 각각의 문서별 토픽들이 어떠한 비중으로 섞여 있는지를 의미한다.
반면에 $\varphi_k$는 토픽들에 대한 단어들의 분포이다. 즉, 각 토픽이 어떠한 단어들로 이루어져 있는지를 의미한다.
$z_{d,n}$ 는 $d$번째 문서에서 $n$번째 단어는 어느 토픽에서부터 추출되었는지를 의미한다.
$w_{d,n}$는 우리가 관측하고 있는 것이며, 실제 $d$번째 문서의 $n$번째 단어가 무엇인지를 의미한다.
그림 3에서 Node는 모두 확률 변수이며, Edge는 모두 연결 방향에만 영향을 준다. 이러한 관계를 모두 결합확률 분포로 표현하면 아래와 같다.(각각의 단어들은 서로 독립적으로 생성된다는 것을 가정함)
$$p(\varphi_{1:K}, \theta_{1:D}, z_{1:D}, w_{1:D})=\prod_{i=1}^{K}p(\varphi_i|\beta)\prod_{d=1}^{D}p(\theta_d|\alpha)(\prod_{n=1}^{N}p(z_{d,n})(p(w_{d,n}|\varphi_{1:K},z_{d,n})))$$
3) LDA inference(Gibbs Sampling)
LDA inference는 관측치 $w_{d,n}$을 가지고 잠재변수를 역으로 추정하는 과정이다. 구해야하는 것은 $p(z, \varphi, \theta|w)$인데, 이를 계산하려면 반드시 $p(w)$를 구해야 한다. 이때 $p(w)$는 잠재변수 $z, \varphi, \theta$의 모든 경우의 수를 고려한 각 단어(w)의 등장확률을 가리킨다. 그러나 $z, \varphi, \theta$는 우리가 직접 관찰하는 것이 불가능할뿐더러, $p(w)$를 구할 때 $z, \varphi, \theta$의 모든 경우의 수를 감안해야하기 때문에, 결과적으로 $p(w)$를 단번에 계산하는 것이 어렵다. 이 때문에 깁스 샘플링 같은 기법을 사용한다.
깁스 샘플링은 두 개 이상의 확률 변수의 결합확률분포로부터 일련의 표본을 생성하는 확률적 알고리즘이다. 결합확률분포나 그에 관련된 확률 계산을 근사하기 위해 널리 사용되고 있다.(깁스샘플링에 관한 자세한 내용은 여기를 참고하면 좋습니다.)
LDA에서는 나머지 변수는 고정시킨 채 한 변수만을 변화시키되, 불필요한 일부 변수를 샘플링에서 제외하는 ‘collapsed gibbs sampling’ 기법을 쓴다. LDA에서는 $p(z, \varphi, \theta|w)$를 구할 때 $\varphi, \theta$를 계산에서 생략한다. 깁스 샘플링으로 구한 $z$로 계산할 수가 있기 때문이다. LDA의 깁스 샘플링 과정을 나타낸 수식은 다음과 같다.
$$p(z_{i}=j|z_{-i},w)$$
식의 의미는 말뭉치가 주어졌기 때문에 w는 이미 알고 있는 값이며 z는 각 단어가 어떤 토픽에 할당되어 있는지를 나타내는 변수이다.$z$는 $i$번째 단어의 토픽이 $j$일 확률을 뜻한다.
그림 4에서 $z_{i}$는 ‘record’라는 단어가 속하는 토픽으로, 현재 깁스 샘플링을 위해 토픽 정보가 지워진 상태이다. 이 상태에서 나머지 단어에 대한 토픽 정보는 그대로 사용한다. 이를 의미하는 것이 $z_{-i}$이다. 이 상태에서 ‘record’라는 단어가 어떤 토픽에 속할지 할당하는 것이 LDA의 깁스 샘플링 과정이다. 이런 식으로 문서 내 모든 단어와 말뭉치 내 모든 문서에 대해 깁스 샘플링을 반복하면 어느 순간부터는 모든 단어에 대한 토픽 할당 정보가 수렴하게 된다. 이러한 과정을 다음 수식과 같이 간단히 정리할 수 있다.
표기 | 내용 |
$$n_{d,k}$$ | K번째 토픽이 할당된 d번째 문서의 단어 빈도 |
$$v_{k,w_{d,n}}$$ | 전체 말뭉치에서 번째 토픽에 할당된 단어 의 빈도 |
$$w_{d,n}$$ | d 번째 문서에 n 번째로 등장한 단어 |
$$\alpha$$ | 문서의 토픽 분포 생성하기 위한 디리클레 분포 파라미터 |
$$\beta$$ | 토픽의 단어 분포 생성을 위한 디리클레 분포 파라미터 |
$$K$$ | 사용자가 지정하는 토픽 수 |
$$V$$ | 말뭉치에 등장하는 전체 단어 수 |
$$A$$ | d번째 문서가 K번째 토픽과 맺고 있는 연관성 척도 |
$$B$$ |
d번째 문서의 n번째 단어 ($w_{d,n}$)가 K번째 토픽과 맺고 있는 연관성 척도 |
일단 먼저 토픽과 단어 사이의 관계를 무작위로 할당해 놓고 작업을 시작한다. 이 확률값은 실제 문서에서 각 토픽이 얼마만큼 할당되었는지($\theta_d$의 의미, A에 해당), 각 단어들이 각 토픽에 얼만큼 할당되었는지($\varphi_k$의 의미, B에 해당)에 영향을 받는다.
만약 특정 단어가 어떠한 토픽에도 할당되지 않을 경우에도 위의 확률값을 구할 수 있다. 그 이유는 하이퍼파라미터의 영향이 있기 때문이다. 즉, $\alpha$, $\beta$의 값을 통해 단어가 특정 토픽에 할당될 확률을 어느 정도 고려해줄 수 있다.(알파가 클 수록 토픽의 분포는 서로 비슷해짐)
4. Summary
1) pLSA는 이미 학습한 문서를 기준으로 토픽을 추론하기 때문에 새로운 문서에 대해 적합하지 않다. 하지만 LDA는 단어로부터 토픽이 추출되고, 토픽의 분포로 부터 문서가 생성된다는 독특한 가정(이는 디리클레 분포를 통해 구현)에 기반한 모델이기 때문에 새로운 문서에 대해서도 잘 수행할 수 있다. 또 이러한 가정의 영향으로 다의어 및 동음이의어도 고려할 수 있다.
2) LDA는 각 단어가 독립적이라고 가정, 즉 단어의 순서를 고려하지 않는다.(단지 i 번째 단어 주위의 토픽 할당 정보만을 활용하기 때문에)
참고문헌
[1]“Topic Modeling, LDA” ratsgo’s blog.last modified Jun 01, 2017,accessed Nov 21, 2022, https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/06/01/LDA/
'Topic Modeling' 카테고리의 다른 글
pLSA(Probabilistic Latent Semantic Analysis) (1) | 2022.12.19 |
---|---|
SVD(singular value decomposition) & LSA(Latent Semantic Analysis) (0) | 2022.12.19 |
Cosine Similarity & TF-IDF (0) | 2022.12.19 |
Topic Modeling 이란? (0) | 2022.12.19 |