ベイズ推論により混合分布のパラメータ推論をやってみる 〜混合数の推論1〜
【概要】
- 混合分布(混合モデル)はモデルを潜在変数でスイッチする構造を持ったモデルであり、実用的な観点でも面白いです
- 弊ブログでは数回にわたって、混合分布を使って遊んでみています(これが4記事目)
- 第4弾、第5弾では、これまで既知としていた混合数(クラスタ数)を含めて推論してみます(記事が長くなったので分割しました)
- まだまだ勉強中なので、間違いなど指摘いただけると助かります
【目次】
はじめに
機械学習や統計の問題では、手元にあるデータを解釈して応用しようとしますね。 この時、明に暗になんらかの「確率モデル」を仮定しているはずです。
確率モデルの中でも、混合分布(混合モデル)は、複数の確率モデルの組み合わせとして定義されており、複雑なデータ構造を表現できます。 応用としても、クラス分類や多クラスの回帰など面白い実用例があります。
ということで当ブログではここまで3回にわたって、混合モデルを使って遊んできました。(第3回からここまでだいぶ時間が空いてしまいましたが。。。)
第4弾となる本記事では、これまで既知としていた混合数(クラスタ数)もデータに合わせて推論してみたいと思います。ディリクレ過程混合モデル(DPMM; Dirichlet Process Mixture Model)と呼ばれるモデルです。ほんとは一つの記事でまとめたかったのですが、長くなってしまったので、二つに分割します。DPMM自体の実装については次回で扱います。
【ベイズ推論により混合分布のパラメータ推論をやってみる 記事一覧】
第4弾:当記事
混合モデル
混合モデルについては、これまでの当ブログの記事や参考文献3、参考文献4などを参照ください。複数の確率モデルの組み合わせで定義されており、潜在変数でそれらの確率モデルをスイッチする構造を持った確率モデルです。 複数の確率モデルを組み合わせることができるため、複雑な構造のデータをモデリングするのに利用できます。
グラフィカルモデルで表現すると以下の通りです。
通常の混合モデルでは、データがどのコンポーネント(クラスタ)から生成されたかを割り当てる変数がです。つまりは、クラスタのIDを示す離散変数なので、カテゴリ分布から生成されるとします。そして、カテゴリ分布のパラメータであるそれぞれのコンポーネントの割合を示す変数はディリクレ分布から生成されるとするとします。
データは、割り当てられたコンポーネントのパラメータに基づいて生成されるとします。
混合モデルにおける課題
上記の混合モデルでは、コンポーネントの数はの種類、つまり、の次元数で決まります。
現実の問題では、予めクラスタ数が決まっている問題しか扱えないのであれば柔軟性がありません。既知のクラスタ数で学習したモデルに対して、未知のクラスのデータを入力した場合、通常は既知クラスのいずれかのクラスタに分類してしまいます(e.g. Open Set Recognition)。
そこで、クラスタ数も含めてデータから構造を学習(推論)したいと言う欲求が現れます。
課題に対するアプローチ
上記の欲求に対して、コンポーネント数を無限として無限クラスの混合モデルを考えるのがディリクレ過程混合モデルです。 他にも、混合数を複数パターン推論してAIC等の基準でモデル選択するとの考え方もありますが、複数パターンのモデルの推論が必要なため計算効率が悪いです。
無限次元の混合モデルを扱うためのアプローチとして以下の二つのアプローチがあります。
- を周辺化除去して、について無限クラスの分割方法に関する事前分布を考える
- 無限次元のを表現する事前分布を考える
なおここで、「無限次元」と表現していますが、データは有限です。なので、実際に観測されるクラスタ数は有限になります(なので計算ができる)。 予め明示的にクラスタ数を設定しているのではなく、クラスタ数も確率的に変動するという点で「無限次元」の混合モデルと表現されています(と理解しています)。
ディリクレ過程の実装
正直に言うと、ディリクレ過程について説明できるほど数学的な理解はできていません(いずれ理解をまとめて記事書こうと思います)。表面的な理解のままとりあえず実装を進めて行きたいと思います。
上記の二つのアプローチを実装するための代表的な二つの確率過程があります。 1のアプローチでのディリクレ過程の実現例として「中華料理店過程」と呼ばれる確率過程があります。また、2のアプローチの実現例として「棒折り過程」と呼ばれる確率過程があります。
以下ではそれぞれの確率過程を実装して無限次元のクラスタの表現というのがどのようなイメージなのかを見ていきたいと思います。
中華料理店過程(CRP; Chinese Restaurant Process)
CRPは、N個のデータを分割(クラスタリング)することを考えた際に、分割数を予め定めずどのような分割の仕方があるのかについての確率過程です。分割の仕方、つまり、クラスタのIDを示す潜在変数の種類数や割り当ての確率を含めての事前分布になります(が現れてこない→周辺化除去されている)。
CRPは以下の流れで分割数の事前分布を構成します(詳しくは参考資料2を参照してください)。
- 最初の客(データ)は任意のテーブル(クラスタ)に着席する(割り当てられる)
- 2番以降の客(データ)は、すでに人着席しているテーブルiに確率で着席し、誰も座っていないテーブルに確率で着席する
テーブルがクラスタを表し、お客さんがデータを示しています。このようにしてN個のデータを予め定めないK個のクラスタに分割する仕方を表すのがCRPです。パラメータはで、大きいとそれだけ新規のテーブルに座る確率が上がるため、多数のクラスタができやすくなります。
CRPを実装し、1,000個のデータがどのように分割されるのかシミュレーションしてみたのが以下の結果です。
それぞれのクラスタにどのくらいのデータが属するのかを示したのが以下の図です。
が大きいと、多数のクラスタができやすくなるということが図からわかります。なお、これはあくまでも「事前分布」なので、データがこのようにクラスタリングされるということを言っているわけではないことに注意です(これは私も理解に時間がかかりました。DPMMの実装例を確認すると気持ちがわかりやすいと思います。)。
CRPの実装例は以下のnotebookを参照してください。
棒折り過程(SBP; Stick Breaking Process)
CRPは、上述の通り、有限のデータがどのように分割されるのかを示すものでした。つまり、明示的に無限次元を扱ってはいなかったのです。 これに対して、無限次元の混合比(])を明示的に扱うのが棒折り過程(SBP)です。
はk番のクラスタの割合を示す変数であり、です。つまり、1.0を無限個に分割するという考えで無限次元の混合比を扱います。 そのアルゴリズムは以下の通りです。
- 長さ1.0の棒をの比で折る()
- 残りの棒(長さ)をの比で折る()
- 以下同様に繰り返し
ここで、は割合であり、ベータ分布()から生成します。
パラメータはベータ分布のパラメータであり、大きい場合には小さい値がより生成されやすくなります。そのため、が小さい多数のクラスタが生成されるようになります。
ベータ分布()の確率密度は以下の通りです。
SBPを実装し、混合比がどのように割り当てられるのかをシミュレートしてみました。なお実装にあたって、無限次元のベクトルを生成することはできないので、十分大きな次元を予め設定します(上限を設定しない仕組みも提案されているらしいですが論文読んで無いです。参考文献3を参考にしてください)。
この図から、では累積確率のカーブが急峻であり、の値が大きい少数のクラスタで累積確率がほぼ1に達していることがわかります。 これがCRPでのテーブル数が少ないケースに対応しています。
次に、それぞれのの分布を確認してみます。
のケースでは、大きい値の少数の棒がありますが、他はほぼ棒が見えないです。つまり、クラスタ数が少なくなりがちになることを示しています。
ここでSBPでは理論的には無限次元のを考えるのですが、上図のように有限な数のクラスタが意味のある値になり、以降のクラスタのはほぼ0になります。棒を折っていくと原理的には無限回折ることはできますが、ある程度折れば微小になると言うのはイメージつくかなと思います。これが無限の混合数のイメージで、意味のあるクラスタは無限のクラスタの中の一部ということだと理解しています。
以上の結果を生成する、SBPの実装例は以下のnotebookを参照してください。
まとめ
今回は、混合モデルにおける混合数の推論まで行うDPMMの準備として、ディリクレ過程を計算機で実装するための二つの確率過程を確認しました。
これらは共に混合モデルの確率変数の事前分布となります。私自身がそうだったのですが、これだけでは何が嬉しいのかわかりにくいんじゃないかと思います。実際にDPMMとしてディリクレ過程を利用すると、なんとなく理解ができそうな気がします。DPMMの実装については次回扱いますので、よければ参考にしていただけたらと思います。
参考文献
- [1] Dirichlet process mixtures for density estimation, PyMC3 Examples, 2020/08/20アクセス
- [2] 石井, 上田, 続・わかりやすい パターン認識, オーム社, 2014(初版)
- これは実際わかりやすかった。扱ってる内容がハードなので難しいんだけど、それでもわかりやすかったです。これは必読です。
ノンパラメトリックベイズ 点過程と統計的機械学習の数理 (機械学習プロフェッショナルシリーズ)
- 作者:佐藤 一誠
- 発売日: 2016/04/20
- メディア: 単行本(ソフトカバー)
- [4] 須山敦志, 機械学習スタートアップシリーズ ベイズ推論による機械学習 入門, 講談社, 2017
- DPMMについては記載されていないが、確率モデルの推論全体、また、混合モデルの基礎がとてもわかりやすい
機械学習スタートアップシリーズ ベイズ推論による機械学習入門 (KS情報科学専門書)
- 作者:須山 敦志
- 発売日: 2017/10/21
- メディア: 単行本(ソフトカバー)
- 作者:C.M. ビショップ
- 発売日: 2012/04/05
- メディア: 単行本(ソフトカバー)
- 作者:C.M. ビショップ
- 発売日: 2012/02/29
- メディア: 単行本
Pythonによるベイズ統計モデリング: PyMCでのデータ分析実践ガイド
- 作者:マーティン,オズワルド
- 発売日: 2018/06/22
- メディア: 単行本