したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

Pattern Recognition and Machine Learning

1karino2:2016/12/14(水) 09:33:24
Pattern Recognition and Machine Learning (Information Science and Statistics)

いわゆるPRML。
機械学習の定番教科書として有名だが、難しい事でも有名。

https://www.amazon.co.jp/dp/0387310738

2karino2:2016/12/14(水) 09:35:14
勉強会に向けて三章を読んでる。
当番じゃないので計算とか追わずに文章だけ読んでた所、3.3.3でついていけなくなる。

p158あたりからついていけてない気がする。

3karino2:2016/12/14(水) 10:11:13
3.4のベイズの視点から見たモデル選択、面白いね。
MCMCの計算で理解があやふやだった手続きの一部が大分理解出来た。
3.73のあたりは良く分からず。

4karino2:2016/12/15(木) 07:13:19
3.78あたりで良く分からなくなって、アルファってそもそもなんだっけ?と思って3.51くらいまで戻るも良く分からん。

これって1章でベイズ的に取り扱うとレギュラリゼーションがこのハイパーパラメータから出るぜ、という話があったよなぁ。
ずずーっと戻ると、1.65でwのpriorのprecision paramになってるな。
たぶんこれだな。

5karino2:2016/12/15(木) 07:19:46
ベータの起源も見直すと(3.7)と(3.8)のあたり。
つまりファイとwの積の和に、そこからベータの逆数で分布してるケースを考えていたのだった。

それを踏まえると3.77式は、太字tの観測される確率を、priorの幅と真の値からの誤差の幅を想定して最大化する訳か。

6karino2:2016/12/15(木) 07:46:24
3.86に多項式fittingの例を当てはめる話。
Mが2で低下するのはどこからくるのか?
3.86を見ると、Mが効いてくるのは第一項だけ?

ln αはマイナスなのか。
αがこんなに小さい値なのは、priorが幅広い事に対応してる。
αの幅広さとは何かというと、データを観測する前の段階の「不確かさ」みたいな確信だよな。

観測したデータに合わせすぎると、このpriorの分からない具合が抵抗みたいな効果になるのか。
ちょっとイメージ湧いた。

7karino2:2016/12/15(木) 08:22:31
3章読み終わり。
3.3.3のEquivalent kernelはそんなに理解出来てないが、6章の時に頑張ればよかろう。

3章は結構挫折しそうな感じだったので、乗り切れて一安心。

8karino2:2016/12/15(木) 09:01:06
この本はなかなか凄い本だ。

線形回帰なんて分からない事無いだろう、と読んでいたが、自分の理解よりもずっと深い所の議論が続く。
これが実務に直接役に立つかは分からないが、次の時代とかに備えるにはこういうレベルで理解してないといけないのだろうなぁ。
いわんや時代を生み出したい人をや。

9karino2:2016/12/15(木) 10:06:14
調子に乗って4章も読み始め。
4.1.5まで読む。
Fisher Discriminantはtargetに適当な変換を加えた最小二乗法だ、という話。
ちゃんと幾何学的に何を意味するか真面目に考えてないが、結果はいかにもありそうなので気にせず先に進む事に。

この辺は分類器としてあまりにも出来が悪くて真面目に読む気が起こらない(例示の為なので読まないといけないのは頭では分かるが、、、)

10karino2:2016/12/19(月) 09:25:58
4.2はあまり面白くないのでストーリーだけ追っておく。
通常のBeyesianで正規分布を仮定した時の議論なので、理論的には難しい事は無い気がする。

11karino2:2016/12/19(月) 12:45:24
4.3.3もあまり面白くないので飛ばす。
この辺はまぁ適当でいいだろう。

12karino2:2016/12/19(月) 12:49:10
4.3はlogistic回帰の話が延々と続くだけ、と判断し、適当に読み飛ばす事にした。
ちゃんと線形回帰と対応付けて全部追っておく方が良いとは思うのだが、今はまぁいいだろう、という事で。

13karino2:2016/12/22(木) 09:47:19
4.4のラプラス近似とか全然面白くないなぁ、と読み飛ばしてたら、4.4.1のBICの所で面白くなる。

なるほど、ラプラシアン使ってモードのそばで一致するような正規分布近似した時にどれくらいあり得無さそうか、というのがBICなのだな。

14karino2:2016/12/22(木) 10:18:59
4.5.2はロジスティック回帰はちょっと計算難しいから似たようなprobit関数でposteriorをちゃんと出そう、という話。

4.152あたりからかったるくなって追ってないので、4.155がどういう風に出てくるのかは分かってない。
最後の単なるMAP推定に一致する、というのも追えてない。
mu0が0だと4.155の右辺は定数になってしまって何も出てこないような。そしてwがどこ行ったのかも良く分かってない。
シグマaとかmu_aの中に入ってるんだと思うが、、、って(4.149)か。

この結果がMAP推定のw使うのと一緒だ、というのは、以前のどっかの節と一致してる、というストーリーなんだろうなぁ、と思いつつそれがどこか良く分からない。
logistic 回帰のMAP推定ってどっかにあったっけ?まぁあいや。(グデグデ)

15karino2:2016/12/22(木) 11:02:13
さて、勉強会的には4章まで普通に進めたあとは好きな章をやろう、という事になっている。
ざっと目次を見ると、5章のニューラルネットはまぁいいだろう。
6章のカーネル法と7章のSVMも基本くらいは知ってるし、まぁこの本じゃなくても良かろう。

で、8章は我らがPGMなので、これが次にやる第一候補か。

9章はEM法の話。詳しそうなので読んでみても良い気はする。

10章は良く知らないなぁ。
Variational Inferenceという物らしい。
興味はあるが、どちらかというと誰かの発表を聞きたい感じだな。

11章はサンプリングメソッド。これも発表するよりは発表を聞きたい話題だな。

12章は後半は良く知らないが、PCAを確率的に拡張するような話かね。
あまり興味は湧かず。

13章はHMMとか。これは結構興味有るので8章に続き第二候補かな。
LDSってなんだか知らないが。

14章はブースティングとかの話。これはまぁいいだろう。

という事で9章か13章が良い気がするね。
13章は12章に依存している可能性もあるのが難しいが。

とりあえず次は9章を軽く読んでみよう。

16karino2:2016/12/22(木) 11:03:16
>>15
違う、8章。

17karino2:2016/12/25(日) 16:12:27
8.1.3で、Disceteな話が出てきたので2.2を復習する。
この辺は簡単なので2.2を読んだ時はサラサラ読み飛ばしたが、8.1.3の記述で分かるほどは修得してない。
でも2.2の記述は十分わかりやすいね。
この本の評価が少し上がった。

18karino2:2016/12/25(日) 16:22:36
8.1.3読み終わり。
最後の8.10がどんな性質を持つのかがいまいち解説されてないのでしりすぼみな終わり方の項だなぁ。
まぁいい。次行こう。

19karino2:2016/12/25(日) 16:41:22
8.16の計算途中まで。

https://imgur.com/J26f5Ha.jpg

20karino2:2016/12/25(日) 16:50:53
8.1.4読み終わり。
最後のパラグラフはあんま理解してないが。

21karino2:2017/01/02(月) 15:20:44
CourseraのPGMのコースがmax-productまで終わったので、この本の8章を軽く最後まで眺めてみた。

グラフ構造の学習は8.4.8で半ページ触れられている程度でほとんど無い。

前半はv-structureやd-sepなどの独立の話とそれのMRF版の話。
後半はsum-productとmax-productの話とLBPの推計の話。

どちらも割と基本的に見えるが、なんかsum-productの話が凄い長いので、なんか自分の知らない話もしているのかもしれない。

トピックとしてはかなり入門的で、これならだいたい隅々まで理解出来そう。
勉強会の自分の当番はこれで行くかな。

22karino2:2017/01/06(金) 09:55:05
気づくと勉強会直前なので復習する^^;

細部はおいといてストーリーの確認から。
3章は線形モデルの回帰。

3.1は線形モデルの定義と、そのパラメーター推定の話。
最尤法と最小二乗法や正則化項の関係や幾何学的解釈、多変数への拡張など。
基本的には一章の話の一般化である。

3.2は損失関数を変形し、サンプルの集合を複数とった時のサンプル集合同士のモデルのバラ付きと、サンプル集合の平均と真の値とのばらつきに分割出来るという話(Bias Variance decomposition)。
なお、良く忘れるがvariance がサンプル集合同士のばらつき。(3.40)

3.3は線形モデルをベイズ的に取り扱うという話で、やはり1章の拡張になっている。
3.3.1でまずはパラメータ分布を求めて、観測データを足すごとにどうパラメータの事後分布が収束していくか、という事を見る。
3.3.2ではターゲット変数の事後分布を求め、その分布がどういう意味なのかを具体例を幾つか図示して見ていく。
3.3.3ではこのモデルは観測点からのある種の距離とターゲットの値の線形和と解釈出来て、観測点と近いインプットには観測ターゲットの値に重いweightを与えるような物になってる事を見る。
そこで先に基底関数を導入するのとは違う定式化として、先にカーネル関数を定義して予測分布を出すという見方を紹介する。

23karino2:2017/01/06(金) 10:23:55
3.4はベイズによるモデル選択の話。
モデルを条件にデータを得られる確率を比較する。
モデルを条件にする、というのはパラメーターでマージナライズする訳です。

で、ベイズファクターの定義とかmodel evidenceの定義が出て来る。

