はじめに
『トピックモデル』(MLPシリーズ)の勉強会資料のまとめです。各種モデルやアルゴリズムを「数式」と「プログラム」を用いて解説します。
本の補助として読んでください。
この記事は、各節の内容のリンクページです。
各記事では、「数式の行間埋め」や「RまたはPythonでのスクラッチ実装」を解説します。
【目次】
- はじめに
- Chpter 1 確率の基礎
- Chapter 2 ユニグラムモデル
- Chapter 3 混合ユニグラムモデル
- Chapter 4 トピックモデル
- Chapter 5 トピックモデルの拡張
- Chapter 8 トピック数の推定
- 参考書籍
- おわりに
2024.04.12現在、加筆修正を進めています。記事タイトルが【青トピックモデルのノート】だとアップデート済みです。【『トピックモデル』の勉強ノート】だとアップデート待ちで、書いた時期や修正回数によって質がまちまちです。
Chpter 1 確率の基礎
1.1 確率
1.2 確率分布
分布ごとに数式やパラメータの確認、グラフの作成、乱数生成などを扱っています。
以下の分布の他に青トピ本に登場しない確率分布についてもこちらの記事にまとめています。
離散確率分布
ベルヌーイ分布に関する記事の一覧ページです。
二項分布に関する記事の一覧ページです。
カテゴリ分布に関する記事の一覧ページです。
多項分布に関する記事の一覧ページです。
連続確率分布
ベータ分布に関する記事の一覧ページです。
ディリクレ分布に関する記事の一覧ページです。
Chapter 2 ユニグラムモデル
2章では、ユニグラムモデル(カテゴリモデル)を扱います。
2.1 文書表現
文書データに関する数式や記号を確認します。
全てのモデルで共通する表記です。
テキストデータから推論用の語彙頻度データを作成します。
全てのモデルで共通するオブジェクトです。
2.2 ユニグラムモデル
ユニグラムモデルを数式で確認します。
2章で使う記号類についてもこの記事を参照してください。
ユニグラムモデルをプログラムで確認します。
2章で使うトイデータの作成についてもこの記事を参照してください。
2.3 最尤推定
最尤推定によるパラメータ推定を数式で確認します。
最尤推定によるパラメータ推定をプログラムで確認します。
2.4 最大事後確率推定(MAP推定)
MAP推定によるパラメータ推定を数式で確認します。
MAP推定によるパラメータ推定をプログラムで確認します。
2.5-6 ベイズ推定
2.7 ハイパーパラメータ推定
経験ベイズ推定
経験ベイズ推定によるハイパーパラメータ推定を数式で確認します。
MAP推定
MAP推定によるハイパーパラメータ推定を数式で確認します。
MAP推定によるハイパーパラメータ推定をプログラムで確認します。
Chapter 3 混合ユニグラムモデル
3章では、混合ユニグラムモデル(混合カテゴリモデル)を扱います。
3.1 混合ユニグラムモデル
混合ユニグラムモデルを数式で確認します。
3章で使う記号類についてもこの記事を参照してください。
混合ユニグラムモデルをプログラムで確認します。
3章で使うトイデータの作成についてもこの記事を参照してください。
3.3 EMアルゴリズム
最尤推定によるパラメータ推定を数式で確認します。
最尤推定によるパラメータ推定をプログラムで確認します。
上の記事では、forループによりアルゴリズムに沿った処理で実装します。
下の記事では、行列計算によりシンプルな処理で実装します。
3.4 変分ベイズ推定
変分推論によるハイパーパラメータ推定を数式で確認します。
変分推論によるハイパーパラメータ推定をプログラムで確認します。
上の記事では、forループによりアルゴリズムに沿った処理で実装します。
下の記事では、行列計算によりシンプルな処理で実装します。
3.5 ギブズサンプリング
周辺化ギブスサンプリングによるハイパーパラメータ推定を数式で確認します。
周辺化ギブスサンプリングによるハイパーパラメータ推定をプログラムで確認します。
Chapter 4 トピックモデル
4章では、トピックモデル(階層混合カテゴリモデル?)を扱います。
4.1 トピックモデル
トピックモデルを数式で確認します。
4章で使う記号類についてもこの記事を参照してください。
トピックモデルをプログラムで確認します。
4章で使うトイデータの作成についてもこの記事を参照してください。
4.3 最尤推定
最尤推定によるパラメータ推定を数式で確認します。
最尤推定によるパラメータ推定をプログラムで確認します。
4.4 変分ベイズ推定
変分推論によるハイパーパラメータ推定を数式で確認します。
変分推論によるハイパーパラメータ推定をプログラムで確認します。
4.5 ギブズサンプリング
周辺化ギブスサンプリングによるハイパーパラメータ推定を数式で確認します。
周辺化ギブスサンプリングによるハイパーパラメータ推定をプログラムで確認します。
Chapter 5 トピックモデルの拡張
5章では、拡張版のトピックモデルを扱います。
5.1 結合トピックモデル
結合トピックモデルを数式で確認します。
周辺化ギブスサンプリングによるハイパーパラメータ推定を数式で確認します。
5.2 対応トピックモデル
結合トピックモデルを数式で確認します。
周辺化ギブスサンプリングによるハイパーパラメータ推定を数式で確認します。
5.3 ノイズあり対応トピックモデル
5.4 著者トピックモデル
5.5 トピック追跡モデル
Chapter 8 トピック数の推定
8.1 混合モデルのトピック数の推定
生成モデルをプログラムで確認します。
簡易文書データ(観測データのトイデータ)の作成についてもこの記事を参照してください。
参考書籍
おわりに
微積から怪しい人でも「トピックモデル」を理解できる!をコンセプトに書いております。
高校数学から投げ出してしまったことを今更後悔している自分向けの解説です。分かる人にとってはかなりくどい説明になっているかと思います。
現在勉強中ですので理解の程はまだ粗いですが、機械学習関連の入門書も入手しましたので何周かしながら加筆修正していくつもりです。また、内容に何かあればご指摘いただけると嬉しいです。
特に同じ様な立場の方の参考になれば幸いです。
コードのちょっとした改修はGitHubで管理しています。
2019/08/13:2~4章の修正作業が完了しました。
2019/08/24:1章も加筆修正しました。
この目次ページをもっと見やすく方法やレイアウトって何かありませんかね??
- 2019/12/22
白本版ノートも書いております。
こちらの方が扱うレベルが高いですね。青本から入る方が無難です。
- 2020.06.08
2回目の大幅加筆修正作業を始めました。記事タイトルにChapterがないものが修正済みの記事になります。
- 2020.09.24
数式読解編の修正作業が全章終了しました!
- 2020.10.03
気分がノってたので、(実装編の修正は放置して)5章を進め始めましたー。行間がすんごく広いー、でもギリギリギリ追えるぞ!4章の更新から10か月空きましたが、その分の成長を感じてます。詰まったらコードを改修します。
- 2020.11.05
5章の更新が完了しました。実装もしたいけど4章の崩壊型ギブスサンプリングの時点で組めてるのか微妙だったので保留にします。次は白トピ本の4章に進んで、それが終われば白トピ5章と合わせてこちらの6章を進める予定です、今のところ。
- 2024.04.12
2023年の頭に3回目の全編加筆修正を進めてた気配があるのですがほとんど記憶がありません。
それはそれとして、3月頃から4回目の全編加筆修正を始めました。3回目に修正した内容に関してはもう直すところはないだろうと思っていたのですが、分かっていなかった(間違っていた・気付いていなかった・書けていなかった)ことがいくつか分かったので、骨の折れる作業になりそうです。
元々が勉強会用のレジュメだったこともあり本の内容を自分なりに言い換えただけのような部分もありましたが、あくまで本が主体で記事は補助となるように削っていくつもりです。
個々の記事の修正と並行して、ループ処理版と行列処理版や一様パラメータ版と多様パラメータ版の記事を用意したり、他の節との関連が分かりやすくしたりと、全体の再構成を考えています(これは現状やりたいと思っているだけです)。
また新規の記事として、Pythonでの実装と8章の内容を書いています(これは既に進めています)。
想定を書き出してみるとやっぱり大変そうだなー。世間はLLMにお熱だというのに。しかしトピックモデルは私が初めて目にしたモデルなので思い入れも強く、なんとかやり遂げたいものです。
元々は、数式読解とR実装が2つセットだったり、確率分布の記事を青トピシリーズの一部として書いてたりで、各記事の繋がりが一方向だったのでこのページにただリンクを並べていました。加筆修正を重ねるごとに、ループ版の他に行列計算版ができたり、Python実装版ができたり、パラメータの一様版と多様版ができようとしたりで、記事の関係が横展開しています。
目次のレイアウトに関してHTMLやCSSに手を出す余裕はないので、せめて見出しを細かくして記事ごとにコメントを入れていきます。