SlideShare a Scribd company logo
トピックモデルの
基礎と応用
(基礎編)
長崎大学 工学研究科 正田 備也(まさだ・ともなり)
masada@nagasaki-u.ac.jp
2019年3月23日(土) 1トピックモデルとその周辺
今日の話題
• 前半:トピックモデル入門
• トピックモデルの概要
• トピックモデルとは、前処理、どう使うか、既存の実装
• LDAの詳細
• どんな生成モデルか、事後分布の実現法(周辺化ギブスサンプリング、変分ベイズ法)
• トピックモデルの評価方法
• Perplexity, NPMI
• 後半:トピックモデルの新しい研究動向~深層学習とどう関係づけるか
• ミニバッチ変分ベイズ法
• 変分オートエンコーダ(VAE)との関係
• 敵対的生成ネットワーク(GAN)との関係
2019年3月23日(土) 2トピックモデルとその周辺
トピックモデルの概要
• トピックモデルとは
• 前処理
• どう使うか
• 既存の実装
2019年3月23日(土) トピックモデルとその周辺 3
トピックモデルとは
• 参考書
• 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ)コロナ社
• 岩田具治『トピックモデル』(機械学習プロフェッショナルシリーズ)講談社
• トピックモデルの特徴
• ベイズ的な確率モデルであることが多い(cf. PLSA)
• 教師なし学習
• 数十~数百個の「索引」 を同時に作ることができる
• 単語に重要度がついた「索引」
• 「索引」=語彙集合上に定義された確率分布(これを「トピック」と呼ぶ)
• 各トピックは、人間から見ても、異なる「話題」に対応していることが多い。
2019年3月23日(土) 4トピックモデルとその周辺
2019年3月23日(土) トピックモデルとその周辺 5
David M. Blei. Probabilistic Topic Models. Communications of the ACM, April 2012, vol. 55, no. 4.
青空文庫全体にLDA[Blei+ 03]を適用
(トピック数100; 文書数 12K; 語彙数 63K)
2019年3月23日(土) 6トピックモデルとその周辺
2019年3月23日(土) 7トピックモデルとその周辺
2019年3月23日(土) 8トピックモデルとその周辺
2019年3月23日(土) 9トピックモデルとその周辺
2019年3月23日(土) 10トピックモデルとその周辺
宮沢賢治も萩原から強い影響を
受けた詩人の一人である。
(Wikipedia)
たった四行二連のですが、宮沢
賢治と七夕伝説をミックスした
ような味わいです。
(桜間中庸『お空の川』Amazon
レビュー)
2019年3月23日(土) 11トピックモデルとその周辺
「このような福沢諭吉の著書
などは、初期の井上円了のも
のの見方・考え方に. 影響を
与えたのではないかと考えら
れる。」
(三浦節夫「井上円了の妖怪学 :
その提唱と展開」井上円了セン
ター年報, 2001年)
2019年3月23日(土) 12トピックモデルとその周辺
前処理:「文書」を決める
“You shall know a word by the company it keeps.”
(Firth 1957)
• トピックモデルでは同じ文書内での単語の共起情報が重要
• 単語列のモデリングではなく文書のモデリング
• 「文書」(共起を調べる範囲)をどう決めるかには任意性がある
• トピックモデルは文書長が10単語前後あればきちんと動く
2019年3月23日(土) 13トピックモデルとその周辺
前処理:形態素解析
• 「単語」に分割する
• 辞書は重要
• 複合語をどうするか?(例: UCI bag-of-words data set NYTimes news articlesのnamed entity)
• 品詞情報は単語の選別に使うことがある
• 付属語は使わないことが多い
• 言語によってはいい形態素解析器がないことも(e.g. ミャンマー語)
• ツールの例
• MeCab
• 個人的に良く使う(cf. mecab-ipadic-NEologd)
• StanfordNLP(最近話題になった)https://stanfordnlp.github.io/stanfordnlp/
• 53ヶ国語に対応(ミャンマー語はないっぽい)
2019年3月23日(土) 14トピックモデルとその周辺
前処理:ストップワードの除去
• ありふれた単語やマイナーな単語の除去
• 頻度の閾値を適当に設定して削除 or 上位○○位以上は削除、など
• 特定の品詞をすべてストップワードとして除去する
• scikit-learnでは英語の標準的なストップワードが用意されている
• これは必要か?
• 除去しなくて大丈夫な(=ちゃんとトピックが抽出できる)場合も結構ある
• むしろメモリの使用量が多くなるので語彙サイズを減らしたくなる
• 特にGPUを使う場合
2019年3月23日(土) 15トピックモデルとその周辺
トピックモデルをどう使うか
「文書がたくさんありすぎて・・・
どれを読めばいいか分からない!」
• 使いみち
• summarize 数十~数百の単語リストに要約(既述)
• visualize トピックを可視化
• explore 得られたトピックをもとに検索
2019年3月23日(土) 16トピックモデルとその周辺
可視化
例)ひとつのワードクラウドで文書集合の頻出単語を可視化
• 疑問点:「たったひとつのワードクラウドで、話題の多様性を覆いつくせるのか?」
• そこでトピックモデルを使う
• 複数のワードクラウドを作成できる
• 単に複数であるだけではなく「内容が違う」ワードクラウドを作成できる
2019年3月23日(土) 17トピックモデルとその周辺
2019年3月23日(土) トピックモデルとその周辺 18
国会会議録にLDAを適用(16台のPC上で1,000トピックCGS; D3.jsのbubble chartで可視化; 文書数 9M; 語彙数 381K)
http://dmlab.jpn.org/viz/gijiroku1000.html
[Masada+ WAIM2014]
2019年3月23日(土) トピックモデルとその周辺 20
%matplotlib inline
import pyLDAvis
import pyLDAvis.gensim
vis = pyLDAvis.gensim.prepare(topic_model=lda_model, corpus=corpus, dictionary=dictionary_LDA)
pyLDAvis.enable_notebook()
pyLDAvis.display(vis)
https://towardsdatascience.com/the-complete-guide-for-topics-extraction-in-python-a6aaa6cedbbc
検索 [Ganguly+ SIGIR2013][Yi+ ECIR2009]
• 読むべき文書を見つける
• 検索語を考えて検索
• すでに読んだ文書と似ている文書を検索
• 疑問点
「検索語が自分の意図をうまく表しているのか?」
• そこでトピックモデルを使う
• 文書拡張(=元々は文書になかった単語を追加する)に使う
• 追加した単語が検索語にマッチすれば検索結果に含ませることができる
2019年3月23日(土) 21トピックモデルとその周辺
良い基底を見つける手法としてのトピックモデリング
(cf. SVD, NMF, PLSI, etc)
・ =
係数
(トピック確率)
基底
(トピック=単語確率)
文書
(観測データ)
利用上の問題点
• 適切なトピック数が分からない
• クラスタリングにおけるクラスタ数の決め方に似た問題
• 実行するたびに結果が変わる
• アルゴリズムがランダム性を含むため
• つまり…Stabilityの問題
• Yang+. Improving Topic Model Stability for Effective Document Exploration. IJCAI 2016.
• Greene+. How Many Topics? Stability Analysis for Topic Models. ECML PKDD 2014.
• 現実的な対処法は?
• アルゴリズムを走らせて単語リストをチェックして・・・というのを数回繰り返す
• トピックの重複が散見されればトピック数を減らす。毎回違うトピックが現われていればトピック数を増やす。等々。
2019年3月23日(土) トピックモデルとその周辺 23
既存の実装:LDA in Python (持橋さんが公開しているツール)
http://chasen.org/~daiti-m/dist/lda-python/
• 周辺化ギブスサンプリングの実装
• 速い
• 下記の例で40 sec/iterぐらい
2019年3月23日(土) トピックモデルとその周辺 24
この値が小さくなるように
alphaやbeta(LDAのハイパーパラメータ)を動かす
その他の既存の実装
• 周辺化ギブスサンプリングの実装
• PythonのLDAモジュール
• pip install ldaでインストール可
• MALLET(言語はJava)のLDA
• https://programminghistorian.org/en/lessons/topic-modeling-and-mallet
• ミニバッチ変分ベイズ法の実装
• gensim
• perplexity(後述)の定義が特殊(perplexityとして出してくる値は要注意)
• sklearn.decomposition.LatentDirichletAllocation
• https://github.com/blei-lab/onlineldavb
• ミニバッチ変分ベイズはハイパーパラメータのチューニングをそれなりにしたほうがいい
2019年3月23日(土) 25トピックモデルとその周辺
stm (structural topic model)
http://www.structuraltopicmodel.com/
• 社会科学分野の研究グループが開発
• R言語による実装
• LDAより高度なことができるらしい(試していません…)
• stmの使い方の解説記事
• https://juliasilge.com/blog/sherlock-holmes-stm/
• R言語で例を示している
• stmの使い方以外にも有益な情報が書かれているブログ記事
• この記事ではstmはLDAの実装として使われているだけ
2019年3月23日(土) 26トピックモデルとその周辺
トピックモデルを使うときに気をつけたほうがいいこと
• ハイパーパラメータのチューニングはしたほうがいいかも
• LDAのハイパーパラメータが何かは後で説明します
• perplexityができるだけ小さくなるようにする
• 正式には訓練データとは別のデータでperplexityを求める
• 他の手法との比較をするのでなければ訓練データでperplexityを求めてもいいかも
• gensimではハイパーパラメータのチューニングを自動化できる
• Thomas P. Minka, Estimating a Dirichlet distribution, 2000.
• グリッドサーチでチューニングするほうが良かったりもする
2019年3月23日(土) 27トピックモデルとその周辺
LDA(潜在的ディリクレ配分法)の詳細
・どんな生成モデルか
・事後分布の実現法:周辺化(崩壊型)ギブスサンプリング
・事後分布の実現法:変分ベイズ法
2019年3月23日(土) 28トピックモデルとその周辺
生成モデルとしてのLDA [Blei+ 03]
• トピック数を𝐾、語彙サイズを𝑉とする
• トピック数は手動で指定する(ノンパラメトリック・ベイズについては今日は触れない)
• 2種類のサイコロを振ることで文書の集合を生成
• トピック・サイコロ=どのトピックを使うか決めるサイコロ
• 𝐾個の面があるサイコロ
• 文書ごとに別々のトピック・サイコロがある
• 単語サイコロ=どの単語を使うか決めるサイコロ
• 𝑉個の面があるサイコロ
• トピックごとに別々の単語サイコロがある
2019年3月23日(土) 29トピックモデルとその周辺
LDAによる文書集合の生成
各文書について:
1. その文書用のトピック・サイコロをディリクレ分布から得る
2. 文書に表れる各単語トークンについて:
i. トピック・サイコロを振る
ii. 出た目(=出たトピック)に対応する単語サイコロを振る
次スライドで説明
2019年3月23日(土) 30トピックモデルとその周辺
ディリクレ分布
• 振ると{1,2,3,4,5,6}の自然数が出てくるのがサイコロなら…
• 振るとベクトルが出てくるのがディリクレ分布
• ただし成分がすべて非負で成分の総和が1であるベクトル
• 下図は3次元の場合
https://www.sciencedirect.com/science/article/pii/S0893608017302587
2019年3月23日(土) 31トピックモデルとその周辺
知りたいのは・・・事後分布
• 観測データを𝑿 = {𝒙1, … , 𝒙 𝐷},生成モデルのパラメータを𝚽とする
• 尤度 𝑝 𝑿 𝚽 …生成モデルによって決まる
• 𝑝 𝑿 𝚽 = 𝑑=1
𝐷
𝑝(𝒙 𝑑|𝚽) と書けるとする
• 事前分布 𝑝(𝚽) …生成モデルのパラメータが従う分布
• LDAではディリクレ分布
• 事後分布 𝑝(𝚽|𝑿) …ベイズ的なモデリングで知りたいもの
𝑝(𝚽|𝑿) ∝ 𝑝 𝑿 𝚽 𝑝(𝚽)
2019年3月23日(土) 32トピックモデルとその周辺
ベイズ推定とは
• 事後分布から予測分布𝑝(𝒙0|𝑿)が得られる
𝑝 𝒙0 𝑿 = 𝑝 𝒙0 𝚽 𝑝 𝚽 𝑿 𝑑𝚽
• 真の分布は𝑝(𝒙0|𝑿)だろうと推定するのがベイズ推定
• 参考書:渡辺澄夫『ベイズ統計の理論と方法』コロナ社
• とにかく事後分布を求める必要がある
2019年3月23日(土) 33トピックモデルとその周辺
結合分布, 周辺尤度, 事後分布
• 結合分布 𝑝(𝑿, 𝚽)
𝑝(𝑿, 𝚽) = 𝑝 𝑿 𝚽 𝑝(𝚽) = 𝑝(𝚽)
𝑑=1
𝐷
𝑝(𝒙 𝑑|𝚽)
• 周辺尤度 𝑝 𝑿
𝑝 𝑿 = 𝑝(𝑿, 𝚽) 𝑑𝚽
• 事後分布 𝑝 𝚽 𝑿
𝑝 𝚽 𝑿 =
𝑝(𝑿, 𝚽)
𝑝 𝑿
=
𝑝 𝑿 𝚽 𝑝(𝚽)
𝑝 𝑿
∴ 𝑝(𝚽|𝑿) ∝ 𝑝 𝑿 𝚽 𝑝(𝚽)
• 𝑝 𝑿 はほとんどの場合intractable
2019年3月23日(土) トピックモデルとその周辺 34
トピックモデル向けに記号の準備
• 文書𝑑の𝑖番目のトークンとして表れている単語 𝑥 𝑑,𝑖 (例: 𝑥 𝑑,𝑖 = 2071)
• 𝒙 𝑑 = {𝑥 𝑑,1, … , 𝑥 𝑑,𝑛 𝑑
}
• 文書𝑑の𝑖番目のトークンが割り当てられたトピック 𝑧 𝑑,𝑖 (例: 𝑧 𝑑,𝑖 = 38)
• 𝒛 𝑑 = {𝑧 𝑑,1, … , 𝑧 𝑑,𝑛 𝑑
}
• 文書𝑑におけるトピック𝑘の確率 𝜃 𝑑,𝑘 (例: 𝜃 𝑑,𝑘 = 0.632)
• 𝜽 𝑑 = (𝜃 𝑑,1, … , 𝜃 𝑑,𝐾) ただし 𝑘=1
𝐾
𝜃 𝑑,𝑘 = 1
• 対称ディリクレ事前分布のパラメータ(ハイパーパラメータ) 𝛼
• トピック𝑘における単語𝑣の確率 𝜑 𝑘,𝑣 (例: 𝜑 𝑘,𝑣 = 0.000816)
• 𝝋 𝑘 = (𝜑 𝑘,1, … , 𝜑 𝑘,𝑉) ただし 𝑣=1
𝑉
𝜑 𝑘,𝑣 = 1
2019年3月23日(土) 35トピックモデルとその周辺
LDAによる文書集合の生成
各文書について:
1. その文書用のトピック・サイコロを事前分布から得る
2. 文書に表れる各単語トークンについて:
i. トピック・サイコロを振る
ii. 出たトピックに対応する単語サイコロを振る
2019年3月23日(土) 36トピックモデルとその周辺
LDAによる文書集合の生成
for 𝑑 = 1 to 𝐷 : #各文書について
1. draw 𝜽 𝑑~Dirichlet(𝛼)
2. for 𝑖 = 1 to 𝑛 𝑑 : #各単語トークンについて
i. draw 𝑧 𝑑,𝑖~Categorical(𝜽 𝑑) #トピック・サイコロを振る
ii. draw 𝑥 𝑑,𝑖~Categorical(𝝋 𝑘) #単語サイコロを振る
2019年3月23日(土) 37トピックモデルとその周辺
カテゴリカル分布
• アイテムが3種類以上ある場合のベルヌーイ分布
• ベルヌーイ分布ではアイテムは2種類
• ベルヌーイ分布に対して二項分布があるように…カテゴリカル分布に
対して多項分布がある
• 二項分布
• 「𝑁回コインを投げたら表と裏がそれぞれ𝑀回,𝑁 − 𝑀回出る確率はいくら?」
• 多項分布
• 「 𝑁回サイコロを振ったら1から6の目がそれぞれ𝑁1, … , 𝑁6回出る確率はいくら?」
2019年3月23日(土) トピックモデルとその周辺 38
LDAのすべての変数の結合分布を書き下す
(確率モデルを扱うときに最初にすること)
• 各文書𝒙 𝑑の生成をそのまま式に書き下すと…
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱)
= 𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖
• 文書集合全体では
𝑝 𝑿, 𝒁, 𝜣|𝛼, 𝜱 =
𝑑=1
𝐷
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱
2019年3月23日(土) 39トピックモデルとその周辺
事後分布の実現法
• 周辺化ギブスサンプリング
• 変分ベイズ法
2019年3月23日(土) トピックモデルとその周辺 40
周辺化ギブスサンプリング
(Collapsed Gibbs sampling; CGS)
2019年3月23日(土) 41トピックモデルとその周辺
LDAの周辺化ギブスサンプリング(CGS)
• カテゴリカル分布のパラメータを積分して消してしまう
• 隠れ変数としては𝒁 = {𝒛1, … , 𝒛 𝑑}が残る
• 個々の単語トークンがどのトピックに割り当てられるかを表わす隠れ変数
• 𝑧 𝑑,𝑖の事後分布からサンプリングする
• 各文書の個々の単語トークンについてトピックをサンプリングする
• 単語トークンのクラスタリングをしているイメージ
• 文書クラスタリングは文書をまるごとどれかのクラスタへ割り当てる
2019年3月23日(土) 42トピックモデルとその周辺
Shanghai is the largest city in China,
located in her eastern coast at the
outlet of the Yangtze River. Originally a
fishing and textiles town, Shanghai
grew to importance in the 19th century.
In 2005 Shanghai became the world's
busiest cargo port. The city is an
emerging tourist destination renowned
for its historical landmarks such as the
Bund and Xintiandi, its modern and
63 7 7 41 63 7 63
41 7 7 41 41 7 7
41 7 7 63 22 41 7
22 7 41 41 63
41 7 41 7 7 50 50
7 50 63 41 7 41
41 22 22 7 41 7 7
41 41 41 41
7 7 41 41 7 7 7
63 7 63 7 41 7
LDAのすべての変数の結合分布(再)
• 各文書𝒙 𝑑の生成をそのまま式に書き下すと…
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱)
= 𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖
• 文書集合全体では
𝑝 𝑿, 𝒁, 𝜣|𝛼, 𝜱 =
𝑑=1
𝐷
𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖
2019年3月23日(土) 44トピックモデルとその周辺
LDAによる文書集合の生成
(単語カテゴリカル分布にもディリクレ事前分布を使う)
各トピックについて:
1. 単語サイコロをディリクレ事前分布から得る
各文書について:
1. その文書用のトピック・サイコロをディリクレ事前分布から得る
2. 文書に表れる各単語トークンについて:
i. トピック・サイコロを振る
ii. 出た目(=出たトピック)に対応する単語サイコロを振る
2019年3月23日(土) 45トピックモデルとその周辺
追加した部分
LDAによる文書集合の生成
(単語カテゴリカル分布にもディリクレ事前分布を使う)
For 𝑘 = 1 to 𝐾 :
1. 𝝋 𝑘~Dirichlet 𝛽
For 𝑑 = 1 to 𝐷 : (各々の文書について…)
1. 𝜽 𝑑~Dirichlet(𝛼)
2. For 𝑖 = 1 to 𝑛 𝑑 :
i. 𝑧 𝑑,𝑖~Categorical(𝜽 𝑑) (トピック・サイコロを振る)
ii. 𝑥 𝑑,𝑖~Categorical(𝝋 𝑘) (単語サイコロを振る)
2019年3月23日(土) 46トピックモデルとその周辺
追加した部分
LDAのすべての変数の結合分布
𝑝 𝑿, 𝒁, 𝜣, 𝜱|𝛼, 𝛽 =
𝑘=1
𝐾
𝑝(𝝋 𝑘|𝛽) ×
𝑑=1
𝐷
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱
=
𝑘=1
𝐾
𝑝(𝝋 𝑘|𝛽) ×
𝑑=1
𝐷
𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝑧 𝑑,𝑖, 𝜱
=
𝑘=1
𝐾
𝑝(𝝋 𝑘|𝛽)
𝑑=1
𝐷
𝑖=1
𝑛 𝑑
𝑝 𝑥 𝑑,𝑖|𝑧 𝑑,𝑖, 𝜱
×
𝑑=1
𝐷
𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑
2019年3月23日(土) トピックモデルとその周辺 47
周辺化
• カテゴリカル分布のパラメータを積分消去(周辺化)
𝑝 𝑿, 𝒁|𝛼, 𝛽 = 𝑝 𝑿, 𝒁, 𝜣, 𝜱|𝛼, 𝛽 𝑑𝜣𝒅𝜱
=
𝑘=1
𝐾
𝑝(𝝋 𝑘|𝛽)
𝑑=1
𝐷
𝑖=1
𝑛 𝑑
𝑝 𝑥 𝑑,𝑖|𝑧 𝑑,𝑖, 𝜱 𝑑𝜱
×
𝑑=1
𝐷
𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑑𝜣
2019年3月23日(土) トピックモデルとその周辺 48
LDAの周辺化ギブスサンプリング
• 全文書の各単語トークンについて𝑧 𝑑,𝑖の値をサンプリングしていく
• 他の全ての単語トークンについては 𝑧 𝑑,𝑖の値が与えられているとする
• 初期値はランダムに決める
• この状況のもとで 𝑧 𝑑,𝑖の値をサンプリングする
• サンプリングのための確率(各𝑘について 𝑧 𝑑,𝑖 = 𝑘である確率)を求める
• LDAのCGSで使う𝑧 𝑑,𝑖の確率質量関数は
𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽
• これを結合分布からどうやって求める?
2019年3月23日(土) トピックモデルとその周辺 49
周辺化ギブスサンプリングの式導出(1/4)
𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
, 𝛼, 𝛽 ∝ 𝑝 𝑧 𝑑,𝑖 = 𝑘, 𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
|𝛼, 𝛽
= 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
, 𝛼, 𝛽 𝑝 𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
|𝛼, 𝛽
∝ 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽
ここで
𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 = 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝜱, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑝 𝜱|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜱
= 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝝋 𝑘 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜱
また
𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 = 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝜽 𝑑, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑝 𝜽 𝑑|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜽 𝑑
= 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝜽 𝑑 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖, 𝛼 𝑑𝜽 𝑑
2019年3月23日(土) トピックモデルとその周辺 50
𝑝 𝑥 𝑑,𝑖 = 𝑣, 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
, 𝛼, 𝛽
を作るにはこの手順を踏まないといけない
周辺化ギブスサンプリングの式導出(2/4)
(𝜽 𝑑と𝝋 𝑘の分布を求める)
𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖, 𝛼 =
𝛤(𝑛 𝑑
∖𝑑,𝑖
+ 𝐾𝛼)
𝑘=1
𝐾
𝛤(𝑛 𝑑,𝑘
∖𝑑,𝑖
+ 𝛼) 𝑘=1
𝐾
𝜃 𝑑,𝑘
𝑛 𝑑,𝑘
∖𝑑,𝑖
+𝛼−1
𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 =
𝛤(𝑛 𝑘
∖𝑑,𝑖
+ 𝑉𝛽)
𝑣=1
𝑉
𝛤(𝑛 𝑘,𝑣
∖𝑑,𝑖
+ 𝛽) 𝑣=1
𝑉
𝜑 𝑘,𝑣
𝑛 𝑘,𝑣
∖𝑑,𝑖
+𝛽−1
2019年3月23日(土) トピックモデルとその周辺 51
• これらはディリクレ分布の密度関数(conjugate prior)
• 文書𝑑の𝑖番目の単語トークンを除いて(これが「 ∖ 𝑑, 𝑖 」の意味)
• 文書𝑑でトピック𝑘に割り当てられているトークン数は 𝑛 𝑑,𝑘
∖𝑑,𝑖
• トピック𝑘に割り当てられている単語𝑣のトークン数は 𝑛 𝑘,𝑣
∖𝑑,𝑖
補足:LDAの推定で使う二種類の統計量
• 以下の二種類の統計量がLDAの推定の話によく出てくる
• 文書𝑑でトピック𝑘に割り当てられているトークン数 𝑛 𝑑,𝑘
• 文書ごとのローカルな統計量
• トピック𝑘に割り当てられている単語𝑣のトークン数 𝑛 𝑘,𝑣
• 文書集合全体に関わるグローバルな統計量
• 𝑛 𝑘 は全ての語彙にわたる𝑛 𝑘,𝑣の和
2019年3月23日(土) トピックモデルとその周辺 52
周辺化ギブスサンプリングの式導出(3/4)
(𝜽 𝑑を周辺化し𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
, 𝛼, 𝛽 を求める)
𝑝 𝑧 𝑑,𝑖 = 𝑘|𝜽 𝑑 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖, 𝛼 𝑑𝜽 𝑑 = 𝐸 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖,𝛼 𝜃 𝑑,𝑘
=
𝛤(𝑛 𝑑
∖𝑑,𝑖
+ 𝐾𝛼)
𝑘=1
𝐾
𝛤(𝑛 𝑑,𝑘
∖𝑑,𝑖
+ 𝛼)
×
𝑘′=1
𝐾
𝛤(𝑛 𝑑,𝑘′
∖𝑑,𝑖
+ 𝛿(𝑘′ = 𝑘) + 𝛼)
𝛤(𝑛 𝑑
∖𝑑,𝑖
+ 1 + 𝐾𝛼)
=
𝑛 𝑑,𝑘
∖𝑑,𝑖
+ 𝛼
𝑛 𝑑
∖𝑑,𝑖
+ 𝐾𝛼
2019年3月23日(土) トピックモデルとその周辺 53
周辺化ギブスサンプリングの式導出(3/4)
(𝝋 𝑘を周辺化し𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
, 𝛼, 𝛽 を求める)
𝑝 𝑥 𝑑,𝑖 = 𝑣|𝝋 𝑘 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜱
= 𝐸 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖,𝒁∖𝑑,𝑖,𝛼,𝛽 𝜑 𝑘,𝑣
=
𝛤(𝑛 𝑘
∖𝑑,𝑖
+ 𝑉𝛽)
𝑣=1
𝑉
𝛤(𝑛 𝑘,𝑣
∖𝑑,𝑖
+ 𝛽)
×
𝑣′=1
𝑉
𝛤(𝑛 𝑘,𝑣′
∖𝑑,𝑖
+ 𝛿(𝑣′ = 𝑣) + 𝛽)
𝛤(𝑛 𝑘
∖𝑑,𝑖
+ 1 + 𝑉𝛽)
=
𝑛 𝑘,𝑣
∖𝑑,𝑖
+ 𝛽
𝑛 𝑘
∖𝑑,𝑖
+ 𝑉𝛽
2019年3月23日(土) トピックモデルとその周辺 54
CGSのアルゴリズム
𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖
, 𝒁∖𝑑,𝑖
, 𝛼, 𝛽 ∝
𝑛 𝑑,𝑘
∖𝑑,𝑖
+ 𝛼
𝑛 𝑑
∖𝑑,𝑖
+ 𝐾𝛼
×
𝑛 𝑘,𝑣
∖𝑑,𝑖
+ 𝛽
𝑛 𝑘
∖𝑑,𝑖
+ 𝑉𝛽
• 以下を(ランダムに置換された)全単語トークンについて実行
• 個々の単語トークンについてトピック確率を上の式で計算
• 計算されたトピック確率に基づいてトピックをdraw
• perplexityの値がほとんど変化しなくなるまで続ける
2019年3月23日(土) トピックモデルとその周辺 55
CGSで得られたトピック割り当ての使い方
• 各文書でのトピック確率を求める
• 同一文書内で各トピックに割り当てられているトークン数𝑛 𝑑,𝑘を集計
• 複数回のサンプリングにわたる平均を使うこともできる
• 集計した個数に𝛼を足してから規格化する=
𝑛 𝑑,𝑘+𝛼
𝑛 𝑑+𝐾𝛼
• 各トピックでの単語確率を求める
• 各トピックへ割り当てられている単語のトークン数𝑛 𝑘,𝑣を集計
• 集計した個数に𝛽を足してから規格化する=
𝑛 𝑘,𝑣+𝛽
𝑛 𝑘+𝑉𝛽
2019年3月23日(土) トピックモデルとその周辺 56
LDAのCGSのprosとcons
• pros
• 結果がきれい
• 異なるトピックの高確率語がきれいに異なる話題に対応しているように見える
• きれいでないときはハイパーパラメータ𝛼と𝛽を変えてみる
• 逆に言えばハイパーパラメータ(とトピック数𝐾 )以外は何もいじらなくていい
• cons
• 時間がかかる
• サンプリングをしばらく回す必要あり(最初のほうの結果は使えない; burn-in)
• 評価値がある程度良くなるところまでたどりつくのに時間がかかる
• 並列化がしにくい
2019年3月23日(土) トピックモデルとその周辺 57
変分ベイズ法
(Variational Bayes; VB)
2019年3月23日(土) トピックモデルとその周辺 58
LDAの変分ベイズ法
• 事後分布推定を最適化問題として解く
• 対数周辺尤度のlower boundを最大化する問題を解く
• intractableな事後分布をシンプルな分布で近似する
• 因子分解可能という仮定をおくことによって単純化された分布で近似する
• LDAの変分ベイズ法で求める近似事後分布
• 𝜽 𝑑(各文書でのトピック確率)の近似事後分布
• 𝑧 𝑑,𝑖(各トークンのトピック割り当て)の近似事後分布
• 𝝋 𝑘については最尤推定 [Blei+ JMLR03]
2019年3月23日(土) トピックモデルとその周辺 59
変分ベイズ法(一般の場合)
log 𝑝 𝑿 = log 𝑝(𝑿, 𝚯) 𝑑𝚯 = log 𝑞(𝚯)
𝑝(𝑿, 𝚯)
𝑞(𝚯)
𝑑𝚯
≥ 𝑞 𝚯 log
𝑝 𝑿, 𝚯
𝑞 𝚯
𝑑𝚯
= 𝑞 𝚯 log 𝑝(𝑿, 𝚯) 𝑑𝚯 − 𝑞 𝚯 log 𝑞 𝚯 𝑑𝚯
• このlower boundを最大化
• 𝑞 𝚯 = 𝑝 𝚯|𝑿 のとき等号成立・・・ 𝑞 𝚯 を事後分布の近似とみなす
2019年3月23日(土) トピックモデルとその周辺 60
対数周辺尤度
イェンセンの不等式
分母分子で
キャンセル
LDAのすべての変数の結合分布(再)
• 各文書𝒙 𝑑の生成をそのまま式に書き下すと…
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱)
= 𝑝 𝜽 𝑑|𝛼
𝑖=1
𝑛 𝑑
𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖
• 文書集合全体では
𝑝 𝑿, 𝒁, 𝜣|𝛼, 𝜱 =
𝑑=1
𝐷
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱
2019年3月23日(土) 61トピックモデルとその周辺
対数周辺尤度
• 隠れ変数をすべて積分消去(周辺化)
log 𝑝 𝑿|𝛼, 𝜱 =
𝑑=1
𝐷
log 𝑝 𝒙 𝑑|𝛼, 𝜱
=
𝑑=1
𝐷
log
𝒛 𝑑
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑑𝜽 𝑑
• この周辺化の計算はintractable
• 周辺尤度(marginal likelihood)はevidenceとも呼ばれる
2019年3月23日(土) トピックモデルとその周辺 62
対数周辺尤度にイェンセンの不等式を適用
(変分ベイズ法で最初にすること)
log 𝑝 𝒙 𝑑|𝛼, 𝜱 = log
𝒛 𝑑
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑑𝜽 𝑑
= log
𝒛 𝑑
𝑞(𝒛 𝑑, 𝜽 𝑑)
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱
𝑞(𝒛 𝑑, 𝜽 𝑑)
𝑑𝜽 𝑑
≥
𝒛 𝑑
𝑞 𝒛 𝑑, 𝜽 𝑑 log
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱
𝑞(𝒛 𝑑, 𝜽 𝑑)
𝑑𝜽 𝑑
• 等号成立は𝑞 𝒛 𝑑, 𝜽 𝑑 = 𝑝 𝒛 𝑑, 𝜽 𝑑|𝒙 𝑑, 𝛼, 𝜱 のとき
• つまり𝑞 𝒛 𝑑, 𝜽 𝑑 が真の事後分布に一致するとき
2019年3月23日(土) トピックモデルとその周辺 63
因子分解の仮定
• 𝑞 𝒛 𝑑, 𝜽 𝑑 は真の事後分布を近似する分布
• 以下のように複数の因子の積で書けると仮定する
𝑞 𝒛 𝑑, 𝜽 𝑑 = 𝑞(𝜽 𝑑)
𝑖=1
𝑛 𝑑
𝑞(𝑧 𝑑,𝑖)
• この因子分解の仮定から𝑞(𝜽 𝑑)はディリクレ分布であることが導ける
• 𝑞(𝜽 𝑑)の密度関数のかたちについて何も仮定しなくてもこのことが導ける
• なお𝑞(𝑧 𝑑,𝑖)はカテゴリカル分布
2019年3月23日(土) トピックモデルとその周辺 64
ELBO (Evidence Lower BOund)
• イェンセンの不等式を適用することで得られる対数周辺尤度の下界を
ELBO (evidence lower bound) と呼ぶ
log 𝑝 𝒙 𝑑; 𝛼, 𝜱 ≥
𝒛 𝑑
𝑞 𝒛 𝑑, 𝜽 𝑑 log
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱
𝑞 𝒛 𝑑, 𝜽 𝑑
𝑑𝜽 𝑑
= 𝐸 𝑞 𝜽 𝑑
log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑
log 𝑝 𝒛 𝑑 𝜽 𝑑 + 𝐸 𝑞 𝒛 𝑑
log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱
− 𝐸 𝑞 𝜽 𝑑
log 𝑞 𝜽 𝑑 − 𝐸 𝑞 𝒛 𝑑
log 𝑞 𝒛 𝑑
• 変分ベイズ法ではELBOを最大化する計算をする
• 対数周辺尤度からELBOを引くと近似事後分布と真の事後分布のKL情報量になる
2019年3月23日(土) トピックモデルとその周辺 65
LDAの場合のELBO最大化
log 𝑝 𝒙 𝑑|𝛼, 𝜱
≥ 𝐸 𝑞 𝜽 𝑑
log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑
log 𝑝 𝒛 𝑑 𝜽 𝑑 + 𝐸 𝑞 𝒛 𝑑
log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱
− 𝐸 𝑞 𝜽 𝑑
log 𝑞 𝜽 𝑑 − 𝐸 𝑞 𝒛 𝑑
log 𝑞 𝒛 𝑑
• LDAの場合は各項(近似事後分布に関する期待値)を手計算できる
• それだけでなく各パラメータで微分してイコールゼロとおけば閉じた更新式が求まる
• ディリクレ分布である近似事後分布𝑞 𝜽 𝑑 のパラメータ𝜁 𝑑,𝑘
• カテゴリカル分布である𝑞(𝑧 𝑑,𝑖)のパラメータ 𝛾 𝑑,𝑖,𝑘 ≡ 𝑞(𝑧 𝑑,𝑖 = 𝑘)
• 各トピックでの単語確率パラメータ𝜑 𝑘,𝑣
• ここでは事前分布を導入しないので𝜑 𝑘,𝑣が現われる項を𝜑 𝑘,𝑣で微分
2019年3月23日(土) トピックモデルとその周辺 66
文書集合全体についてのELBO
𝑑=1
𝐷
log 𝑝 𝒙 𝑑|𝛼, 𝜱
≥
𝑑=1
𝐷
𝐸 𝑞 𝜽 𝑑
log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑
log 𝑝 𝒛 𝑑 𝜽 𝑑
2019年3月23日(土) トピックモデルとその周辺 67
各トピックでの単語確率𝜱だけが
すべての文書に関係する
他のパラメータは
文書ごとに別々に更新
ELBOを構成する各項を求める
𝐸 𝑞 𝜽 𝑑
log 𝑝 𝜽 𝑑; 𝛼 = log Γ(𝐾𝛼) −
𝑘=1
𝐾
log Γ 𝛼 +
𝑘=1
𝐾
(𝛼 − 1)𝐸 𝑞 𝜽 𝑑
[log 𝜃 𝑑,𝑘]
𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑
log 𝑝 𝒛 𝑑 𝜽 𝑑 =
𝑖=1
𝑛 𝑑
𝑘=1
𝐾
𝛾 𝑑,𝑖,𝑘 𝐸 𝑞 𝜽 𝑑
[log 𝜃 𝑑,𝑘]
𝐸 𝑞 𝒛 𝑑
log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱 =
𝑖=1
𝑛 𝑑
𝑘=1
𝐾
𝛾 𝑑,𝑖,𝑘 log 𝜑 𝑘,𝑥 𝑑,𝑖
−𝐸 𝑞 𝜽 𝑑
log 𝑞 𝜽 𝑑 = − log Γ
𝑘=1
𝐾
𝜁 𝑑,𝑘 +
𝑘=1
𝐾
log Γ 𝜁 𝑑,𝑘 −
𝑘=1
𝐾
(𝜁 𝑑,𝑘 − 1)𝐸 𝑞 𝜽 𝑑
[log 𝜃 𝑑,𝑘]
−𝐸 𝑞 𝒛 𝑑
log 𝑞 𝒛 𝑑 = −
𝑖=1
𝑛 𝑑
𝑘=1
𝐾
𝛾 𝑑,𝑖,𝑘 log 𝛾 𝑑,𝑖,𝑘
ちなみに
𝐸 𝑞 𝜽 𝑑
log 𝜃 𝑑,𝑘 = 𝜓 𝜁 𝑑,𝑘 − 𝜓
𝑘=1
𝐾
𝜁 𝑑,𝑘
2019年3月23日(土) トピックモデルとその周辺 68
ELBOを各パラメータで微分
• 文書𝑑のELBOを𝐿 𝑑とおく
𝜕𝐿 𝑑
𝜕𝛾 𝑑,𝑖,𝑘
= 𝑛 𝑑,𝑣 𝐸 𝑞 𝜽 𝑑
log 𝜃 𝑑,𝑘 + log 𝜑 𝑘,𝑥 𝑑,𝑖
− log 𝛾 𝑑,𝑖,𝑘 + 𝑐𝑜𝑛𝑠𝑡.
∴ 𝛾 𝑑,𝑖,𝑘 ∝
exp 𝜓 𝜁 𝑑,𝑘
exp 𝜓 𝑘=1
𝐾
𝜁 𝑑,𝑘
𝜑 𝑘,𝑥 𝑑,𝑖
𝜕𝐿
𝜕𝜁 𝑑,𝑘
= −𝜁 𝑑,𝑘 + 𝛼 +
𝑖=1
𝑛 𝑑
𝛾 𝑑,𝑖,𝑘
𝜕𝐸 𝑞 𝜽 𝑑
[log 𝜃 𝑑,𝑘]
𝜕𝜁 𝑑,𝑘
∴ 𝜁 𝑑,𝑘 = 𝛼 +
𝑖=1
𝑛 𝑑
𝛾 𝑑,𝑖,𝑘
• 𝜑 𝑘,𝑣については 𝑑=1
𝐷
𝐿 𝑑を微分して∴ 𝜑 𝑘,𝑣 = 𝑑=1
𝐷
𝑖=1
𝑛 𝑑 𝛿(𝑥 𝑑,𝑖=𝑣)𝛾 𝑑,𝑖,𝑘
𝑣=1
𝑉
𝑑=1
𝐷
𝑖=1
𝑛 𝑑 𝛿(𝑥 𝑑,𝑖=𝑣)𝛾 𝑑,𝑖,𝑘
2019年3月23日(土) トピックモデルとその周辺 69
LDAのVBで求められるパラメータ
• 文書ごとにローカルなパラメータ
• 文書𝑑で第𝑖トークンがトピック𝑘に割り当てられる事後確率 𝛾 𝑑,𝑖,𝑘
• つまり𝛾 𝑑,𝑖,𝑘 ≡ 𝑞(𝑧 𝑑,𝑖 = 𝑘)
• 文書𝑑におけるトピック確率のディリクレ事後分布のパラメータ 𝜁 𝑑,𝑘
• 文書集合全体に関わるグローバルなパラメータ
• トピック𝑘での単語𝑣の確率 𝜑 𝑘,𝑣
2019年3月23日(土) トピックモデルとその周辺 70
補足:LDAの推定で使う二種類の統計量
• 以下の二種類の統計量がLDAの推定の話によく出てくる
• 文書𝑑でトピック𝑘に割り当てられているトークン数
𝑛 𝑑,𝑘 =
𝑖=1
𝑛 𝑑
𝛾 𝑑,𝑖,𝑘
• トピック𝑘に割り当てられている単語𝑣のトークン数
𝑛 𝑘,𝑣 =
𝑑=1
𝐷
𝑖=1
𝑛 𝑑
𝛿(𝑥 𝑑,𝑖 = 𝑣)𝛾 𝑑,𝑖,𝑘
• 𝑛 𝑘 は全ての語彙にわたる𝑛 𝑘,𝑣の和
2019年3月23日(土) トピックモデルとその周辺 71
LDAの変分ベイズ法アルゴリズム
repeat:
for 𝑑 = 1, … , 𝐷 :
𝜁 𝑑,𝑘をランダムに初期化
repeat :
for 𝑖 = 1, … , 𝑛 𝑑 : 𝛾 𝑑,𝑖,𝑘を更新
𝜁 𝑑,𝑘を更新
until 𝜁 𝑑,𝑘の変化が微小
𝜑 𝑘,𝑣を更新
until ELBOの変化が微小
2019年3月23日(土) トピックモデルとその周辺 72
LDAのVBのprosとcons
• pros
• 結果がきれい
• 異なるトピックの高確率語がきれいに異なる話題に対応しているように見える
• きれいでないときはハイパーパラメータ𝛼を変えてみる
• 逆に言えばハイパーパラメータ(とトピック数𝐾 )以外は何もいじらなくていい
• cons
• 時間がかかる
• 内側のループが結構重たい
• このループの回数をケチると結果がかなり悪くなる
• ただし並列化はしやすい(文書ごとに独立した計算)
2019年3月23日(土) トピックモデルとその周辺 73
トピックモデルの評価方法
• perplexity
• NPMI
2019年3月23日(土) トピックモデルとその周辺 74
perplexity
• 未知文書𝒙0について以下を求める
perplexity 𝒙0 𝑿train = exp −
1
𝑛0 𝑖=1
𝑛0
log
𝑘=1
𝐾
𝑞 𝑘|𝒙0 𝑞(𝑥0,𝑖|𝑘)
• 未知文書𝒙0におけるトピック𝑘の確率 𝑞 𝑘|𝒙0
• 未知文書ごとに新しく計算する(fold-in) [Asuncion+ UAI09]
• トピック𝑘での単語𝑥0,𝑖の確率 𝑞(𝑥0,𝑖|𝑘)
• 訓練データで求めてある近似事後分布をそのまま固定して使う
• 直感的には「次の1トークンとして現われる単語のバリエーション」
• この値が小さいほどバリエーションを狭めることができているので、良い
2019年3月23日(土) トピックモデルとその周辺 75
未知文書でのトピック確率の計算[Asuncion+ UAI09]
• CGSの場合
• 各トピックの単語確率は固定してサンプリングを回す
• 十分な回数を回した後(burn-in period)複数のサンプルを取って平均する
• VBの場合
• 各トピックの単語確率は固定して内側のループを回す
• 内側のループは十分な回数を回す
2019年3月23日(土) トピックモデルとその周辺 76
注意: gensimのperplexity
• 1トークンあたりのlower bound値のマイナスのexp2
• gensim/models/ldamodel.py
2019年3月23日(土) トピックモデルとその周辺 77
PMI (pointwise mutual information)
PMI(𝑥, 𝑦) ≡ log
𝑝(𝑥, 𝑦)
𝑝 𝑥 𝑝(𝑦)
• PMI 𝑥, 𝑦 > 0 ⇔ 𝑝 𝑥, 𝑦 > 𝑝 𝑥 𝑝(𝑦)
• 共起する頻度が高くて独立な事象とみなせない
• PMI 𝑥, 𝑦 < 0 ⇔ 𝑝 𝑥, 𝑦 < 𝑝 𝑥 𝑝(𝑦)
• 共起する頻度が低くて独立な事象とみなせない
2019年3月23日(土) トピックモデルとその周辺 78
トピックモデルの評価にPMIを使う
• PMIを計算するための文書集合を用意しておく
• 各トピックについて以下を実行
• トピック内で確率が高い上位10単語を取得
• それぞれの単語についていくつの文書で出現するか数える
• これをもとに𝑝(𝑥)を算出
• すべての単語ペア(45ペア)についていくつの文書で共起するか数える
• これをもとに𝑝(𝑥, 𝑦)を算出
• すべての単語ペア(45ペア)についてPMIを算出
• すべてのトピックのすべての単語ペアについてPMIの平均を算出
2019年3月23日(土) トピックモデルとその周辺 79
NPMI (normalized pointwise mutual information)
[Bouma 09]
• 1から−1の範囲に規格化されたPMI
2019年3月23日(土) トピックモデルとその周辺 80
なぜperplexityだけではダメ?
• PMIはトピック語を直接評価している [Newman+ NAACL HLT 2010]
• perplexityが悪くてもPMIは良いことがある
2019年3月23日(土) トピックモデルとその周辺 81
[Srivastava+ ICLR2017]
前半、おしまい。
2019年3月23日(土) トピックモデルとその周辺 82
トピックモデルの
基礎と応用
(応用編)
長崎大学 工学研究科 正田 備也(まさだ・ともなり)
masada@nagasaki-u.ac.jp
2019年3月23日(土) 83トピックモデルとその周辺
今日の話題
• 前半:トピックモデル入門
• トピックモデルの概要
• トピックモデルとは、前処理、どう使うか、既存の実装
• LDAの詳細
• どんな生成モデルか、事後分布の実現法(周辺化ギブスサンプリング、変分ベイズ法)
• トピックモデルの評価方法
• Perplexity, NPMI
• 後半:トピックモデルの新しい研究動向~深層学習とどう関係づけるか
• ミニバッチ変分ベイズ法
• 変分オートエンコーダ(VAE)との関係
• 敵対的生成ネットワーク(GAN)との関係
2019年3月23日(土) 84トピックモデルとその周辺
ミニバッチ変分ベイズ法
2019年3月23日(土) トピックモデルとその周辺 85
LDAのミニバッチ変分ベイズ法
• 文書をバッチ的にではなく少しずつ処理したい
• [Hoffman+ NIPS2010]が最初の提案
• いい評価値を得るまでの”時間”がVBより少なくなる(次スライド)
• 問題は文書集合全体に関わるパラメータの更新をどうするか
• つまり各トピックでの単語確率の更新
• トピック毎の単語確率にも事前分布を使っている場合は事後分布のパラメータの更新
• 詳細は佐藤『トピックモデルによる統計的潜在意味解析』3.4節を参照
2019年3月23日(土) トピックモデルとその周辺 86
ミニバッチVBの「速さ」
• perplexityの減り方が速い
• 文書集合をひととおり処理し終える前にどんどん良くなっている
• 最終的にたどりつく評価値もバッチ処理より小さい
2019年3月23日(土) トピックモデルとその周辺 87
[Hoffman+ NIPS2010](ミニバッチのサイズは1024)
LDAのVB
repeat:
for 𝑑 = 1, … , 𝐷 :
𝜁 𝑑,𝑘をランダムに初期化
repeat :
for 𝑖 = 1, … , 𝑛 𝑑 : 𝛾 𝑑,𝑖,𝑘を更新
𝜁 𝑑,𝑘を更新
until 𝜁 𝑑,𝑘の変化が微小
𝜑 𝑘,𝑣を更新
until ELBOの変化が微小
2019年3月23日(土) トピックモデルとその周辺 88
全文書を見終わってから更新
LDAのVBのミニバッチ化
repeat:
ミニバッチを取得
for 𝑑 in ミニバッチ:
𝜁 𝑑,𝑘をランダムに初期化
repeat :
for 𝑖 = 1, … , 𝑛 𝑑 : 𝛾 𝑑,𝑖,𝑘を更新
𝜁 𝑑,𝑘を更新
until 𝜁 𝑑,𝑘の変化が微小
𝜑 𝑘,𝑣を更新
until ELBOの変化が微小
2019年3月23日(土) トピックモデルとその周辺 89
ここをどうするか…
文書集合全体についてのELBO
𝑑=1
𝐷
log 𝑝 𝒙 𝑑|𝛼, 𝜱
≥
𝑑=1
𝐷
𝐸 𝑞 𝜽 𝑑
log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑
log 𝑝 𝒛 𝑑 𝜽 𝑑
2019年3月23日(土) トピックモデルとその周辺 90
Adam [Kingma+ ICLR2015]
• 自然勾配法の近似としてのAdam
• 空間計算量 𝑂(𝑛)
• 時間計算量(逆行列の計算) 𝑂(𝑛)
• 佐藤『トピックモデルによる統計的潜在意味解析』3.4節には自然勾配法の説明がある
• LDAの場合、自然勾配は閉じた式で求まる(逆行列の計算が不要)
2019年3月23日(土) トピックモデルとその周辺 91
[Kingma+ ICLR2015]
ここでの方針 : 𝜑 𝑘,𝑣を"深層学習"的に更新してしまう
• ELBOにマイナスをつけて損失関数とする
• 内側のループはバッチVBと同じ
• つまり𝛾 𝑑,𝑖,𝑘や𝜁 𝑑,𝑘はVBと同様に閉じた式で更新
• 𝜑 𝑘,𝑣はAdamで更新
• 𝜑 𝑘,𝑣は微分可能(PyTorchならrequires_grad=True)なテンソルとして用意
• negative ELBOの計算が前向き計算(とはいえ関係するのは尤度の項だけ)
• バックプロパゲーションする(勾配を計算する)
2019年3月23日(土) トピックモデルとその周辺 92
𝜑 𝑘,𝑣を少し工夫する
• 𝜑 𝑘,𝑣をそのまま最尤推定するとうまくいかないことが多い
• そこで以下のようにパラメータを設定し直す
𝜑 𝑘,𝑣 ∝ exp(𝑏 𝑘,𝑣 + 𝑏0,𝑣)
• softmax関数で行列𝑩 = (𝑏 𝑘,𝑣)とバイアスベクトル𝒃0から𝜱を得る
𝜱 ≡ Softmax(𝑩 𝑇 + 𝒃0)
• 𝑩と𝒃0をバックプロパゲーションで更新
2019年3月23日(土) トピックモデルとその周辺 93
ハイパーパラメータの調整
• dev setのperplexityを見ながら調整
perplexity 𝒙0 𝑿train = exp −
1
𝑛0 𝑖=1
𝑛0
log
𝑘=1
𝐾 exp 𝜓 𝜁 𝑑,𝑘
exp 𝜓 𝑘=1
𝐾
𝜁 𝑑,𝑘
𝜑 𝑘,𝑥0,𝑖
• dev文書𝒙0のトピック確率は変分ベイズ法の内側のループで求める
• 調整すべきハイパーパラメータ
• Adamの学習率
• ミニバッチサイズ
• 対称ディリクレ事前分布のパラメータ𝛼
2019年3月23日(土) トピックモデルとその周辺 94
既存の実装
genism.models.ldamodel
sklearn.decomposition.LatentDirichletAllocation
• 調整したほうがいいかもしれない引数
• バッチサイズ
• デフォルト値はgensimは2000、sklearnは128
• 各文書でのトピック確率分布のディリクレ事前分布のパラメータ
• 各トピックでの単語確率分布のディリクレ事前分布のパラメータ
• いずれもデフォルト値はトピック数の逆数
• 学習率
• 設定の仕方がむずかしいのでツールに任せていいかも
2019年3月23日(土) トピックモデルとその周辺 95
𝜌𝑡 = 𝜏0 + 𝑡 −𝜅
offset 𝜏0とdecay 𝜅
2019年3月23日(土) トピックモデルとその周辺 96
[Hoffman+ NIPS2010]
LDAのミニバッチVBのprosとcons
• pros
• 大規模データに対応できる
• 収束が(VBに比べると)速い
• 最終的な評価値も良いことが多い
• 結果がきれい
• きれいでないときは・・・ハイパーパラメータを調整
• cons
• ハイパーパラメータの調整が少しだけ大変
• ミニバッチ・サイズは要調整,学習率も?
• あまりうまく行かない(すべてのトピックが同じになる)こともあるので
2019年3月23日(土) トピックモデルとその周辺 97
ここまでくると考えること
• 「どうせ手計算での微分はもうしないので・・・」
• 内側のループでのパラメータ更新もBPで実行したい
• 変分オートエンコーダ[Kingma+ 13][Srivastava +17]の利用
• 文書ごとのローカルなパラメータもBPで更新
• 近似事後分布の表現力を高めたい
• adversarial variational Bayes[Mescheder+ 17][Huszar 17]の利用
• GAN的な手法でimplicitな分布を近似事後分布として使えるようになる
2019年3月23日(土) トピックモデルとその周辺 98
トピックモデルのための
変分オートエンコーダ
2019年3月23日(土) トピックモデルとその周辺 99
トピックモデルは何をしているか
• 文書のエンコードをしている
• 語彙サイズ次元のベクトルによる表現を
• トピック数次元のベクトルによる表現にエンコードしている
• SVD, NMF, PLSA等と同じ。
• オートエンコーダの考え方をトピックモデルに使う
• 観測データをエンコードしコードを得る
• コードをデコードして元の観測データに戻す
2019年3月23日(土) トピックモデルとその周辺 100
オートエンコーダ
2019年3月23日(土) トピックモデルとその周辺 101
https://towardsdatascience.com/applied-deep-learning-part-3-autoencoders-1c083af4d798
(典型的な)変分オートエンコーダ
• エンコーダNN:個々の観測データを対角正規分布のパラメータに変換
• デコーダNN :対角正規分布から得たサンプルを使って観測データの尤度を計算
• 対角正規分布からのサンプル=近似事後分布からのサンプル=生成モデルのパラメータ
2019年3月23日(土) トピックモデルとその周辺 102
https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf
変分オートエンコーダ(VAE)[Kingma+ 2013]を
トピックモデルに使う
• ベイズ的な枠組みの中でのオートエンコーダ
• エンコード
• 観測データから近似事後分布のパラメータを算出
• その近似事後分布から生成モデルのパラメータをサンプリング
• デコード
• 生成モデルのパラメータを使って観測データの尤度を算出
• この尤度はELBOの一部として現われる
2019年3月23日(土) トピックモデルとその周辺 103
変分ベイズ法におけるELBO(一般の場合)
log 𝑝 𝑿 = log 𝑝(𝑿, 𝚯) 𝑑𝚯 = log 𝑞(𝚯)
𝑝(𝑿, 𝚯)
𝑞(𝚯)
𝑑𝚯
≥ 𝑞 𝚯 log
𝑝 𝑿, 𝚯
𝑞 𝚯
𝑑𝚯
=
𝑑
𝑞 𝚯 log 𝑝 𝒙 𝑑 𝚯 𝑑𝚯 + 𝑞 𝚯 log 𝑝 𝚯 𝑑𝚯 − 𝑞 𝚯 log 𝑞 𝚯 𝑑𝚯
=
𝑑
E 𝑞 𝚯 [log 𝑝 𝒙 𝑑 𝚯 ] − 𝐷 𝐾𝐿 𝑞 𝚯 ∥ 𝑝 𝚯
• 𝑞 𝚯 が近似事後分布
2019年3月23日(土) トピックモデルとその周辺 104
変分オートエンコーダのエンコーダ
• エンコーダ 𝑞 𝚯|𝒙 𝑑
• VBでは近似事後分布のパラメータをデータ点ごとに別々に求めていた
• パラメータの添え字に𝑑がついている=文書ごとに別々の事後分布がある
• VAEでは近似事後分布𝑞 𝚯|𝒙 𝑑 のパラメータがデータ点𝒙 𝑑の関数
• ここにニューラルネットワークを使う(すべてのデータ点に同じNNを使う)
log 𝑝 𝑿 ≥
𝑑
E 𝑞 𝚯|𝒙 𝑑
log 𝑝 𝒙 𝑑 𝚯 − 𝐷 𝐾𝐿 𝑞 𝚯|𝒙 𝑑 ∥ 𝑝 𝚯
2019年3月23日(土) トピックモデルとその周辺 105
𝒙 𝑑がgiven
近似事後分布𝑞 𝚯|𝒙 𝑑 のパラメータは𝒙 𝑑の関数
• VBにおける近似事後分布𝑞 𝚯
• 文書ごと(データ点𝒙 𝑑ごと)に別々に用意される
• VAEにおける近似事後分布𝑞 𝚯|𝒙 𝑑
• 近似事後分布𝑞 𝚯|𝒙 𝑑 のパラメータがデータ点𝒙 𝑑をもとに計算される
• データ点𝒙 𝑑から近似事後分布のパラメータを算出する関数を共通化
• この関数=エンコーダNN
• 入力=データ点𝒙 𝑑
• 出力=近似事後分布のパラメータ(生成モデルのパラメータではないので注意)
2019年3月23日(土) トピックモデルとその周辺 106
LDAのELBO
log 𝑝 𝒙 𝑑|𝛼, 𝜱
≥ E 𝑞 𝜽 𝑑
log 𝑝 𝜽 𝑑|𝛼 + E 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑
log 𝑝 𝒛 𝑑 𝜽 𝑑
+ E 𝑞 𝒛 𝑑
log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱 − E 𝑞 𝜽 𝑑
log 𝑞 𝜽 𝑑 − E 𝑞 𝒛 𝑑
log 𝑞 𝒛 𝑑
• LDAにVAEの考え方をどのように導入すればいいか?
• VAEでは近似事後分布の扱い方が異なる
• 𝑞 𝜽 𝑑 を観測データがgivenの条件つき分布𝑞 𝜽 𝑑|𝒙 𝑑 とみなす
• 𝑞 𝒛 𝑑 も𝑞 𝒛 𝑑|𝒙 𝑑 としたいが・・・
2019年3月23日(土) トピックモデルとその周辺 107
カテゴリカル分布の扱いづらさ
• 文書𝑑で第𝑖トークンがトピック𝑘に割り当てられる事後確率 𝑞(𝑧 𝑑,𝑖 = 𝑘)
• これはカテゴリカル分布
• LDAのVBでは𝛾 𝑑,𝑖,𝑘 ≡ 𝑞(𝑧 𝑑,𝑖 = 𝑘)とおいて𝛾 𝑑,𝑖,𝑘を求めた
• ところが・・・
• 近似事後分布からのサンプルを通してエンコーダNNが「透けて見えて」
いないとバックプロパゲーションできない
• カテゴリカル分布から得られるサンプルは離散値(アイテムID または one-hot ベクトル)
• 各アイテムの確率はサンプルから「透けて見えて」いない!
2019年3月23日(土) トピックモデルとその周辺 108
Reparameterization trick
• 正規分布ではサンプルからパラメータが「透けて見える」ようにできる
• [Kingma+ 13][Rezende+ 14][Salimans+ 12][Titsias+ 14]
• 実際、𝑁(𝜇, 𝜎2)からのサンプルは𝜀𝜎 + 𝜇と書ける
• 𝜀は𝑁(0,1)からのサンプル(標準正規分布のパラメータは定数)
2019年3月23日(土) トピックモデルとその周辺 109
https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf
トピックモデルのVAE(1/2)
• 離散値をとる隠れ変数𝑧 𝑑,𝑖は周辺化して消してしまう
𝑝 𝒙 𝑑, 𝜽 𝑑|𝛼, 𝜱 =
𝒛 𝑑
𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼
𝒛 𝑑
𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱)
= 𝑝 𝜽 𝑑|𝛼 𝑝(𝒙 𝑑|𝜽 𝑑, 𝜱)
• あとは𝑞 𝜽 𝑑|𝒙 𝑑 をreparameterization trickで何とかすればよいが・・・
• 次なる問題:ディリクレ分布は扱いにくい
• ディリクレ分布からのサンプリングはかなりデリケート
2019年3月23日(土) トピックモデルとその周辺 110
トピックモデルのVAE(2/2)
• エンコーダには対角正規分布を使う。事前分布は…
1. 対角正規分布にする [Miao+ ICML2017 のGSMモデル]
2. ディリクレ事前分布をラプラス近似する[Srivastava+ ICLR2017]
• 対角正規分布=共分散行列が対角行列の正規分布
• いずれにせよもはや「潜在的ディリクレ」とは言えない
• ここからは「トピックモデル」とだけ言うことにする
• ここでは・・・
• 事前分布𝑝 𝜽 𝑑 は標準正規分布
• 𝑞 𝜽 𝑑|𝒙 𝑑 は対角正規分布(サンプルにsoftmax関数を適用しトピック確率にする)
2019年3月23日(土) トピックモデルとその周辺 111
トピックモデルのVAEにおけるELBO
log 𝑝 𝒙 𝑑|𝜱 = log 𝑝 𝒙 𝑑, 𝜽 𝑑|𝜱 𝑑𝜽 𝑑
≥ 𝑞 𝜽 𝑑|𝒙 𝑑 log
𝑝 𝜽 𝑑 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱
𝑞 𝜽 𝑑|𝒙 𝑑
𝑑𝜽 𝑑
= E 𝑞 𝜽 𝑑|𝒙 𝑑
log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 − 𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑
2019年3月23日(土) トピックモデルとその周辺 112
モンテカルロ積分で近似
(次スライド参照)
この積分は計算できる
(次々スライド参照)
対数尤度の期待値のモンテカルロ近似
E 𝑞 𝜽 𝑑|𝒙 𝑑
log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 =
1
𝑆 𝑠=1
𝑆
log 𝑝 𝒙 𝑑 𝜽 𝑑
(𝑠)
, 𝜱
=
1
𝑆 𝑠=1
𝑆
𝒙 𝑑
𝑇LogSoftmax (𝑩 𝑇 + 𝒃0)𝜽 𝑑
(𝑠)
• 近似事後分布からのサンプリング𝜽 𝑑
(𝑠)
~𝑞 𝜽 𝑑|𝒙 𝑑
• サンプル数は𝑆 = 1でよい
• 標準正規分布のサンプル𝜀 𝑘
𝑠
~𝑁(0,1)を使って𝜃 𝑑,𝑘
(𝑠)
≡ 𝜀 𝑘
𝑠
𝜎 𝑘 𝒙 𝑑 + 𝜇 𝑘 𝒙 𝑑 と書ける
• 𝜇 𝑘 𝒙 𝑑 と𝜎 𝑘 𝒙 𝑑 はエンコーダの出力の一部として与えられる
2019年3月23日(土) トピックモデルとその周辺 113
各トピックの単語確率𝜱は
このようにパラメータ化
対角正規分布の場合のKL情報量
• 対角正規分布の場合のKL情報量の項
• [Kingma+ ICLR14]のAppendix Bより
• KL情報量にマイナスが付いたものである点に注意
−𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑 = 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝜽 𝑑 − log 𝑞 𝜽 𝑑|𝒙 𝑑 𝑑𝜽 𝑑
=
1
2 𝑘=1
𝐾
1 + log 𝜎 𝑑,𝑘
2 − 𝜇 𝑑,𝑘
2 − 𝜎 𝑑,𝑘
2
2019年3月23日(土) トピックモデルとその周辺 114
トピックモデルのVAEにおけるELBO
• まとめると・・・
log 𝑝 𝒙 𝑑|𝜱
≥
1
𝑆 𝑠=1
𝑆
𝒙 𝑑
𝑇LogSoftmax (𝑩 𝑇 + 𝒃0)𝜽 𝑑
(𝑠)
+
1
2 𝑘=1
𝐾
1 + log 𝜎 𝑑,𝑘
2 − 𝜇 𝑑,𝑘
2 − 𝜎 𝑑,𝑘
2
• ただし𝜃 𝑑,𝑘
(𝑠)
≡ 𝜀 𝑘
𝑠
𝜎 𝑘 𝒙 𝑑 + 𝜇 𝑘 𝒙 𝑑
2019年3月23日(土) トピックモデルとその周辺 115
VAEの問題点: latent variable collapse
log 𝑝 𝒙 𝑑|𝜱 ≥ E 𝑞 𝜽 𝑑|𝒙 𝑑
log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 − 𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑
• KL情報量の項が効きすぎる
• 正則化(regularization)の役割を果たす項
• 異なる文書でもエンコーダが似たような出力を与える
• するとトピック毎の単語確率の学習もうまくいかなくなる
• 解決法 ([He+ ICLR2019]も参照)
• KL情報量の項にエポック数が増えるにつれて1に近づく値を掛ける
• 0.1から始めて1.0に達するまで1エポックごとに0.1ずつ増やす、等
• デコーダに細工をする [Dieng CoRR abs/1807.04863]
2019年3月23日(土) トピックモデルとその周辺 116
Ladder Variational Autoencoders
[Sønderby+ NIPS2016]
• "warm-up"
2019年3月23日(土) トピックモデルとその周辺 117
トピックモデルのVAEのprosとcons
• pros
• 収束が速い
• 最終的な評価値もそれなりに良いことが多い
• 未知文書への対応が速い
• cons
• latent variable collapseはほぼ確実に起こる
• ハイパーパラメータの調整が大変
• ミニバッチ・サイズは要調整
• 単語確率の学習率とエンコーダの学習率は別にする
• エンコーダNNのアーキテクチャは当然いろいろ試す
• Dropoutが効く事もある、ReLUよりLeakyReLUが良いこともある、等
• 性能が良くなるなら何でもする
2019年3月23日(土) トピックモデルとその周辺 118
トピックモデルのための
敵対的変分ベイズ法
2019年3月23日(土) トピックモデルとその周辺 119
近似事後分布の選び方
• VAEでは対角正規分布
• かなり狭い範囲で近似事後分布の候補を探しているとも言える
• adversarial variational Bayes (AVB) [Mescheder+ ICML2017]
• VAEではエンコーダNNの出力が近似事後分布のパラメータだった
• これに乱数を組み合わせて近似事後分布からのサンプルを得ていた
• 乱数をエンコーダNNに入力してしまうとどうなる?
• 出力は何らかの分布に従う
• しかし密度関数は分からない(implicitな分布)
2019年3月23日(土) トピックモデルとその周辺 120
2019年3月23日(土) トピックモデルとその周辺 121
[Mescheder+ ICML2017]
GAN [Goodfellow+ NIPS2014]
• GANはふたつのことをしている
1. 密度関数が分からない分布の密度比を近似する
• GANの場合、観測データの分布とgeneratorの出力が従う分布
• どちらの分布の密度関数も分からない
• サンプルはいくらでも取れる ⇒ 密度比を近似できる
2. 密度比が1に近づくように一方の分布を変化させる
• GANの場合、generatorを動かす
2019年3月23日(土) トピックモデルとその周辺 122
密度比の近似 [Mohamed+ NIPS 2016 Workshop on Adversarial Training]
• 膨大な知見の蓄積がある話題
• density ratioだけでなくdensity differenceを近似するという話もある
• density ratioの近似だけでも色々な手法がある
• GANでは密度比の近似問題を分類問題に帰着させている
• 一方の分布のサンプルにラベル1を、他方については0を割り当てる
𝑝(𝜃)
𝑞(𝜃)
=
𝑝(𝜃|𝑦 = 1)
𝑝(𝜃|𝑦 = 0)
=
𝑝 𝑦 = 1 𝜃 𝑝 𝜃
𝑝 𝑦 = 1
𝑝 𝑦 = 1 𝜃 𝑝 𝜃
𝑝 𝑦 = 0
=
𝑝(𝑦 = 1|𝜃)
𝑝(𝑦 = 0|𝜃)
×
𝑝 𝑦 = 0
𝑝 𝑦 = 1
2019年3月23日(土) トピックモデルとその周辺 123
実際のサンプル数
の比で代用する
discriminatorを
使う
AVB (adversarial variational Bayes)
[Mescheder+ ICML2017]
log 𝑝 𝒙 𝑑|𝜱 ≥ E 𝑞 𝜽 𝑑|𝒙 𝑑
log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 − 𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑
• KL情報量の項に事前分布と近似事後分布の密度比が現われる
• GANと同じ手法が使えるなら𝑞 𝜽 𝑑|𝒙 𝑑 はimplicitな分布でよい
• GANのgeneratorと同様、エンコーダNNにノイズを入力する
• ノイズは標準正規分布に従うとする
• ただし𝒙 𝑑につなげて入力する
• エンコーダNNはそもそも𝒙 𝑑の関数だったので
2019年3月23日(土) トピックモデルとその周辺 124
KL情報量の定義
𝐷 𝐾𝐿 𝑞 ∥ 𝑝 = E 𝑞 log
𝑞
𝑝
密度比とdiscriminatorの出力の関係
Disc 𝜃 =
𝑟 𝜃
𝑟 𝜃 + 1
⇔ 𝑟 𝜃 =
Disc 𝜃
1 − Disc 𝜃
• 上の式でdiscriminatorの出力Disc 𝜃 を密度比𝑟 𝜃 に変換
• あとはGANと同じようにdiscriminatorをtrainingすればよい
2019年3月23日(土) トピックモデルとその周辺 125
[Goodfellow+ NIPS2014]
AVBとGANとの違い
• GANで密度比を近似しているのはそれを1に近づけたいから
• discriminatorを固定し、密度比が1に近づくような最小化問題を解く
• このときgeneratorを動かす
• AVBで密度比を近似するのはELBO最大化に使うから
• discriminatorを固定し、ELBO最大化問題を解く
• このときgeneratorを動かす
2019年3月23日(土) トピックモデルとその周辺 126
[Goodfellow+ NIPS2014]
トピックモデルのAVB
• Encoder 𝑔 𝒙 𝑑, 𝜺
• 文書𝑑のトピック確率 𝜃 𝑑 = 𝑔 𝒙 𝑑, 𝜺
• Decoder 𝑓(𝜽 𝑑)
• 文書𝑑の単語確率
𝑓(𝜽 𝑑) =Softmax(𝑩𝜽 𝑑 + 𝒃0)
• Discriminator 𝑟(𝜽 𝑑, 𝒙 𝑑)
• 対数密度比 𝑟(𝜽 𝑑, 𝒙 𝑑) = log
𝑞(𝜽 𝑑|𝒙 𝑑)
𝑝(𝜽 𝑑)
cf. 𝜎 𝑟 =
1
1+exp(− log 𝑞/𝑝)
=
𝑞
𝑝+𝑞
sample𝜽 𝑑
wordprobabilitiesfor
𝒙 𝑑
𝒙 𝑑
𝜺
𝜽 𝑑
𝒙 𝑑
𝜽 𝑑
トピックモデルのAVB: trainingのポイント
• encoder NNとdiscriminator NNの学習
• 両方とも学習率0.0001のAdamで(学習率を大きくすると良くない)
• 各トピックの単語確率
• 学習率が高めのAdamで(学習率0.1ぐらいで初めてうまくいくこともある)
• encoder NNに入力するノイズベクトル
• この次元はトピック数と関係なく調整する(500ぐらい必要かもしれない)
• 事前分布のパラメータ
• 場合によっては対角正規分布の事前分布の平均パラメータや標準偏差パラメータを動かす
• LDAで非対称ディリクレ事前分布のパラメータ𝜶を動かすのに似ている
• 単語embeddingの利用
• encoderへの入力を、term frequencyベクトルにembedding行列を掛けたものにする
• embedding行列は各トピックの単語確率の計算に使う行列と共通化して学習する
• GPUのメモリ使用量はかなり減る
2019年3月23日(土) トピックモデルとその周辺 128
トピックモデルのAVBのprosとcons
• pros
• 収束が速い
• 最終的な評価値も良いことが多い
• VAEより良くなることが多い
• 未知文書への対応が速い
• cons
• 完全に深層学習=ハイパーパラメータの調整がかなり大変
• ミニバッチ・サイズは要調整
• エンコーダNNのアーキテクチャは当然いろいろ試す
• Dropoutが効く事もある、ReLUよりLeakyReLUが良いこともある、等
• discriminator NNのアーキテクチャも当然いろいろ試す
• Dropoutは無いほうがいいかも
• 性能が良くなるなら何でもする
• いったん良さげな設定が見つかるとVAEよりもかなり推定計算がスムーズになる
2019年3月23日(土) トピックモデルとその周辺 129
結局、どの手法を使えばいい?
1. 周辺化ギブスサンプリング
• 調整すべきハイパーパラメータが少ない
• ほぼブラックボックスとして動かせる
2. ミニバッチ変分ベイズ法
• ミニバッチ学習なので大規模データに対応できる
2019年3月23日(土) トピックモデルとその周辺 130
今日の話題
• 前半:トピックモデル入門
• トピックモデルの概要
• トピックモデルとは、前処理、どう使うか、既存の実装
• LDAの詳細
• どんな生成モデルか、事後分布の実現法(周辺化ギブスサンプリング、変分ベイズ法)
• トピックモデルの評価方法
• Perplexity, NPMI
• 後半:トピックモデルの新しい研究動向~深層学習とどう関係づけるか
• ミニバッチ変分ベイズ法
• 変分オートエンコーダ(VAE)との関係
• 敵対的生成ネットワーク(GAN)との関係
2019年3月23日(土) 131トピックモデルとその周辺
参考文献
Asuncion+. On smoothing and inference for topic models. UAI 2009.
Dieng+. Avoiding Latent Variable Collapse With Generative Skip Models. CoRR abs/1807.04863.
Ganguly+. An LDA-smoothed relevance model for document expansion: a case study for spoken document retrieval. SIGIR 2013.
He+. Lagging Inference Networks and Posterior Collapse in Variational Autoencoders. ICLR 2019.
Huszár. Variational inference using implicit distributions. CoRR abs/1702.08235.
Kim+. Semi-amortized variational autoencoders. ICML 2018.
Kingma+. Auto-encoding variational Bayes. CoRR abs/1312.6114.
Jankowiak+. Pathwise derivatives beyond the reparameterization Trick. ICML 2018.
Mescheder+. Adversarial variational Bayes: Unifying variational autoencoders and generative adversarial networks. ICML 2017.
Miao+. Neural variational inference for text processing. ICML 2016.
Miao+. Discovering discrete latent topics with neural variational inference. ICML 2017.
Mohamed+. Learning in implicit generative models. NIPS 2016 Workshop on Adversarial Training. CoRR abs/1610.03483v4.
Newman+. Automatic evaluation of topic coherence. NAACL HLT 2010.
Rezende+. Stochastic backpropagation and approximate inference in deep generative models. ICML 2014.
Roeder+. Sticking the landing: Simple, lower-variance gradient estimators for variational inference. NIPS 2017.
Salimans+. Fixed-form variational posterior approximation through stochastic linear regression. Bayesian Analysis 8 (4). 2013.
Sønderby+. Ladder variational autoencoders. NIPS 2016.
Srivastava+. Autoencoding variational inference for topic models. ICLR 2017.
Titsias+. Doubly stochastic variational Bayes for non-conjugate inference. ICML 2014.
Xiao+. Dirichlet variational autoencoder for text modeling. CoRR abs/1811.00135.
Yi+. A comparative study of utilizing topic models for information retrieval. ECIR 2009.
2019年3月23日(土) トピックモデルとその周辺 132