そのあと簡単な例と近似を使って具体的にモデル選択の直感的な理解を目指している。
なかなか丁寧だな。

24karino2:2017/01/06(金) 10:44:07
3.5 モデル選択の続きでハイパーパラメータをどう決めるか、という話。
ターゲットの予測分布を得るには理論的にはパラメーターとハイパーパラメーターでマージナライズすれば良いが、現実的にはなかなか難しい。
そこで、パラメーターだけ積分してハイパーパラメーターは最尤法で解く近似をしよう、という話。
これがEvidence Approximationとかemprical Bayesとかgeneralized maximum likelihoodとか呼ばれるらしい。

で、3.5.1で線形ガウスモデルでパラメーターwについて積分してハイパーパラメーターの尤度関数を求めている。(3.86が結論)
その後何故か多項式の次数による話に戻るが、気にしなくて良いんじゃないか。

3.5.2では最尤法でハイパーパラメーターを決めるべく、(3.86)の最大値を求める。
(3.92)がアルファの結論だが、ガンマがアルファ含んでるのでここから数値解析で解くらしい。

ベータも同様に解いて(3.95)が得られる。

25karino2:2017/01/06(金) 14:24:25
3.5.3 前の項で出したハイパーパラメーターの解釈。
まずはアルファから。
最尤法のパラメーターとMAP推定のパラメーターを、アルファの値で場合分けして見てみる。

次にベータ。こちらは通常の正規分布の母数の分散推定と比較して、分母のN-1が大きく引かれるだけになってる事を見る。

その次に実際に一章の多項式分布をもとに、ベータとMに適当な値を入れてこの章の手法でアルファを決める。

こうする事で、サンプルのデータだけで正規化項のパラメーターがちゃんと出る、というのは、へー、って感じだな。

26karino2:2017/01/06(金) 14:48:56
4章はclassification。ストーリーを追う為に、まずは序盤を真面目に読む。

まずは分類問題のベクトルへのエンコード方法などから入る。
で、この問題には3つの解法があるという話に進む。

1. 各クラスに分類する関数を作る
2. クラスの条件付き確率を求める、直接モデリング
3. クラスの条件付き確率を求める、ベイズルールから

3番目はクラスのもとでxが得られる確率が必要になるが、これは生成モデルとしてサンプリングするのかしら?あとで確認しよう。

その次に線形モデルから分類関数にする為にactivation function というものを導入する、という話が続く。
さて、では以後は3つの方法についての話に注意して読めば良いかな。

27karino2:2017/01/06(金) 14:57:47
4.1は関数でばりっと分類する方法。
英語ではdiscriminant functionと呼ぶ。

まず4.1.1は2クラスをバリっと分離平面で分けるという話を導出。これはまぁいいだろう。

4.1.2はそれをマルチクラスへ拡張する。
one-vs-restを複数使って分けるというのが単純に考えられるが、これだと曖昧な領域が出るとか。
で、全クラスの組み合わせだけの分類器作るという話もやはり曖昧な領域が出る。

そこで各クラスで実数値への射影を考え、その大小関係でクラスを決めるという話がある。
これがsingly connectedでconvexだという証明が。
convexは良いとしてsingly connectedってなんだろ?境界が線でたどれるという事かしら?

28karino2:2017/01/06(金) 15:09:47
4.1.3は実際にこのdiscriminant functionを試しに最小二乗法で出してみる、という話。
これはoutliersに弱いという事と、図4.5みたいに線形で分離出来るはずのケースでもうまく行かないという欠点がある、との事。
(4.15)がどういう感じかいまいちちゃんと掴んでないが、実際の値入れてみれば多分分かる。
でも最小二乗法じゃまぁだめだろう。

29karino2:2017/01/06(金) 21:18:59
4.1.4は線形のパラメータとの内積で実数に落とした上で、クラス内の分散とクラスの重心同士の差分の比を最大化するようにパラメータベクトルの向きを決める、というフィッシャーのlinear discriminantについて。

4.1.5はこのフィッシャーのlinear discriminantが、ターゲットのエンコーディングを変えた最小二乗法に一致する、という話。
へー。計算するとなりそうなのは納得だが、なんか感覚的には信じがたい。
なんでこれでうまい事クラス間の分散とクラス内の分散を見たり出来るのだろう?

4.1.6はそのマルチクラスへの拡張。

4.1.7はフィッシャーのlinear discとはまた別のdiscriminantであるperceptronの話。
fをステップ関数として中を線形モデルとしたもの。
この場合は損失関数をどうするか、というところに工夫があり、perceptron criterionと言うらしい。
tを1と-1として、f の引数とかけると1も-1も一つの式に表せて、その和の4.54を最小化すれば良いらしい。
4.7の図は分かりやすくて良いね。

30karino2:2017/01/06(金) 22:04:38
4.2は入力のもとでの条件付き確率を普通にもとめている。
2クラス問題は4.58とaを定義すると求める条件つき確率はlogistic sigmoid 関数になってる事が分かる。
これをこの節では議論していく模様。

4.2.1はまずクラスのもとでのxの確率分布を正規分布と仮定し、入力のxは連続とする。
まず2クラスでクラスのもとでのxが得られる確率を計算し、次にKクラスに拡張。
covarianceがクラスで共通だとクロスタームが消えるがそうでないとなんか複雑になるらしい。(図4.11)
これで事後確率を構成する片方の式が出た。


4.2.2では次に最尤法を使ってこの正規分布のパラメータを決める。
まずC1の事前確率はサンプルから求まるC1の比率。
次にmu1はクラス1に割り当てられた入力ベクトルの重心となる。
mu2も同様。
シグマも同様に求まる(式はごつい)

4.2.3次は入力が離散値の場合。まずは2値で。
とりあえず組み合わせが多すぎるのでFeatureの値は独立というナイーブベイズの仮定で考えてみると、4.81になるらしい。
これはベルヌーイ分布をDクラス分掛けたものだな。
これを4.2の式に代入してパラメータを出せば良いと書いてあるがやってない。

4.2.4は連続も離散も同じような形なのから、クラスのもとでのxの確率をより一般的な指数族というものにしても同じような形になる、という話。
まぁいいや。

以上でp(x│C_k)をモデリングしてパラメータを決める、という手法の話は終わり。
割とあっさりだね。

31karino2:2017/01/06(金) 22:11:43
4.2の結論としては、p(x│C_k)が指数族の分布ならp(C_k │ x)は線形和を引数に持つlogistic activateで書ける。

32karino2:2017/01/06(金) 22:41:37
ちょっと各章長くなりすぎなのでもうちょっと軽く眺めたい。

4.3はp(C_k│x)を直接最尤法で推定する、との事。Cが確率分布してると最尤法にならない気がするが、、、
少し見ていこう。

4.3.1で将来に向けて基底を変換する話が。これまでは簡単の為にやってなかったが別にやっても同じ結果になってる。

4.3.2でクラスの事後確率を直接sigmoid関数でモデリングしてる。
4.89では尤度関数を定義している。これは通常の尤度関数だが、これがp(C_1│Φ)で表されるらしい。
なるほど。
これをパラメータで微分して4.91が得られる。ここから数値計算で答えは出るとの事。
最後にオーバーフィッティングするからMAP推定する方が良いとの事(正規化項足す事に相当)

4.3.3ではこれを求める良い漸近法の話。
IRLSと言うらしい。、

4.3.4はマルチクラス化。

4.3.5はクラスをもとにしたxの分布が指数族じゃない時でも使えるactivate 関数として、probit regressionというのを考えている。

4.3.6は正規分布の回帰とロジスティック関数のactivationでの分類で同じ結果の式となる事が、もっと一般に指数族とcanonical link関数というactivation関数の組み合わせで成り立つ、という話。

33karino2:2017/01/07(土) 09:34:49
4.4はラプラス近似。モードの回りの正規分布に近似する。

4.4.1 このラプラス近似を使って、モデルエビデンスを出す。これはデータの得られる確率をパラメータでマージナライズしたもの。
それを近似していくと4.139のBIC になる。

4.5 logistic回帰のベイジアンな扱い。
4.5.1 まずパラメーターの事前分布を正規分布と仮定して、4.3.2でやった尤度関数を使いパラメータの事後分布の式を出す。
次にMAP推定でパラメーターを出し、そのパラメーターの周辺の正規分布で近似する。(ラプラス近似)

4.5.2 予測分布を得る為に事後確率をパラメーターでマージナライズする。
頑張って計算すふと4.149と4.150の平均と分散が得られるらしい。
それを用いると予測分布は4.151と書ける。(4.145に結果を代入しただけ)
この結果は積分出来ないが、逆probit関数で近似して積分出来るらしい。
で計算して結果を得る。

34karino2:2017/01/07(土) 16:00:03
3.4のモデル選択の話は
「Beyesian Interpolation」(David J.C. MacKay など)
の方がわかりやすいとか。

35karino2:2017/01/07(土) 16:48:58
AIC はNに依存しない、BICはNの寄与がある。

36karino2:2017/01/10(火) 16:59:19
勉強会に向けて8章読み始め。
今回は自分が当番なので真面目にやる。

まずはあらすじから。
冒頭でPGMの利点を述べている

1. 確率モデルの構造を可視化するシンプルな方法を提供し、それがモデルをデザインしたり新しいモデルを作るのをmotivateしたりする。

2. グラフ構造を解析する事で独立性などのモデルの性質を読み取る事が出来る

