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

Probabilistic Graphical Models(pgm)

100karino2:2017/01/20(金) 18:21:58
var2factors がそれっぽい。
Vはベクトルだが、結果は全部の変数に同じ数が入ってるのを仮定してよさそう。
Vの入ってる全ファクター取ってきて、V以外の要素をevidence でルックアップすると、Vのファクターとなる。
ここから全部が同じ値の物だけ取っていってlogすれば良い、、、かな?

101karino2:2017/01/20(金) 20:53:37
メモいろいろ。

>> a = repmat((1:3)', 1, 2)
a =

1 1
2 2
3 3


>> [a, ones(3, 1)]
ans =

1 1 1
2 2 1
3 3 1

>> b = [2, 3, 4]
b =

2 3 4

>> b .* ones(3, 1)
ans =

2 3 4
2 3 4
2 3 4


>> a = zeros(5, 3)
a =

0 0 0
0 0 0
0 0 0
0 0 0
0 0 0


>> a(:, 2) = ones(5, 1)
a =

0 1 0
0 1 0
0 1 0
0 1 0
0 1 0


>> a(:, [2, 3]) = ones(5, 2)
a =

0 1 1
0 1 1
0 1 1
0 1 1
0 1 1


>> BlockLogDistribution(ex.t6a1, ex.t6a2, ex.t6a3, ex.t6a4)
ans =

0.00000 0.40547

>> exampleOUTPUT.t6
ans =

0.00000 0.40547


お、一致した。これで良さそうね。

102karino2:2017/02/07(火) 13:11:54
GibbsTransは randi('seed',1) した後やると結果が一致。


>> load("exampleIOPA5");
>> ex = exampleINPUT;
>> eo = exampleOUTPUT ;


>> [res1, res2] = MCMCInference(ex.t8a1{1}, ex.t8a2{1}, ex.t8a3{1}, ex.t8a4{1}, ex.t8a5{1}, ex.t8a6{1}, ex.t8a7{1}, ex.t8a8{1});


よし、次はMHUniformTrans、と思ったがこれが全然分からない。
定常分布がなんなのか分からない。
マルコフネットワークの定常分布とはなんぞや?

マルコフネットワークの定義に戻ると、全ポテンシャルをかけた物が同時確率となる訳だ。
これから定常分布を求めるとはどういう事だろう?
いや、これこそが定常分布だよな。
それに対して提案分布があって、提案分布でサンプリングしたランダム変数の組みが同時確率としてどれくらい成立しうるか、という話じゃないか?

お、わかった気がする。


res4 = MHUniformTrans(ex.t9a1{4}, ex.t9a2{4}, ex.t9a3{4});
eo.t9{4}

うーん、毎回結果が似すぎていて良く分からないな。

103karino2:2017/02/07(火) 13:18:33
レシート入力を終えて久しぶりに再開。

>> load("exampleIOPA5");
>> ex = exampleINPUT;
>> eo = exampleOUTPUT ;

res4 = MHUniformTrans(ex.t9a1{4}, ex.t9a2{4}, ex.t9a3{4});
res4
eo.t9{4}

なんか合ってる気がする。とりあえずMHUniformTransを読み直してみよう。

思い出してきた。。Qはユニフォームな分布なので、x->x'ももx'->xも同じ確率。
で、pi_xはfの積でassignmentはAとA_prop。
うむ、この式であってそうだな。

MHSWTrans.mの実装に入る。
pdfの図をみるとアルゴリズムの概要は分かる。
ただ、具体的に実装しようとすると難しい。

実行してみるとscomponentsが無い。そこで何が必要か逆算で考えてみる。

>> SelEdgeMat
SelEdgeMat =

Compressed Column Sparse (rows = 16, cols = 16, nnz = 14 [5.5%])

(4, 3) -> 1
(7, 3) -> 1
(3, 4) -> 1
(10, 6) -> 1
(3, 7) -> 1
(10, 9) -> 1
(6, 10) -> 1
(9, 10) -> 1
(15, 11) -> 1
(16, 12) -> 1
(11, 15) -> 1
(16, 15) -> 1
(12, 16) -> 1
(15, 16) -> 1

ここから
[var2comp, cc_sizes] = scomponents(SelEdgeMat);
が欲しい。

ccはあとのコードを読むとconnected componentの略みたい。
var2compoは

selected_vars = find(var2comp == selected_cc);

ででconnected componentの変数一覧が取れるようなもの。
cc_sizesは各connected componentのサイズが入っているのだろう。
var2compはvarと同じ長さのベクトルで値は属しているccのインデックスだろう。

selected_edgeはpdfで言う所のactivatedという奴だな。

さて、SelEdgeMatからCCはどうやったら出るだろう?

1から順番に見ていき、繋がってるエッジを辿ってそいつをCC1にアサイン、繋がってたノードはスキップして2に進む、という感じか。

scomponentsの実装は終わり、、MHSWTransも実装してみたが、なんかこれ、サンプルが毎回入力と出力一緒だなぁ。

>> MHSWTrans(ex.t10a1{1}, ex.t10a2{1}, ex.t10a3{1}, ex.t10a4{1})

pairwiseのfactorを考慮に入れた遷移がちょっと面倒なので、現実逃避にDiscussion Forumなどに答えたりscomponentsの自分実装を貼ったりする。

104karino2:2017/02/07(火) 13:19:34
scomponentsはgaimc下にあるぜ、との事。
addpath('gaimc');
で良さそう。せっかく書いたのに(´・ω・`)

さて、ちょっと確定申告やってたら、ここまでの話を忘れた。どうしよう?
まずGってなんだっけ?

edgesにi, jにエッジがあれば1、そうでなければ0が入っているのだろう。

var2factorsってなんだっけ? >>100 に何か言及があるが。

>> ex.t10a2{1}.var2factors{1}
ans =

1 17 20

変数1が含まれているファクターは1, 17, 20という事か?

ex.t10a3{1}(1)
ex.t10a3{1}(17)
ex.t10a3{1}(20)
などを試してそうっぽい、と納得。

q_listってなんだろう?
一列目と二列目で、エッジのある頂点の組みを表している。
三番目の値はランダムに切る時に使われているだけなので、意味は無いんじゃないか(全部0.5だし)。

MCMCInferenceを見て分かった。q_listは自分で作るものだ。q_ijだね。
なるほど。

-----

BlockLogDistributionの実装が不完全で直したり。

>> randi('seed',1);
>> MHSWTrans(ex.t11a1{2}, ex.t11a2{2}, ex.t11a3{2}, ex.t11a4{2})
ans =

2 2 2 2 1 2 2 1 2 2 1 1 1 2 1 1

>> eo.t11{2}
ans =

2 2 2 2 1 2 2 1 2 2 1 1 1 2 1 1

治ったかな?

105karino2:2017/02/07(火) 13:20:37

MCMCInferenceのq_ijに進む。まずはEdgeToFactorCorrespondence(G.names, F)が何を返すか調べるか。
>> E2F = EdgeToFactorCorrespondence(ex.t12a1{1}.names, ex.t12a2{1})
E2F =
{
[1,1] = [](0x0)
[2,1] = 17
[3,1] = [](0x0)
[4,1] = [](0x0)
...


つまりエッジに対して、そのエッジを含むfactorを返すみたいね。

なんとなく実装して試すと、exampleINPUTの1のMHUniformの結果がそもそもあってない。あれ?これって前実装した処だよなぁ、とC-rしてみたらex.t8a1とかで呼び出している。
もう一回見てみるか。

[res1, res2] = MCMCInference(ex.t8a1{1}, ex.t8a2{1}, ex.t8a3{1}, ex.t8a4{1}, ex.t8a5{1}, ex.t8a6{1}, ex.t8a7{1}, ex.t8a8{1});

>うーん、乱数のseed設定したらex.t8aの結果とeo.t8o1は厳密に一致しているなぁ。

ex.t12a*{1}とex.t12a*{2}がeo.t12o1{1}とeo.t12o1{2}に一致してないが、やっぱり{1}が一致しないという事が良く分からない。
UniformTransのコードを見直したが、正直自分のところにバグが入る余地は無い気がするので、検証の仕方が間違いなんじゃないか、という事で先に進んでみる。

----

TestToy.mの下の方のMCMCInferenceのブロックを実行したら帰ってこない。

凄い経ったら帰ってきたが、ExactMが無い、とか言って途中で終わってしまった。ComputeExactMarginalsBPの結果か。
でもこれ、時間かかり過ぎて検証出来ないなぁ。
どうしたもんか。

106karino2:2017/02/07(火) 21:02:17
やはりこれは自分のマシンでは動作確認は諦めよう。
理屈は理解したので、この実装が例え間違っていても、実際に実装しなきゃいけない時には実装出来ると思う。

107karino2:2017/02/10(金) 14:28:38
dual decompositionとtractable MAP inferenceの動画を見てなかったので観ている。
これが終わればコース2は終わりでいいかな。

108karino2:2017/02/25(土) 16:36:30
出版関係で少し時間が空いたが、dual decompositionの動画を見終わった。
これでコース2の動画はオプショナルな物まで全て見た事になる。
一応プログラム課題も一通り解いたし、終わりという事でいいかな。

コース3はもう少し出版関係が落ち着かないと取れないかなぁ。

109ブランドスーパーコピー:2020/03/27(金) 12:51:31
スーパーコピー 時計 - スーパーコピー 時計
○各種のブランド偽物(コピー商品)の指輪.ネックレス
○各種のブランド偽物(コピー商品)のベルト
○各種のブランド偽物(コピー商品)のマフラー
○ スタイルが多い、品質がよい、価格が低い!
○ S品質 シリアル付きも有り 付属品完備!
○必ずご満足頂ける品質の商品のみ販売しております.
○ 品質を最大限本物と同等とする為に相応の材質にて製作している為です.
人気の売れ筋商品を多数取り揃えております。
全て激安特価でご提供.お願いします。
ブランドスーパーコピー https://www.watcherdg.com/watch/menu-pid-131.html

110その他の世界一流スーパーコピー:2020/08/06(木) 04:09:27
ブランド N級 ブランドコピー販売
弊社はルイヴィトン、グッチ、ロレックス、オメガ等世界有名なブランド コピー品を販売しております。
以前はヤフーと楽天で販売しました。
今はホームページを作って販売する形になりました。
弊社は2007年に設立しました、何年も経ちましたので、豊富な経験を持っております。
弊社は在庫量を保つためにたくさん工場と協力しております。
全部、品質を保つために、
一流の素材を選択してブランド コピー品を作っている工場です。
1、品質を重視、納期も厳守、お客様第一主義を貫きは当社の方針です。
2、最も合理的な価格で商品をお客様に提供致します。
3、不良品の場合、交換いたします。
没収された場合、もう一度無料で発送いたします。
4、卸売できます、小ロット対応できます。
その他の世界一流スーパーコピー https://www.watcherdg.com/watch/product-19435.html


新着レスの表示


名前: E-mail(省略可)

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

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

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

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