efficient inference for mul0nomial mixed membership models
play

Efficient Inference for Mul0nomial Mixed Membership Models - PowerPoint PPT Presentation

Efficient Inference for Mul0nomial Mixed Membership Models David Mimno UMass, Amherst Summary How fast can we make Gibbs sampling? How liGle memory can we use? Goal:


  1. Efficient ¡Inference ¡for Mul0nomial ¡Mixed ¡Membership Models David ¡Mimno UMass, ¡Amherst

  2. Summary • How ¡ fast ¡can ¡we ¡make ¡Gibbs ¡sampling? • How ¡liGle ¡ memory ¡can ¡we ¡use? Goal: ¡small ¡collec0ons ¡should ¡be ¡fast, large ¡collec0ons ¡should ¡be ¡possible

  3. Big ¡collec0ons! ¡ ¡Lots ¡of ¡topics! • 1000+ ¡topics

  4. Why ¡not ¡just ¡parallelize? Lots ¡of ¡smaller Big ¡computa0on computa0ons

  5. Why ¡not ¡just ¡parallelize? Lots ¡of ¡ really ¡small Small ¡computa0on computa0ons Be ¡smart, ¡then ¡parallelize

  6. Gibbs ¡Sampling ¡for ¡Topic ¡Models Doc ¡A dog 0 cat 2 feline 2 hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  7. Document-­‑topic ¡sta0s0cs Doc ¡A topics dog 0 docs cat 2 0 1 2 feline 2 A 2 0 2 hound 0 B 2 2 0 Doc ¡B dog 0 dog 0 N t|d horse 1 equine 1

  8. Topic-­‑word ¡sta0s0cs Doc ¡A Word ¡types dog 0 cat 2 Topics dog cat horse hound feline feline 2 0 3 1 hound 0 1 1 Doc ¡B 2 1 1 dog 0 dog 0 N w|t horse 1 equine 1

  9. score(t ¡| ¡N t|d , ¡N w|t ) ¡=

  10. For ¡each ¡token, Doc ¡A for ¡each ¡possible ¡topic ¡[0, ¡1, ¡2], dog cat 2 feline 2 hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  11. For ¡each ¡token, Doc ¡A for ¡each ¡possible ¡topic ¡[0, ¡1, ¡2], dog cat 2 ¡ ¡compute feline 2 score(0 ¡| ¡N 0|A , ¡N dog|0 ) hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  12. For ¡each ¡token, Doc ¡A for ¡each ¡possible ¡topic ¡[0, ¡1, ¡2], dog cat 2 ¡ ¡compute feline 2 score(0 ¡| ¡N 0|A , ¡N dog|0 ) hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1 score(1 ¡| ¡N 1|A , ¡N dog|1 )

  13. For ¡each ¡token, Doc ¡A for ¡each ¡possible ¡topic ¡[0, ¡1, ¡2], dog cat 2 ¡ ¡compute feline 2 score(0 ¡| ¡N 0|A , ¡N dog|0 ) hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1 score(1 ¡| ¡N 1|A , ¡N dog|1 ) score(2 ¡| ¡N 2|A , ¡N dog|2 )

  14. Add ¡up ¡the ¡scores Doc ¡A dog score(0 ¡| ¡N 0|A , ¡N dog|0 ) cat 2 + feline 2 score(1 ¡| ¡N 1|A , ¡N dog|1 ) Z ¡= ¡ hound 0 + Doc ¡B score(2 ¡| ¡N 2|A , ¡N dog|2 ) dog 0 dog 0 horse 1 equine 1

  15. Sample ¡a ¡new ¡topic Doc ¡A dog cat 2 feline 2 hound 0 Sample Doc ¡B u ¡= ¡rand() ¡* ¡Z dog 0 dog 0 horse 1 equine 1 Return ¡t=0

  16. For ¡each ¡token, Doc ¡A dog 0 for ¡each ¡possible ¡topic ¡[0, ¡1, ¡2], cat feline 2 hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  17. Summary ¡so ¡far • For ¡every ¡token, – For ¡each ¡possible ¡topic ¡ t ¡ calculate ¡score(t ¡| ¡…) • Add ¡up ¡scores ¡to ¡ normalizing ¡constant Z ¡= ¡ ∑ t ¡ score(t) • Sample ¡u ¡~ ¡U(0, ¡Z) ¡and ¡return ¡the corresponding ¡topic ¡ t . Performance ¡is ¡dominated ¡by ¡calcula0on ¡of ¡ Z

  18. The ¡normalizing ¡constant

  19. The ¡normalizing ¡constant

  20. The ¡normalizing ¡constant

  21. The ¡normalizing ¡constant

  22. The ¡normalizing ¡constant Token-­‑specific Independent of ¡word ¡and document Document-­‑specific

  23. The ¡normalizing ¡constant

  24. Sta0s0cs ¡are ¡sparse • N t|d ¡ : ¡10-­‑20% • mostly ¡zeros • N w|t ¡ : ¡< ¡5% • almost ¡all ¡zeros

  25. Add ¡up ¡the ¡scores Doc ¡A dog cat 2 feline 2 Z hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  26. Add ¡up ¡the ¡scores, ¡in ¡blocks Doc ¡A dog cat 2 t ¡: ¡N w|t ¡> ¡0 feline 2 hound 0 Doc ¡B t ¡: ¡N t|d ¡> ¡0 dog 0 dog 0 ∀ t horse 1 equine 1

  27. Add ¡up ¡the ¡scores, ¡in ¡blocks Doc ¡A dog cat 2 Z word-­‑specific feline 2 hound 0 Doc ¡B Z document-­‑specific dog 0 dog 0 Z smoothing horse 1 equine 1

  28. Add ¡up ¡ some ¡blocks, ¡cache ¡others Doc ¡A dog cat 2 Recalculate ¡the ¡word-­‑specific feline 2 block ¡for ¡every ¡token hound 0 Doc ¡B change ¡ at ¡most ¡two dog 0 from ¡each dog 0 of ¡these horse 1 equine 1 The ¡size ¡of ¡this ¡block ¡is ¡ almost ¡constant

  29. Add ¡up ¡ some ¡blocks, ¡cache ¡others Doc ¡A dog cat 2 feline 2 hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  30. Add ¡up ¡ some ¡blocks, ¡cache ¡others Doc ¡A dog cat 2 feline 2 hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1

  31. Add ¡up ¡ some ¡blocks, ¡cache ¡others Doc ¡A dog cat 2 feline 2 hound 0 Doc ¡B dog 0 dog 0 horse 1 equine 1 Worst ¡case: ¡we ¡might ¡have ¡to ¡loop ¡over ¡all ¡topics

  32. Summary ¡so ¡far • We ¡can ¡store ¡most ¡of ¡the ¡computa0on ¡to calculate ¡ Z ¡ from ¡token ¡to ¡token. • We ¡can ¡sample ¡exactly ¡from ¡the ¡same distribu0on, ¡with ¡a ¡new ¡map ¡from ¡(0, ¡ Z ) ¡to topics. Fast ¡itera0on ¡over ¡{t ¡: ¡N w|t ¡ > ¡0} ¡is ¡ cri.cal

  33. Topic-­‑word ¡sta0s0cs Doc ¡A Word ¡types dog 0 cat 2 Topics dog cat horse hound feline feline 2 0 3 1 hound 0 1 1 Doc ¡B 2 1 1 dog 0 dog 0 N w|t horse 1 equine 1

  34. Word-­‑topic ¡sta0s0cs ¡ transpose Topics Doc ¡A Word ¡types 0 1 2 dog 0 cat 2 dog 3 feline 2 N w|t hound 0 cat 1 horse 1 Doc ¡B dog 0 hound 1 dog 0 feline 1 horse 1 equine 1

  35. Representa0ons ¡of ¡N w|t : ¡arrays int[] typeTopicCounts = new int[T]; Topics ¡index ¡array ¡posi0ons. 0 1 2 3 3 0 0 1 Most ¡entries ¡are ¡zero.

  36. Integer ¡HashMaps TIntIntHashMap typeTopicCounts = new TIntIntHashMap(); Faster, ¡but… 0 3 • Complicated • Not ¡much ¡memory ¡improvement 3 1 • Adds ¡dependencies ¡on ¡external libraries ¡(trove, ¡fastu0l). (giant ¡black ¡box)

  37. Encoded ¡integer ¡arrays int[] typeTopicCounts = new int[N w ] index ¡is ¡meaningless int32 0 1 1 3 (3, ¡0) (1, ¡3) count ¡bits topic ¡bits all ¡informa0on ¡is ¡in ¡array ¡ values Huge ¡speedup, ¡2x ¡faster ¡than ¡HashMaps

  38. Example … 8 … 15 … 83 … 96 … “dog” 0 3 0 24 0 9 0 1 0 100 ¡topics, ¡so ¡4x100 ¡bytes ¡= ¡400

  39. Example … 8 … 15 … 83 … 96 … “dog” 0 3 0 24 0 9 0 1 0 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) 4 ¡non-­‑zero ¡topics, ¡4 ¡x ¡4 ¡bytes ¡= ¡16!

  40. Example … 8 … 15 … 83 … 96 … “dog” 0 3 0 24 0 9 0 1 0 0 1 2 3 24<<7 ¡+ ¡15 9<<7 ¡+ ¡83 3<<7 ¡+ ¡8 1<<7 ¡+ ¡96 100 ¡topics, ¡2 7 ¡> ¡100

  41. Basic ¡Opera0ons: ¡itera0on 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) t = v & 0x1111111 N w|t = v >> 7

  42. Basic ¡Opera0ons: ¡itera0on 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) Z word-­‑specific ¡=

  43. Basic ¡Opera0ons: ¡itera0on 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) Z word-­‑specific ¡=

  44. Basic ¡Opera0ons: ¡itera0on 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) Z word-­‑specific ¡=

  45. Basic ¡Opera0ons: ¡increment 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) N w|83 ++

  46. Basic ¡Opera0ons: ¡increment 0 1 2 3 (24, ¡15) (9, ¡83) (3, ¡8) (1, ¡96) v = (9+1)<<7 + 83 N w|83 ++

  47. Basic ¡Opera0ons: ¡increment 0 1 2 3 (24, ¡15) (10, ¡83) (3, ¡8) (1, ¡96) v = (9+1)<<7 + 83 N w|83 ++

  48. Basic ¡Opera0ons: ¡increment 0 1 2 3 ( 1 , ¡15) ( 1 , ¡83) ( 1 , ¡96) 0 v = (1+1)<<7 + 83 N w|83 ++

  49. Basic ¡Opera0ons: ¡increment 0 1 2 3 (1, ¡15) (1, ¡83) (1, ¡96) 0 v = (1+1)<<7 + 83 N w|83 ++

  50. Basic ¡Opera0ons: ¡increment 0 1 2 3 (1, ¡15) (2, ¡83) (1, ¡96) 0 N w|83 ++

  51. Basic ¡Opera0ons: ¡increment 0 1 2 3 (2, ¡83) (1, ¡15) (1, ¡96) 0 N w|83 ++

  52. Basic ¡Opera0ons: ¡decrement 0 1 2 3 (1, ¡15) (1, ¡83) (1, ¡96) 0 v = (1-1)<<7 + 83 N w|83 -­‑-­‑

  53. Basic ¡Opera0ons: ¡decrement 0 1 2 3 (1, ¡15) 0 (1, ¡96) 0 v = (1-1)<<7 + 83 N w|83 -­‑-­‑

  54. Basic ¡Opera0ons: ¡decrement 0 1 2 3 (1, ¡15) (1, ¡96) 0 0 N w|83 -­‑-­‑

Recommend


More recommend