3. 複雑な計算や推論や学習をグラフの操作で表現出来て、下の数学はそれに暗黙に従うように出来る

自分的には最近は3が大切だと思うのだった。
トピックモデルとか勉強しようとするとPGMで書かれてるよね。

2はあんまり使わなくなってきてる気もするがどうだろう。
1は今でもある気もするが自分が使った事無いので良く分からない。

さて、そして8.1に入る。
8.1は何を扱ってるだろう?

8.1ではベイジアンネットワークのinformalな定義でグラフ構造と同時確率の関係を決めている。

8.1.1では線形回帰を例にグラフの表現と数式の対応を見て、プレートモデルもinformalに導入する。
またevidence や非確率変数のパラメータ表記などが出てくる。

8.1.2では同時確率の式を生成モデルとして使う時の簡単なサンプリング方法としてancestral samplingという方法が紹介されている。
ancestralは先祖代々の、みたいな意味。
ようするにルートから順番にサンプリングしていけば各条件付き確率の分布関数はknownなのだから出来るね、という物。
詳しくは11章で、との事。
ここでlatent variable と観測値の関係とかも出てくる。

8.1.3では離散値で単純に(8.9)式で表せるような奴を考察している。
で、二変数の分布から始めてすぐにパラメーター数が発散しちゃうという事を見て、なんとか収める為の工夫をグラフと対応させて考えている。

まずエッジを減らすとパラメータが減る、というのを見ていく。
独立なら相互作用の項が要らないので当然だが、それがエッジで表されている、というのを見ている訳かな。

もう一つの方法としてパラメータを同一の物にする、というのが挙げられている。

次にこのモデルをベイズ的に扱うべく、パラメーターの事前確率を導入してパラメーターの確率分布を考える。
これをグラフィカルモデルで表し、パラメーターを同一にした場合のモデルとグラフ構造がどう変わるかを示している(8.11、8.12)。

さらにパラメーターが少ない線形変換とsigmoid関数で表す例をグラフで表してみたりしている。

なんとなく内容にまとまりが無いが、基本的には離散変数でここまでやった内容をグラフで表してみる、という事かな。

37karino2:2017/01/10(火) 17:03:51
8.1.4では線形ガウスモデルを扱っている。
ただし条件つき確率を扱っている。
グラフでエッジを増やすのは8.15や8.16を通じてパラメータの数を増やす事になるよ、という話。
さらに二変数の場合はmuを確率分布と見た時にxの分布考える所でやってて、そのmuの分布はハイパーパラメーターによって支配されてて、さらにハイパーパラメターのパラメーター、とどんどんさかのぼれて、そいつは階層ベイズモデルという奴であとで出て来るぜ、との事。

全体的に8.1.3と8.1.4ではここまでやってきた事をグラフで表して、条件つき確率の条件が増えるという事はどういう事かの具体例を見ているのかな。

38karino2:2017/01/10(火) 17:37:02
8.2はconditonal independenceの話。
d-sepとかv-structureの話やね。
まず冒頭でconditional independenceの定義がある。

8.2.1で3つの例で、それぞれevidenceあたえた場合とその前の独立を比較していく。

3つの構造は三ノードで

1. 山 (8.15)
2. 線 (8.17)
3. 谷 (8.19)

である。(呼び方は私が勝手に決めた)

山のケースでは独立では無いが、条件付き独立になる。

線のケースでも独立じゃないが条件つき独立となる。

谷のケース(v-structure)ではご存知の通り独立だが、条件つけると逆に独立じゃなくなる。

そのあと谷のケース(head to headと記述)のケースの補足とか車の具体例とか。(バッテリー、燃料、電子燃料計)

8.2.2は前記の具体例の一般化としてD-separationの定義と、これまでの章で扱ってきたケースに当てはめてd-separationを見てみる。
特にナイーブベイズの話が長い。

そのあとグラフ構造とそれにconformal な具体的な分布の話をしている。
一対一じゃないよ、とか。

最後にマルコフブランケットという話がある。あるノードの分布がそのブランケットのノードだけに依存するような物っぽいな。

39karino2:2017/01/11(水) 12:14:30
8.3はMRF。

8.3.1はグラフ上のseparationと条件付き独立が対応するような分布を考えたい、という問題設定をする。

8.3.2ではその条件を満たすようなfactorizationの形を考えて、クリークのポテンシャルの積とすれば良い、という話が出てくる(8.39)。
で、独立性を満たす分布とこのfactorizationの形で表せる分布は同じ集合であるという定理が証明されてると言及される(Hammersley-Clliford定理)
そのあとポテンシャルをエネルギーに置き換えるとボルツマン分布になるよ、とか、ポテンシャルはローカルな望ましさを表すと解釈出来るよ、などの話が続く。

8.3.3ではMRFの具体的な適用例として画像のde-noiseの話。
真の値の隣接ピクセルに強い相関がある、という前提でモデリングをするとIsing模型となる、という話。
おー!本当にIsing模型だ!すげー!

で、ICMとかいう各点だけ動かした最適解を求めるというのが紹介されている。
当然これでは局所最適に陥るだけでいまいち。
あとでやるmax-sumの方がマシだよ、とか、この場合はgraph-cutという最適解を探すアルゴリズムもあるよ、という話をちらっとする。

8.3.4ではここまでやった2つのモデル、ベイジアンネットとMRFの関係を見る。
ベイジアンネットからMRFへの変換は親同士のエッジをつなげる事で出来る事(Moralization)、この変換がjunction tree algorithmで使われる事に言及する。
そのあとD map、 I map、 perfect mapの話が。
D map: 全ての分布Aの独立性の関係がグラフに表現されてる時、このグラフを分布AのD mapと言う。
I map: グラフで表現される独立性がある分布Aで成立している場合、このグラフはAのI mapと言う。
perfect map: 全ての分布Aの独立性の関係がグラフで表現されて、さらにグラフで表現されてる独立性を全て分布が満たしている時、このグラフをperfect mapと言う。

で、ベイジアンネットのp mapとMRFのp mapが表せる分布の集合は一致してないよ、という話で終わる。

40karino2:2017/01/11(水) 12:48:02
8.4はinference。BPとかsum-productやmax-sumなどの話とか。

8.4.1はまずChainのグラフで、一般的な同時確率のパラメーター数が指数関数的に増えるが独立性を考慮に入れると減らせられる、それをメッセージと解釈出来る、という話と、マージナルを求める話。

8.4.2ではChainと同様の効率的な計算は、Treeで行える、という話でtreeの定義とpoly treeの定義がある。

8.4.3はfactor graphという新しいグラフ表現の定義。
BPとかで使うのだろう。

8.4.4はsum-product
ただ結構な長さなので何か私の知らない事も入っているのだろう。あとで読む。

8.4.5はmax-sum。こちらも後半が長いので何か知らない話をしているかも。

8.4.6はtreeでない一般的なグラフに適用出来るjunction treeアルゴリズムの概要が述べられている。あくまで概要だけ。
ここでRIPとか出てくる。これはPGMのコースでやったクラスターグラフの話と似てる気がするがどういう関係か、あとで注意して読む。

8.4.7はLoopy BF。message passingのスケジューリングの話をする。

8.4.8ではグラフ構造の学習の話がちらっと触れられてるが、大変だ、というだけ。

41karino2:2017/01/11(水) 12:51:52
8.4.4と8.4.5を真面目に追えば、それ以外はだいたい読まなくても分かるなぁ。
8.4.4と8.4.5をもう少し頑張って読んでみよう。
(8.4.3は知らない話題だったのですでに真面目に読んだ)。

42karino2:2017/01/11(水) 15:14:58
8.4.4を真面目に読む。
(8.64)までは別段分からない事も無いが、(8.65)で良くわからなくなる。
このGはなんぞや?

43karino2:2017/01/11(水) 15:36:09
(8.65)の左辺はxとX_sをスコープに持つfactorを表している。
右辺はそれを、x∪X_sのファクターf_sと、X_sの個々の要素と接続されてるファクターの積に分解している。
つまりG_k(x_k, X_sk)とは、x_kに接続されてるファクター一般と解釈出来るのか。

では(8.66)で定義されたx_mからf_sへのメッセージとはなんどろう?

44karino2:2017/01/11(水) 15:55:43
少し(8.59)のfactorの定義に戻る。
ある同時確率は、その確率変数の集合族のfactorの積で表せる。
これは一般的で正しいたろう。

グラフ構造としては、そこに接続されてるランダム変数達がスコープになる、という所が重要か。

(8.61)に戻ると、これは同時確率をマージナライズしただけはので周辺確率の定義式。

(8.62)はなんだろう?
まずne(x)は、xに隣接する「factor」だな。
なるほど、ランダム変数じゃないのか。
で、X_sがこのファクターに接続しててxに至る「全ての」ランダム変数か。
なかなかややこしいな。

そうであるならx∪X_sはxとつながる全てのランダム変数の集合族を表せるから(8.62)は(8.59)の置き換えになるのか。

さて、(8.63)のシグマはf_sを通してxへと至る全ランダム変数のサブセットの集合族のファクターをマージナライズした物、となる訳だな。
ファクターに小文字のfと大文字のFの意味があってややこしいが。

で、あるf_sからのマージナライズしたファクターの積を8.64でメッセージと定義している。

次に8.65に移る。
xとX_sのファクターとは、f_sに関連してるランダム変数と、そことつながりのあるX_snのファクターの積と考えられる。
そこそのファクターをGと置いて、マージナライズした物をまたメッセージと置く(8.66)。