More Related Content

What's hot

単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
Naoaki Okazaki
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
joisino
 
MICの解説
MICの解説MICの解説
MICの解説
logics-of-blue
 
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門スペクトラルグラフ理論入門
スペクトラルグラフ理論入門irrrrr
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
Masahiro Suzuki
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
Deep Learning JP
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
Naoaki Okazaki
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
Hidetoshi Matsui
 
数式からみるWord2Vec
数式からみるWord2Vec数式からみるWord2Vec
スペクトラル・クラスタリング
スペクトラル・クラスタリングスペクトラル・クラスタリング
スペクトラル・クラスタリング
Akira Miyazawa
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
Yoshitaka Ushiku
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
Megagon Labs
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類Shintaro Fukushima
 
[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景
Deep Learning JP
 
21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)
Toru Imai
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
sleepy_yoshi
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
Akira Masuda
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門shima o
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.
 

What's hot (20)

単語・句の分散表現の学習
単語・句の分散表現の学習単語・句の分散表現の学習
単語・句の分散表現の学習
 
最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
LDA入門
LDA入門LDA入門
LDA入門
 
MICの解説
MICの解説MICの解説
MICの解説
 
スペクトラルグラフ理論入門
スペクトラルグラフ理論入門スペクトラルグラフ理論入門
スペクトラルグラフ理論入門
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings  (EMNLP 2021)
【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)
 
Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善Word2vecの並列実行時の学習速度の改善
Word2vecの並列実行時の学習速度の改善
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
数式からみるWord2Vec
数式からみるWord2Vec数式からみるWord2Vec
数式からみるWord2Vec
 
