상세 컨텐츠

본문 제목

[Advanced ML & DL Week 4] Latent Dirichlet Allocation

본문

작성자: 15기 조우영

Introduction

  • 목적: Classification, Novelty Detection, Summarization 등의 task를 수행하는데에 있어 필요한 통계적인 관계들은 보존하면서 말뭉치의 효율적인 연산을 가능하게 하는 short description(주로 topic)을 찾겠다.
  • 선행 연구들
    • tf-idf: tf와 idf를 이용하여 document term matrix내의 각 단어들마다 중요도를 가중치로 주는 방법
      • 모든 문서에서 등장하는 단어는 중요도(tf-idf값)가 낮게 책정되고, 특정 문서에서만 자주 등장하는 단어는 중요도(tf-idf값)가 높게 책정된다.
      • tf(d, t): 문서 d에서 단어 t의 등장 횟수
      • df(t): 단어 t가 등장한 문서의 수
      • idf(d, t): df(t)에 반비례하는 어떠한 수로 $\log{\frac{n}{1+df(t)}}$로 나타낸다. 
        • n: 총 문서의 개수
        • log를 취하는 이유: n이 커질수록 idf값이 기하급수적으로 커지는 것을 막기 위해서 log를 취한다. 희귀한 단어와 그렇지 않은 단어들의 가중치에 너무 큰 차이가 발생하는 것 또한 막아준다.
        • 분모에 1을 더해주는 이유: 특정 단어가 전체 문서에서 등장하지 않았을 때 분모가 0이 되는 것을 막아줌.
      • tf-idf = $\times{tf(d, t)}{idf(t)}$
      • 장점: document set 전체에 대한 의미 반영 가능
      • 단점: 차원 축소의 역할이 미미하고, document의 통계적 구조 등을 밝혀내는 데에는 적합하지 않다.
    • LSA: DTM, TDM, tf-idf등의 matrix에 singular value decomposition을 적용하여 차원을 축소하고 latent structure를 찾아내는 것

