LDA 정리

데이터 여행자·2021년 4월 8일
0
post-custom-banner

LDA(잠재 디리클레 할당)

LDA(Latent Dirichlet Allocation)은 토픽 모델링의 대표적인 알고리즘이다. LDA는 문서들은 토픽들의 혼합으로 구성되어져 있으며, 토픽들은 확률 분포에 기반하여 단어들을 생성한다고 가정한다. 데이터가 주어지면 LDA는 문서가 생성되던 과정을 역추적한다.

LDA 모델링 : https://lettier.com/projects/lda-topic-modeling/

LDA는 각 문서의 토픽 분포와 각 토픽 내의 단어 분포를 추정한다.

<각 문서의 토픽 분포>
문서1 : 토픽 A 100%
문서2 : 토픽 B 100%
문서3 : 토픽 B 60%, 토픽 A 40%

<각 토픽의 단어 분포>
토픽A : 사과 20%, 바나나 40%, 먹어요 40%, 귀여운 0%, 강아지 0%, 깜찍하고 0%, 좋아요 0%
토픽B : 사과 0%, 바나나 0%, 먹어요 0%, 귀여운 33%, 강아지 33%, 깜찍하고 16%, 좋아요 16%

LDA는 토픽의 제목을 정해주지 않지만 위의 결과로부터 두 개의 토픽이 각각 과일과 강아지에 대한 토픽임을 판단할 수 있다.

토픽의 개수는 하이퍼파라미터. LDA에는 전퍼리 과정을 거친 DTM이 들어온다. 각 문서의 토픽 분포와 각 토픽의 단어 분포를 통해 사옹자는 토픽을 판단할 수 있다.

LDA의 가정

LDA는 문서의 집합에서 어떤 토픽이 존재하는지 알아내는 알고리즘이다. LDA는 BoW의 행렬 DTM 또는 TF-IDF 행렬을 입력으로 하며, 이로부터 LDA가 단어의 순서에는 신경쓰지 않음을 알 수 있다. LDA는 각각의 문서가 아래의 과정을 거쳐 작성되었다고 가정한다.

1) 문서에 사용할 단어의 개수 N을 정한다. (여기서는 5라 가정)
2) 문서에 사용할 토픽의 혼합을 확률 분포에 기반해 결정한다.(토픽이 2개면 강아지 토픽을 60%, 과일 토픽을 40%로 선택)
3) 문서에 사용할 각 단어를 아래와 같이 정한다.
3-1) 토픽 분포에서 토픽 T를 확률적으로 고른다.(60% 확률로 강아지 토픽을 선택하고 40%의 확률로 과일 토픽을 선택할 수 있다.)
3-2) 선택한 토픽 T에서 단어의 출현 확률 분포에 기반해 문서에 사용할 단어를 고른다.(강아지 토픽을 선택하면 33%의 확률(??왜 이렇게 나와??)로 단어 강아지를 선택) 이 과정을 반복하며 문서를 완성한다.

이 과정을 통해 문서가 작성되었다는 가정 하에 LDA는 토픽을 뽑아내려고 위 과정을 역으로 추적하는 역공학(reverse engneering)을 수행한다.

LDA 수행과정

  1. 사용자는 알고리즘에게 토픽의 개수 k(하이퍼파라미터)를 알려준다. LDA는 토픽의 개수를 입력받으면 k개의 토픽이 M개의 전체 문서에 걸쳐 분포되어 있다고 가정한다.
  2. 모든 단어를 k개 중 하나의 토픽에 랜덤으로 할당한다.
    이 작업이 끝나면 각 문서는 토픽을 가지고 토픽은 단어 분포를 가진 상태다. 그러나 각 단어가 랜덤으로 토픽에 할당되었으므로 이 결과는 전부 틀리다.
  3. 모든 문서의 모든 단어에 대해 아래를 반복 진행한다. (iterative)
    3-1. 어떤 문서의 각 단어 w는 자신이 잘못된 토픽에 할당되어 있지만 다른 단어는 전부 올바른 토픽에 할당된 상태라고 가정한다. 따라서 단어 w는 아래의 두 기준에 따라 토픽이 재할당된다.
  • 첫번째 기준 p(topic t | document d): 문서 d의 단어들 중 토픽 t에 해당하는 단어들의 비율
  • 두번째 기준 p(word w | topic t): 각 토픽 t에서 해당 단어 w의 분포(전체 문서 확인)

이를 반복하면 모든 할당이 완료된 수렴 상태가 된다.

예시

두 개의 문서 doc1과 doc2가 있다. doc1의 세 번째 단어 apple의 토픽을 결정하자.

  • 첫번째 기준: 문서 doc1의 단어들이 어떤 토픽에 해당하는지 본다. doc1의 모든 단어들이 토픽 A와 토픽 B에 50:50의 비율로 할당되어 있기 때문에 단어 apple은 토픽 A나 토픽 B 모두에 속할 가능성이 있다.

  • 두번째 기준: 단어 apple이 전체 문서에서 어떤 토픽에 할당되어있는지를 본다. 이 기준에 의하면 토픽 B의 비율이 크므로 단어 apple은 토픽 B에 할당될 가능성이 많다.

잠재 디리클레 할당과 잠재 의미 분석의 차이

  • LSA : DTM을 차원 축소 하여 축소 차원에서 근접 단어들을 토픽으로 묶는다.

  • LDA : 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합확률로 추정하여 토픽을 추출한다.

  • 토픽모델 LDA 설명 요약

문서에 대한 토픽 분포와 토픽에 대한 단어 분포가 존재한다고 하자. 여리서 각 분포는 다항 분포이며 디리클레라는 분포를 사용한다. (디리클레를 사용하는 이유는 계산이 편하기 때문) 각 분포는 α\alphaγ\gamma라는 사전정보를 사용한다.

문서에서 각 토픽이 나올 확률이 θi\theta_i, 각 토픽에 단어가 등장할 확률이 βk\beta_k이라고 하자. θ1\theta_1을 가지는 문서1에서 토픽3을 랜덤하게 선택하고, 토픽3에서 단어4를 랜덤하게 선택한다. 단어 4를 선택할 때는 β3\beta_3이 같이 고려된다. θ1\theta_1을 가지는 문서1에서 여러 개의 토픽을 샘플링하고, 그 토픽에서 단어를 샘플링한다. 이런 식으로 각 θi\theta_i에 대해서 토픽과 단어를 샘플링하여 D개의 문서를 생성한다. 이 과정을 역으로 하는 것이 LDA이다. 즉 문서로부터 단어를 관찰해서 θi\theta_iβk\beta_k를 알아낸다.

관측된 단어 W로부터 토픽 Z를 추론하고 토픽으로부터 θi\theta_iβk\beta_k를 추론하는 것이 LDA의 목적이다. 단어로부터 토픽과 단어의 분포들을 추론하면 문서를 주제별로 분류할 수 있고, 새로운 문서가 나타났을 때 어떤 주제인지 판별할 수도 있다.

영상 후반에는 LDA모델의 결합확률분포로부터 어떻게 Z를 추론하는지를 설명하지만 여기서는 그 설명은 생략한다.

LDA는 비지도학습이고, 문서 집합으로부터 여러 토픽을 클러스터링하는 알고리즘이다. 이 모델을 조금 더 개선한 모델이 지도학습인 SLDA 모델이다.

post-custom-banner

0개의 댓글