Upgrade to Pro — share decks privately, control downloads, hide ads and more …

LDA Topic Modeling

Buzzvil
November 28, 2018

LDA Topic Modeling

Buzzvil

November 28, 2018
Tweet

More Decks by Buzzvil

Other Decks in Technology

Transcript

  1. 토픽 모델링이란? • 주어진 여러 문서에서 토픽(주제)을 추출하여 각 문서에

    어떤 주제가 있는지, 인사이트를 얻거나 각 문서를 주제별로 분류하기 위한 알고리즘. • 여기서 토픽은 단어의 집합을 가리킨다. • 한 단어가 다른 단어와 같이 출현하는 문서의 개수가 많을 수록 그 두 단어는 같은 토픽 내에 그룹핑 될 가능성이 올라간다.
  2. 심플한 예시. • 문서 1은 토픽 1에서만 나오는 단어만으로 이루어져

    있다. 그러므로 문서 1은 100% 토픽 1로 이루어져 있다. • 문서 2는 토픽 1에서만 나오는 다어인 개가 60%이고, 토픽 2에서만 있는 단어인 고양이가 나머지 40%이다. 그러므로 문서 2는 60% 토픽 1, 40% 토픽 2로 이루어졌다고 알 수 있다. • 문서 3은 산책이라는 토픽2에 나오는 단어만으로 이루어져 있으니 100 % 토픽 2로만 이루어져있다. 토픽 1 토픽 2 개 고양이 산책 개다래 문서 1 토픽1: 100% 토픽 2: 0 % 문서 2 토픽1: 60% 토픽 2: 40 % 문서 3 토픽1: 0% 토픽 2: 100 % 개 개 산책 고양이 개다래 개 개 산책 고양이
  3. 토픽 모델링의 활용 예 • 문서의 분류 ◦ 토픽 모델링의

    가장 기본적인 용도 • 검색 ◦ 단순히 입력 키워드의 개수만을 가지고 검색결과를 정하는 알고리즘은(예 tfidf) 입력 키워드가 포함되지 않은 문서는 검색결과에서 제외하게 된다. ◦ 토픽 모델링은 입력된 키워드에 없는 단어만을 가진 문서라도 입력된 키워드와 연관이 높다면 검색결과의 상위에 포함 시킬 수도 있다. • 주어진 문서들에 대한 인사이트 ◦ 주어진 문서의 집합에서 어떻한 주제들이 나타나는지 관찰하여 새로운 인사이트를 얻을 수 있다. ◦ 비중이 높은 주제에 맞춘 컨텐츠의 작성 등. • 추천 시스템 ◦ 텍스트를 가지고 있는 아이템들의 경우 토픽 모델링으로 토픽을 추출하고 각 아이템의 토픽 구성 벡터를 생성후, 유저가 열람한 아이템들의 토픽 구성률을 구한후 이에 기반하여 유저가 열람하는 아이템들과 비슷한 구성의 토픽을 가진 아이템을 추천할 수 있다.
  4. LDA 토픽 모델링이 생각하는 문서 생성 예시 (이미 토픽과 문서의

    토픽이 정해졌을 경우) 각 토픽은 단어의 분포도이다. 다음과 같은 2개의 토픽이 주어졌다. 단어 고양이 개 토픽 1 80% 20% 토픽 2 10% 90% 여기서 토픽 1을 40% 토픽 2를 60%로 해서 단어가 10개 들어간 문서를 만들고자 한다. 토픽 1 토픽 2 40% 60%
  5. 10 단어들의 토픽을 정한다. 40%의 확률로 토픽1을 선택하고 60%의 확률로

    토픽 2를 랜덤하게 선택한다. 1 2 1 2 2 1 1 2 2 2 대개는 아래와 같이 확률분포와 같이 대략 1인 단어가 4개, 2인 단어가 6개에서 다소 약간 차이가 나는 결과가 나오겠지만, 2 2 2 2 2 2 2 2 2 2 랜덤하게 정하는 것이니 아래와 같은 극단적인 확률의 단어가 나올 수도 있다. (아래와 같은 결과가 나올 수 있는 확률은 대략 0.6%) 두번째의 극단적인 예시가 아닌, 첫번째 예시와 같은 결과로 토픽이 정해졌다고 하자.
  6. 각 단어의 토픽에 맞춰서 실제 단어들을 선택해야한다. 1이라고 써져있는 곳은

    80%의 확률로 고양이가 될것이고 2라고 쓰여진 곳은 90%의 확률로 개가 될것이다. 1 2 1 2 2 1 1 2 2 2 고양이 개 고양이 개 개 고양이 고양이 개 개 고양이 이처럼 토픽별 단어 확률 분포가 정해지고, 각 문서별로 토픽이 정해졌을 경우, LDA 토픽 모델은 문서는 문서의 토픽 확률에 따라 단어의 토픽을 정하고, 토픽의 단어 확률에 따라 각 토픽 단어를 실제 단어로 변환한다고 가정한다. 그렇다면 LDA 모델링은 각 토픽의 단어 확률 분포와, 각 문서의 토픽 확률 분포는 어떤 과정으로 정해진다고 가정할까? 토픽 모델링은 토픽의 단어 확률 분포와, 각 문서별 토픽 확률 분포를 Dirchlet 분포 함수를 사용해 랜덤하게 정한다.
  7. Drichlet 분포란? Dir n이라는 수가 주어졌을때 n개의 엘리먼트를 가지고 있는

    벡터를 랜덤하게 생산하는데 사용되는 확률 분포이다. 생성되는 랜덤 변수인 벡터의 엘리먼트의 합은 1이고 각 엘리먼트는 0 이상의 값ㅇ르 갖는다. 예. n= 2인 경우 (0.5, 0.5), (0.32, 0.68) 등이 Drichlet 분포로 생성될 수 있는 랜덤변수의 값이다. (2, -1), (23, 24), (0.1, 1.1) 등은 생성될 수 없는 값이다.
  8. Drichlet 분포의 하이퍼 파라미터 Dir(a) 하이퍼 파라미터로 a를 가지고 있다.

    a가 높으면 높을수록 각 엘리먼트의 값은 균등하게 분배될 확률이 높다. 예를들어 n=2인 경우, 벡터를 랜덤하게 생성할때, a의 값이 높으면 높을 생성되는 랜덤 벡터는 (0.5, 0.5) 에 가까워질 확률이 높아진다.
  9. 예. Beta 분포, 2 차원 벡터인 Drichlet 분포 a= 1

    모든 벡터가 동일한 확률을 갖는다. Uniform 분포와 다를 바없다. a = 10 a=1과 달리 (0.5, 0.5)를 중심으로 몰려있다. a= 100 2차원 벡터이니, 엘리먼트 하나의 값이 x 이면 나머지 하나의 값은 1-x 이다. 그러므로 실상 랜덤 변수는 하나밖에 없다. 아래 그래프는 2차원 벡터중 첫버째 엘리먼트의 값에 대한 확률 분포도를 보여주고 있다고 생각하자.
  10. LDA 토픽 모델링이 생각하는 문서가 만들어지는 과정 1. 토픽의 개수

    n을 정한다. 2. 토픽 생성시에 사용할 Dirchlet 함수의 하이퍼 파라미터 b를 정한다. 3. 문서 생성시에 사용할 Dirchlet 함수의 하이퍼 파라미터 a를 정한다. 4. Dir(b)를 사용해 n개의 토픽 벡터를 생성한다. 토픽의 엘리먼트 개수는 사용할 유니크 단어의 개수인다. 5. Dir(a)를 사용해 생성할 문서의 토픽 확률을 정한다. 6. 문서의 토픽 확률에 따라 문서에 나오는 단어의 토픽을 정한다. 7. 문서에 있는 단어들의 토픽에 따라 실제 단어를 정한다.
  11. 예시. 1. 토픽 1을 Dirchlet 랜덤함수를 사용해 생성. T1 ~Dir(b)

    개 고양이 새 T1 0.2 0.7 0.1 2. 토픽 2도 생성 T2 ~Dir(b) 개 고양이 새 T2 0.5 0.1 0.4 개, 고양이, 새 3개의 단어만 사용한다. 생성하는 문서는 D1(2 단어), D2( 4 단어) 2개 개 고양이 새 T1 0.2 0.7 0.1 T2 0.5 0.1 0.4 최종 결과
  12. 3. 문서 D1 의 토픽 확률 분포도를 정한다. D1 ~

    Dir(a) D1 T1 T2 40% 60% 4. D1의 단어들의 토픽을 위의 확률에 맞춰서 정한다. D1 2 1 5. D1의 단어를 토픽의 확률에 맞춰서 선택한다. D1 생성 완료 D1 토픽 2 1 D1 단어 새 고양이
  13. 6. 문서 D2 의 토픽 확률 분포도를 정한다. D2 ~

    Dir(a) T1 T2 D2 10% 90% 4. D2의 단어들의 토픽을 위의 확률에 맞춰서 정한다. D2 2 2 2 2 5. D2의 단어를 토픽의 확률에 맞춰서 선택한다. D1 생성 완료 D2 토픽 2 2 2 2 D2 개 새 새 새
  14. LDA 알고리즘 지금까지의 설명은 LDA 토픽 모델링이 어떠한 가정하고 있는

    문서의 생성과정이다. LDA 토픽 모델링 알고리즘은 토픽의 개수, 하이퍼 파라미터 a,b 그리고 문서가 주어졌을때, 현재 주어진 문서를 생성할 확률이 가장 높은 토픽과 문서의 토픽 구성률을 구하는 것이 목적이다.
  15. 다음과 같은 문서 2개가 있다. D1 새 고양이 D2 개

    새 새 새 2개의 토픽이 있다는 가정하에 토픽의 단어 구성률과 각 문서의 토픽 구성률이 어떻게 되야 위 문서들이 만들어질 확률이 가장 높을까?
  16. D1 단어 새 고양이 D2 단어 개 새 새 새

    개 고양이 새 T1 ? ? ? T2 ? ? ? T1 T2 D1 ? ? D2 ? ? 위의 두 표를 어떻게 채워 넣어야. 아래 두 문서가 다시 생성될 확률이 가장 높을까?
  17. 베이즈 추론 사전 확률이 있을때 사후 확률을 추론하는 방법 Lda

    토픽 모델링은 주어진 문서에 대한 사후 확률을 추론하는 알고리즘이다.
  18. 간단한 베이즈 추론 예시. 교통 사고가 자주 나는 한 장소가

    있다. 여기를 지나가는 자동차들은 20%의 확률로 운전자가 안전벨트를 안한다. 80% 20% 10% 70% 안전벨트를 한 사람들은 10% 의 확률로 사고가 난다. 안전벨트를 안한 사람들은 70%의 확률로 사고가 난다.
  19. 이 경우 이 장소를 지나가는 운전자들은 다음과 같은 분포도를 가진다.

    안전벨트 착용 여부 사고 여부 비율 O O 0.8 *0.1 *100 = 8% O X 0.8 * 0.9 * 100 = 72% X O 0.2 * 0.7 * 100 = 14 % X X 0.2 * 0.3 * 100 = 6% 그렇다면 이 장소에서 지나간 자동차 하나가 사고가 났다. 이 경우 자동차 안을 확인 했을때 운전자가 안전벨트를 안하고 있을 확률은 어떻게 되는가? P(안전벨트를 안하고 있을 확률 | 사고가 일어났다)
  20. P(안전벨트를 안하고 있을 확률 | 사고가 일어났다) = (안전벨트를 안하고

    사고날 확률) / (사고날 확률) = (안전벨트를 안하고 사고날 확률) / (안전벨트를 하고 사고날 확률 + 안전벨트 안하고 사고날 확률) = 14 / (14 + 8) = 14 /22 = 7 / 11 ~= 0.63 사고낸 운전자가 안전벨트를 안하고 있을 확률은 63%가 된다.
  21. LDA 알고리즘의 학습 방식 - Variational inference Gradient decent 는

    딥러닝등 많은 머신러닝 알고리즘에서 사용하는 방식이다. 주어진 점수 공식에 대해 가장 높은 점수를 찾아내는 인풋을 찾아낸다. 현재 인풋에서 가장 경사진 방향을 찾아내어 그 방향으로 인풋을 수정하는 것을 반복하여 최적의 값에 도달한다.
  22. 그러니 LDA 토픽 모델링에서는 토픽 T, 그리고 각 문서의 토픽

    구성률 D에 대해 주어진 문서 W가 나올 확률 공식은 gradient를 구하는 것이 불가능하다. P(W|T, D, a, b) → gradient is intraceable 그렇기에 Variational Inference라는 알고리즘을 사용해 정확한 P(W|T, D, a, b)의 값이 아닌 P(W|T, D, a, b)의 lower bound가 되는 값을 구해 grandeint decent를 적용한다. 자세한 내용은 http://www.jmlr.org/papers/volume3/blei03a/blei03a.pdf를 참조
  23. LDA 알고리즘의 학습 방식 - Gibbs 샘플링 각 토픽의 단어

    비율과 문서 비율 보다는 각 문서의 단어의 토픽 값을 알아내고자 하는 기법. D1 토픽 ? ? D1 단어 새 고양이 D2 토픽 ? ? ? ? D2 단어 개 새 새 새 위의 값을 채워 넣으면, 토픽의 단어 비율과 각 문서의 토픽 비율은 자연스럽게 최적의 값을 알아낼 수 있다. 각 단어가 각 토픽에 할당된 횟수를 카운팅후 그 비율을 구하면 토픽의 단어 분포도가 나온다. 각 문서에서 각 토픽이 할당된 횟수를 카운팅후 그 비율을 구하면 문서의 토픽 분포도가 나온다.
  24. LDA 알고리즘의 학습 방식 - Gibbs 샘플링 가능 한 모든

    조합에 대한 확률을 구한후 가장 높은 확률을 갖는 토픽 할당을 선택하는 방법은 비현실 적이다. 가능한 모든 조합의 수는 단어 수에 따라 가하급수적으로 늘어난다. 그러나 단 한단어를 제외하고 모든 단어에 토픽을 할당한후, 나머지 한단어에 들어갈 토픽의 확률을 구하는 것은 손쉽다.
  25. D1 토픽 1 2 D1 단어 새 고양이 D2 토픽

    1 1 1 ? D2 단어 개 새 새 새 예. 아래와 같이 D2에 있는 단 한 단어 만 제외하고 다른 단어들의 토픽이 무엇인지 알고 있을 경우 D1의 토픽이, x1, x2이고, D2의 토픽이 y1, y2, y3, y4일 확률을 p(D1=(x1, x2), D2=(y1,y2,y3,y4)) 라고 할때 베이즈 추론에 의해 D2의 마지막 단어의 토픽이 x일 확률은 다음과 같다.
  26. 마지막 단어의 토픽이 i일 확률은 다음 공식과 p(i)와 비례한다. 이

    공식의 자세한 계산법은 다음 논문에 나와있다. http://www.pnas.org/content/pnas/101/suppl_1/5228.full.pdf ɑ와 는 문서와 토픽의 Dirchlet 함수의 하이퍼 파라미터 이다.
  27. 보통 ɑ = 50 / (토픽 개수) = (200/ 유니크한

    단어수) or b= 0.1 가 많이 쓰인다. ɑ= 50/( 토픽 개수) = 25 = 200 / (유니크한 단어수) ~= 67 로 할경우 p(2) = 0.15가 되며 p(1)은 0.17이 된다. 그러므로 마지막 단어인 새가 2일 확률 점수는 0.15 이며 1이될 확률 점수는 0.15 이다. D2의 토픽 미지정 단어인 새의 토픽이 1이 될 확률은 (0.17 / 0.31) * 100 ~= 58% 이고 2가 될 확률은 42%이다.
  28. 그리고 위의 확률대로 D2의 마지막 단어인 새의 토픽을 할당한다. 이

    것을 문서내의 모든 단어에 반복하여 모든 단어들의 토픽을 재할당 한다. 그리고 이 사이클을 다시 많은 수 반복하는 것이 깁스 샘플링이다. 이 사이클을 많은 수 반복하면, 각 단어에 할당된 토픽은 가장 적절한 토픽들이 될것이고, 각 문서 내의 할당된 토픽 수의 벡터와, 토픽별 단어 수가 일정하게 수렴하게 되고, 이렇게 해서 구한 토픽의 단어 비율과 문서의 토픽 비율이 가장 적절한 비율에 가까워지게 된다.
  29. Variational Inference VS Gibbs sampling 처음 토픽 모델링 알고리즘을 발표한

    논문에서 사용된 것은 VI 였으나, 빠른 학습속도로 인해 대개는 Gibbs sampling이 선호된다. 아래는 a의 토픽들과 b의 문서를 생성후, 다시 Gibbs 샘플링을 이용해 토픽을 복원한 과정이다.