スペクトラル・クラスタリング
スペクトラル・クラスタリングスペクトラル・クラスタリング
スペクトラル・クラスタリング
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
 
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
GiNZAで始める日本語依存構造解析 〜CaboCha, UDPipe, Stanford NLPとの比較〜
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景[DL輪読会]1次近似系MAMLとその理論的背景
[DL輪読会]1次近似系MAMLとその理論的背景
 
21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)
 
計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-計算論的学習理論入門 -PAC学習とかVC次元とか-
計算論的学習理論入門 -PAC学習とかVC次元とか-
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
全力解説!Transformer
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
 

Similar to トピックモデルの基礎と応用

How to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & imlHow to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & iml
Satoshi Kato
 
第47回TokyoWebMining, トピックモデリングによる評判分析
第47回TokyoWebMining, トピックモデリングによる評判分析第47回TokyoWebMining, トピックモデリングによる評判分析
第47回TokyoWebMining, トピックモデリングによる評判分析
I_eric_Y
 
蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニングgenroku
 
Towards Knowledge-Based Personalized Product Description Generation in E-comm...
Towards Knowledge-Based Personalized Product Description Generation in E-comm...Towards Knowledge-Based Personalized Product Description Generation in E-comm...
Towards Knowledge-Based Personalized Product Description Generation in E-comm...
harmonylab
 