なんて事は無いな。
f_sからのメッセージを、8.66でf_sまでのメッセージに分解している訳だ。

45karino2:2017/01/11(水) 16:02:39
(8.68)はX_ml がlにつながる全ランダム変数みたいな物(厳密にはそのうちx_mへと至るもの)だ、という事を意識しておく事が重要。
それさえ分かれば(8.68)はかなりストレートな式だと分かる。

46karino2:2017/01/11(水) 18:13:30
少しfactor graphを復習。
明確に記述は無いが、ファクターグラフはそこで表されているファクターの積が同時確率のunnormarized measureになっている事が仮定されている気がする(8.4.2と8.4.3)

47karino2:2017/01/11(水) 18:46:53
大分理解が深まったので8.4.4のあらすじを見直そう。

まず1つのランダム変数のマージナルを求める方法を考えている。
それは

変数ー>f_sー>変数

の一つ目の矢印と2つめの矢印を求める二段階の手順で行う。

まず二つ目の矢印から求める。
定義の8.61式から始める。
そしてそれを、ファクターグラフ上のxの隣接するf_sから始まるサブツリーごとの積に分解する(8.62)。
こう分解出来る事は少し考える必要があるが、同時確率は定義からファクターグラフ上のファクターの積で表せて、各サブツリー同士で共有されるランダム変数は無いのだから、多分出来るだろう。
(ツリーなら)

で、それをマージナライズする事は、各隣接ファクターから始まるサブツリーごとをマージナライズして掛けると変形出来る(8.63)
それをマージナライズしたもの一つ一つを、ファクターからxへのメッセージと定義する。
これが2つめの矢印。

で、次にこの各f_sのサブツリーの中を、そこに隣接するランダム変数達から始まるサブツリーの積に分解する(8.65)
こいつも中をマージナライズするように変形出来て8.66を得る。
このマージナライズした物が一つ目の矢印となる。
8.66はf_sへと注ぐ一つ目の矢印とf_s自身をかけ合わせた物が二つ目の矢印となる、という式。

同様の手続きで、

変数ー>f_sー>変数

を一段戻して

f_lー>変数ー>f_sー>変数

と見れば、変数ー>f_sの矢印と、その一つ前の f_lー>変数 の矢印の関係が求まり、それは単に変数に流れ込んでくるメッセージの積で良い(8.69)

この2つの矢印を再帰的に適用する事で全体のマージナルを求める事が出来る。
端点のランダム変数からのメッセージは1と置く。
(8.71)

48karino2:2017/01/11(水) 18:51:08
ここまでで全アルゴリズムの説明が終わったが、全体の手続きをp407の第一パラグラフで再度まとめている。

次のパラグラフではちゃんと全ノードが次に進むのに必要なメッセージを確実に得るという証明を帰納法で軽くやってる。

その次は一ランダム変数だけじゃなくて全ランダム変数のマージナルも一往復で全部計算出来る、という話をしている。

次に単一のランダム変数じゃなくて、複数のランダム変数を持つファクターの周辺確率を計算してる(8.72)
結論としては回りのランダム変数のノードからのメッセージと自身のf_sの積となる。
これはBP知ってる身からすれば単なるBelief そのものなので見慣れた話。

49karino2:2017/01/11(水) 18:53:34
その次に補足としてランダム変数からのメッセージは単なるincomingなメッセージの積をそのまま流してるだけなので、ファクターだけ考えてる、と思いたければ思えばいいよ、と言ってる。まぁどうでもいい。

で、その次MRFから作ったファクターグラフの場合ノーマライズされてない場合があるが、最初にノーマライズするより最後にノーマライズした方が変数減ったあとだから楽だよ、という補足が。

50karino2:2017/01/11(水) 18:56:42
そのあと具体例として8.51の例に手動で計算してアルゴリズムの確認を行っている。(8.86)

次はevidence はIという関数を掛ける事で扱える、という話。

最後にここまでの例は離散値だが、連続変数も積分にするだけで同じ議論が出来て13章でLDSを扱う時やるぜ、との事。

51karino2:2017/01/12(木) 11:34:21
8.4.5のmax-sum。
まずは個々のマージナルの最大値をとるx_iを集めたものと同時確率の最大値を与える{x_i}は違う、という当たり前の話を具体例だして頑張って説明する(なんで?)

8.90でグラフィカルモデルのファクターはいつも正だ、と言ってるが、MRF で負の値が来る奴解いた事あるが、、、

で、まずはp395の8.49の例で考える、と言ってる。これは図8.32のb だとか(p398)。いわゆる無向グラフのChainという奴だね。一直線。
これだと端からmax を順番に見ていく事で一度に一つの変数だけ見ていく事が出来る。

次にこれをツリーで一般化する。まぁ葉からやってけば一般化出来るだろう。

で、一般化してlogつけてシグマに直す。
するとメッセージとしては8.93と8.94に。
8.98まではルートまでさかのぼるメッセージを全部集めた、という所。

ここからルートから葉に戻して全部足すと、maxの場合はclique内で一位タイの場合に困る、という話が。(そうは書いてないが)
それをルートから葉へのメッセージの送り方を変える事で対応するとか。へー、知らん話題だ。PGMのコースで言ってたtracebackという奴かね。

図8.38は左右からメッセージが来るChain。

52karino2:2017/01/12(木) 13:28:06
(8.101)は何を言ってるか分かりにくいが、そのあとの説明と(8.102)は分かりやすい。

まずChainなら端からmax-sumしていけば、最大にするx_Nが分かる(かな?あとで良く考えたい)
そこから逆に戻る時には、x_Nを最大にしたx_(N-1)を求め、そのx_(N-1)を最大にしたx_(N-2)を求め、、、と戻っていく事で、maxマージナルで見ると同じ値になる変数の組み問題を回避出来る(この条件で同じパスならどちらても良い)。

感覚的にはこれをツリーに拡張出来そうなのはまぁいい。
それよりも上でなんとなく述べた事をもうちょっと真面目に考えたい。

53karino2:2017/01/12(木) 13:40:46
そもそも求めたかったものは、同時確率が最大になるようなランダム変数の実現値の組だ。つまり8.87。

で、これをfactorの積の形式にし、argmaxを求めていく。
この時欲しいのはargなのだから対数化して解いて良くて、factor graphのメッセージパッシングの形にすると8.97となる。

さて、8.97の時点では確率密度の最大値だけが表に出ていて、x以外の引数がこの式では良く分からない。
それは8.93の式に入っていて、これを最大化する{x_i}となっている。

ここまでやってきた値を覚えておくだけでは何故駄目なのかしら?

ここで求めたのは全ての変数の同時確率となる。
一方で求めたいのは目的の変数集合以外をmaxマージナライズした物となる。
なるほど。
ではこれをどうやって求めたらいいだろう?

54karino2:2017/01/12(木) 21:35:56
8.101は8.99の一つ前のfからxへのメッセージと同じ形となっている。

8.101はメッセージパッシングの過程で覚えていく、という事かな。逆にたどる時に探すんじゃなくて。

で、必要なx_{n-1}は分かるとして、送るメッセージはどういう形なのたろう?
明示的には書いてないが、8.93を逆順に入れていくんじゃないかなぁ。

https://imgur.com/HUKK3dQ.jpg

よみにくいが。

55karino2:2017/01/12(木) 21:41:34
明示的に書いてないがとりあえず先に進む。

次のパラグラフではtreeへの拡張の話と、それをHMMに適用する場合はViterbiアルゴリズムと呼ばれるとか書いてある。
どうでもいい。

次にevidence の扱い。identity function入れるという話。

56karino2:2017/01/12(木) 22:01:54
8.4.6は真面目に読んだが良く分からない。
解説もいい加減だからなぁ。

まずchord-lessなcycleという言葉が未定義で良く分からない。
ただ8.36みたいなグラフの真ん中を通過するようにつなぐ事でこれを壊すとか。
なんかこれ、昔グラフ理論でやった記憶があるなぁ。

で、そこからweightというのが最大になるようにクリークを探していき、それをツリーにした物がjunction treeと言うらしい。
なんかこれ、VEでクリークツリー作るのと同じ事を言ってないか?
あれもtriangulate というか間にエッジが出来たよな。
それでクリークツリーを作るって完全に同じ事やってる気がするんだが、、、

その視点で読み直すと、VEを順番気をつけてやる順番でクリークツリーを作り、クラスターグラフにメッセージパッシングしろ、という話に見える。

その真偽はおいといて、次に進む。

tree widthというのがjunction treeの最大のクリークのサイズ-1らしい。
なんかこれも聞いたな。
で、これに依存した計算量になる、とか。

この辺は他の本を読む必要があるが、とりあえずVEでクリークツリー作ってそのクラスターグラフにBPする事と同じ事を言ってるように見える。

57karino2:2017/01/12(木) 22:12:16
8.4.7はLoopy Belief Propagation。
ループのあるファクターグラフでも気にせずsum-productとかやっちゃうぜ、という話。
どの順番でやるか、という話がちらっとあって、全リンクに各ステップでメッセージを送るfloddingと一つずつ送るserial というのがある、とだけ言及されている。

そのあとにpendingという話があるが、これべつにLoopyじゃないケースでもあるような。
Loopyだとペンディングが永遠に続く事があるよ、との事。

最後にメッセージでコーディング(Turbocode とかの事ね)の言及をして終わり。
割と補足と言うかおまけ的な扱いね。