SVD -> Truncated SVD를 만드는 과정에서의 차원 축소

  • Reduced model의 축소된 T: t(# terms)  × k(# latent meanings(topics))
    • t개의 단어를 잠재의미를 이용하여 나타내고 있는 것
    • 즉, T의 각 행은 잠재의미를 표현하기 위한 수치화 된 각각의 단어 벡터
  • Reduced model의 축소된 D: d(# documents) x k(# latent meanings(topics)) 
    • d개의 문서를 잠재의미를 이용하여 나타내고 있는 것
    • 즉, D의 각 행은 잠재의미를 표현하기 위한 수치화 된 각각의 문서 벡터
  • 장점: 차원축소의 기능을 수행, synonymy(유의어 문제), polysemy(다의어 문제) 등에 대해서도 대처 가능, 경험적으로 다양한 방면에서 좋은 성능을 보임
  • 이론적 토대가 불완전함
  • LSA에 대한 보다 자세한 설명은 여기에서 확인할 수 있다.

pLSA: document와 term의 발생과 연관이 있는 숨겨진 컨셉 z(topic)이 있다고 가정하고 현재의 코퍼스가 발생할 확률 P(d, w)를 최대가 되게 하는 컨셉 z를 찾아내는 방법

  • Likelihood: complete document를 observe할 확률로, likelihood가 클 수록 그 확률이 크다. 따라서 likelihood를 최대가 되게 하는 것이 목적
  • 이 때 log likelihood function을 maximize해주는 closed form solution이 존재하지 않기에 아래의 EM알고리즘을 사용해준다. 
  •  

강필성 교수님 강의 https://www.youtube.com/watch?v=J1ri0EQnUOg&list=PLetSlH8YjIfVzHuSXtG4jAC2zbEAErXWm&index=13

 

  • 장점: pLSA에서는 확률값들을 matrix로 표현한 것이기 때문에, T, D의 모든 값들이 non-negative하고 T에 존재하는 모든 term vector와 D의 모든 document vector들은 합이 1이 된다. 이러한 접근 때문에, LSA에서 k의 값을 수동적으로 구해주어야했던 것과 달리 k의 optimal number도 통계적 방법으로 구할 수 있게 된다. 
  • 단점: 텍스트 단위의 probabilistic modeling으로서는 의미가 있지만 document level의 probabilistic model을 제시하지는 못한다. corpus의 size가 커지면 parameter의 수가 선형적으로 증가하기 때문에 overfitting에 취약하다. training set 밖에 있는 document에 대해서는 확률을 어떻게 assign할지가 불분명하다.

 

Notation and terminology

Word: Vocabulary {1,...,V}에 속하는 item, 해당 word인 경우에는 1, 아닌 경우에는 0의 값을 갖는 벡터(원 핫 벡터를 생각하면 이해가 쉬울 듯 하다)로 표현된다.

 

Document: N개 words의 sequence로 다음과 같이 표현된다.

w = $(w_1, w_2,...,w_N)$. 이때, $w_n$은 sequence에 속하는 n번째 word(in the form of vector as described above)이다.

 

Corpus: M개 documents의 collection으로 다음과 같이 표현된다.

D = $(\bf{w}_1, \bf{w}_2,...,\bf{w}_M)$

 

Corpus의 member에만 높은 확률을 할당하는 것을 넘어 다른 similar document들에도 높은 확률을 할당하는 어떤 probabilistic model을 찾고자 한다.

 

 

 

Latent Dirichlet Allocation

LDA는 generative probabilistic model이다. 

 

* Generative probabilistic model이란?? 

머신러닝은 2가지 모델로 분류되는데 바로 generative model과 discriminative model이다. 간단히만 설명하고 넘어가자면, generative model은 단순히 분류만을 하는 것이 아니라 확률분포를 구하는(가장 가까운 확률분포에 속하도록 분류된다) 모델이고, discriminative model은 decision boundary를 찾는데에만 집중하는 모델이다. 각각의 모델에 속하는 예를 보면 이해가 쉬울 것으로 생각된다. Naive Bayes Classifier는 generative model에 속하고, logistic regression, SVM등은 discrimnative model에 속한다. 

보다 자세한 설명은 아래 영상을 참고하면 좋을 듯 하다.

 

https://www.youtube.com/watch?v=6F4zxCN0Wtc&t=192s 

 

 

LDA는 corpus D에 다음과 같은 과정을 통해 문서 w를 생성한다고 가정한다.

  1. 단어의 수 N ~ Poisson($\zeta$) * 현실의 문서들은 길이가 제각각이기 때문에 1번 과정은 생략되는 경우가 많음
  2.  Topic에 관한 multinomial 분포 $\theta$ ~ Dir($\alpha$)
  3. 문서에 속하는 N개의 단어 $w_n$에 대해
    1. 토픽 $z_n$ ~ Multinomial($\theta$)를 뽑는다.
    2. 위에서 구한 토픽 $z_n$에 기반해 multinomial probability p($w_n|z_n, \beta$)에서부터 단어 $w_n$을 뽑는다.

 

위 과정들에 대해서 보다 자세하게 살펴보자.

 

2. Topic에 관한 multinomial 분포 $\theta$ ~ Dir($\alpha$)

: $\theta$는 여러 개의 토픽 분포를 합쳐 놓은 mixture model이다. Mixture model이란, 여러 하위 분포의 결합으로 생성된 큰 분포를 의미한다. LDA에서는 하나의 문서가 여러 개의 토픽으로 이루어져 있을 수 있다고 가정하기 때문에, 이것이 가능하다. 아래 그림을 보면 보다 이해가 수월할 것이다. 

https://www.youtube.com/watch?v=4AGjlcEQ6I8&t=820s 고려대 DSBA 연구실 유튜브 캡처본

이렇듯 mixture model을 Dirichlet 분포로부터 뽑아오는데, 여기서 Dirichlet 분포란 multinomial 분포들의 분포라고 생각하면 된다. 예를 들어 차원 k = 3인 Dirichlet 분포 즉, topic의 수가 3개인 경우, (0.5, 0.3, 0.2)와 같이 Topic A가 선택될 확률은 0.5, B가 선택될 확률은 0.3, C가 선택될 확률은 0.2인 multinomial 분포를 뽑을 수 있는 것이다. 

 

그렇다면 k차원의 Dirichlet 분포는 어떻게 표현될까?? k차원의 Dirichlet 분포는 (k-1) simplex에서 값을 가지는데 simplex란 확률분포가 표현되는 어떠한 공간이다. 

 

k = 3일 때, 즉 2 simplex는 삼각형의 모양을 가진다. 

$\alpha$ = 1일 때는, 분포들이 uniform하게 삼각형에 분포하고, 1보다 작은 경우, 꼭짓점 쪽에 밀집되는 경향을 보이며, 반대로 1보다 큰 경우에는 삼각형의 중심에 밀집되는 경향을 보인다. 

https://www.sumsar.net/blog/2015/04/the-non-parametric-bootstrap-as-a-bayesian-model/

 

아래와 같이 Dirichlet 분포에 존재하는 다양한 multinomial 분포 중 하나를 선택하여 topic에 대한 분포로 사용한다.

노란색 점은 document에 해당하고 각 꼭짓점들이 특정한 topic을 나타낸다. 

* 참고로, 아래 사진은 해당 유튜브에서 설명을 위해 sport, science, politics와 같이 이름 붙였을 뿐이며, 실제로 컴퓨터에서 저렇게 topic이 무엇인지 명명해주는 경우는 없고, 사람이 후에 결과를 보고 직접 해석해야한다. 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

3. 문서에 속하는 N개의 단어 $w_n$에 대해

  1. 토픽 $z_n$ ~ Multinomial($\theta$)를 뽑는다.

위에서 multinomail($\theta$)로 (0.5, 0.3, 0.2)가 뽑혔다고 가정했으니, 높은 확률로 토픽 $z_n$은 topic 1이 될 것이다. 

 

2. 위에서 구한 토픽 $z_n$에 기반해 multinomial probability p($w_n|z_n, \beta$)에서부터 단어 $w_n$을 뽑는다.

여기서 $\beta$란, k(# topics) x V(# words) matrix이다. 다음과 같이 topic별 단어의 출현 빈도를 통해 각 토픽들에 대한 단어의 분포를 multinomial 분포의 형태로 얻어낸다.

https://heeya-stupidbutstudying.tistory.com/entry/ML-%EC%9E%A0%EC%9E%AC-%EB%94%94%EB%A6%AC%ED%81%B4%EB%A0%88-%ED%95%A0%EB%8B%B9-%EA%B0%9C%EC%9A%94-LDALatent-Dirichlet-Allocation-1

 

각각의 점들은 특정한 topic을 의미하고 각 꼭짓점들은 word를 나타낸다. 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

 

후의 작업은 pLSA에서와 유사한데, 해당 문서를 만들어낼(혹은 가장 유사한) 확률이 가장 높은 topic을 고르는 것이다. 

LHS는 document가 나올 확률이다.

RHS의 첫번째는 파라미터 $\alpha$가 주어진 Dirichlet distribution에서 특정 topic mixture model을 뽑을 확률이다.

세번째는 뽑은 topic mixture를 통해 topic을 고르는 과정이다. 

두번째는 골라낸 topic을 통해 단어를 고르는 과정이다.  

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s
https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

다시 설명하면, 

1. 처음에는 dirichlet distribution을 통해 topic에 대한 multinomial 분포를 얻어낸다.

2. 각 topic에 대해 word들의 multinomial 분포를 얻어낸다. 

3. 처음에 뽑은 topic에 대한 multinomial 분포를 통해 topic들을 뽑는다.

4. 뽑아낸 topic 하나당 해당하는 multinomial에서 단어를 추출한다.

위의 과정을 통해 하나의 문서를 생성할 수 있다. 이를 반복해 corpus에 있는 문서의 수만큼 문서를 만들어낸다.

 

이 중 확률을 가장 크게하는 topic을 고른다. 

 

위에 몇 번 등장한 유튜브 속 사례를 살펴보자

 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

목적: ball, planet, galaxy, refrendum 4개의 단어로 이루어진 4개의 문서를 갖는 corpus가 있고, 이를 3개의 topic으로 구분하고자 하는 것

 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

 

이를 위해 우리는 2가지 성질을 따르면서 각각의 단어들에 토픽을 배정하려고 한다.

두 가지 성질이란,

1. 각각의 문서는 가능한 적은 topic으로 구성된다. 

2. 각각의 단어들 또한 가능한 적은 topic으로 구성된다. 

 

최초에는 다음과 같이 랜덤하게 단어들에 topic을 배정한다.  

 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

 

doc1의 word1인 ball에 대해 고려해보자.

이때는, ball이 Topic2에 배정되었었다는 것은 고려하지 않는다. 

우선 document1의 topic분포를 보면, topic1이 2개, 그리고 topic3가 2개이다.

그 후 전체 문서에 대해 topic들에 대한 ball의 분포를 보면, topic1에 0개, topic2에 1개, topic3에 3개로 구성되어있다.

이를 각각 곱해준다.

즉 topic 1은 2 x 0 = 0, topic2는 0 x 1 = 0, topic3 = 2 x 3으로 topic3가 가장 큰 값을 지니기 때문에 ball을 topic2에서 topic3로 재배정해준다. 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

이 때 랜덤하게 초기화한 결과에 특정 topic이 포함되지 않았다고 그 가능성 자체를 배제할 수는 없기 때문에 작은 임의의 값 $\alpha$와 $\beta$를 각각의 값에 더해준다.

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

위의 과정을 반복적으로 수행하면 아래와 같은 결과가 나온다.

document1은 topic3가 80%, topic1이 20%를, document2는 topic2가 80%, topic1이 20%를, document3는 topic1이 80%, topic3가 20%를, 마지막으로 document4는 topic1이 60%, topic2가 20%, topic3가 20%로 구성되어있다.

이제 각각의 topic이 무엇을 의미하는지를 보기 위해 각각의 토픽에 속하는 단어들을 살펴보자.

topic 1에는 planet과 galaxy로 구성되어있으므로 science, topic2는 referendum과 planet으로 구성되어있으므로 politics, topic3는 ball과 galaxy로 구성되어있으므로 sports라고 할 수 있다. 이는 인간의 개입이 요구되므로, 사람에 따라 각각의 Topic을 무엇으로 판단하는지 또한 다를 수 있다. 

다시 문서로 돌아와, 이제는 문서 1은 주로 스포츠에 관한, 문서2는 정치에 관한, 문서 3은 과학에 관한 문서 4는 과학이 주를 이루지만 정치와 스포츠에 대해서도 나오는 문서라는 것을 알 수 있다. 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1s

 

 

 

참고

https://www.youtube.com/watch?v=3mHy4OSyRf0

https://www.youtube.com/watch?v=4AGjlcEQ6I8&t=1260s 

https://www.youtube.com/watch?v=T05t-SqKArY&t=1448s 

https://www.youtube.com/watch?v=BaM1uiCpj_E&t=671s 

 

관련글 더보기

댓글 영역