ゼミで発表したので、まとめておきます。自分用メモ。
まず、ベイズの定理を使って、クラスの事後分布を計算する。直接事後分布をモデル化しにいく識別モデルとは違い、内部では(クラスとデータの)同時分布を計算しているのが生成モデル。この計算をしていくと自然な形でロジステックシグモイド関数が出てくる。2クラス以上の場合を考えるとソフトマックス関数を導出することができる。
4.2.1 連続値入力
生成モデルでは、入力がどのように分布しているかをモデリングしていく。連続値入力の場合を考えて、それぞれのクラスの確率密度は多次元ガウス分布であると仮定してみる。ここで一つ重要な仮定をする。それは全てのクラスにおいて同じ分散共分散行列が共有されている、という仮定だ。ここが一般化線形モデルになるかどうかの鍵を握っているところになる。この仮定を置くと、クラスに対する事後確率がで書き表わされる。と書け、これはパラメータに関して線形になっている。よって決定境界は入力空間で線形となる。しかし、分散共分散行列が共有されないで、各クラスで違うかもしれないとなると事態は変わってくる。この場合は二次の項がキャンセルアウトされず、決定境界はここにあるような二次の決定境界となる。
4.2.2 最尤解
4.2.1のガウス分布のパラメータを最尤推定する話。PRMLではさらりと書いてあるが、共有共分散行列の推定の計算がややこしい(いや、ガウス分布の最尤推定の結果利用すればいいんですけど、まじめにやりました)。
特に下のところがどうして成り立つのかと
この辺のヘッセ行列を計算するのに苦労しました。。というわけで記録を残しておく*1。
まず、なんでトレースが出てくるのか意味が分からないので、D=2くらいの場合で考える。答えのほうが分かっているので、まじめに展開してみる。
そうするとこんな感じでトレースのやつと二次形式が同じになることが確認できる。これはD次元で簡単に一般化できる。で、今度はこれの和を考えてやるんだけど、「クラス1に対しての和」ではなくて「n=1からNまでの和」にしておいて、をフラグっぽく扱ってやると、こんな感じにできる。和と出したり引っこめたりできる付近がポイントか。
するとトレースじゃない形と似ているので、なんとか理解ができた。
で、今度はこいつを微分してあげないと行けないんだけど、行列の微分とか覚えてないので、付録のDを参考にしまくります。まず、(i,j)要素で微分。そうするとこうできる。
式展開の補足としてはこんな感じ。こんなの覚えてな(ry。
というわけで整理してあげるとこんな感じにできるので、答えまで行きつける。
というかこの付近、答えが与えられないと出せる気がしませんね!!
4.2.3 離散特徴
4.2.1では連続値入力を考えたので、今度は離散の場合について考える。普通に生成モデルでモデル化すると、特徴数が指数関数的に増加するので、クラスが与えられたもとで条件付き独立である、と仮定、つまりナイーブベイズを仮定する。ナイーブベイズとか集合知プログラミングでもあったなーというのを思い出した。
ナイーブベイズを仮定してあげると、こんな感じで展開されて、これまた入力の線形関数であることが分かる。
4.2.4 指数型分布族
4.2.1では連続値入力の例としてガウス分布扱った(共分散行列は各クラスで共有を仮定)。4.2.3では、離散入力を取り扱った(ナイーブベイズを仮定)。そしてどちらも入力に対して線形な関数であるということが分かった。なので、もう少し広い分布族に対しても入力が線形であるようなものはないだろうか、という考えが出てくる。というわけで、指数型分布族について考える。もちろん指数型分布族の形そのままではだめなので(前の例から明らか)、何らかの制限や仮定を置くことにする。
指数型分布族は下のように密度関数が書かれる分布族。
まず、で書けるようなクラスに限定する。
さらに、尺度不変性を満たすものに限定する。尺度不変性とは以下を満たすような性質である*2。
ここで、スケーリングパラメータsはクラス間で共有されていることを仮定している。以上の3つを仮定するとクラスの事後確率は
と計算できる。これもまた入力の線形関数となっている。このようにしてもう少し広い分布族に対して、入力の線形関数になる、という性質が導ける。
id:reposeと話していて、気がついたんだけど、この色々と限定した指数型分布族でないと入力の線形関数にならない、ということではない。ガウス分布の十分統計量がとである例がそうだと思う。
ところで
4.2では確率的生成モデルということだけど、分類問題を考えるうえで「識別関数」「生成モデル」「識別モデル」の違いについては理解しておいたほうがいいだろう、ということで1.5.4節に戻ってみることにしました*3。それぞれのモデルの特徴、メリット、デメリットを表にしてみるとこんな感じ。