58karino2:2017/01/12(木) 22:14:29
8.4.8はモデルセレクションの枠組みでグラフセレクションを扱えるが、グラフ構造の候補はノードの数に対して指数関数的に増えちゃうから一般には難しくて、なんらかのヒューリスティックで解くとか。

この辺もおもけでまともな話は無し。

59karino2:2017/01/12(木) 23:47:28
Daphneの本を買ったのでjunction treeで調べるとclique treeの別名らしい。
やはり同じ話か。

60karino2:2017/01/13(金) 01:06:29
Daphneの本でアルゴリズム13.1のmax-sumでのtracebackを読んでいる。
どうもx_Nから戻る時には、いちいちx_{N-1}を計算しているな。

Daphneの本と見比べて8.101の意味が分かった気がする。
leafからルートへメッセージパッシングしている時は、いつもx_(n-1)はx_nの条件付き最大値しか得られない。
だからこの8.101の式の時点で最大となるx_(n-1)は、x_nの関数となる。
で、あとでx_nが確定したら、それを戻ってきて入れるとx_(n-1)もそこで初めて確定する。

x_nとx_(n-1)の関わってる全ファクターがここに無いといけないが、このケースではChainなのでこれで良い。

つまり、VEの時にx_nの関数として確定したx_(n-1)を覚えておけ、というのがこのbacktrack と言ってる事だな。

61karino2:2017/02/07(火) 21:18:15
次の勉強会では5章のニューラルネットをやるとの事。
とりあえず予習としてストーリーでも追うかね。

62karino2:2017/05/18(木) 13:52:20
さて、次の勉強会は9章と10章との事なので、9章の予習から開始する。

63karino2:2017/05/18(木) 13:58:34
まずは9章を軽く眺める。
9.1でk-meansの話をし、9.2で混合ガウス分布からEM法へと発展し、9.3でEM法を別の視点から見る。
そして9.4はEM法の一般的な話かな。9.4は見てみないと分からないが、とりあえず9.3までを理解する、で良さそう。

64karino2:2017/05/18(木) 14:00:47
k-meansとかだるいから、まずは9.2からざっと読んでみよう。分からなかったら9.1に戻る感じで。

65karino2:2017/05/18(木) 15:00:08
粗筋を追う。

9.2 まずは観測値xが、幾つかのカテゴリごとに分布してて、それぞれのクラスをzで表し、各クラス内ではガウス分布してるケースを考える。

条件付き確率などを作って同時確率がモデリング出来(書いてないが9.9と9.11の積か)、それを元に観測値から最尤推定する、、、というのが9.2から9.2.1にかけての話だが、2つ問題がある、という。

1. 分散が低い成分があると発散してしまう
2. パラメータの組み合わせが一意じゃなくK!の等しい組み合わせがある

という事で9.2.2で混合ガウス分布の場合のEM法を使って最大化する、との事。

66karino2:2017/05/18(木) 15:18:02
対数尤度を3つのパラメータで微分してゼロと置くと3つの式が得られる。
9.17、9.19、9.22

この3つの式はガンマと複雑に依存してるからこのままでは解けないが、EM法で数値計算していける。

まずパラメータを適当に初期化。次に以下のEステップとMステップを交互に繰り返す。

Eステップ
パラメータを用いて事後確率やガンマを計算

Mステップ
事後確率やガンマを用いて、9.17、9.19、9.22の3つを計算してパラメータを更新

67karino2:2017/05/18(木) 15:24:30
ちょっとここで立ち止まってみるか。
まずそれぞれのステップの意味を考える。

まずパラメータがあるとして、Eステップは何をするのか?
それはようするにガンマを計算してる訳だ。
それはつまり、各データポイントがどの分布から来てるかを推計している訳だ。

で、その推計された分類ごとに、それぞれの分布のパラメータを更新する。

そしてまた更新されたパラメータで観測値を見直し、どの分布から来たかを推計しなおす訳だな。
だいたい分かった。

68karino2:2017/05/18(木) 17:11:50
9.3の一般化が凄く分かりやすいな。
latent variableのZがある時に、XとZが両方わかってると対数尤度が簡単に計算出来るケースで、

1. Zの事後分布をパラメータを使って求める
2. Zの事後分布を使って最尤推定でパラメータを更新

を繰り返す訳だな。


なんか書き込み出来ないのであとでwifiつなげた時に更新する事にして、続けて書く。

9.35が9.14に比べて楽な理由を考える。
9.14はzについつマージナライズする為に和がつく。
このlogだから複雑になる。

一方で9.35はZも同時確率を構成する要素の一つなので、和はとらない。
だからlogを取っても扱いが楽。

69karino2:2017/05/18(木) 21:03:33
9章、ざっと一通り読み終わったが、もうだいたい分かってしまった気がする。
付録のDはあとで読むとして、とりあえず10章に進んで見るかなぁ。

70karino2:2017/05/26(金) 13:10:36
勉強会の範囲が9章のみとなったので、9章を真面目に読み直す。
とりあえず9.1のK-meansから。

K個のクラスタをさがす。
クラスタの中心をmu_kとし、各点がどのクラスタにアサインされてるかをr_nkとする。

手続きとしては

1. mu_kを固定してr_nkを最適化する
2. r_nkを固定してmu_kを最適化する

を繰り返す。
2はたぶん平均になるだろう。

71karino2:2017/05/26(金) 13:28:31
コスト関数としてはどちらのステップも減少して、0よりは大きいから極値を持つ。
なるほど。

72karino2:2017/05/26(金) 13:54:53
E-step: どのクラスタに属するか決める(上記1に相当)
M-step: 平均の値を更新(上記2に相当)

73karino2:2017/05/26(金) 14:01:54
9.1.1は応用例。画像のセグメンテーションとコード表使う類の圧縮。

74karino2:2017/05/26(金) 14:04:43
ふと上を見直してたら、5章のノートへのリンクが無いね。
貼っておこう。

5章、NNあらすじ
https://gist.github.com/karino2/3ecf2990309456159a2b3c412193cebf

5.3.2例の計算を自分でもやってみる
https://gist.github.com/karino2/cae4fa0534659855177d19280b644fbd

75karino2:2017/05/26(金) 14:33:13
9.2 を真面目に読む。
xが混合ガウス分布に従うとして考える。
各分布に所属する確率をzとすると、xとzの同時確率を考えることが出来、それは

p(z)p(x│z)

となる。
で、元のxの分布はこれをzでマージナライズした物だ、と考える事が出来る。

これだけだとxの分布がzという新たな変数が導入されて複雑になっただけで何も進んで無いように見えるが、同時確率に拡張する事で取扱いが楽になり、EM法とかが使える、との事。

あとガンマの定義が登場している。
データ点xが与えられた時のz_kが1となる確率、との事。
つまりあるデータが、どの分布から来たと考えられるかの、確信度のようなものか。
responsibilityとも呼ぶらしい。

そしてデータ生成(サンプリング)の話をちらっとして、それを用いて同時確率、マージナル、ガンマを図示している。

ancestral: 先祖代々の

76karino2:2017/05/26(金) 15:52:02
9.2.1では最尤推定する為の問題の定式化と、その時に発生する注意点について。

対数尤度自体は混合ガウス分布を仮定すればほぼそのままで9.14と書ける。

問題点

1. 幾つかのガウス分布の一つが潰れてデルタ関数みたくなるケースがあり、これは望ましくない
2. 同じ分布となるガウス分布のパラメータの組み合わせがK!通りあり、それらは等価なので区別出来ない
3. logの中に混合の分のシグマが入るので、解析的に解けない

77karino2:2017/05/26(金) 16:47:47
軽く9.16の導出をやってみた。

https://imgur.com/M1klSCR.jpg

分散共分散行列はミューでの微分はゼロでいいのかしら?(結果はそうなってるように見えるが)

78karino2:2017/05/26(金) 16:54:56
軽く9.17と9.18の計算も追っておく。

https://imgur.com/ADSxloV.jpg

79karino2:2017/05/26(金) 17:16:17
9.2.2は前半で対数尤度をパラメータのミュー、シグマ、パイで微分して、イコールゼロと置いた時の式を集めている。

これらの式が相互にいろいろ依存してて解析的に解けない、という話をした上でEM法で解く。

1. 分布を所与としてガンマを求める
2. ガンマを所与としてパラメータをgrad=0で求めた式を使って更新

これを繰り返す。

80karino2:2017/05/26(金) 17:19:28
deemed to: ��とみなされる

81karino2:2017/05/26(金) 18:26:21
9.2.2の最後のまとめで、少し立ち止まって考えてみたい。

log尤度の9.28式にはzは出てこない。
これが全てを表しているのだから、理想的にはzは必要無い。

ではzはどこに出てくるかといえばガンマだ。
n番目のサンプルがk番目のクラスタに「属している具合」というか、重みというか、そういう数(9.23)

その区別を入れる事でクラスタごとの平均や分散を計算出来て、それを元にまたlog尤度を更新出来る。

もともとMステップの3つの式、9.24から9.26までの式は、理論上は制約は無く対数尤度を最大化すれば良い。
でもそれをそのまま最適化するとそれぞれの変数が複雑に依存して解けない。
そこで、間にzという変数を追加し、

パラメータ0>z0>パラメータ1>z1

と交互に更新していく事にした訳だ。
パラメータ0からパラメータ1に進む方法は分からないが、z0に進む方法は分かる。
で、z0からパラメータ1に進む方法も分かる。
これは再急降下では無いが、前より下がっている事は保証されている。