LDA等のトピックモデル
LDA等のトピックモデルLDA等のトピックモデル
LDA等のトピックモデルMathieu Bertin
 
Infer.NETを使ってLDAを実装してみた
Infer.NETを使ってLDAを実装してみたInfer.NETを使ってLDAを実装してみた
Infer.NETを使ってLDAを実装してみた
正志 坪坂
 
Rokko チュートリアル
Rokko チュートリアルRokko チュートリアル
Rokko チュートリアル
Computational Materials Science Initiative
 
ICDE2012勉強会:Social Media
ICDE2012勉強会:Social MediaICDE2012勉強会:Social Media
ICDE2012勉強会:Social Media
Yuto Yamaguchi
 
2016word embbed
2016word embbed2016word embbed
2016word embbed
Shin Asakawa
 
【文献紹介】Automatic community creation for abstractive spoken conversation summar...
【文献紹介】Automatic community creation for abstractive spoken conversation summar...【文献紹介】Automatic community creation for abstractive spoken conversation summar...
【文献紹介】Automatic community creation for abstractive spoken conversation summar...
Takashi YAMAMURA
 
Akira Imakura
Akira ImakuraAkira Imakura
Akira Imakura
Suurist
 
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
You&I
 
情報検索の基礎 第1章 論理検索
情報検索の基礎 第1章 論理検索情報検索の基礎 第1章 論理検索
情報検索の基礎 第1章 論理検索
nishioka1
 
Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crfShuyo Nakatani
 
漢籍利用者の研究プロセスと利用者タスク
漢籍利用者の研究プロセスと利用者タスク漢籍利用者の研究プロセスと利用者タスク
漢籍利用者の研究プロセスと利用者タスク
Maiko Kimura
 
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
Masahiro Suzuki
 
گنجينه کتاب هاي آزمون نظام مهندسی برق-نظارت
گنجينه کتاب هاي آزمون نظام مهندسی برق-نظارتگنجينه کتاب هاي آزمون نظام مهندسی برق-نظارت
گنجينه کتاب هاي آزمون نظام مهندسی برق-نظارت
Mohammad Karimi
 
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
Deep Learning JP
 
時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17
horihorio
 
Techmix2014 温故知新
Techmix2014 温故知新Techmix2014 温故知新
Techmix2014 温故知新
Kazuya Numata
 

Similar to トピックモデルの基礎と応用 (20)

How to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & imlHow to use in R model-agnostic data explanation with DALEX & iml
How to use in R model-agnostic data explanation with DALEX & iml
 
第47回TokyoWebMining, トピックモデリングによる評判分析
第47回TokyoWebMining, トピックモデリングによる評判分析第47回TokyoWebMining, トピックモデリングによる評判分析
第47回TokyoWebMining, トピックモデリングによる評判分析
 
蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング蔵書選定のための学位論文タイトルマイニング
蔵書選定のための学位論文タイトルマイニング
 
Towards Knowledge-Based Personalized Product Description Generation in E-comm...
Towards Knowledge-Based Personalized Product Description Generation in E-comm...Towards Knowledge-Based Personalized Product Description Generation in E-comm...
Towards Knowledge-Based Personalized Product Description Generation in E-comm...
 
LDA等のトピックモデル
LDA等のトピックモデルLDA等のトピックモデル
LDA等のトピックモデル
 
Infer.NETを使ってLDAを実装してみた
Infer.NETを使ってLDAを実装してみたInfer.NETを使ってLDAを実装してみた
Infer.NETを使ってLDAを実装してみた
 
Rokko チュートリアル
Rokko チュートリアルRokko チュートリアル
Rokko チュートリアル
 
ICDE2012勉強会:Social Media
ICDE2012勉強会:Social MediaICDE2012勉強会:Social Media
ICDE2012勉強会:Social Media
 
2016word embbed
2016word embbed2016word embbed
2016word embbed
 
【文献紹介】Automatic community creation for abstractive spoken conversation summar...
【文献紹介】Automatic community creation for abstractive spoken conversation summar...【文献紹介】Automatic community creation for abstractive spoken conversation summar...
【文献紹介】Automatic community creation for abstractive spoken conversation summar...
 
Akira Imakura
Akira ImakuraAkira Imakura
Akira Imakura
 
一口で何度もおいしい?DSL
一口で何度もおいしい?DSL一口で何度もおいしい?DSL
一口で何度もおいしい?DSL
 
情報検索の基礎 第1章 論理検索
情報検索の基礎 第1章 論理検索情報検索の基礎 第1章 論理検索
情報検索の基礎 第1章 論理検索
 
Web本文抽出 using crf
Web本文抽出 using crfWeb本文抽出 using crf
Web本文抽出 using crf
 