この必要無かったzを間に挟む事でパラメータ0から1に進む方法が分かる、というのが、>>75 でうだうだ言っている事だろう。

82karino2:2017/05/26(金) 19:14:13
9.3の最初の説明が良いな。
まず9.29の形で、lnの中にシグマがあると、最尤推定は困難である。
ただ、sumが無ければ指数族だったりする。

そこで、zについての和をかんがえず、マージナライズする前のzとの同時分布を考えると、各xとzについてはこれは指数族なので、最尤推定出来る。

でもzはlatent variableなので実際の観測データには無い。
そこでzの事後分布を使う訳だ。

9.30でthetaの尤度関数を求める時に、zの分布による期待値を求めるが、この時にzの事後分布を用いている。
そうする事で、和をlnの中では無く外に押し出す事に成功している。

zさえわかっていれば、同時分布の尤度はlnの形で求まる。
そこでその同時分布を求めて、zによる期待値を出す訳だ。
それは本来的にはZの方のシータにも含まれるので計算不能だが、zの分布に関しては古いパラメータで考える。

古いパラメータでzの分布を考え、その分布の中ではxとzは既知として同時分布から尤度が出ると考えてthetaの最尤推定を行う、そしてその結果をzの分布の期待値をとる事で、thetaの推定値とする訳だ。

で、thetaがきまるとzの事後分布が更新されるので、まだ両者をやり直す。

83karino2:2017/05/26(金) 20:57:54
9.3.1で普通の観測データと仮想的なcompleteデータの時の対数尤度の形を比較しているので、並べて書いておく。

https://imgur.com/WsEalk5.jpg

84karino2:2017/05/26(金) 21:01:57
lnの外に和が出ているというのが大きな違い。
zが与えられた時の答えはトリビアルと言っててやってない。
やっておいてもいいが、まぁ当番の人に任せるか。

85karino2:2017/05/26(金) 21:23:43
9.3.1は一般化した考えを元に9.2の例を振り返る。
こちらが断然分かりやすいな。

9.39の導出はちょっと考えないと分からない感じだが、まぁ当番じゃないので質問してしまおう(ぉ

86karino2:2017/06/16(金) 21:53:03
さて、次回は13章。
軽く粗筋の確認から。

冒頭はSequential Dataの説明から。

13.1はマルコフモデル。
一つ前だけ見るfirst order、2つ前まで見るsecond orderなどの説明も。
当然second orderになるとパラメータの数も段違いに多くなる。

連続変数の場合はmeanが過去の値と線形の関係にあるようなARモデルや、ニューラルネットが使えるとのこと。

さて、単純なマルコフモデルの制約をもう少しゆるめる場合として、latent variableを用いるというのがある。
latent variableが離散的なら、HMMとなる、と言って13.2に続く。

87karino2:2017/06/16(金) 22:02:44
13.2はHMMの話。
まずはlatent variableの式と図解の話。
そして観測値との関係を導入し、図式をunrollした図式を示す。

ここではlatent variable と観測値の間のパラメータがどの時点でも共通の、ホモジーニアスなモデルを見ていくとの事。

次にXとZの同時確率をHMMの独立性から導出し(13.10)を得る。

その後具体的なサンプリングの手順を通してHMMの理解を深める。

そのあと使用例や局所的な変更に強いという話をして13.2.1に続く。

88karino2:2017/06/16(金) 22:28:56
13.2.1はHMMの最尤推定。

原理的には同時確率が分かってるので、観測値はlatent variableに関してマージナライズすれば良い訳だが、zは前の値と独立じゃないのでそのまま簡単に和は取れない。
だが条件付き独立があるので、図8.32でやったような方法がここでも使える、との事(8.32の確認は後回し)

さらになんか難しい事があると言ってるがぱっと見良く分からない。
飛ばす。

で、仕方ないからEM法使うとの事。
zとxが揃ってるのをcomplete dataの状態として、zの事後分布を求めてそれを使って同時確率の期待値を計算する。
細かい式はちょっと後回しにして粗筋だけ追う。

complete dataの対数尤度、Qを求めて、E-stepとM-stepの話に進む。
E-spepは後回しとの事。
M-stepはQからパイとAについては13.18及び13.19と導出出来る。
残るパラメータのファイの話に行く前に、初期値の振り方の話をしてる。

で、最後のファイは前やったi.i.dのケースと同じで、9.40で既に出したとの事。

パラメータの初期値の入れ方を最後にまたちょろっと話して13.2.2に続く。

89karino2:2017/06/17(土) 15:17:50
13.2.2は観測値を元にzの分布を計算する、という話。
当然HMMなので8章でやったsum-productで厳密解が割と簡単に出る訳だが、復習も兼ねてforward-backwardアルゴリズムという方法でまず計算してみて、それとsum-productとの関わりを見ていく、というふうに進めるとの事。

まずHMMから独立性は13.24から始まる一連の式の形で書ける。
そしてzの分布をベイズルールを使ってxの分布に直し、x_nまでとn+1からに分けて、nまでの方に積の法則を使って同時確率に直すと、13.33のように書ける。

ここでアルファとベータについて、漸化式を求められて、13.36と13.38となる。
ベータは上から戻ってくる関係となってるのでbackward message passingと呼ばれる。

以上でガンマについてはEM法の計算で必要な要素は揃うが、ついでにXの尤度の話もしている。
EM法ではキャンセルされるから要らないけれど、尤度自体は興味有る事があるので、latent variableについてマージナライズして求める。

90karino2:2017/06/17(土) 15:32:58
zの方の時系列の関係、ゼータも漸化式がでて、13.43になる。

これでE-stepが晴れて終わる。

その後にE-M法全体のステップをまとめている。

1. パラメータをふる
2. アルファとベータをパラメータを元に求めて、それからガンマとゼータを出す
3. ガンマとゼータを使ってパラメータを更新(推計したZの分布を使って、X,Zの同時分布の期待値をパラメータの関数として出し、それを最大化)
4. 更新したパラメータを使って2に戻る

その後、補足として次の観測値の予測の話をして13.2.2は終わる。

91karino2:2017/06/17(土) 18:00:00
13.2.3 sum-productと一致している、という事を確認。
8章の内容をあまり覚えてないので、読み直す必要あり。

92karino2:2017/06/17(土) 18:10:09
13.2.4 小さい数を扱う事になるので、数値的にinstable。
そこでスケールして計算する、という話。

93karino2:2017/06/18(日) 11:12:42
13.2.5はlatent variabveの方に関心がある場合の推計の仕方。
マージナルを別々に最大化してもシーケンスとして実現確率が高いとは限らないので、max-sumで出す必要がある。
HMMでのmax-sumはビタビアルゴリズムと呼ばれている。

具体的な手順とその解釈。
max-sumの具体例という程度の話。

94karino2:2017/06/18(日) 17:42:20
13.2.6はHMMの拡張。

まず生成モデルの最尤法ではなく分類問題として解く方が良い場合は、クロスエントロピーの最小化問題として解く。

次にHMMの問題点について。
一つ目は、一定期間kになったあとに別のステートに行く、みたいな問題にうまくフィットしない。
遷移核が時間不変だからかね。
遷移行列の対角成分をゼロにしてうんぬん、と対策がなんか書いてあるが、良く分からず。

二つ目は離れた期間の影響を捉えるのが難しい、という事。
そこで観測値同士も依存させるautoregressive HMMというのが紹介されている。
その他input-outputとかfactorialとか。

plethora 大量の

95karino2:2017/06/21(水) 21:36:14
13.3 Linear Dynamical Systems
latent variableをノイズのある観測結果の系列から知りたいが、latent variableも時間と共に変わる、という問題設定。
時間と共にモデルが複雑にならない、という制約の元でモデルを考える。

指数関数族だと前の時点の変数をマージナライズしてもまた同じ形となる。
ここではガウス分布を中心に考える。

p636の下から10行目くらいのBy contrastからは何言ってるか分からない。

13.75から13.77が実際のモデルの式となる。
Aが遷移核か。

96karino2:2017/06/21(水) 22:02:36
13.3.1は

HMMのアルファとベータの定義はp620にあって、アルファがx1��xnとznの同時確率。
ベータがznの元でのxn+1からxNまでの条件付き確率。
c_nの定義はp627にあって、xn-1までのxを元にしたx_nの条件付き確率。
13.59はp628にある。

97karino2:2017/06/21(水) 22:24:52
13.3.1はLDSの推計。
漸化式の関係はHMMとほぼ同じになり、ガウス分布をあてはめて13.86となる。
一つ前までのパラメータが分かってるという前提で現時点のパラメータを出す。
一つ前の時点の積分(右辺)は混合ガウス分布の式なので実行出来て、そこから左辺のパラメータが分かる。
結果は13.89��13.91

尤度関数も13.63(p628)から出るとの事。

次に漸化式の解釈。
13.89の第一項は単純に1期前のzn-1の平均を遷移させた物。
そこに、それを遷移させた物からのemissionと実際の観測結果の差分で補正している。

ここまではx_nまでの観測データを使ってz_nを推計してきたが、次にx_N全てを使ってz_nを推計する問題を考える。
これはx_Nからのメッセージ送信とx_1からのメッセージ送信を合わせる事で分かる。
LDSでは少しメッセージを変形するとガウシアンになるので、それで解く慣例となってるとか。

最後にEM法で必要になるゼータの式を導出している。

98karino2:2017/06/22(木) 21:00:49
13.3.1はパラメータがわかっているという前提でzを推計した。
13.3.2はzが分かってる前提でパラメータを推計する(EM法)

同時確率をzの遷移とzからxのemissionに分解し(13.108)、これの、古いパラメータを元に出したzの事後分布の期待値を取る(13.109)。

あとは求めたいパラメータに着目して順番に式を整理し、この対数尤度を最大化してパラメータを決定していく。

99karino2:2017/06/22(木) 21:23:56
いまいち何をやってるのか良く分からなくなってきたな。少し立ち止まって見直そう。

まず13.3でLDSの具体的な式をもうちょっと注意してみておく必要があった気がする。

13.75と76を見ると、z_n-1が観測された時のz_nの確率は、z_n-1にAをかけて遷移させた物を中心としたガウス分布をとる。
x_nはz_nにCをかけたものを中心としたガウス分布となる。
これがLDSという物らしい。

で、13.3.1ではパラメータを既知として、z_nを観測値から推計するのだよな。
それは直感的にはz_0から始めてz_1、z_2と分布を求めていく事が出来て、さらにそこからx_0、x_1と出していけるので、このxの値と突き合わせる事でパラメータを決めていけば良いのだろう。
ただEM法を使う、となってるので、そんな簡単には出ないのだろうね。

EM法的にはまずzを推計する訳だな。zの元でのxの分布は出て、観測されたxの値がもっとも得られやすいzはここから出せば良さそう。
13.85を少し追ってみたいな。MeatPieDayに乗り換え。

100karino2:2017/06/22(木) 22:13:03
https://gist.github.com/karino2/785f3ddd0811c98bc8a98ec76e525761

よし、z_nの推計は理解した。

101karino2:2017/06/24(土) 15:40:41
EM法の負担率。

観測値があった時に、それがクラスkからの寄与と考えられる度合い(ガンマの意味、EM法より)

102karino2:2017/06/24(土) 15:48:57
関係ないが変数はグザイだった。

103karino2:2017/06/24(土) 15:50:08
13.16は誤植でガンマじゃなくてグザイ(日本語版は治ってるとか)

104karino2:2017/06/24(土) 16:11:34
グザイは観測値を元にjからkに遷移した個数を数えるようなもの。
隠れじゃないマルコフ遷移では、遷移核は遷移した数を数えて平均とる事で推計出来る。その拡張になっている。

105karino2:2017/07/17(月) 15:08:57
6章の予習。
まずは粗筋。

6冒頭ではカーネル関数の定義が出て来るが、どう使うかは不明。

6.1で線形モデルをカーネル関数に置き換える。
単純にパラメータwについて、ロス最小で解いた式をカーネル関数に置き換える。
するとpredictionはトレーニングセットのデータ点に依存した形と解釈出来る。

6.2 カーネル関数の探し方
基底を選んでdot積を取る事でカーネル関数を構築する事は出来るが、別に基底がわからなくてもカーネルがvalidな物かどうかを判定する事は出来そうで、実際出来る。
6.13から6.22で合成出来る関数は全てvalidとなるとか。
まぁなりそうね。

直接カーネル関数を扱うメリットとしては、
1. シンボリックな物が扱いやすい
2. 生成モデルから構築出来る(そして分類器として使える)

106karino2:2017/07/17(月) 18:17:19
6.3はradial basis function
冒頭はそれが出てきた歴史的なコンテキストの話が4つ。

1. まずn点を通る関数を導出するという問題。
2. regularization theoryというので二乗和のlossの解としてなんか制約があるとGreen関数がradial distanceだけに依存するとか
3. 入力がnoisyな時の補完の変分解(これは6.3.1でやるとか)
4. kernel密度推定で出て来るとか(これも6.3.1でやる)

そして近似解の話が。

107karino2:2017/07/17(月) 18:44:51
6.3.1はNadaraya-Watsonモデル。
カーネル密度推定、という物の話をしているが、いまいちなんなのかは良く分からない。

ただ、やってる事はそんな難しくない。
確率分布として6.42の形を仮定して、predictionの式を導出する。
すると6.47と置くと6.45と表せる。

108karino2:2017/07/17(月) 19:38:40
6.4はガウス過程。
6.4.1は線形回帰をガウス過程として見直す。
線形回帰は6.52と6.53のような正規分布と表せる。
一般にyがxの関数で、x_nの同時確率が正規分布で表せるような物をガウス過程と呼ぶ。

dispense: 無しですます

109karino2:2017/07/17(月) 19:51:10
6.4.2はガウス過程の回帰を扱う。
まず、ガウス過程の時のyのマージナルとtのマージナルを求める。
ここでカーネル関数は入力点2つ与えた時のy同士の共分散として導入されるので、2つの点のyを予測する時における近さを与えている、と解釈できる。

そして新たな入力に対するpredictはnまでは分かってるとしてn+1番目の入力を足した時のn+1番目の分布として考える。
すると6.66と6.67の正規分布になる。

あとは複数点への拡張などの話。

110karino2:2017/07/19(水) 12:22:05
6.4.3はカーネル関数としてパラメータのある物を想定し、最尤法などでパラメータを求める、という話題。

6.4.4は入力と出力の間のパラメータを学習させる事で、複数の入力のうちどれが効いてるかを学習出来る、という話。

6.4.5はclassificationにガウス過程を使うという話。
出力をsigmoid関数をかませて、ベルヌーイ分布を考える。
出て来る予測分布の式6.76はそのままでは計算出来ないとの事。

111karino2:2017/07/19(水) 12:49:52
6.4.6は前の項の分類問題にラプラス近似を適用する、という話。
ラプラス近似はモードの回りの正規分布に近似する、という奴か。
モードは6.83までで出せて、それを元にaの事後分布は6.86と近似出来る。
これを用いて予測分布の積分6.76を計算出来て、6.87と6.88となる。

次にパラメータを出す為に最尤法にもラプラス近似を適用する。
C.21は逆行列の微分。
式はごついが、結局は尤度のシータによる微分を求めている。

112karino2:2017/07/19(水) 12:56:00
6.4.7はニューラルネットとガウス過程の関係について話してるが良く分からない。
hidden unitを無限に増やすとガウス過程になる?

113karino2:2017/07/25(火) 20:57:04
7章はSparse Kernel Machines

冒頭: 6章のやり方はトレーニングセットが多くなるとそれに伴って計算量が増えてしまう。
そこで7章はトレーニングセットの中の少しの点だけに依存してpredictするカーネル法の亜種を考える。

114karino2:2017/07/25(火) 21:13:45
7.1はMaximum Margin Cllasifiers

二値分類を考える。
まずは線形で分離平面が定義出来るとする。
この時、マージンが最大になるように分離平面を決める事を考える。
すると7.7みたいなラグランジアンが定義出来て、7.10��7.12が解となる。
ここで7.10でカーネル関数が導入されている。

この解を用いて新たな点を分類する事を考えると、7.13式で分類する事になるので、あとはこのkやらa_nやらbを出すという話に。

ラグランジアンからキューンタッカー条件7.14��7.16が出てきて、slack じゃない式に出てくるデータ点をサポートベクターと呼ぶ、という事か。
サポートベクターは7.15で等号のケースとなる。
これらからa_nが出て、それを用いて7.18でbが出る。

115karino2:2017/07/25(火) 21:25:37
7.1.1はデータ点が綺麗に分離出来ない場合でも動くように拡張する。
これはマージンを最大化する所で、誤分類のペナルティを加える事で実現する。
加えた物が7.21。

それをひたすら解いて結局7.32は同じ式となるが、制約条件に違いがあって、7.33と7.34となる。

結果の解釈として、a_nが0の点はこれまで通りだが、a_n が0より大きい時は、Cかそれ未満かで変わる。a_nがC の時はこのサポートベクターはこれまで通り分離面の境界にあり、Cより小さい場合はマージンの中にある、という事になる。

116karino2:2017/07/25(火) 21:28:40
7.1.2はロジスティック回帰との関係。
いろいろ変形すると、7.45と7.47の関係となり、誤差関数がロジスティック関数かヒンジ関数かの違いと解釈出来る。

117karino2:2017/07/25(火) 21:35:19
7.1.3はマルチクラスの拡張。
いろいろあるが難しい、という話。

7.1.4は回帰。
7.51と7.52みたいな式を最適化するとして、あとは分類と同じ。

7.1.5はどれだけデータがあれば十分な汎化性能が得られるか、という理論でSVMは対象とされてた、みたいなお話。

118karino2:2017/07/26(水) 21:31:19
7.2はRelevance Vector Machine。

7.2.1でRVMのregressionを扱う。
普通の線形回帰のセッティング7.76で、yが7.78の時を考える。
さらにwのpriorを7.80と定義して、wに関してマージナライズした物(7.84)を最大化する。
すると、アルファの幾つかが発散するので、その発散する項のwの事後分布はゼロとなるから取り除くことが出来て、残った基底のベクトルがrelevance vector。

で、アルファとベータが出たら、7.90式で新たな入力xについてpredict出来る。

119karino2:2017/07/26(水) 21:37:23
なんかここまで見た感じだと、ほとんど単なる線形回帰じゃん、という気がする。

違うのはアルファをデータ点ごとに定義する所と7.78の形でデータ点から基底を作る所か。後者は単なるカーネル法だよな。

いまいち新しい感じもしないが、まぁいいか。

120karino2:2017/09/07(木) 13:09:00
次は11章、という事で11章の予習開始。

さっそく11.5が分からないが、ググってたら以下の解説が。

http://retrofocus28.blogspot.jp/2013/08/pattern-recognition-and-machine.html

なるほど。

121karino2:2017/09/08(金) 11:45:25
11冒頭は素朴にサンプリングする場合の問題点の話。


1. 普通にベイジアンネットで表される分布で観測値が無ければ、ルートのノードから順番にサンプリングしていけば問題無い
2. 観測値がある場合はサンプリングして観測値と当たってなければやりなおし、で理論上は出せるが、偶然当たる事はめったにない
3. マルコフネットの時は楽な方法は無くて、Gibbsサンプリングとか

122karino2:2017/09/08(金) 11:49:55
11.1.1 uniformな分布から変形して求められる場合。
hとその逆関数が出せれば出す事は出来る。
多次元の場合も少し工夫すれは出せる。

当然hやその逆関数が出せる物に制限される。

123karino2:2017/09/08(金) 11:53:01
11.1.2 rejecting sample法
この辺は毎回見る都度何言ってるか分からなくなるが、しばらく考えると分かる、という感じなんだよなぁ。

11.4の図を見ながら考えるのが良くて、まず分かる分布についてサンプリングする。この図の場合はz0。
これがサンプリングされる頻度はグレーの分だけ割増されている。
だからグレーの分だけ割り引く必要がある。

124名無しさん:2017/09/08(金) 12:20:19
比較の為にユニフォームな分布を考える。

https://imgur.com/YgqIInE.jpg


この場合でも計算は出来るが、分布の頻度がすごく低いところにも等しく当たってしまう。
この場合は評価してみるまでもなく、だいたいハズレ。

一方で提案分布の形が近ければ、そもそもここを引く率自体が低いので、逆に言うとわざわざここが出た時には残る可能性は高い。

125karino2:2017/09/08(金) 12:44:34
すぐ分からなくなるので、ユニフォームな分布をもう少し。
通常のモンテカルロ法との比較を考える。

正方形の中の点をランダムに打つ。
この点が、pより下の個数と上の個数を数える。
この比率はpの面積となる。
ある点に対してはpより上か下かは評価出来るが、積分は分からない、という場合にもこれで面積が分かる。

欲しいのは面積では無くて、分布の形に従ったサンプルの点なので、高い所にはたくさん出て、低い所にはあんま出ないようなサンプラーが欲しい。
そこでzを適当に引いて、このzについて、p(z)より上か下かを引いて上だったら捨てる、下だったら取る、とやる。

もう少し具体的に。0, 1, 2, 3,...,10と離散的な値について。
順番に0の点で乱数を引いて、p(0)より下の点だけ取る、次に1の点で同様の作業を10まで行う。
こうすると点が残ったり残らなかったりする。
残った数をカウントしていく。

一回の試行では0か1かがまだらに並ぶ。
二回目の試行では0から2 までが並ぶ。
これを何度も繰り返すと、度数分布となる。

126karino2:2017/09/08(金) 12:46:46
rejection samplingはこの試す回数自体を点ごとに偏らせて、その分残す敷居は低くする、という物。
欲しいのはサンプルの点なので、rejectはなるべくされない方が良い。

127karino2:2017/09/08(金) 12:57:00
kの値について。
kを大きくする、というのは、全ての点について等しくrejectされる領域を増やす、というもの。
全部の点で等しくrejectされる度合いを増やすので、結果の値には影響は与えない。

128名無しさん:2017/09/08(金) 13:15:34
https://imgur.com/0NSGspw.jpg

あれ?等しいの?

129名無しさん:2017/09/08(金) 13:19:16
違った。こうか。
https://imgur.com/EwTiBRg.jpg

130karino2:2017/09/10(日) 16:37:57
11.1.3は提案分布をrejectされるごとにその接点を通る関数との線形和を足す事でrefineしていく、というやり方。
logをとると直線になるような物を足していく、という事なので分布に足す関数自体はexpとなる。

後半では高次元の時にはrejectされまくってしまう、という話がある。
これは確かにそうだろうな。
昔MCMCの勉強してた時はこの辺の話を良く理解出来ていなかったが、今読むと良く分かる。

131karino2:2017/09/10(日) 17:18:46
11.1.4 importance sampling
分布を求めるのでは無くて期待値を求めるというアイデア。
q(z)からサンプルを引くまでは同じだが、この引いた値に、p(z)から引く場合と比べた偏りを割り引く事で、和が期待値になるように出来る、というもの。

pの分布でのf(z)の期待値は、各zの値にp(z)を掛けたものの積分となるが、これをqでの期待値に変換すると、f(z)p(z)/q(z)の期待値を求める事と同じである事が分かる。
あとはそれをq(z)からのサンプリングの和に置き換えれば良い。

規格化定数が分からない時もごちゃこちゃ計算すれば結果が出る。

こっちの方がrejectされる訳じゃないのでサンプルが有効に使えそうだが、probability massが集まってる所に当たらないと良い結果にならないという点では似た欠点を持つ。

最後にevidenceがある場合の計算方法についての話がちらっとある。
まずuniform samplingという手法の話があるが、単純過ぎて良い結果にはあんまりなりそうも無い。
で、その改善としてlikihood weighted samplingというのが紹介されてる。これは条件つき確率にすべき部分を同時確率に観測値をいれただけの物で代用して、期待値の所で条件付き確率とのずれを補正する物。
11.24式はちゃんとは追ってないが、同時確率と条件付き確率の関係を考えるとマージナライズした分だけ偏るのだから、こんな感じの式になりそう。

132karino2:2017/09/11(月) 10:48:34
11.1.5 Sampling-importance-resampling

最初二回目のサンプリングというのがなんなのか分からなかったが、一回目にサンプリングした値から何度も選ぶって事ね。
だから一回目にサンプリングした値しか出てこないのか。
最初にL個サンプリングした後に、このLの内部での相対的なもっともらしさを重みとするのか。
なかなかシンプルだな。

133karino2:2017/09/11(月) 11:07:44
11.1.6はEMアルゴリズムでのサンプリングの使用。
これは何も新しい事は無い気がする。
IPアルゴリズムというのもあまりにもストレートフォワード過ぎて何が新しいのかを考える方が難しいくらい。

134karino2:2017/09/11(月) 11:46:23
11.2 MCMC
冒頭では簡単にMCMCによるサンプリングの概要が述べられている。
提案分布が時間の前と後ろで対象な時の話。

11.2.1はマルコフ連鎖の性質の話。
時間依存が無い時で、invariantな分布に収束するとはどういう事か、そして詳細釣り合い条件を満たすとinvariantだ、みたいな話をする。
最後に基本となるトランジションをmixtureしたトランジションの事が軽く触れられている。

135karino2:2017/09/11(月) 11:59:46
12.2.2はMetropolis-Hastingsアルゴリズム。
12.2の冒頭はMetropolisアルゴリズムで、これは連鎖の前と後の向きに対して対象な提案分布の物だった。
MH法はそれの拡張で、非対称な物でも使えるようにしたもの。
Aを詳細釣り合い条件を満たすように変更する。

その後qの選び方の話を。大きい分散だとrejectされがちだが小さい分散だとなかなか移動しないので、サンプルする間隔を広くしないとサンプル同士の相関が。

136karino2:2017/09/13(水) 12:37:16
11.3、11.4は別段難しい事は無いので置いとく。

11.5.1はHMCの話か。

ポテンシャルエネルギーの定義は割と簡単だが、運動エネルギーとはなんなのだろうか?
zが変化をしまくるような系は不安定、という事か?
このしまくる大変さ、みたいなのが運動エネルギーなのだろうか。

137karino2:2017/09/13(水) 13:04:39
invariant: ある確率分布から一つ時間発展させても同じ分布になる事。

ergodicity: 初期状態に関わらずmを増やしていくと同じinvariantな分布に収束する性質。

138karino2:2017/09/13(水) 13:18:07
位置を固定して運動量を確率分布からサンプルする、というのがどうしてinvariantなのかが直感的に良く分からないので考える。

ある位置に対して望ましい運動量というのはあるのか?
ポテンシャルが凄く高い所で、周囲のポテンシャルが凄く低いなら、ここで静止しているのはおかしい気がする。
そういう点ではポテンシャルの場所による微分と関係がありそうだ。
11.55はそういうのに近い。

感覚的には、ポテンシャルの極小の点に居ない為には、ある程度の運動量が必要だろうな。
そういう意味では、ある点に居そうな運動量というのは多分あるだろう。
それは軌道が偶然そこを通るくらいの運動量で、なるべくゆっくりな物が一番確率が高いのだろうな。
ゆっくりな程偶然そこが観測される可能性が高いから。

あれ?それだとちょうど静止してるくらいが一番じゃないか?
例えばいろんな場所から弾を射出して、偶然ここを通る事が観測される可能性って事だよな。
ここで静止するのはよそから打つ場合は不可能か。
完全にまっすぐここに向かって打って、ちょうどここで反転するのが一番長くこの点を通る気もするが、それは向きがピンポイント過ぎるので積分するとそんなによく見るとも限らないのかなぁ。

この辺はいまいちよく分からないな。

139karino2:2017/10/13(金) 16:09:09
10章のノート。これはブログに書いた。

https://karino2.github.io/2017/10/13/54.html

140karino2:2017/10/15(日) 19:02:47
PRMLの勉強会が終わった
https://karino2.github.io/2017/10/15/55.html


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板