漢籍利用者の研究プロセスと利用者タスク
漢籍利用者の研究プロセスと利用者タスク漢籍利用者の研究プロセスと利用者タスク
漢籍利用者の研究プロセスと利用者タスク
 
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて深層生成モデルと世界モデル,深層生成モデルライブラリPixyzについて
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
 
گنجينه کتاب هاي آزمون نظام مهندسی برق-نظارت
گنجينه کتاب هاي آزمون نظام مهندسی برق-نظارتگنجينه کتاب هاي آزمون نظام مهندسی برق-نظارت
گنجينه کتاب هاي آزمون نظام مهندسی برق-نظارت
 
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
【DL輪読会】StyleGAN-T: Unlocking the Power of GANs for Fast Large-Scale Text-to-I...
 
時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17時系列解析の使い方 - TokyoWebMining #17
時系列解析の使い方 - TokyoWebMining #17
 
Techmix2014 温故知新
Techmix2014 温故知新Techmix2014 温故知新
Techmix2014 温故知新
 

More from Tomonari Masada

Learning Latent Space Energy Based Prior Modelの解説
Learning Latent Space Energy Based Prior Modelの解説Learning Latent Space Energy Based Prior Modelの解説
Learning Latent Space Energy Based Prior Modelの解説
Tomonari Masada
 
Denoising Diffusion Probabilistic Modelsの重要な式の解説
Denoising Diffusion Probabilistic Modelsの重要な式の解説Denoising Diffusion Probabilistic Modelsの重要な式の解説
Denoising Diffusion Probabilistic Modelsの重要な式の解説
Tomonari Masada
 
Context-dependent Token-wise Variational Autoencoder for Topic Modeling
Context-dependent Token-wise Variational Autoencoder for Topic ModelingContext-dependent Token-wise Variational Autoencoder for Topic Modeling
Context-dependent Token-wise Variational Autoencoder for Topic Modeling
Tomonari Masada
 
A note on the density of Gumbel-softmax
A note on the density of Gumbel-softmaxA note on the density of Gumbel-softmax
A note on the density of Gumbel-softmax
Tomonari Masada
 
Expectation propagation for latent Dirichlet allocation
Expectation propagation for latent Dirichlet allocationExpectation propagation for latent Dirichlet allocation
Expectation propagation for latent Dirichlet allocation
Tomonari Masada
 
Mini-batch Variational Inference for Time-Aware Topic Modeling
Mini-batch Variational Inference for Time-Aware Topic ModelingMini-batch Variational Inference for Time-Aware Topic Modeling
Mini-batch Variational Inference for Time-Aware Topic Modeling
Tomonari Masada
 
A note on variational inference for the univariate Gaussian
A note on variational inference for the univariate GaussianA note on variational inference for the univariate Gaussian
A note on variational inference for the univariate Gaussian
Tomonari Masada
 
Document Modeling with Implicit Approximate Posterior Distributions
Document Modeling with Implicit Approximate Posterior DistributionsDocument Modeling with Implicit Approximate Posterior Distributions
Document Modeling with Implicit Approximate Posterior Distributions
Tomonari Masada
 
LDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka Composition
LDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka CompositionLDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka Composition
LDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka Composition
Tomonari Masada
 
A Note on ZINB-VAE
A Note on ZINB-VAEA Note on ZINB-VAE
A Note on ZINB-VAE
Tomonari Masada
 
A Note on Latent LSTM Allocation
A Note on Latent LSTM AllocationA Note on Latent LSTM Allocation
A Note on Latent LSTM Allocation
Tomonari Masada
 
A Note on TopicRNN
A Note on TopicRNNA Note on TopicRNN
A Note on TopicRNN
Tomonari Masada
 
Topic modeling with Poisson factorization (2)
Topic modeling with Poisson factorization (2)Topic modeling with Poisson factorization (2)
Topic modeling with Poisson factorization (2)
Tomonari Masada
 
Poisson factorization
Poisson factorizationPoisson factorization
Poisson factorization
Tomonari Masada
 
A Simple Stochastic Gradient Variational Bayes for the Correlated Topic Model
A Simple Stochastic Gradient Variational Bayes for the Correlated Topic ModelA Simple Stochastic Gradient Variational Bayes for the Correlated Topic Model
A Simple Stochastic Gradient Variational Bayes for the Correlated Topic Model
Tomonari Masada
 
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet AllocationA Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
Tomonari Masada
 
Word count in Husserliana Volumes 1 to 28
Word count in Husserliana Volumes 1 to 28Word count in Husserliana Volumes 1 to 28
Word count in Husserliana Volumes 1 to 28
Tomonari Masada
 
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet AllocationA Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
Tomonari Masada
 
FDSE2015
FDSE2015FDSE2015
FDSE2015
Tomonari Masada
 
A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...
A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...
A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...
Tomonari Masada
 

More from Tomonari Masada (20)

Learning Latent Space Energy Based Prior Modelの解説
Learning Latent Space Energy Based Prior Modelの解説Learning Latent Space Energy Based Prior Modelの解説
Learning Latent Space Energy Based Prior Modelの解説
 
Denoising Diffusion Probabilistic Modelsの重要な式の解説
Denoising Diffusion Probabilistic Modelsの重要な式の解説Denoising Diffusion Probabilistic Modelsの重要な式の解説
Denoising Diffusion Probabilistic Modelsの重要な式の解説
 
Context-dependent Token-wise Variational Autoencoder for Topic Modeling
Context-dependent Token-wise Variational Autoencoder for Topic ModelingContext-dependent Token-wise Variational Autoencoder for Topic Modeling
Context-dependent Token-wise Variational Autoencoder for Topic Modeling
 
A note on the density of Gumbel-softmax
A note on the density of Gumbel-softmaxA note on the density of Gumbel-softmax
A note on the density of Gumbel-softmax
 
Expectation propagation for latent Dirichlet allocation
Expectation propagation for latent Dirichlet allocationExpectation propagation for latent Dirichlet allocation
Expectation propagation for latent Dirichlet allocation
 
Mini-batch Variational Inference for Time-Aware Topic Modeling
Mini-batch Variational Inference for Time-Aware Topic ModelingMini-batch Variational Inference for Time-Aware Topic Modeling
Mini-batch Variational Inference for Time-Aware Topic Modeling
 
A note on variational inference for the univariate Gaussian
A note on variational inference for the univariate GaussianA note on variational inference for the univariate Gaussian
A note on variational inference for the univariate Gaussian
 
Document Modeling with Implicit Approximate Posterior Distributions
Document Modeling with Implicit Approximate Posterior DistributionsDocument Modeling with Implicit Approximate Posterior Distributions
Document Modeling with Implicit Approximate Posterior Distributions
 
LDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka Composition
LDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka CompositionLDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka Composition
LDA-Based Scoring of Sequences Generated by RNN for Automatic Tanka Composition
 
A Note on ZINB-VAE
A Note on ZINB-VAEA Note on ZINB-VAE
A Note on ZINB-VAE
 
A Note on Latent LSTM Allocation
A Note on Latent LSTM AllocationA Note on Latent LSTM Allocation
A Note on Latent LSTM Allocation
 
A Note on TopicRNN
A Note on TopicRNNA Note on TopicRNN
A Note on TopicRNN
 
Topic modeling with Poisson factorization (2)
Topic modeling with Poisson factorization (2)Topic modeling with Poisson factorization (2)
Topic modeling with Poisson factorization (2)
 
Poisson factorization
Poisson factorizationPoisson factorization
Poisson factorization
 
A Simple Stochastic Gradient Variational Bayes for the Correlated Topic Model
A Simple Stochastic Gradient Variational Bayes for the Correlated Topic ModelA Simple Stochastic Gradient Variational Bayes for the Correlated Topic Model
A Simple Stochastic Gradient Variational Bayes for the Correlated Topic Model
 
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet AllocationA Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
 
Word count in Husserliana Volumes 1 to 28
Word count in Husserliana Volumes 1 to 28Word count in Husserliana Volumes 1 to 28
Word count in Husserliana Volumes 1 to 28
 
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet AllocationA Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
A Simple Stochastic Gradient Variational Bayes for Latent Dirichlet Allocation
 
FDSE2015
FDSE2015FDSE2015
FDSE2015
 
A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...
A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...
A derivation of the sampling formulas for An Entity-Topic Model for Entity Li...
 

トピックモデルの基礎と応用

  • 1. トピックモデルの 基礎と応用 (基礎編) 長崎大学 工学研究科 正田 備也(まさだ・ともなり) masada@nagasaki-u.ac.jp 2019年3月23日(土) 1トピックモデルとその周辺
  • 2. 今日の話題 • 前半:トピックモデル入門 • トピックモデルの概要 • トピックモデルとは、前処理、どう使うか、既存の実装 • LDAの詳細 • どんな生成モデルか、事後分布の実現法(周辺化ギブスサンプリング、変分ベイズ法) • トピックモデルの評価方法 • Perplexity, NPMI • 後半:トピックモデルの新しい研究動向~深層学習とどう関係づけるか • ミニバッチ変分ベイズ法 • 変分オートエンコーダ(VAE)との関係 • 敵対的生成ネットワーク(GAN)との関係 2019年3月23日(土) 2トピックモデルとその周辺
  • 3. トピックモデルの概要 • トピックモデルとは • 前処理 • どう使うか • 既存の実装 2019年3月23日(土) トピックモデルとその周辺 3
  • 4. トピックモデルとは • 参考書 • 佐藤一誠『トピックモデルによる統計的潜在意味解析』(自然言語処理シリーズ)コロナ社 • 岩田具治『トピックモデル』(機械学習プロフェッショナルシリーズ)講談社 • トピックモデルの特徴 • ベイズ的な確率モデルであることが多い(cf. PLSA) • 教師なし学習 • 数十~数百個の「索引」 を同時に作ることができる • 単語に重要度がついた「索引」 • 「索引」=語彙集合上に定義された確率分布(これを「トピック」と呼ぶ) • 各トピックは、人間から見ても、異なる「話題」に対応していることが多い。 2019年3月23日(土) 4トピックモデルとその周辺
  • 5. 2019年3月23日(土) トピックモデルとその周辺 5 David M. Blei. Probabilistic Topic Models. Communications of the ACM, April 2012, vol. 55, no. 4.
  • 6. 青空文庫全体にLDA[Blei+ 03]を適用 (トピック数100; 文書数 12K; 語彙数 63K) 2019年3月23日(土) 6トピックモデルとその周辺
  • 13. 前処理:「文書」を決める “You shall know a word by the company it keeps.” (Firth 1957) • トピックモデルでは同じ文書内での単語の共起情報が重要 • 単語列のモデリングではなく文書のモデリング • 「文書」(共起を調べる範囲)をどう決めるかには任意性がある • トピックモデルは文書長が10単語前後あればきちんと動く 2019年3月23日(土) 13トピックモデルとその周辺
  • 14. 前処理:形態素解析 • 「単語」に分割する • 辞書は重要 • 複合語をどうするか?(例: UCI bag-of-words data set NYTimes news articlesのnamed entity) • 品詞情報は単語の選別に使うことがある • 付属語は使わないことが多い • 言語によってはいい形態素解析器がないことも(e.g. ミャンマー語) • ツールの例 • MeCab • 個人的に良く使う(cf. mecab-ipadic-NEologd) • StanfordNLP(最近話題になった)https://stanfordnlp.github.io/stanfordnlp/ • 53ヶ国語に対応(ミャンマー語はないっぽい) 2019年3月23日(土) 14トピックモデルとその周辺
  • 15. 前処理:ストップワードの除去 • ありふれた単語やマイナーな単語の除去 • 頻度の閾値を適当に設定して削除 or 上位○○位以上は削除、など • 特定の品詞をすべてストップワードとして除去する • scikit-learnでは英語の標準的なストップワードが用意されている • これは必要か? • 除去しなくて大丈夫な(=ちゃんとトピックが抽出できる)場合も結構ある • むしろメモリの使用量が多くなるので語彙サイズを減らしたくなる • 特にGPUを使う場合 2019年3月23日(土) 15トピックモデルとその周辺
  • 16. トピックモデルをどう使うか 「文書がたくさんありすぎて・・・ どれを読めばいいか分からない!」 • 使いみち • summarize 数十~数百の単語リストに要約(既述) • visualize トピックを可視化 • explore 得られたトピックをもとに検索 2019年3月23日(土) 16トピックモデルとその周辺
  • 17. 可視化 例)ひとつのワードクラウドで文書集合の頻出単語を可視化 • 疑問点:「たったひとつのワードクラウドで、話題の多様性を覆いつくせるのか?」 • そこでトピックモデルを使う • 複数のワードクラウドを作成できる • 単に複数であるだけではなく「内容が違う」ワードクラウドを作成できる 2019年3月23日(土) 17トピックモデルとその周辺
  • 18. 2019年3月23日(土) トピックモデルとその周辺 18 国会会議録にLDAを適用(16台のPC上で1,000トピックCGS; D3.jsのbubble chartで可視化; 文書数 9M; 語彙数 381K) http://dmlab.jpn.org/viz/gijiroku1000.html
  • 20. 2019年3月23日(土) トピックモデルとその周辺 20 %matplotlib inline import pyLDAvis import pyLDAvis.gensim vis = pyLDAvis.gensim.prepare(topic_model=lda_model, corpus=corpus, dictionary=dictionary_LDA) pyLDAvis.enable_notebook() pyLDAvis.display(vis) https://towardsdatascience.com/the-complete-guide-for-topics-extraction-in-python-a6aaa6cedbbc
  • 21. 検索 [Ganguly+ SIGIR2013][Yi+ ECIR2009] • 読むべき文書を見つける • 検索語を考えて検索 • すでに読んだ文書と似ている文書を検索 • 疑問点 「検索語が自分の意図をうまく表しているのか?」 • そこでトピックモデルを使う • 文書拡張(=元々は文書になかった単語を追加する)に使う • 追加した単語が検索語にマッチすれば検索結果に含ませることができる 2019年3月23日(土) 21トピックモデルとその周辺
  • 22. 良い基底を見つける手法としてのトピックモデリング (cf. SVD, NMF, PLSI, etc) ・ = 係数 (トピック確率) 基底 (トピック=単語確率) 文書 (観測データ)
  • 23. 利用上の問題点 • 適切なトピック数が分からない • クラスタリングにおけるクラスタ数の決め方に似た問題 • 実行するたびに結果が変わる • アルゴリズムがランダム性を含むため • つまり…Stabilityの問題 • Yang+. Improving Topic Model Stability for Effective Document Exploration. IJCAI 2016. • Greene+. How Many Topics? Stability Analysis for Topic Models. ECML PKDD 2014. • 現実的な対処法は? • アルゴリズムを走らせて単語リストをチェックして・・・というのを数回繰り返す • トピックの重複が散見されればトピック数を減らす。毎回違うトピックが現われていればトピック数を増やす。等々。 2019年3月23日(土) トピックモデルとその周辺 23
  • 24. 既存の実装:LDA in Python (持橋さんが公開しているツール) http://chasen.org/~daiti-m/dist/lda-python/ • 周辺化ギブスサンプリングの実装 • 速い • 下記の例で40 sec/iterぐらい 2019年3月23日(土) トピックモデルとその周辺 24 この値が小さくなるように alphaやbeta(LDAのハイパーパラメータ)を動かす
  • 25. その他の既存の実装 • 周辺化ギブスサンプリングの実装 • PythonのLDAモジュール • pip install ldaでインストール可 • MALLET(言語はJava)のLDA • https://programminghistorian.org/en/lessons/topic-modeling-and-mallet • ミニバッチ変分ベイズ法の実装 • gensim • perplexity(後述)の定義が特殊(perplexityとして出してくる値は要注意) • sklearn.decomposition.LatentDirichletAllocation • https://github.com/blei-lab/onlineldavb • ミニバッチ変分ベイズはハイパーパラメータのチューニングをそれなりにしたほうがいい 2019年3月23日(土) 25トピックモデルとその周辺
  • 26. stm (structural topic model) http://www.structuraltopicmodel.com/ • 社会科学分野の研究グループが開発 • R言語による実装 • LDAより高度なことができるらしい(試していません…) • stmの使い方の解説記事 • https://juliasilge.com/blog/sherlock-holmes-stm/ • R言語で例を示している • stmの使い方以外にも有益な情報が書かれているブログ記事 • この記事ではstmはLDAの実装として使われているだけ 2019年3月23日(土) 26トピックモデルとその周辺
  • 27. トピックモデルを使うときに気をつけたほうがいいこと • ハイパーパラメータのチューニングはしたほうがいいかも • LDAのハイパーパラメータが何かは後で説明します • perplexityができるだけ小さくなるようにする • 正式には訓練データとは別のデータでperplexityを求める • 他の手法との比較をするのでなければ訓練データでperplexityを求めてもいいかも • gensimではハイパーパラメータのチューニングを自動化できる • Thomas P. Minka, Estimating a Dirichlet distribution, 2000. • グリッドサーチでチューニングするほうが良かったりもする 2019年3月23日(土) 27トピックモデルとその周辺
  • 29. 生成モデルとしてのLDA [Blei+ 03] • トピック数を𝐾、語彙サイズを𝑉とする • トピック数は手動で指定する(ノンパラメトリック・ベイズについては今日は触れない) • 2種類のサイコロを振ることで文書の集合を生成 • トピック・サイコロ=どのトピックを使うか決めるサイコロ • 𝐾個の面があるサイコロ • 文書ごとに別々のトピック・サイコロがある • 単語サイコロ=どの単語を使うか決めるサイコロ • 𝑉個の面があるサイコロ • トピックごとに別々の単語サイコロがある 2019年3月23日(土) 29トピックモデルとその周辺
  • 30. LDAによる文書集合の生成 各文書について: 1. その文書用のトピック・サイコロをディリクレ分布から得る 2. 文書に表れる各単語トークンについて: i. トピック・サイコロを振る ii. 出た目(=出たトピック)に対応する単語サイコロを振る 次スライドで説明 2019年3月23日(土) 30トピックモデルとその周辺
  • 31. ディリクレ分布 • 振ると{1,2,3,4,5,6}の自然数が出てくるのがサイコロなら… • 振るとベクトルが出てくるのがディリクレ分布 • ただし成分がすべて非負で成分の総和が1であるベクトル • 下図は3次元の場合 https://www.sciencedirect.com/science/article/pii/S0893608017302587 2019年3月23日(土) 31トピックモデルとその周辺
  • 32. 知りたいのは・・・事後分布 • 観測データを𝑿 = {𝒙1, … , 𝒙 𝐷},生成モデルのパラメータを𝚽とする • 尤度 𝑝 𝑿 𝚽 …生成モデルによって決まる • 𝑝 𝑿 𝚽 = 𝑑=1 𝐷 𝑝(𝒙 𝑑|𝚽) と書けるとする • 事前分布 𝑝(𝚽) …生成モデルのパラメータが従う分布 • LDAではディリクレ分布 • 事後分布 𝑝(𝚽|𝑿) …ベイズ的なモデリングで知りたいもの 𝑝(𝚽|𝑿) ∝ 𝑝 𝑿 𝚽 𝑝(𝚽) 2019年3月23日(土) 32トピックモデルとその周辺
  • 33. ベイズ推定とは • 事後分布から予測分布𝑝(𝒙0|𝑿)が得られる 𝑝 𝒙0 𝑿 = 𝑝 𝒙0 𝚽 𝑝 𝚽 𝑿 𝑑𝚽 • 真の分布は𝑝(𝒙0|𝑿)だろうと推定するのがベイズ推定 • 参考書:渡辺澄夫『ベイズ統計の理論と方法』コロナ社 • とにかく事後分布を求める必要がある 2019年3月23日(土) 33トピックモデルとその周辺
  • 34. 結合分布, 周辺尤度, 事後分布 • 結合分布 𝑝(𝑿, 𝚽) 𝑝(𝑿, 𝚽) = 𝑝 𝑿 𝚽 𝑝(𝚽) = 𝑝(𝚽) 𝑑=1 𝐷 𝑝(𝒙 𝑑|𝚽) • 周辺尤度 𝑝 𝑿 𝑝 𝑿 = 𝑝(𝑿, 𝚽) 𝑑𝚽 • 事後分布 𝑝 𝚽 𝑿 𝑝 𝚽 𝑿 = 𝑝(𝑿, 𝚽) 𝑝 𝑿 = 𝑝 𝑿 𝚽 𝑝(𝚽) 𝑝 𝑿 ∴ 𝑝(𝚽|𝑿) ∝ 𝑝 𝑿 𝚽 𝑝(𝚽) • 𝑝 𝑿 はほとんどの場合intractable 2019年3月23日(土) トピックモデルとその周辺 34
  • 35. トピックモデル向けに記号の準備 • 文書𝑑の𝑖番目のトークンとして表れている単語 𝑥 𝑑,𝑖 (例: 𝑥 𝑑,𝑖 = 2071) • 𝒙 𝑑 = {𝑥 𝑑,1, … , 𝑥 𝑑,𝑛 𝑑 } • 文書𝑑の𝑖番目のトークンが割り当てられたトピック 𝑧 𝑑,𝑖 (例: 𝑧 𝑑,𝑖 = 38) • 𝒛 𝑑 = {𝑧 𝑑,1, … , 𝑧 𝑑,𝑛 𝑑 } • 文書𝑑におけるトピック𝑘の確率 𝜃 𝑑,𝑘 (例: 𝜃 𝑑,𝑘 = 0.632) • 𝜽 𝑑 = (𝜃 𝑑,1, … , 𝜃 𝑑,𝐾) ただし 𝑘=1 𝐾 𝜃 𝑑,𝑘 = 1 • 対称ディリクレ事前分布のパラメータ(ハイパーパラメータ) 𝛼 • トピック𝑘における単語𝑣の確率 𝜑 𝑘,𝑣 (例: 𝜑 𝑘,𝑣 = 0.000816) • 𝝋 𝑘 = (𝜑 𝑘,1, … , 𝜑 𝑘,𝑉) ただし 𝑣=1 𝑉 𝜑 𝑘,𝑣 = 1 2019年3月23日(土) 35トピックモデルとその周辺
  • 36. LDAによる文書集合の生成 各文書について: 1. その文書用のトピック・サイコロを事前分布から得る 2. 文書に表れる各単語トークンについて: i. トピック・サイコロを振る ii. 出たトピックに対応する単語サイコロを振る 2019年3月23日(土) 36トピックモデルとその周辺
  • 37. LDAによる文書集合の生成 for 𝑑 = 1 to 𝐷 : #各文書について 1. draw 𝜽 𝑑~Dirichlet(𝛼) 2. for 𝑖 = 1 to 𝑛 𝑑 : #各単語トークンについて i. draw 𝑧 𝑑,𝑖~Categorical(𝜽 𝑑) #トピック・サイコロを振る ii. draw 𝑥 𝑑,𝑖~Categorical(𝝋 𝑘) #単語サイコロを振る 2019年3月23日(土) 37トピックモデルとその周辺
  • 38. カテゴリカル分布 • アイテムが3種類以上ある場合のベルヌーイ分布 • ベルヌーイ分布ではアイテムは2種類 • ベルヌーイ分布に対して二項分布があるように…カテゴリカル分布に 対して多項分布がある • 二項分布 • 「𝑁回コインを投げたら表と裏がそれぞれ𝑀回,𝑁 − 𝑀回出る確率はいくら?」 • 多項分布 • 「 𝑁回サイコロを振ったら1から6の目がそれぞれ𝑁1, … , 𝑁6回出る確率はいくら?」 2019年3月23日(土) トピックモデルとその周辺 38
  • 39. LDAのすべての変数の結合分布を書き下す (確率モデルを扱うときに最初にすること) • 各文書𝒙 𝑑の生成をそのまま式に書き下すと… 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱) = 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖 • 文書集合全体では 𝑝 𝑿, 𝒁, 𝜣|𝛼, 𝜱 = 𝑑=1 𝐷 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 2019年3月23日(土) 39トピックモデルとその周辺
  • 41. 周辺化ギブスサンプリング (Collapsed Gibbs sampling; CGS) 2019年3月23日(土) 41トピックモデルとその周辺
  • 42. LDAの周辺化ギブスサンプリング(CGS) • カテゴリカル分布のパラメータを積分して消してしまう • 隠れ変数としては𝒁 = {𝒛1, … , 𝒛 𝑑}が残る • 個々の単語トークンがどのトピックに割り当てられるかを表わす隠れ変数 • 𝑧 𝑑,𝑖の事後分布からサンプリングする • 各文書の個々の単語トークンについてトピックをサンプリングする • 単語トークンのクラスタリングをしているイメージ • 文書クラスタリングは文書をまるごとどれかのクラスタへ割り当てる 2019年3月23日(土) 42トピックモデルとその周辺
  • 43. Shanghai is the largest city in China, located in her eastern coast at the outlet of the Yangtze River. Originally a fishing and textiles town, Shanghai grew to importance in the 19th century. In 2005 Shanghai became the world's busiest cargo port. The city is an emerging tourist destination renowned for its historical landmarks such as the Bund and Xintiandi, its modern and 63 7 7 41 63 7 63 41 7 7 41 41 7 7 41 7 7 63 22 41 7 22 7 41 41 63 41 7 41 7 7 50 50 7 50 63 41 7 41 41 22 22 7 41 7 7 41 41 41 41 7 7 41 41 7 7 7 63 7 63 7 41 7
  • 44. LDAのすべての変数の結合分布(再) • 各文書𝒙 𝑑の生成をそのまま式に書き下すと… 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱) = 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖 • 文書集合全体では 𝑝 𝑿, 𝒁, 𝜣|𝛼, 𝜱 = 𝑑=1 𝐷 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖 2019年3月23日(土) 44トピックモデルとその周辺
  • 45. LDAによる文書集合の生成 (単語カテゴリカル分布にもディリクレ事前分布を使う) 各トピックについて: 1. 単語サイコロをディリクレ事前分布から得る 各文書について: 1. その文書用のトピック・サイコロをディリクレ事前分布から得る 2. 文書に表れる各単語トークンについて: i. トピック・サイコロを振る ii. 出た目(=出たトピック)に対応する単語サイコロを振る 2019年3月23日(土) 45トピックモデルとその周辺 追加した部分
  • 46. LDAによる文書集合の生成 (単語カテゴリカル分布にもディリクレ事前分布を使う) For 𝑘 = 1 to 𝐾 : 1. 𝝋 𝑘~Dirichlet 𝛽 For 𝑑 = 1 to 𝐷 : (各々の文書について…) 1. 𝜽 𝑑~Dirichlet(𝛼) 2. For 𝑖 = 1 to 𝑛 𝑑 : i. 𝑧 𝑑,𝑖~Categorical(𝜽 𝑑) (トピック・サイコロを振る) ii. 𝑥 𝑑,𝑖~Categorical(𝝋 𝑘) (単語サイコロを振る) 2019年3月23日(土) 46トピックモデルとその周辺 追加した部分
  • 47. LDAのすべての変数の結合分布 𝑝 𝑿, 𝒁, 𝜣, 𝜱|𝛼, 𝛽 = 𝑘=1 𝐾 𝑝(𝝋 𝑘|𝛽) × 𝑑=1 𝐷 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑘=1 𝐾 𝑝(𝝋 𝑘|𝛽) × 𝑑=1 𝐷 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝑧 𝑑,𝑖, 𝜱 = 𝑘=1 𝐾 𝑝(𝝋 𝑘|𝛽) 𝑑=1 𝐷 𝑖=1 𝑛 𝑑 𝑝 𝑥 𝑑,𝑖|𝑧 𝑑,𝑖, 𝜱 × 𝑑=1 𝐷 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 2019年3月23日(土) トピックモデルとその周辺 47
  • 48. 周辺化 • カテゴリカル分布のパラメータを積分消去(周辺化) 𝑝 𝑿, 𝒁|𝛼, 𝛽 = 𝑝 𝑿, 𝒁, 𝜣, 𝜱|𝛼, 𝛽 𝑑𝜣𝒅𝜱 = 𝑘=1 𝐾 𝑝(𝝋 𝑘|𝛽) 𝑑=1 𝐷 𝑖=1 𝑛 𝑑 𝑝 𝑥 𝑑,𝑖|𝑧 𝑑,𝑖, 𝜱 𝑑𝜱 × 𝑑=1 𝐷 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑑𝜣 2019年3月23日(土) トピックモデルとその周辺 48
  • 49. LDAの周辺化ギブスサンプリング • 全文書の各単語トークンについて𝑧 𝑑,𝑖の値をサンプリングしていく • 他の全ての単語トークンについては 𝑧 𝑑,𝑖の値が与えられているとする • 初期値はランダムに決める • この状況のもとで 𝑧 𝑑,𝑖の値をサンプリングする • サンプリングのための確率(各𝑘について 𝑧 𝑑,𝑖 = 𝑘である確率)を求める • LDAのCGSで使う𝑧 𝑑,𝑖の確率質量関数は 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 • これを結合分布からどうやって求める? 2019年3月23日(土) トピックモデルとその周辺 49
  • 50. 周辺化ギブスサンプリングの式導出(1/4) 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 , 𝛼, 𝛽 ∝ 𝑝 𝑧 𝑑,𝑖 = 𝑘, 𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 |𝛼, 𝛽 = 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 , 𝛼, 𝛽 𝑝 𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 |𝛼, 𝛽 ∝ 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 ここで 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 = 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝜱, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑝 𝜱|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜱 = 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝝋 𝑘 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜱 また 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 = 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝜽 𝑑, 𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑝 𝜽 𝑑|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜽 𝑑 = 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝜽 𝑑 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖, 𝛼 𝑑𝜽 𝑑 2019年3月23日(土) トピックモデルとその周辺 50 𝑝 𝑥 𝑑,𝑖 = 𝑣, 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 , 𝛼, 𝛽 を作るにはこの手順を踏まないといけない
  • 51. 周辺化ギブスサンプリングの式導出(2/4) (𝜽 𝑑と𝝋 𝑘の分布を求める) 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖, 𝛼 = 𝛤(𝑛 𝑑 ∖𝑑,𝑖 + 𝐾𝛼) 𝑘=1 𝐾 𝛤(𝑛 𝑑,𝑘 ∖𝑑,𝑖 + 𝛼) 𝑘=1 𝐾 𝜃 𝑑,𝑘 𝑛 𝑑,𝑘 ∖𝑑,𝑖 +𝛼−1 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 = 𝛤(𝑛 𝑘 ∖𝑑,𝑖 + 𝑉𝛽) 𝑣=1 𝑉 𝛤(𝑛 𝑘,𝑣 ∖𝑑,𝑖 + 𝛽) 𝑣=1 𝑉 𝜑 𝑘,𝑣 𝑛 𝑘,𝑣 ∖𝑑,𝑖 +𝛽−1 2019年3月23日(土) トピックモデルとその周辺 51 • これらはディリクレ分布の密度関数(conjugate prior) • 文書𝑑の𝑖番目の単語トークンを除いて(これが「 ∖ 𝑑, 𝑖 」の意味) • 文書𝑑でトピック𝑘に割り当てられているトークン数は 𝑛 𝑑,𝑘 ∖𝑑,𝑖 • トピック𝑘に割り当てられている単語𝑣のトークン数は 𝑛 𝑘,𝑣 ∖𝑑,𝑖
  • 52. 補足:LDAの推定で使う二種類の統計量 • 以下の二種類の統計量がLDAの推定の話によく出てくる • 文書𝑑でトピック𝑘に割り当てられているトークン数 𝑛 𝑑,𝑘 • 文書ごとのローカルな統計量 • トピック𝑘に割り当てられている単語𝑣のトークン数 𝑛 𝑘,𝑣 • 文書集合全体に関わるグローバルな統計量 • 𝑛 𝑘 は全ての語彙にわたる𝑛 𝑘,𝑣の和 2019年3月23日(土) トピックモデルとその周辺 52
  • 53. 周辺化ギブスサンプリングの式導出(3/4) (𝜽 𝑑を周辺化し𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 , 𝛼, 𝛽 を求める) 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝜽 𝑑 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖, 𝛼 𝑑𝜽 𝑑 = 𝐸 𝑝 𝜽 𝑑|𝒁∖𝑑,𝑖,𝛼 𝜃 𝑑,𝑘 = 𝛤(𝑛 𝑑 ∖𝑑,𝑖 + 𝐾𝛼) 𝑘=1 𝐾 𝛤(𝑛 𝑑,𝑘 ∖𝑑,𝑖 + 𝛼) × 𝑘′=1 𝐾 𝛤(𝑛 𝑑,𝑘′ ∖𝑑,𝑖 + 𝛿(𝑘′ = 𝑘) + 𝛼) 𝛤(𝑛 𝑑 ∖𝑑,𝑖 + 1 + 𝐾𝛼) = 𝑛 𝑑,𝑘 ∖𝑑,𝑖 + 𝛼 𝑛 𝑑 ∖𝑑,𝑖 + 𝐾𝛼 2019年3月23日(土) トピックモデルとその周辺 53
  • 54. 周辺化ギブスサンプリングの式導出(3/4) (𝝋 𝑘を周辺化し𝑝 𝑥 𝑑,𝑖 = 𝑣|𝑧 𝑑,𝑖 = 𝑘, 𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 , 𝛼, 𝛽 を求める) 𝑝 𝑥 𝑑,𝑖 = 𝑣|𝝋 𝑘 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖, 𝒁∖𝑑,𝑖, 𝛼, 𝛽 𝑑𝜱 = 𝐸 𝑝 𝝋 𝑘|𝑿∖𝑑,𝑖,𝒁∖𝑑,𝑖,𝛼,𝛽 𝜑 𝑘,𝑣 = 𝛤(𝑛 𝑘 ∖𝑑,𝑖 + 𝑉𝛽) 𝑣=1 𝑉 𝛤(𝑛 𝑘,𝑣 ∖𝑑,𝑖 + 𝛽) × 𝑣′=1 𝑉 𝛤(𝑛 𝑘,𝑣′ ∖𝑑,𝑖 + 𝛿(𝑣′ = 𝑣) + 𝛽) 𝛤(𝑛 𝑘 ∖𝑑,𝑖 + 1 + 𝑉𝛽) = 𝑛 𝑘,𝑣 ∖𝑑,𝑖 + 𝛽 𝑛 𝑘 ∖𝑑,𝑖 + 𝑉𝛽 2019年3月23日(土) トピックモデルとその周辺 54
  • 55. CGSのアルゴリズム 𝑝 𝑧 𝑑,𝑖 = 𝑘|𝑥 𝑑,𝑖 = 𝑣, 𝑿∖𝑑,𝑖 , 𝒁∖𝑑,𝑖 , 𝛼, 𝛽 ∝ 𝑛 𝑑,𝑘 ∖𝑑,𝑖 + 𝛼 𝑛 𝑑 ∖𝑑,𝑖 + 𝐾𝛼 × 𝑛 𝑘,𝑣 ∖𝑑,𝑖 + 𝛽 𝑛 𝑘 ∖𝑑,𝑖 + 𝑉𝛽 • 以下を(ランダムに置換された)全単語トークンについて実行 • 個々の単語トークンについてトピック確率を上の式で計算 • 計算されたトピック確率に基づいてトピックをdraw • perplexityの値がほとんど変化しなくなるまで続ける 2019年3月23日(土) トピックモデルとその周辺 55
  • 56. CGSで得られたトピック割り当ての使い方 • 各文書でのトピック確率を求める • 同一文書内で各トピックに割り当てられているトークン数𝑛 𝑑,𝑘を集計 • 複数回のサンプリングにわたる平均を使うこともできる • 集計した個数に𝛼を足してから規格化する= 𝑛 𝑑,𝑘+𝛼 𝑛 𝑑+𝐾𝛼 • 各トピックでの単語確率を求める • 各トピックへ割り当てられている単語のトークン数𝑛 𝑘,𝑣を集計 • 集計した個数に𝛽を足してから規格化する= 𝑛 𝑘,𝑣+𝛽 𝑛 𝑘+𝑉𝛽 2019年3月23日(土) トピックモデルとその周辺 56
  • 57. LDAのCGSのprosとcons • pros • 結果がきれい • 異なるトピックの高確率語がきれいに異なる話題に対応しているように見える • きれいでないときはハイパーパラメータ𝛼と𝛽を変えてみる • 逆に言えばハイパーパラメータ(とトピック数𝐾 )以外は何もいじらなくていい • cons • 時間がかかる • サンプリングをしばらく回す必要あり(最初のほうの結果は使えない; burn-in) • 評価値がある程度良くなるところまでたどりつくのに時間がかかる • 並列化がしにくい 2019年3月23日(土) トピックモデルとその周辺 57
  • 59. LDAの変分ベイズ法 • 事後分布推定を最適化問題として解く • 対数周辺尤度のlower boundを最大化する問題を解く • intractableな事後分布をシンプルな分布で近似する • 因子分解可能という仮定をおくことによって単純化された分布で近似する • LDAの変分ベイズ法で求める近似事後分布 • 𝜽 𝑑(各文書でのトピック確率)の近似事後分布 • 𝑧 𝑑,𝑖(各トークンのトピック割り当て)の近似事後分布 • 𝝋 𝑘については最尤推定 [Blei+ JMLR03] 2019年3月23日(土) トピックモデルとその周辺 59
  • 60. 変分ベイズ法(一般の場合) log 𝑝 𝑿 = log 𝑝(𝑿, 𝚯) 𝑑𝚯 = log 𝑞(𝚯) 𝑝(𝑿, 𝚯) 𝑞(𝚯) 𝑑𝚯 ≥ 𝑞 𝚯 log 𝑝 𝑿, 𝚯 𝑞 𝚯 𝑑𝚯 = 𝑞 𝚯 log 𝑝(𝑿, 𝚯) 𝑑𝚯 − 𝑞 𝚯 log 𝑞 𝚯 𝑑𝚯 • このlower boundを最大化 • 𝑞 𝚯 = 𝑝 𝚯|𝑿 のとき等号成立・・・ 𝑞 𝚯 を事後分布の近似とみなす 2019年3月23日(土) トピックモデルとその周辺 60 対数周辺尤度 イェンセンの不等式 分母分子で キャンセル
  • 61. LDAのすべての変数の結合分布(再) • 各文書𝒙 𝑑の生成をそのまま式に書き下すと… 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱) = 𝑝 𝜽 𝑑|𝛼 𝑖=1 𝑛 𝑑 𝑝 𝑧 𝑑,𝑖 𝜽 𝑑 𝑝 𝑥 𝑑,𝑖|𝝋 𝑧 𝑑,𝑖 • 文書集合全体では 𝑝 𝑿, 𝒁, 𝜣|𝛼, 𝜱 = 𝑑=1 𝐷 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 2019年3月23日(土) 61トピックモデルとその周辺
  • 62. 対数周辺尤度 • 隠れ変数をすべて積分消去(周辺化) log 𝑝 𝑿|𝛼, 𝜱 = 𝑑=1 𝐷 log 𝑝 𝒙 𝑑|𝛼, 𝜱 = 𝑑=1 𝐷 log 𝒛 𝑑 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑑𝜽 𝑑 • この周辺化の計算はintractable • 周辺尤度(marginal likelihood)はevidenceとも呼ばれる 2019年3月23日(土) トピックモデルとその周辺 62
  • 63. 対数周辺尤度にイェンセンの不等式を適用 (変分ベイズ法で最初にすること) log 𝑝 𝒙 𝑑|𝛼, 𝜱 = log 𝒛 𝑑 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑑𝜽 𝑑 = log 𝒛 𝑑 𝑞(𝒛 𝑑, 𝜽 𝑑) 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑞(𝒛 𝑑, 𝜽 𝑑) 𝑑𝜽 𝑑 ≥ 𝒛 𝑑 𝑞 𝒛 𝑑, 𝜽 𝑑 log 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑞(𝒛 𝑑, 𝜽 𝑑) 𝑑𝜽 𝑑 • 等号成立は𝑞 𝒛 𝑑, 𝜽 𝑑 = 𝑝 𝒛 𝑑, 𝜽 𝑑|𝒙 𝑑, 𝛼, 𝜱 のとき • つまり𝑞 𝒛 𝑑, 𝜽 𝑑 が真の事後分布に一致するとき 2019年3月23日(土) トピックモデルとその周辺 63
  • 64. 因子分解の仮定 • 𝑞 𝒛 𝑑, 𝜽 𝑑 は真の事後分布を近似する分布 • 以下のように複数の因子の積で書けると仮定する 𝑞 𝒛 𝑑, 𝜽 𝑑 = 𝑞(𝜽 𝑑) 𝑖=1 𝑛 𝑑 𝑞(𝑧 𝑑,𝑖) • この因子分解の仮定から𝑞(𝜽 𝑑)はディリクレ分布であることが導ける • 𝑞(𝜽 𝑑)の密度関数のかたちについて何も仮定しなくてもこのことが導ける • なお𝑞(𝑧 𝑑,𝑖)はカテゴリカル分布 2019年3月23日(土) トピックモデルとその周辺 64
  • 65. ELBO (Evidence Lower BOund) • イェンセンの不等式を適用することで得られる対数周辺尤度の下界を ELBO (evidence lower bound) と呼ぶ log 𝑝 𝒙 𝑑; 𝛼, 𝜱 ≥ 𝒛 𝑑 𝑞 𝒛 𝑑, 𝜽 𝑑 log 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 𝑞 𝒛 𝑑, 𝜽 𝑑 𝑑𝜽 𝑑 = 𝐸 𝑞 𝜽 𝑑 log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑 log 𝑝 𝒛 𝑑 𝜽 𝑑 + 𝐸 𝑞 𝒛 𝑑 log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱 − 𝐸 𝑞 𝜽 𝑑 log 𝑞 𝜽 𝑑 − 𝐸 𝑞 𝒛 𝑑 log 𝑞 𝒛 𝑑 • 変分ベイズ法ではELBOを最大化する計算をする • 対数周辺尤度からELBOを引くと近似事後分布と真の事後分布のKL情報量になる 2019年3月23日(土) トピックモデルとその周辺 65
  • 66. LDAの場合のELBO最大化 log 𝑝 𝒙 𝑑|𝛼, 𝜱 ≥ 𝐸 𝑞 𝜽 𝑑 log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑 log 𝑝 𝒛 𝑑 𝜽 𝑑 + 𝐸 𝑞 𝒛 𝑑 log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱 − 𝐸 𝑞 𝜽 𝑑 log 𝑞 𝜽 𝑑 − 𝐸 𝑞 𝒛 𝑑 log 𝑞 𝒛 𝑑 • LDAの場合は各項(近似事後分布に関する期待値)を手計算できる • それだけでなく各パラメータで微分してイコールゼロとおけば閉じた更新式が求まる • ディリクレ分布である近似事後分布𝑞 𝜽 𝑑 のパラメータ𝜁 𝑑,𝑘 • カテゴリカル分布である𝑞(𝑧 𝑑,𝑖)のパラメータ 𝛾 𝑑,𝑖,𝑘 ≡ 𝑞(𝑧 𝑑,𝑖 = 𝑘) • 各トピックでの単語確率パラメータ𝜑 𝑘,𝑣 • ここでは事前分布を導入しないので𝜑 𝑘,𝑣が現われる項を𝜑 𝑘,𝑣で微分 2019年3月23日(土) トピックモデルとその周辺 66
  • 67. 文書集合全体についてのELBO 𝑑=1 𝐷 log 𝑝 𝒙 𝑑|𝛼, 𝜱 ≥ 𝑑=1 𝐷 𝐸 𝑞 𝜽 𝑑 log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑 log 𝑝 𝒛 𝑑 𝜽 𝑑 2019年3月23日(土) トピックモデルとその周辺 67 各トピックでの単語確率𝜱だけが すべての文書に関係する 他のパラメータは 文書ごとに別々に更新
  • 68. ELBOを構成する各項を求める 𝐸 𝑞 𝜽 𝑑 log 𝑝 𝜽 𝑑; 𝛼 = log Γ(𝐾𝛼) − 𝑘=1 𝐾 log Γ 𝛼 + 𝑘=1 𝐾 (𝛼 − 1)𝐸 𝑞 𝜽 𝑑 [log 𝜃 𝑑,𝑘] 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑 log 𝑝 𝒛 𝑑 𝜽 𝑑 = 𝑖=1 𝑛 𝑑 𝑘=1 𝐾 𝛾 𝑑,𝑖,𝑘 𝐸 𝑞 𝜽 𝑑 [log 𝜃 𝑑,𝑘] 𝐸 𝑞 𝒛 𝑑 log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱 = 𝑖=1 𝑛 𝑑 𝑘=1 𝐾 𝛾 𝑑,𝑖,𝑘 log 𝜑 𝑘,𝑥 𝑑,𝑖 −𝐸 𝑞 𝜽 𝑑 log 𝑞 𝜽 𝑑 = − log Γ 𝑘=1 𝐾 𝜁 𝑑,𝑘 + 𝑘=1 𝐾 log Γ 𝜁 𝑑,𝑘 − 𝑘=1 𝐾 (𝜁 𝑑,𝑘 − 1)𝐸 𝑞 𝜽 𝑑 [log 𝜃 𝑑,𝑘] −𝐸 𝑞 𝒛 𝑑 log 𝑞 𝒛 𝑑 = − 𝑖=1 𝑛 𝑑 𝑘=1 𝐾 𝛾 𝑑,𝑖,𝑘 log 𝛾 𝑑,𝑖,𝑘 ちなみに 𝐸 𝑞 𝜽 𝑑 log 𝜃 𝑑,𝑘 = 𝜓 𝜁 𝑑,𝑘 − 𝜓 𝑘=1 𝐾 𝜁 𝑑,𝑘 2019年3月23日(土) トピックモデルとその周辺 68
  • 69. ELBOを各パラメータで微分 • 文書𝑑のELBOを𝐿 𝑑とおく 𝜕𝐿 𝑑 𝜕𝛾 𝑑,𝑖,𝑘 = 𝑛 𝑑,𝑣 𝐸 𝑞 𝜽 𝑑 log 𝜃 𝑑,𝑘 + log 𝜑 𝑘,𝑥 𝑑,𝑖 − log 𝛾 𝑑,𝑖,𝑘 + 𝑐𝑜𝑛𝑠𝑡. ∴ 𝛾 𝑑,𝑖,𝑘 ∝ exp 𝜓 𝜁 𝑑,𝑘 exp 𝜓 𝑘=1 𝐾 𝜁 𝑑,𝑘 𝜑 𝑘,𝑥 𝑑,𝑖 𝜕𝐿 𝜕𝜁 𝑑,𝑘 = −𝜁 𝑑,𝑘 + 𝛼 + 𝑖=1 𝑛 𝑑 𝛾 𝑑,𝑖,𝑘 𝜕𝐸 𝑞 𝜽 𝑑 [log 𝜃 𝑑,𝑘] 𝜕𝜁 𝑑,𝑘 ∴ 𝜁 𝑑,𝑘 = 𝛼 + 𝑖=1 𝑛 𝑑 𝛾 𝑑,𝑖,𝑘 • 𝜑 𝑘,𝑣については 𝑑=1 𝐷 𝐿 𝑑を微分して∴ 𝜑 𝑘,𝑣 = 𝑑=1 𝐷 𝑖=1 𝑛 𝑑 𝛿(𝑥 𝑑,𝑖=𝑣)𝛾 𝑑,𝑖,𝑘 𝑣=1 𝑉 𝑑=1 𝐷 𝑖=1 𝑛 𝑑 𝛿(𝑥 𝑑,𝑖=𝑣)𝛾 𝑑,𝑖,𝑘 2019年3月23日(土) トピックモデルとその周辺 69
  • 70. LDAのVBで求められるパラメータ • 文書ごとにローカルなパラメータ • 文書𝑑で第𝑖トークンがトピック𝑘に割り当てられる事後確率 𝛾 𝑑,𝑖,𝑘 • つまり𝛾 𝑑,𝑖,𝑘 ≡ 𝑞(𝑧 𝑑,𝑖 = 𝑘) • 文書𝑑におけるトピック確率のディリクレ事後分布のパラメータ 𝜁 𝑑,𝑘 • 文書集合全体に関わるグローバルなパラメータ • トピック𝑘での単語𝑣の確率 𝜑 𝑘,𝑣 2019年3月23日(土) トピックモデルとその周辺 70
  • 71. 補足:LDAの推定で使う二種類の統計量 • 以下の二種類の統計量がLDAの推定の話によく出てくる • 文書𝑑でトピック𝑘に割り当てられているトークン数 𝑛 𝑑,𝑘 = 𝑖=1 𝑛 𝑑 𝛾 𝑑,𝑖,𝑘 • トピック𝑘に割り当てられている単語𝑣のトークン数 𝑛 𝑘,𝑣 = 𝑑=1 𝐷 𝑖=1 𝑛 𝑑 𝛿(𝑥 𝑑,𝑖 = 𝑣)𝛾 𝑑,𝑖,𝑘 • 𝑛 𝑘 は全ての語彙にわたる𝑛 𝑘,𝑣の和 2019年3月23日(土) トピックモデルとその周辺 71
  • 72. LDAの変分ベイズ法アルゴリズム repeat: for 𝑑 = 1, … , 𝐷 : 𝜁 𝑑,𝑘をランダムに初期化 repeat : for 𝑖 = 1, … , 𝑛 𝑑 : 𝛾 𝑑,𝑖,𝑘を更新 𝜁 𝑑,𝑘を更新 until 𝜁 𝑑,𝑘の変化が微小 𝜑 𝑘,𝑣を更新 until ELBOの変化が微小 2019年3月23日(土) トピックモデルとその周辺 72
  • 73. LDAのVBのprosとcons • pros • 結果がきれい • 異なるトピックの高確率語がきれいに異なる話題に対応しているように見える • きれいでないときはハイパーパラメータ𝛼を変えてみる • 逆に言えばハイパーパラメータ(とトピック数𝐾 )以外は何もいじらなくていい • cons • 時間がかかる • 内側のループが結構重たい • このループの回数をケチると結果がかなり悪くなる • ただし並列化はしやすい(文書ごとに独立した計算) 2019年3月23日(土) トピックモデルとその周辺 73
  • 75. perplexity • 未知文書𝒙0について以下を求める perplexity 𝒙0 𝑿train = exp − 1 𝑛0 𝑖=1 𝑛0 log 𝑘=1 𝐾 𝑞 𝑘|𝒙0 𝑞(𝑥0,𝑖|𝑘) • 未知文書𝒙0におけるトピック𝑘の確率 𝑞 𝑘|𝒙0 • 未知文書ごとに新しく計算する(fold-in) [Asuncion+ UAI09] • トピック𝑘での単語𝑥0,𝑖の確率 𝑞(𝑥0,𝑖|𝑘) • 訓練データで求めてある近似事後分布をそのまま固定して使う • 直感的には「次の1トークンとして現われる単語のバリエーション」 • この値が小さいほどバリエーションを狭めることができているので、良い 2019年3月23日(土) トピックモデルとその周辺 75
  • 76. 未知文書でのトピック確率の計算[Asuncion+ UAI09] • CGSの場合 • 各トピックの単語確率は固定してサンプリングを回す • 十分な回数を回した後(burn-in period)複数のサンプルを取って平均する • VBの場合 • 各トピックの単語確率は固定して内側のループを回す • 内側のループは十分な回数を回す 2019年3月23日(土) トピックモデルとその周辺 76
  • 77. 注意: gensimのperplexity • 1トークンあたりのlower bound値のマイナスのexp2 • gensim/models/ldamodel.py 2019年3月23日(土) トピックモデルとその周辺 77
  • 78. PMI (pointwise mutual information) PMI(𝑥, 𝑦) ≡ log 𝑝(𝑥, 𝑦) 𝑝 𝑥 𝑝(𝑦) • PMI 𝑥, 𝑦 > 0 ⇔ 𝑝 𝑥, 𝑦 > 𝑝 𝑥 𝑝(𝑦) • 共起する頻度が高くて独立な事象とみなせない • PMI 𝑥, 𝑦 < 0 ⇔ 𝑝 𝑥, 𝑦 < 𝑝 𝑥 𝑝(𝑦) • 共起する頻度が低くて独立な事象とみなせない 2019年3月23日(土) トピックモデルとその周辺 78
  • 79. トピックモデルの評価にPMIを使う • PMIを計算するための文書集合を用意しておく • 各トピックについて以下を実行 • トピック内で確率が高い上位10単語を取得 • それぞれの単語についていくつの文書で出現するか数える • これをもとに𝑝(𝑥)を算出 • すべての単語ペア(45ペア)についていくつの文書で共起するか数える • これをもとに𝑝(𝑥, 𝑦)を算出 • すべての単語ペア(45ペア)についてPMIを算出 • すべてのトピックのすべての単語ペアについてPMIの平均を算出 2019年3月23日(土) トピックモデルとその周辺 79
  • 80. NPMI (normalized pointwise mutual information) [Bouma 09] • 1から−1の範囲に規格化されたPMI 2019年3月23日(土) トピックモデルとその周辺 80
  • 81. なぜperplexityだけではダメ? • PMIはトピック語を直接評価している [Newman+ NAACL HLT 2010] • perplexityが悪くてもPMIは良いことがある 2019年3月23日(土) トピックモデルとその周辺 81 [Srivastava+ ICLR2017]
  • 83. トピックモデルの 基礎と応用 (応用編) 長崎大学 工学研究科 正田 備也(まさだ・ともなり) masada@nagasaki-u.ac.jp 2019年3月23日(土) 83トピックモデルとその周辺
  • 84. 今日の話題 • 前半:トピックモデル入門 • トピックモデルの概要 • トピックモデルとは、前処理、どう使うか、既存の実装 • LDAの詳細 • どんな生成モデルか、事後分布の実現法(周辺化ギブスサンプリング、変分ベイズ法) • トピックモデルの評価方法 • Perplexity, NPMI • 後半:トピックモデルの新しい研究動向~深層学習とどう関係づけるか • ミニバッチ変分ベイズ法 • 変分オートエンコーダ(VAE)との関係 • 敵対的生成ネットワーク(GAN)との関係 2019年3月23日(土) 84トピックモデルとその周辺
  • 86. LDAのミニバッチ変分ベイズ法 • 文書をバッチ的にではなく少しずつ処理したい • [Hoffman+ NIPS2010]が最初の提案 • いい評価値を得るまでの”時間”がVBより少なくなる(次スライド) • 問題は文書集合全体に関わるパラメータの更新をどうするか • つまり各トピックでの単語確率の更新 • トピック毎の単語確率にも事前分布を使っている場合は事後分布のパラメータの更新 • 詳細は佐藤『トピックモデルによる統計的潜在意味解析』3.4節を参照 2019年3月23日(土) トピックモデルとその周辺 86
  • 87. ミニバッチVBの「速さ」 • perplexityの減り方が速い • 文書集合をひととおり処理し終える前にどんどん良くなっている • 最終的にたどりつく評価値もバッチ処理より小さい 2019年3月23日(土) トピックモデルとその周辺 87 [Hoffman+ NIPS2010](ミニバッチのサイズは1024)
  • 88. LDAのVB repeat: for 𝑑 = 1, … , 𝐷 : 𝜁 𝑑,𝑘をランダムに初期化 repeat : for 𝑖 = 1, … , 𝑛 𝑑 : 𝛾 𝑑,𝑖,𝑘を更新 𝜁 𝑑,𝑘を更新 until 𝜁 𝑑,𝑘の変化が微小 𝜑 𝑘,𝑣を更新 until ELBOの変化が微小 2019年3月23日(土) トピックモデルとその周辺 88 全文書を見終わってから更新
  • 89. LDAのVBのミニバッチ化 repeat: ミニバッチを取得 for 𝑑 in ミニバッチ: 𝜁 𝑑,𝑘をランダムに初期化 repeat : for 𝑖 = 1, … , 𝑛 𝑑 : 𝛾 𝑑,𝑖,𝑘を更新 𝜁 𝑑,𝑘を更新 until 𝜁 𝑑,𝑘の変化が微小 𝜑 𝑘,𝑣を更新 until ELBOの変化が微小 2019年3月23日(土) トピックモデルとその周辺 89 ここをどうするか…
  • 90. 文書集合全体についてのELBO 𝑑=1 𝐷 log 𝑝 𝒙 𝑑|𝛼, 𝜱 ≥ 𝑑=1 𝐷 𝐸 𝑞 𝜽 𝑑 log 𝑝 𝜽 𝑑|𝛼 + 𝐸 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑 log 𝑝 𝒛 𝑑 𝜽 𝑑 2019年3月23日(土) トピックモデルとその周辺 90
  • 91. Adam [Kingma+ ICLR2015] • 自然勾配法の近似としてのAdam • 空間計算量 𝑂(𝑛) • 時間計算量(逆行列の計算) 𝑂(𝑛) • 佐藤『トピックモデルによる統計的潜在意味解析』3.4節には自然勾配法の説明がある • LDAの場合、自然勾配は閉じた式で求まる(逆行列の計算が不要) 2019年3月23日(土) トピックモデルとその周辺 91 [Kingma+ ICLR2015]
  • 92. ここでの方針 : 𝜑 𝑘,𝑣を"深層学習"的に更新してしまう • ELBOにマイナスをつけて損失関数とする • 内側のループはバッチVBと同じ • つまり𝛾 𝑑,𝑖,𝑘や𝜁 𝑑,𝑘はVBと同様に閉じた式で更新 • 𝜑 𝑘,𝑣はAdamで更新 • 𝜑 𝑘,𝑣は微分可能(PyTorchならrequires_grad=True)なテンソルとして用意 • negative ELBOの計算が前向き計算(とはいえ関係するのは尤度の項だけ) • バックプロパゲーションする(勾配を計算する) 2019年3月23日(土) トピックモデルとその周辺 92
  • 93. 𝜑 𝑘,𝑣を少し工夫する • 𝜑 𝑘,𝑣をそのまま最尤推定するとうまくいかないことが多い • そこで以下のようにパラメータを設定し直す 𝜑 𝑘,𝑣 ∝ exp(𝑏 𝑘,𝑣 + 𝑏0,𝑣) • softmax関数で行列𝑩 = (𝑏 𝑘,𝑣)とバイアスベクトル𝒃0から𝜱を得る 𝜱 ≡ Softmax(𝑩 𝑇 + 𝒃0) • 𝑩と𝒃0をバックプロパゲーションで更新 2019年3月23日(土) トピックモデルとその周辺 93
  • 94. ハイパーパラメータの調整 • dev setのperplexityを見ながら調整 perplexity 𝒙0 𝑿train = exp − 1 𝑛0 𝑖=1 𝑛0 log 𝑘=1 𝐾 exp 𝜓 𝜁 𝑑,𝑘 exp 𝜓 𝑘=1 𝐾 𝜁 𝑑,𝑘 𝜑 𝑘,𝑥0,𝑖 • dev文書𝒙0のトピック確率は変分ベイズ法の内側のループで求める • 調整すべきハイパーパラメータ • Adamの学習率 • ミニバッチサイズ • 対称ディリクレ事前分布のパラメータ𝛼 2019年3月23日(土) トピックモデルとその周辺 94
  • 95. 既存の実装 genism.models.ldamodel sklearn.decomposition.LatentDirichletAllocation • 調整したほうがいいかもしれない引数 • バッチサイズ • デフォルト値はgensimは2000、sklearnは128 • 各文書でのトピック確率分布のディリクレ事前分布のパラメータ • 各トピックでの単語確率分布のディリクレ事前分布のパラメータ • いずれもデフォルト値はトピック数の逆数 • 学習率 • 設定の仕方がむずかしいのでツールに任せていいかも 2019年3月23日(土) トピックモデルとその周辺 95 𝜌𝑡 = 𝜏0 + 𝑡 −𝜅
  • 96. offset 𝜏0とdecay 𝜅 2019年3月23日(土) トピックモデルとその周辺 96 [Hoffman+ NIPS2010]
  • 97. LDAのミニバッチVBのprosとcons • pros • 大規模データに対応できる • 収束が(VBに比べると)速い • 最終的な評価値も良いことが多い • 結果がきれい • きれいでないときは・・・ハイパーパラメータを調整 • cons • ハイパーパラメータの調整が少しだけ大変 • ミニバッチ・サイズは要調整,学習率も? • あまりうまく行かない(すべてのトピックが同じになる)こともあるので 2019年3月23日(土) トピックモデルとその周辺 97
  • 98. ここまでくると考えること • 「どうせ手計算での微分はもうしないので・・・」 • 内側のループでのパラメータ更新もBPで実行したい • 変分オートエンコーダ[Kingma+ 13][Srivastava +17]の利用 • 文書ごとのローカルなパラメータもBPで更新 • 近似事後分布の表現力を高めたい • adversarial variational Bayes[Mescheder+ 17][Huszar 17]の利用 • GAN的な手法でimplicitな分布を近似事後分布として使えるようになる 2019年3月23日(土) トピックモデルとその周辺 98
  • 100. トピックモデルは何をしているか • 文書のエンコードをしている • 語彙サイズ次元のベクトルによる表現を • トピック数次元のベクトルによる表現にエンコードしている • SVD, NMF, PLSA等と同じ。 • オートエンコーダの考え方をトピックモデルに使う • 観測データをエンコードしコードを得る • コードをデコードして元の観測データに戻す 2019年3月23日(土) トピックモデルとその周辺 100
  • 102. (典型的な)変分オートエンコーダ • エンコーダNN:個々の観測データを対角正規分布のパラメータに変換 • デコーダNN :対角正規分布から得たサンプルを使って観測データの尤度を計算 • 対角正規分布からのサンプル=近似事後分布からのサンプル=生成モデルのパラメータ 2019年3月23日(土) トピックモデルとその周辺 102 https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf
  • 103. 変分オートエンコーダ(VAE)[Kingma+ 2013]を トピックモデルに使う • ベイズ的な枠組みの中でのオートエンコーダ • エンコード • 観測データから近似事後分布のパラメータを算出 • その近似事後分布から生成モデルのパラメータをサンプリング • デコード • 生成モデルのパラメータを使って観測データの尤度を算出 • この尤度はELBOの一部として現われる 2019年3月23日(土) トピックモデルとその周辺 103
  • 104. 変分ベイズ法におけるELBO(一般の場合) log 𝑝 𝑿 = log 𝑝(𝑿, 𝚯) 𝑑𝚯 = log 𝑞(𝚯) 𝑝(𝑿, 𝚯) 𝑞(𝚯) 𝑑𝚯 ≥ 𝑞 𝚯 log 𝑝 𝑿, 𝚯 𝑞 𝚯 𝑑𝚯 = 𝑑 𝑞 𝚯 log 𝑝 𝒙 𝑑 𝚯 𝑑𝚯 + 𝑞 𝚯 log 𝑝 𝚯 𝑑𝚯 − 𝑞 𝚯 log 𝑞 𝚯 𝑑𝚯 = 𝑑 E 𝑞 𝚯 [log 𝑝 𝒙 𝑑 𝚯 ] − 𝐷 𝐾𝐿 𝑞 𝚯 ∥ 𝑝 𝚯 • 𝑞 𝚯 が近似事後分布 2019年3月23日(土) トピックモデルとその周辺 104
  • 105. 変分オートエンコーダのエンコーダ • エンコーダ 𝑞 𝚯|𝒙 𝑑 • VBでは近似事後分布のパラメータをデータ点ごとに別々に求めていた • パラメータの添え字に𝑑がついている=文書ごとに別々の事後分布がある • VAEでは近似事後分布𝑞 𝚯|𝒙 𝑑 のパラメータがデータ点𝒙 𝑑の関数 • ここにニューラルネットワークを使う(すべてのデータ点に同じNNを使う) log 𝑝 𝑿 ≥ 𝑑 E 𝑞 𝚯|𝒙 𝑑 log 𝑝 𝒙 𝑑 𝚯 − 𝐷 𝐾𝐿 𝑞 𝚯|𝒙 𝑑 ∥ 𝑝 𝚯 2019年3月23日(土) トピックモデルとその周辺 105 𝒙 𝑑がgiven
  • 106. 近似事後分布𝑞 𝚯|𝒙 𝑑 のパラメータは𝒙 𝑑の関数 • VBにおける近似事後分布𝑞 𝚯 • 文書ごと(データ点𝒙 𝑑ごと)に別々に用意される • VAEにおける近似事後分布𝑞 𝚯|𝒙 𝑑 • 近似事後分布𝑞 𝚯|𝒙 𝑑 のパラメータがデータ点𝒙 𝑑をもとに計算される • データ点𝒙 𝑑から近似事後分布のパラメータを算出する関数を共通化 • この関数=エンコーダNN • 入力=データ点𝒙 𝑑 • 出力=近似事後分布のパラメータ(生成モデルのパラメータではないので注意) 2019年3月23日(土) トピックモデルとその周辺 106
  • 107. LDAのELBO log 𝑝 𝒙 𝑑|𝛼, 𝜱 ≥ E 𝑞 𝜽 𝑑 log 𝑝 𝜽 𝑑|𝛼 + E 𝑞 𝜽 𝑑 𝑞 𝒛 𝑑 log 𝑝 𝒛 𝑑 𝜽 𝑑 + E 𝑞 𝒛 𝑑 log 𝑝 𝒙 𝑑 𝒛 𝑑, 𝜱 − E 𝑞 𝜽 𝑑 log 𝑞 𝜽 𝑑 − E 𝑞 𝒛 𝑑 log 𝑞 𝒛 𝑑 • LDAにVAEの考え方をどのように導入すればいいか? • VAEでは近似事後分布の扱い方が異なる • 𝑞 𝜽 𝑑 を観測データがgivenの条件つき分布𝑞 𝜽 𝑑|𝒙 𝑑 とみなす • 𝑞 𝒛 𝑑 も𝑞 𝒛 𝑑|𝒙 𝑑 としたいが・・・ 2019年3月23日(土) トピックモデルとその周辺 107
  • 108. カテゴリカル分布の扱いづらさ • 文書𝑑で第𝑖トークンがトピック𝑘に割り当てられる事後確率 𝑞(𝑧 𝑑,𝑖 = 𝑘) • これはカテゴリカル分布 • LDAのVBでは𝛾 𝑑,𝑖,𝑘 ≡ 𝑞(𝑧 𝑑,𝑖 = 𝑘)とおいて𝛾 𝑑,𝑖,𝑘を求めた • ところが・・・ • 近似事後分布からのサンプルを通してエンコーダNNが「透けて見えて」 いないとバックプロパゲーションできない • カテゴリカル分布から得られるサンプルは離散値(アイテムID または one-hot ベクトル) • 各アイテムの確率はサンプルから「透けて見えて」いない! 2019年3月23日(土) トピックモデルとその周辺 108
  • 109. Reparameterization trick • 正規分布ではサンプルからパラメータが「透けて見える」ようにできる • [Kingma+ 13][Rezende+ 14][Salimans+ 12][Titsias+ 14] • 実際、𝑁(𝜇, 𝜎2)からのサンプルは𝜀𝜎 + 𝜇と書ける • 𝜀は𝑁(0,1)からのサンプル(標準正規分布のパラメータは定数) 2019年3月23日(土) トピックモデルとその周辺 109 https://towardsdatascience.com/intuitively-understanding-variational-autoencoders-1bfe67eb5daf
  • 110. トピックモデルのVAE(1/2) • 離散値をとる隠れ変数𝑧 𝑑,𝑖は周辺化して消してしまう 𝑝 𝒙 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝒛 𝑑 𝑝 𝒙 𝑑, 𝒛 𝑑, 𝜽 𝑑|𝛼, 𝜱 = 𝑝 𝜽 𝑑|𝛼 𝒛 𝑑 𝑝 𝒛 𝑑 𝜽 𝑑 𝑝(𝒙 𝑑|𝒛 𝑑, 𝜱) = 𝑝 𝜽 𝑑|𝛼 𝑝(𝒙 𝑑|𝜽 𝑑, 𝜱) • あとは𝑞 𝜽 𝑑|𝒙 𝑑 をreparameterization trickで何とかすればよいが・・・ • 次なる問題:ディリクレ分布は扱いにくい • ディリクレ分布からのサンプリングはかなりデリケート 2019年3月23日(土) トピックモデルとその周辺 110
  • 111. トピックモデルのVAE(2/2) • エンコーダには対角正規分布を使う。事前分布は… 1. 対角正規分布にする [Miao+ ICML2017 のGSMモデル] 2. ディリクレ事前分布をラプラス近似する[Srivastava+ ICLR2017] • 対角正規分布=共分散行列が対角行列の正規分布 • いずれにせよもはや「潜在的ディリクレ」とは言えない • ここからは「トピックモデル」とだけ言うことにする • ここでは・・・ • 事前分布𝑝 𝜽 𝑑 は標準正規分布 • 𝑞 𝜽 𝑑|𝒙 𝑑 は対角正規分布(サンプルにsoftmax関数を適用しトピック確率にする) 2019年3月23日(土) トピックモデルとその周辺 111
  • 112. トピックモデルのVAEにおけるELBO log 𝑝 𝒙 𝑑|𝜱 = log 𝑝 𝒙 𝑑, 𝜽 𝑑|𝜱 𝑑𝜽 𝑑 ≥ 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝜽 𝑑 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 𝑞 𝜽 𝑑|𝒙 𝑑 𝑑𝜽 𝑑 = E 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 − 𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑 2019年3月23日(土) トピックモデルとその周辺 112 モンテカルロ積分で近似 (次スライド参照) この積分は計算できる (次々スライド参照)
  • 113. 対数尤度の期待値のモンテカルロ近似 E 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 = 1 𝑆 𝑠=1 𝑆 log 𝑝 𝒙 𝑑 𝜽 𝑑 (𝑠) , 𝜱 = 1 𝑆 𝑠=1 𝑆 𝒙 𝑑 𝑇LogSoftmax (𝑩 𝑇 + 𝒃0)𝜽 𝑑 (𝑠) • 近似事後分布からのサンプリング𝜽 𝑑 (𝑠) ~𝑞 𝜽 𝑑|𝒙 𝑑 • サンプル数は𝑆 = 1でよい • 標準正規分布のサンプル𝜀 𝑘 𝑠 ~𝑁(0,1)を使って𝜃 𝑑,𝑘 (𝑠) ≡ 𝜀 𝑘 𝑠 𝜎 𝑘 𝒙 𝑑 + 𝜇 𝑘 𝒙 𝑑 と書ける • 𝜇 𝑘 𝒙 𝑑 と𝜎 𝑘 𝒙 𝑑 はエンコーダの出力の一部として与えられる 2019年3月23日(土) トピックモデルとその周辺 113 各トピックの単語確率𝜱は このようにパラメータ化
  • 114. 対角正規分布の場合のKL情報量 • 対角正規分布の場合のKL情報量の項 • [Kingma+ ICLR14]のAppendix Bより • KL情報量にマイナスが付いたものである点に注意 −𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑 = 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝜽 𝑑 − log 𝑞 𝜽 𝑑|𝒙 𝑑 𝑑𝜽 𝑑 = 1 2 𝑘=1 𝐾 1 + log 𝜎 𝑑,𝑘 2 − 𝜇 𝑑,𝑘 2 − 𝜎 𝑑,𝑘 2 2019年3月23日(土) トピックモデルとその周辺 114
  • 115. トピックモデルのVAEにおけるELBO • まとめると・・・ log 𝑝 𝒙 𝑑|𝜱 ≥ 1 𝑆 𝑠=1 𝑆 𝒙 𝑑 𝑇LogSoftmax (𝑩 𝑇 + 𝒃0)𝜽 𝑑 (𝑠) + 1 2 𝑘=1 𝐾 1 + log 𝜎 𝑑,𝑘 2 − 𝜇 𝑑,𝑘 2 − 𝜎 𝑑,𝑘 2 • ただし𝜃 𝑑,𝑘 (𝑠) ≡ 𝜀 𝑘 𝑠 𝜎 𝑘 𝒙 𝑑 + 𝜇 𝑘 𝒙 𝑑 2019年3月23日(土) トピックモデルとその周辺 115
  • 116. VAEの問題点: latent variable collapse log 𝑝 𝒙 𝑑|𝜱 ≥ E 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 − 𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑 • KL情報量の項が効きすぎる • 正則化(regularization)の役割を果たす項 • 異なる文書でもエンコーダが似たような出力を与える • するとトピック毎の単語確率の学習もうまくいかなくなる • 解決法 ([He+ ICLR2019]も参照) • KL情報量の項にエポック数が増えるにつれて1に近づく値を掛ける • 0.1から始めて1.0に達するまで1エポックごとに0.1ずつ増やす、等 • デコーダに細工をする [Dieng CoRR abs/1807.04863] 2019年3月23日(土) トピックモデルとその周辺 116
  • 117. Ladder Variational Autoencoders [Sønderby+ NIPS2016] • "warm-up" 2019年3月23日(土) トピックモデルとその周辺 117
  • 118. トピックモデルのVAEのprosとcons • pros • 収束が速い • 最終的な評価値もそれなりに良いことが多い • 未知文書への対応が速い • cons • latent variable collapseはほぼ確実に起こる • ハイパーパラメータの調整が大変 • ミニバッチ・サイズは要調整 • 単語確率の学習率とエンコーダの学習率は別にする • エンコーダNNのアーキテクチャは当然いろいろ試す • Dropoutが効く事もある、ReLUよりLeakyReLUが良いこともある、等 • 性能が良くなるなら何でもする 2019年3月23日(土) トピックモデルとその周辺 118
  • 120. 近似事後分布の選び方 • VAEでは対角正規分布 • かなり狭い範囲で近似事後分布の候補を探しているとも言える • adversarial variational Bayes (AVB) [Mescheder+ ICML2017] • VAEではエンコーダNNの出力が近似事後分布のパラメータだった • これに乱数を組み合わせて近似事後分布からのサンプルを得ていた • 乱数をエンコーダNNに入力してしまうとどうなる? • 出力は何らかの分布に従う • しかし密度関数は分からない(implicitな分布) 2019年3月23日(土) トピックモデルとその周辺 120
  • 122. GAN [Goodfellow+ NIPS2014] • GANはふたつのことをしている 1. 密度関数が分からない分布の密度比を近似する • GANの場合、観測データの分布とgeneratorの出力が従う分布 • どちらの分布の密度関数も分からない • サンプルはいくらでも取れる ⇒ 密度比を近似できる 2. 密度比が1に近づくように一方の分布を変化させる • GANの場合、generatorを動かす 2019年3月23日(土) トピックモデルとその周辺 122
  • 123. 密度比の近似 [Mohamed+ NIPS 2016 Workshop on Adversarial Training] • 膨大な知見の蓄積がある話題 • density ratioだけでなくdensity differenceを近似するという話もある • density ratioの近似だけでも色々な手法がある • GANでは密度比の近似問題を分類問題に帰着させている • 一方の分布のサンプルにラベル1を、他方については0を割り当てる 𝑝(𝜃) 𝑞(𝜃) = 𝑝(𝜃|𝑦 = 1) 𝑝(𝜃|𝑦 = 0) = 𝑝 𝑦 = 1 𝜃 𝑝 𝜃 𝑝 𝑦 = 1 𝑝 𝑦 = 1 𝜃 𝑝 𝜃 𝑝 𝑦 = 0 = 𝑝(𝑦 = 1|𝜃) 𝑝(𝑦 = 0|𝜃) × 𝑝 𝑦 = 0 𝑝 𝑦 = 1 2019年3月23日(土) トピックモデルとその周辺 123 実際のサンプル数 の比で代用する discriminatorを 使う
  • 124. AVB (adversarial variational Bayes) [Mescheder+ ICML2017] log 𝑝 𝒙 𝑑|𝜱 ≥ E 𝑞 𝜽 𝑑|𝒙 𝑑 log 𝑝 𝒙 𝑑 𝜽 𝑑, 𝜱 − 𝐷 𝐾𝐿 𝑞 𝜽 𝑑|𝒙 𝑑 ∥ 𝑝 𝜽 𝑑 • KL情報量の項に事前分布と近似事後分布の密度比が現われる • GANと同じ手法が使えるなら𝑞 𝜽 𝑑|𝒙 𝑑 はimplicitな分布でよい • GANのgeneratorと同様、エンコーダNNにノイズを入力する • ノイズは標準正規分布に従うとする • ただし𝒙 𝑑につなげて入力する • エンコーダNNはそもそも𝒙 𝑑の関数だったので 2019年3月23日(土) トピックモデルとその周辺 124 KL情報量の定義 𝐷 𝐾𝐿 𝑞 ∥ 𝑝 = E 𝑞 log 𝑞 𝑝
  • 125. 密度比とdiscriminatorの出力の関係 Disc 𝜃 = 𝑟 𝜃 𝑟 𝜃 + 1 ⇔ 𝑟 𝜃 = Disc 𝜃 1 − Disc 𝜃 • 上の式でdiscriminatorの出力Disc 𝜃 を密度比𝑟 𝜃 に変換 • あとはGANと同じようにdiscriminatorをtrainingすればよい 2019年3月23日(土) トピックモデルとその周辺 125 [Goodfellow+ NIPS2014]
  • 126. AVBとGANとの違い • GANで密度比を近似しているのはそれを1に近づけたいから • discriminatorを固定し、密度比が1に近づくような最小化問題を解く • このときgeneratorを動かす • AVBで密度比を近似するのはELBO最大化に使うから • discriminatorを固定し、ELBO最大化問題を解く • このときgeneratorを動かす 2019年3月23日(土) トピックモデルとその周辺 126 [Goodfellow+ NIPS2014]
  • 127. トピックモデルのAVB • Encoder 𝑔 𝒙 𝑑, 𝜺 • 文書𝑑のトピック確率 𝜃 𝑑 = 𝑔 𝒙 𝑑, 𝜺 • Decoder 𝑓(𝜽 𝑑) • 文書𝑑の単語確率 𝑓(𝜽 𝑑) =Softmax(𝑩𝜽 𝑑 + 𝒃0) • Discriminator 𝑟(𝜽 𝑑, 𝒙 𝑑) • 対数密度比 𝑟(𝜽 𝑑, 𝒙 𝑑) = log 𝑞(𝜽 𝑑|𝒙 𝑑) 𝑝(𝜽 𝑑) cf. 𝜎 𝑟 = 1 1+exp(− log 𝑞/𝑝) = 𝑞 𝑝+𝑞 sample𝜽 𝑑 wordprobabilitiesfor 𝒙 𝑑 𝒙 𝑑 𝜺 𝜽 𝑑 𝒙 𝑑 𝜽 𝑑
  • 128. トピックモデルのAVB: trainingのポイント • encoder NNとdiscriminator NNの学習 • 両方とも学習率0.0001のAdamで(学習率を大きくすると良くない) • 各トピックの単語確率 • 学習率が高めのAdamで(学習率0.1ぐらいで初めてうまくいくこともある) • encoder NNに入力するノイズベクトル • この次元はトピック数と関係なく調整する(500ぐらい必要かもしれない) • 事前分布のパラメータ • 場合によっては対角正規分布の事前分布の平均パラメータや標準偏差パラメータを動かす • LDAで非対称ディリクレ事前分布のパラメータ𝜶を動かすのに似ている • 単語embeddingの利用 • encoderへの入力を、term frequencyベクトルにembedding行列を掛けたものにする • embedding行列は各トピックの単語確率の計算に使う行列と共通化して学習する • GPUのメモリ使用量はかなり減る 2019年3月23日(土) トピックモデルとその周辺 128
  • 129. トピックモデルのAVBのprosとcons • pros • 収束が速い • 最終的な評価値も良いことが多い • VAEより良くなることが多い • 未知文書への対応が速い • cons • 完全に深層学習=ハイパーパラメータの調整がかなり大変 • ミニバッチ・サイズは要調整 • エンコーダNNのアーキテクチャは当然いろいろ試す • Dropoutが効く事もある、ReLUよりLeakyReLUが良いこともある、等 • discriminator NNのアーキテクチャも当然いろいろ試す • Dropoutは無いほうがいいかも • 性能が良くなるなら何でもする • いったん良さげな設定が見つかるとVAEよりもかなり推定計算がスムーズになる 2019年3月23日(土) トピックモデルとその周辺 129
  • 130. 結局、どの手法を使えばいい? 1. 周辺化ギブスサンプリング • 調整すべきハイパーパラメータが少ない • ほぼブラックボックスとして動かせる 2. ミニバッチ変分ベイズ法 • ミニバッチ学習なので大規模データに対応できる 2019年3月23日(土) トピックモデルとその周辺 130
  • 131. 今日の話題 • 前半:トピックモデル入門 • トピックモデルの概要 • トピックモデルとは、前処理、どう使うか、既存の実装 • LDAの詳細 • どんな生成モデルか、事後分布の実現法(周辺化ギブスサンプリング、変分ベイズ法) • トピックモデルの評価方法 • Perplexity, NPMI • 後半:トピックモデルの新しい研究動向~深層学習とどう関係づけるか • ミニバッチ変分ベイズ法 • 変分オートエンコーダ(VAE)との関係 • 敵対的生成ネットワーク(GAN)との関係 2019年3月23日(土) 131トピックモデルとその周辺
  • 132. 参考文献 Asuncion+. On smoothing and inference for topic models. UAI 2009. Dieng+. Avoiding Latent Variable Collapse With Generative Skip Models. CoRR abs/1807.04863. Ganguly+. An LDA-smoothed relevance model for document expansion: a case study for spoken document retrieval. SIGIR 2013. He+. Lagging Inference Networks and Posterior Collapse in Variational Autoencoders. ICLR 2019. Huszár. Variational inference using implicit distributions. CoRR abs/1702.08235. Kim+. Semi-amortized variational autoencoders. ICML 2018. Kingma+. Auto-encoding variational Bayes. CoRR abs/1312.6114. Jankowiak+. Pathwise derivatives beyond the reparameterization Trick. ICML 2018. Mescheder+. Adversarial variational Bayes: Unifying variational autoencoders and generative adversarial networks. ICML 2017. Miao+. Neural variational inference for text processing. ICML 2016. Miao+. Discovering discrete latent topics with neural variational inference. ICML 2017. Mohamed+. Learning in implicit generative models. NIPS 2016 Workshop on Adversarial Training. CoRR abs/1610.03483v4. Newman+. Automatic evaluation of topic coherence. NAACL HLT 2010. Rezende+. Stochastic backpropagation and approximate inference in deep generative models. ICML 2014. Roeder+. Sticking the landing: Simple, lower-variance gradient estimators for variational inference. NIPS 2017. Salimans+. Fixed-form variational posterior approximation through stochastic linear regression. Bayesian Analysis 8 (4). 2013. Sønderby+. Ladder variational autoencoders. NIPS 2016. Srivastava+. Autoencoding variational inference for topic models. ICLR 2017. Titsias+. Doubly stochastic variational Bayes for non-conjugate inference. ICML 2014. Xiao+. Dirichlet variational autoencoder for text modeling. CoRR abs/1811.00135. Yi+. A comparative study of utilizing topic models for information retrieval. ECIR 2009. 2019年3月23日(土) トピックモデルとその周辺 132